|
|
|
@ -22,12 +22,7 @@ export const styleable = (node, styles = {}) => { |
|
|
|
let applyNormalStyles |
|
|
|
let applyHoverStyles |
|
|
|
let selectComponent |
|
|
|
|
|
|
|
// Allow dragging if required
|
|
|
|
const parent = node.closest(".component") |
|
|
|
if (parent && parent.classList.contains("draggable")) { |
|
|
|
node.setAttribute("draggable", true) |
|
|
|
} |
|
|
|
let editComponent |
|
|
|
|
|
|
|
// Creates event listeners and applies initial styles
|
|
|
|
const setupStyles = (newStyles = {}) => { |
|
|
|
@ -46,6 +41,9 @@ export const styleable = (node, styles = {}) => { |
|
|
|
...(newStyles.hover || {}), |
|
|
|
} |
|
|
|
|
|
|
|
// Allow dragging if required
|
|
|
|
node.setAttribute("draggable", !!styles.draggable) |
|
|
|
|
|
|
|
// Applies a style string to a DOM node
|
|
|
|
const applyStyles = styleString => { |
|
|
|
node.style = styleString |
|
|
|
@ -72,13 +70,25 @@ export const styleable = (node, styles = {}) => { |
|
|
|
return false |
|
|
|
} |
|
|
|
|
|
|
|
// Handler to start editing a component (if applicable) when double
|
|
|
|
// clicking in the builder preview
|
|
|
|
editComponent = event => { |
|
|
|
if (newStyles.interactive && newStyles.editable) { |
|
|
|
builderStore.actions.setEditMode(true) |
|
|
|
} |
|
|
|
event.preventDefault() |
|
|
|
event.stopPropagation() |
|
|
|
return false |
|
|
|
} |
|
|
|
|
|
|
|
// Add listeners to toggle hover styles
|
|
|
|
node.addEventListener("mouseover", applyHoverStyles) |
|
|
|
node.addEventListener("mouseout", applyNormalStyles) |
|
|
|
|
|
|
|
// Add builder preview click listener
|
|
|
|
// Add builder preview listeners
|
|
|
|
if (get(builderStore).inBuilder) { |
|
|
|
node.addEventListener("click", selectComponent, false) |
|
|
|
node.addEventListener("dblclick", editComponent, false) |
|
|
|
} |
|
|
|
|
|
|
|
// Apply initial normal styles
|
|
|
|
@ -90,9 +100,10 @@ export const styleable = (node, styles = {}) => { |
|
|
|
node.removeEventListener("mouseover", applyHoverStyles) |
|
|
|
node.removeEventListener("mouseout", applyNormalStyles) |
|
|
|
|
|
|
|
// Remove builder preview click listener
|
|
|
|
// Remove builder preview listeners
|
|
|
|
if (get(builderStore).inBuilder) { |
|
|
|
node.removeEventListener("click", selectComponent) |
|
|
|
node.removeEventListener("dblclick", editComponent) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|