Fixing issue - this will replace any bindings when copying and pasting a stack of components with 'Invalid binding'.
This commit is contained in:
parent
1f370aa2a5
commit
afe70d1ba2
|
@ -7,6 +7,7 @@ import { TableNames } from "../constants"
|
|||
|
||||
// Regex to match all instances of template strings
|
||||
const CAPTURE_VAR_INSIDE_TEMPLATE = /{{([^}]+)}}/g
|
||||
const CAPTURE_HBS_TEMPLATE = /{{[\S\s]*?}}/g
|
||||
|
||||
/**
|
||||
* Gets all bindable data context fields and instance fields.
|
||||
|
@ -273,6 +274,20 @@ const buildFormSchema = component => {
|
|||
return schema
|
||||
}
|
||||
|
||||
/**
|
||||
* Recurses the input object to remove any instances of bindings.
|
||||
*/
|
||||
export function removeBindings(obj) {
|
||||
for (let [key, value] of Object.entries(obj)) {
|
||||
if (typeof value === "object") {
|
||||
obj[key] = removeBindings(value)
|
||||
} else if (typeof value === "string") {
|
||||
obj[key] = value.replace(CAPTURE_HBS_TEMPLATE, "Invalid binding")
|
||||
}
|
||||
}
|
||||
return obj
|
||||
}
|
||||
|
||||
/**
|
||||
* utility function for the readableToRuntimeBinding and runtimeToReadableBinding.
|
||||
*/
|
||||
|
|
|
@ -15,6 +15,7 @@ import { FrontendTypes } from "constants"
|
|||
import analytics from "analytics"
|
||||
import { findComponentType, findComponentParent } from "../storeUtils"
|
||||
import { uuid } from "../uuid"
|
||||
import { removeBindings } from "../dataBinding"
|
||||
|
||||
const INITIAL_FRONTEND_STATE = {
|
||||
apps: [],
|
||||
|
@ -408,6 +409,9 @@ export const getFrontendStore = () => {
|
|||
return state
|
||||
}
|
||||
|
||||
// immediately need to remove bindings, currently these aren't valid when pasted
|
||||
state.componentToPaste = removeBindings(state.componentToPaste)
|
||||
|
||||
// Clone the component to paste
|
||||
// Retain the same ID if cutting as things may be referencing this component
|
||||
const cut = state.componentToPaste.isCut
|
||||
|
|
Loading…
Reference in New Issue