@webiny/website-builder-sdk 0.0.0-unstable.e53eceafb5 → 0.0.0-unstable.eb196ccd2f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/BindingsApi.d.ts +4 -4
  2. package/BindingsApi.js +3 -3
  3. package/BindingsApi.js.map +1 -1
  4. package/BindingsProcessor.d.ts +1 -1
  5. package/BindingsProcessor.js.map +1 -1
  6. package/BindingsProcessor.test.js +1 -1
  7. package/BindingsProcessor.test.js.map +1 -1
  8. package/BindingsResolver.d.ts +2 -2
  9. package/BindingsResolver.js.map +1 -1
  10. package/BindingsResolver.test.js +3 -3
  11. package/BindingsResolver.test.js.map +1 -1
  12. package/ComponentInputTraverser.d.ts +1 -1
  13. package/ComponentInputTraverser.js.map +1 -1
  14. package/ComponentManifestToAstConverter.d.ts +1 -1
  15. package/ComponentManifestToAstConverter.js.map +1 -1
  16. package/ComponentResolver.d.ts +2 -2
  17. package/ComponentResolver.js +3 -3
  18. package/ComponentResolver.js.map +1 -1
  19. package/ContentSdk.d.ts +11 -5
  20. package/ContentSdk.js +22 -6
  21. package/ContentSdk.js.map +1 -1
  22. package/DocumentStore.d.ts +3 -3
  23. package/DocumentStore.js +1 -1
  24. package/DocumentStore.js.map +1 -1
  25. package/DocumentStoreManager.d.ts +2 -2
  26. package/DocumentStoreManager.js +1 -1
  27. package/DocumentStoreManager.js.map +1 -1
  28. package/EditingSdk.d.ts +2 -2
  29. package/EditingSdk.js +8 -8
  30. package/EditingSdk.js.map +1 -1
  31. package/ElementFactory.d.ts +3 -3
  32. package/ElementFactory.js +4 -4
  33. package/ElementFactory.js.map +1 -1
  34. package/IBindingsUpdater.d.ts +2 -2
  35. package/IBindingsUpdater.js.map +1 -1
  36. package/IRedirects.d.ts +5 -0
  37. package/IRedirects.js +3 -0
  38. package/IRedirects.js.map +1 -0
  39. package/InheritanceProcessor.d.ts +2 -2
  40. package/InheritanceProcessor.js.map +1 -1
  41. package/InheritanceProcessor.test.js +1 -1
  42. package/InheritanceProcessor.test.js.map +1 -1
  43. package/InheritedValueResolver.d.ts +1 -1
  44. package/InheritedValueResolver.js.map +1 -1
  45. package/InputBindingsProcessor.d.ts +4 -4
  46. package/InputBindingsProcessor.js +5 -5
  47. package/InputBindingsProcessor.js.map +1 -1
  48. package/InputsBindingsProcessor.test.js +2 -2
  49. package/InputsBindingsProcessor.test.js.map +1 -1
  50. package/InputsUpdater.d.ts +5 -5
  51. package/InputsUpdater.js +2 -2
  52. package/InputsUpdater.js.map +1 -1
  53. package/LiveSdk.js +1 -1
  54. package/LiveSdk.js.map +1 -1
  55. package/Logger.js +7 -4
  56. package/Logger.js.map +1 -1
  57. package/NullSdk.d.ts +2 -1
  58. package/NullSdk.js +3 -0
  59. package/NullSdk.js.map +1 -1
  60. package/PreviewDocument.js +1 -1
  61. package/PreviewDocument.js.map +1 -1
  62. package/PreviewSdk.js +1 -1
  63. package/PreviewSdk.js.map +1 -1
  64. package/PreviewViewport.d.ts +1 -1
  65. package/PreviewViewport.js +1 -1
  66. package/PreviewViewport.js.map +1 -1
  67. package/StylesBindingsProcessor.d.ts +2 -2
  68. package/StylesBindingsProcessor.js +4 -4
  69. package/StylesBindingsProcessor.js.map +1 -1
  70. package/StylesUpdater.d.ts +4 -4
  71. package/StylesUpdater.js +2 -2
  72. package/StylesUpdater.js.map +1 -1
  73. package/Theme.d.ts +1 -1
  74. package/Theme.js +5 -3
  75. package/Theme.js.map +1 -1
  76. package/ViewportManager.d.ts +1 -1
  77. package/ViewportManager.js +4 -1
  78. package/ViewportManager.js.map +1 -1
  79. package/createElement.d.ts +1 -1
  80. package/createElement.js.map +1 -1
  81. package/createInput.d.ts +1 -1
  82. package/createInput.js +1 -1
  83. package/createInput.js.map +1 -1
  84. package/createTheme.d.ts +2 -1
  85. package/createTheme.js.map +1 -1
  86. package/dataProviders/ApiClient.d.ts +6 -1
  87. package/dataProviders/ApiClient.js +19 -8
  88. package/dataProviders/ApiClient.js.map +1 -1
  89. package/dataProviders/DefaultDataProvider.d.ts +2 -1
  90. package/dataProviders/DefaultDataProvider.js +16 -3
  91. package/dataProviders/DefaultDataProvider.js.map +1 -1
  92. package/dataProviders/NullDataProvider.d.ts +2 -1
  93. package/dataProviders/NullDataProvider.js +3 -0
  94. package/dataProviders/NullDataProvider.js.map +1 -1
  95. package/dataProviders/RedirectsProvider.d.ts +11 -0
  96. package/dataProviders/RedirectsProvider.js +32 -0
  97. package/dataProviders/RedirectsProvider.js.map +1 -0
  98. package/defaultBreakpoints.d.ts +1 -1
  99. package/defaultBreakpoints.js.map +1 -1
  100. package/documentOperations/$addElementReferenceToParent.js.map +1 -1
  101. package/documentOperations/AddElement.d.ts +1 -1
  102. package/documentOperations/AddElement.js.map +1 -1
  103. package/documentOperations/AddToParent.d.ts +1 -1
  104. package/documentOperations/AddToParent.js.map +1 -1
  105. package/documentOperations/RemoveElement.d.ts +1 -1
  106. package/documentOperations/RemoveElement.js.map +1 -1
  107. package/documentOperations/SetGlobalInputBinding.d.ts +1 -1
  108. package/documentOperations/SetGlobalInputBinding.js.map +1 -1
  109. package/documentOperations/SetGlobalStyleBinding.d.ts +1 -1
  110. package/documentOperations/SetGlobalStyleBinding.js.map +1 -1
  111. package/documentOperations/SetInputBindingOverride.d.ts +1 -1
  112. package/documentOperations/SetInputBindingOverride.js.map +1 -1
  113. package/documentOperations/SetStyleBindingOverride.d.ts +1 -1
  114. package/documentOperations/SetStyleBindingOverride.js.map +1 -1
  115. package/documentOperations/index.d.ts +8 -8
  116. package/documentOperations/index.js +7 -7
  117. package/documentOperations/index.js.map +1 -1
  118. package/findMatchingAstNode.d.ts +1 -1
  119. package/findMatchingAstNode.js.map +1 -1
  120. package/index.d.ts +1 -2
  121. package/index.js +1 -2
  122. package/index.js.map +1 -1
  123. package/lexical/createDefaultLexicalTheme.d.ts +1 -1
  124. package/lexical/createDefaultLexicalTheme.js.map +1 -1
  125. package/lexical/createLexicalTheme.d.ts +1 -1
  126. package/lexical/createLexicalTheme.js +2 -2
  127. package/lexical/createLexicalTheme.js.map +1 -1
  128. package/package.json +4 -4
  129. package/registerComponentGroup.d.ts +1 -1
  130. package/registerComponentGroup.js +1 -1
  131. package/registerComponentGroup.js.map +1 -1
  132. package/types/WebsiteBuilderTheme.d.ts +17 -4
  133. package/types/WebsiteBuilderTheme.js.map +1 -1
  134. package/types.d.ts +9 -8
  135. package/types.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["deepEqual","set","InheritedValueResolver","DocumentOperations","InputsUpdater","generateElementId","InputsBindingsProcessor","constructor","elementId","inputsAst","breakpoints","rawBindings","elementFactory","elementReferences","getElementReferences","inputs","toDeepInputs","flat","result","assignValue","path","value","current","i","length","key","nextKey","isNextIndex","Array","isArray","Error","push","walk","nodes","prefix","node","pathParts","name","flatKey","join","entry","staticValue","static","children","list","pattern","RegExp","indexes","Object","keys","reduce","acc","match","parseInt","uniqueIndexes","from","Set","sort","a","b","undefined","part","Number","createUpdate","breakpoint","operations","originalInputs","rebuilt","overrides","bp","entries","structuredClone","seenPaths","valueResolver","isBaseBreakpoint","getValue","obj","segments","split","flatMap","segment","map","test","compareAndCollect","add","slice","newValue","originalEntry","action","newElement","createElementFromComponent","componentName","params","component","parentId","slot","index","bindings","createdId","element","id","existingId","idToUse","binding","type","input","responsive","inheritedValue","getInheritedValue","isResponsive","usedSlotIds","has","RemoveElement","references","forEach","indexOf"],"sources":["InputBindingsProcessor.ts"],"sourcesContent":["import deepEqual from \"deep-equal\";\nimport set from \"lodash/set\";\nimport type { DocumentElementBindings, DocumentElementInputBindings } from \"~/types\";\nimport { InheritedValueResolver } from \"~/InheritedValueResolver\";\nimport type { InputAstNode } from \"~/ComponentManifestToAstConverter\";\nimport { DocumentOperations, type IDocumentOperation } from \"~/documentOperations\";\nimport type { ElementFactory } from \"~/ElementFactory\";\nimport { InputsUpdater } from \"~/InputsUpdater\";\nimport { generateElementId } from \"./generateElementId\";\ntype DeepBindings = Record<string, any>;\n\nexport type ElementInputsBindings = {\n inputs: DocumentElementInputBindings;\n overrides: {\n [breakpoint: string]: {\n inputs: DocumentElementInputBindings;\n };\n };\n};\n\n/**\n * Handles deep-to-flat and flat-to-deep conversion of input bindings,\n * with breakpoint inheritance awareness.\n */\nexport class InputsBindingsProcessor {\n private breakpoints: string[];\n private rawBindings: DocumentElementBindings;\n private elementFactory: ElementFactory;\n private elementId: string;\n private inputsAst: InputAstNode[];\n private elementReferences: Set<string>;\n\n constructor(\n elementId: string,\n inputsAst: InputAstNode[],\n breakpoints: string[],\n rawBindings: DocumentElementBindings,\n elementFactory: ElementFactory\n ) {\n this.elementId = elementId;\n this.inputsAst = inputsAst;\n this.breakpoints = breakpoints;\n this.rawBindings = rawBindings;\n this.elementFactory = elementFactory;\n this.elementReferences = this.getElementReferences(rawBindings.inputs);\n }\n\n /**\n * Converts flat input bindings into deep inputs object (removes `.static` wrappers).\n */\n public toDeepInputs(flat: NonNullable<DocumentElementBindings[\"inputs\"]>): DeepBindings {\n const result: DeepBindings = {};\n\n // Assigns a value to a nested path within the result object, creating arrays/objects as needed.\n const assignValue = (path: (string | number)[], value: any) => {\n let current = result;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n const nextKey = path[i + 1];\n const isNextIndex = typeof nextKey === \"number\";\n\n if (typeof key === \"number\") {\n if (!Array.isArray(current)) {\n throw new Error(\"Expected array in path assignment.\");\n }\n while (current.length <= key) {\n current.push(isNextIndex ? [] : {});\n }\n if (typeof current[key] !== \"object\") {\n current[key] = isNextIndex ? [] : {};\n }\n current = current[key];\n } else {\n if (!(key in current) || typeof current[key] !== \"object\") {\n current[key] = isNextIndex ? [] : {};\n }\n current = current[key];\n }\n }\n current[path[path.length - 1]] = value;\n };\n\n // Recursively walks the AST and assigns values from flat bindings to the nested result.\n const walk = (nodes: InputAstNode[], prefix: string[]) => {\n for (const node of nodes) {\n const pathParts = [...prefix, node.name];\n const flatKey = pathParts.join(\"/\");\n const entry = flat[flatKey];\n const staticValue = entry?.static;\n\n if (node.children.length > 0) {\n if (node.list) {\n const pattern = new RegExp(`^${flatKey}\\\\/(\\\\d+)\\\\/`);\n const indexes = Object.keys(flat).reduce((acc: number[], key) => {\n const match = key.match(pattern);\n if (match) {\n acc.push(parseInt(match[1], 10));\n }\n return acc;\n }, []);\n\n const uniqueIndexes = Array.from(new Set(indexes)).sort((a, b) => a - b);\n\n for (const i of uniqueIndexes) {\n walk(node.children, [...prefix, `${node.name}/${i}`]);\n }\n } else {\n walk(node.children, pathParts);\n }\n } else if (staticValue !== undefined) {\n const path = pathParts.reduce<(string | number)[]>((acc, part) => {\n const match = part.match(/(.*?)\\/(\\d+)/);\n if (match) {\n acc.push(match[1], Number(match[2]));\n } else {\n acc.push(part);\n }\n return acc;\n }, []);\n assignValue(path, staticValue);\n }\n }\n };\n\n walk(this.inputsAst, []);\n return result;\n }\n\n /**\n * Flattens deep inputs object into flat bindings with `.static` wrappers,\n * skipping overrides that match inherited parent breakpoint values.\n */\n public createUpdate(inputs: DeepBindings, breakpoint: string) {\n const operations: IDocumentOperation[] = [];\n const originalInputs = this.rawBindings.inputs ?? {};\n\n const rebuilt: ElementInputsBindings = { inputs: {}, overrides: {} };\n\n // Clone existing overrides if present, to avoid losing breakpoint overrides\n if (this.rawBindings.overrides) {\n for (const [bp, overrides] of Object.entries(this.rawBindings.overrides)) {\n if (overrides.inputs) {\n set(\n rebuilt,\n `overrides.${bp}.inputs`,\n structuredClone(this.rawBindings.overrides[bp].inputs)\n );\n }\n }\n }\n\n // Set to track which flat binding paths we've processed during traversal\n const seenPaths = new Set<string>();\n const valueResolver = new InheritedValueResolver(this.breakpoints, bp => {\n if (this.isBaseBreakpoint(bp)) {\n return this.rawBindings.inputs;\n }\n return this.rawBindings.overrides?.[bp]?.inputs;\n });\n\n // Extracts a nested value from an object based on a flat string path.\n // Supports array indexes like 'rows/0/columns/1/children'.\n const getValue = (obj: any, path: string): any => {\n const segments = path.split(\"/\");\n const keys = segments.flatMap(segment => {\n return segment.split(\".\").map(part => {\n return /^\\d+$/.test(part) ? parseInt(part, 10) : part;\n });\n });\n return keys.reduce((acc, key) => (acc ? acc[key] : undefined), obj);\n };\n\n // Recursively traverses the AST nodes, comparing new input values with original bindings.\n // Collects changed values into 'rebuilt' and generates operations for new elements.\n const compareAndCollect = (nodes: InputAstNode[], prefix: string[]) => {\n for (const node of nodes) {\n const pathParts = [...prefix, node.name];\n const flatKey = pathParts.join(\"/\");\n\n // Mark this path as seen\n seenPaths.add(flatKey);\n\n if (node.children.length) {\n if (node.list) {\n // For list nodes, process each indexed item separately\n const list = getValue(inputs, flatKey);\n if (Array.isArray(list)) {\n for (let i = 0; i < list.length; i++) {\n // Recurse with indexed path like 'rows[0]', 'rows[1]'\n compareAndCollect(node.children, [\n ...pathParts.slice(0, -1),\n `${node.name}/${i}`\n ]);\n }\n }\n } else {\n // For single object nodes, recurse normally\n compareAndCollect(node.children, pathParts);\n }\n } else {\n // Leaf node (primitive or slot) processing\n\n // Get current new value from deep inputs\n const newValue = getValue(inputs, flatKey);\n\n // Get original binding entry for this path\n const originalEntry = originalInputs[flatKey];\n\n // Skip if newValue is undefined and no original entry\n if (newValue === undefined && !originalEntry) {\n continue;\n }\n\n if (typeof newValue === \"object\" && newValue?.action === \"CreateElement\") {\n // Handle CreateElement action by generating element and operations\n const newElement = this.elementFactory.createElementFromComponent({\n componentName: newValue.params.component,\n parentId: this.elementId,\n slot: flatKey,\n index: -1,\n bindings: newValue.params\n });\n\n const createdId = newElement.element.id;\n\n // Assign or generate a stable unique id for the binding\n const existingId = originalEntry?.id;\n const idToUse = existingId ?? generateElementId();\n\n // Build binding for the new element id(s)\n const binding = {\n static: node.list ? [createdId] : createdId,\n type: node.type,\n list: node.list,\n id: idToUse\n };\n\n if (node.input?.responsive && !this.isBaseBreakpoint(breakpoint)) {\n const inheritedValue = valueResolver.getInheritedValue(\n flatKey,\n breakpoint\n );\n\n if (binding.static === undefined) {\n // Unset override\n if (rebuilt.overrides[breakpoint]?.inputs?.[flatKey]) {\n delete rebuilt.overrides[breakpoint].inputs[flatKey];\n }\n } else if (\n inheritedValue === undefined ||\n !deepEqual(inheritedValue, binding.static)\n ) {\n if (!rebuilt.overrides[breakpoint]) {\n rebuilt.overrides[breakpoint] = { inputs: {} };\n }\n rebuilt.overrides[breakpoint].inputs[flatKey] = binding;\n } else {\n if (rebuilt.overrides[breakpoint]?.inputs?.[flatKey]) {\n delete rebuilt.overrides[breakpoint].inputs[flatKey];\n }\n }\n\n if (originalEntry) {\n rebuilt.inputs[flatKey] = originalEntry;\n }\n } else {\n // Normal case: update base inputs\n rebuilt.inputs[flatKey] = binding;\n }\n\n // Add generated operations for this element creation\n operations.push(...newElement.operations);\n } else {\n // Normal value update\n const isResponsive =\n node.input?.responsive && !this.isBaseBreakpoint(breakpoint);\n\n // Assign or generate a stable unique id for the binding\n const existingId = originalEntry?.id;\n const idToUse = existingId ?? generateElementId();\n\n // Merge existing original entry data with updated static value\n const binding = {\n ...(originalEntry ?? {}),\n static: newValue,\n type: node.type,\n list: node.list,\n id: idToUse\n };\n\n if (isResponsive) {\n const inheritedValue = valueResolver.getInheritedValue(\n flatKey,\n breakpoint\n );\n\n if (binding.static === undefined) {\n // Unset override\n if (rebuilt.overrides[breakpoint]?.inputs?.[flatKey]) {\n delete rebuilt.overrides[breakpoint].inputs[flatKey];\n }\n } else if (\n inheritedValue === undefined ||\n !deepEqual(inheritedValue, binding.static)\n ) {\n if (!rebuilt.overrides[breakpoint]) {\n rebuilt.overrides[breakpoint] = { inputs: {} };\n }\n rebuilt.overrides[breakpoint].inputs[flatKey] = binding;\n } else {\n if (rebuilt.overrides[breakpoint]?.inputs?.[flatKey]) {\n delete rebuilt.overrides[breakpoint].inputs[flatKey];\n }\n }\n\n if (originalEntry) {\n rebuilt.inputs[flatKey] = originalEntry;\n }\n } else {\n // Base binding update\n rebuilt.inputs[flatKey] = binding;\n }\n }\n }\n }\n };\n\n // Start the AST traversal and collection.\n compareAndCollect(this.inputsAst, []);\n\n // Identify elements referenced in slots that were removed since last state,\n // and queue their removal.\n const usedSlotIds = this.getElementReferences(rebuilt.inputs);\n for (const id of this.elementReferences) {\n if (!usedSlotIds.has(id)) {\n operations.push(new DocumentOperations.RemoveElement(id));\n }\n }\n\n return new InputsUpdater(this.elementId, rebuilt, operations);\n }\n\n // Returns a set of element IDs referenced in slot bindings within the provided inputs.\n private getElementReferences(inputs: DocumentElementBindings[\"inputs\"] = {}) {\n const references = new Set<string>();\n\n for (const [, binding] of Object.entries(inputs)) {\n if (binding.type === \"slot\") {\n if (Array.isArray(binding.static)) {\n ((binding.static ?? []) as string[]).forEach(id => references.add(id));\n } else if (typeof binding.static === \"string\") {\n references.add(binding.static);\n }\n }\n }\n\n return references;\n }\n\n private isBaseBreakpoint(name: string): boolean {\n return this.breakpoints.indexOf(name) === 0;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["deepEqual","set","InheritedValueResolver","DocumentOperations","InputsUpdater","generateElementId","InputsBindingsProcessor","constructor","elementId","inputsAst","breakpoints","rawBindings","elementFactory","elementReferences","getElementReferences","inputs","toDeepInputs","flat","result","assignValue","path","value","current","i","length","key","nextKey","isNextIndex","Array","isArray","Error","push","walk","nodes","prefix","node","pathParts","name","flatKey","join","entry","staticValue","static","children","list","pattern","RegExp","indexes","Object","keys","reduce","acc","match","parseInt","uniqueIndexes","from","Set","sort","a","b","undefined","part","Number","createUpdate","breakpoint","operations","originalInputs","rebuilt","overrides","bp","entries","structuredClone","seenPaths","valueResolver","isBaseBreakpoint","getValue","obj","segments","split","flatMap","segment","map","test","compareAndCollect","add","slice","newValue","originalEntry","action","newElement","createElementFromComponent","componentName","params","component","parentId","slot","index","bindings","createdId","element","id","existingId","idToUse","binding","type","input","responsive","inheritedValue","getInheritedValue","isResponsive","usedSlotIds","has","RemoveElement","references","forEach","indexOf"],"sources":["InputBindingsProcessor.ts"],"sourcesContent":["import deepEqual from \"deep-equal\";\nimport set from \"lodash/set.js\";\nimport type { DocumentElementBindings, DocumentElementInputBindings } from \"~/types.js\";\nimport { InheritedValueResolver } from \"~/InheritedValueResolver.js\";\nimport type { InputAstNode } from \"~/ComponentManifestToAstConverter.js\";\nimport { DocumentOperations, type IDocumentOperation } from \"~/documentOperations/index.js\";\nimport type { ElementFactory } from \"~/ElementFactory.js\";\nimport { InputsUpdater } from \"~/InputsUpdater.js\";\nimport { generateElementId } from \"./generateElementId.js\";\ntype DeepBindings = Record<string, any>;\n\nexport type ElementInputsBindings = {\n inputs: DocumentElementInputBindings;\n overrides: {\n [breakpoint: string]: {\n inputs: DocumentElementInputBindings;\n };\n };\n};\n\n/**\n * Handles deep-to-flat and flat-to-deep conversion of input bindings,\n * with breakpoint inheritance awareness.\n */\nexport class InputsBindingsProcessor {\n private breakpoints: string[];\n private rawBindings: DocumentElementBindings;\n private elementFactory: ElementFactory;\n private elementId: string;\n private inputsAst: InputAstNode[];\n private elementReferences: Set<string>;\n\n constructor(\n elementId: string,\n inputsAst: InputAstNode[],\n breakpoints: string[],\n rawBindings: DocumentElementBindings,\n elementFactory: ElementFactory\n ) {\n this.elementId = elementId;\n this.inputsAst = inputsAst;\n this.breakpoints = breakpoints;\n this.rawBindings = rawBindings;\n this.elementFactory = elementFactory;\n this.elementReferences = this.getElementReferences(rawBindings.inputs);\n }\n\n /**\n * Converts flat input bindings into deep inputs object (removes `.static` wrappers).\n */\n public toDeepInputs(flat: NonNullable<DocumentElementBindings[\"inputs\"]>): DeepBindings {\n const result: DeepBindings = {};\n\n // Assigns a value to a nested path within the result object, creating arrays/objects as needed.\n const assignValue = (path: (string | number)[], value: any) => {\n let current = result;\n for (let i = 0; i < path.length - 1; i++) {\n const key = path[i];\n const nextKey = path[i + 1];\n const isNextIndex = typeof nextKey === \"number\";\n\n if (typeof key === \"number\") {\n if (!Array.isArray(current)) {\n throw new Error(\"Expected array in path assignment.\");\n }\n while (current.length <= key) {\n current.push(isNextIndex ? [] : {});\n }\n if (typeof current[key] !== \"object\") {\n current[key] = isNextIndex ? [] : {};\n }\n current = current[key];\n } else {\n if (!(key in current) || typeof current[key] !== \"object\") {\n current[key] = isNextIndex ? [] : {};\n }\n current = current[key];\n }\n }\n current[path[path.length - 1]] = value;\n };\n\n // Recursively walks the AST and assigns values from flat bindings to the nested result.\n const walk = (nodes: InputAstNode[], prefix: string[]) => {\n for (const node of nodes) {\n const pathParts = [...prefix, node.name];\n const flatKey = pathParts.join(\"/\");\n const entry = flat[flatKey];\n const staticValue = entry?.static;\n\n if (node.children.length > 0) {\n if (node.list) {\n const pattern = new RegExp(`^${flatKey}\\\\/(\\\\d+)\\\\/`);\n const indexes = Object.keys(flat).reduce((acc: number[], key) => {\n const match = key.match(pattern);\n if (match) {\n acc.push(parseInt(match[1], 10));\n }\n return acc;\n }, []);\n\n const uniqueIndexes = Array.from(new Set(indexes)).sort((a, b) => a - b);\n\n for (const i of uniqueIndexes) {\n walk(node.children, [...prefix, `${node.name}/${i}`]);\n }\n } else {\n walk(node.children, pathParts);\n }\n } else if (staticValue !== undefined) {\n const path = pathParts.reduce<(string | number)[]>((acc, part) => {\n const match = part.match(/(.*?)\\/(\\d+)/);\n if (match) {\n acc.push(match[1], Number(match[2]));\n } else {\n acc.push(part);\n }\n return acc;\n }, []);\n assignValue(path, staticValue);\n }\n }\n };\n\n walk(this.inputsAst, []);\n return result;\n }\n\n /**\n * Flattens deep inputs object into flat bindings with `.static` wrappers,\n * skipping overrides that match inherited parent breakpoint values.\n */\n public createUpdate(inputs: DeepBindings, breakpoint: string) {\n const operations: IDocumentOperation[] = [];\n const originalInputs = this.rawBindings.inputs ?? {};\n\n const rebuilt: ElementInputsBindings = { inputs: {}, overrides: {} };\n\n // Clone existing overrides if present, to avoid losing breakpoint overrides\n if (this.rawBindings.overrides) {\n for (const [bp, overrides] of Object.entries(this.rawBindings.overrides)) {\n if (overrides.inputs) {\n set(\n rebuilt,\n `overrides.${bp}.inputs`,\n structuredClone(this.rawBindings.overrides[bp].inputs)\n );\n }\n }\n }\n\n // Set to track which flat binding paths we've processed during traversal\n const seenPaths = new Set<string>();\n const valueResolver = new InheritedValueResolver(this.breakpoints, bp => {\n if (this.isBaseBreakpoint(bp)) {\n return this.rawBindings.inputs;\n }\n return this.rawBindings.overrides?.[bp]?.inputs;\n });\n\n // Extracts a nested value from an object based on a flat string path.\n // Supports array indexes like 'rows/0/columns/1/children'.\n const getValue = (obj: any, path: string): any => {\n const segments = path.split(\"/\");\n const keys = segments.flatMap(segment => {\n return segment.split(\".\").map(part => {\n return /^\\d+$/.test(part) ? parseInt(part, 10) : part;\n });\n });\n return keys.reduce((acc, key) => (acc ? acc[key] : undefined), obj);\n };\n\n // Recursively traverses the AST nodes, comparing new input values with original bindings.\n // Collects changed values into 'rebuilt' and generates operations for new elements.\n const compareAndCollect = (nodes: InputAstNode[], prefix: string[]) => {\n for (const node of nodes) {\n const pathParts = [...prefix, node.name];\n const flatKey = pathParts.join(\"/\");\n\n // Mark this path as seen\n seenPaths.add(flatKey);\n\n if (node.children.length) {\n if (node.list) {\n // For list nodes, process each indexed item separately\n const list = getValue(inputs, flatKey);\n if (Array.isArray(list)) {\n for (let i = 0; i < list.length; i++) {\n // Recurse with indexed path like 'rows[0]', 'rows[1]'\n compareAndCollect(node.children, [\n ...pathParts.slice(0, -1),\n `${node.name}/${i}`\n ]);\n }\n }\n } else {\n // For single object nodes, recurse normally\n compareAndCollect(node.children, pathParts);\n }\n } else {\n // Leaf node (primitive or slot) processing\n\n // Get current new value from deep inputs\n const newValue = getValue(inputs, flatKey);\n\n // Get original binding entry for this path\n const originalEntry = originalInputs[flatKey];\n\n // Skip if newValue is undefined and no original entry\n if (newValue === undefined && !originalEntry) {\n continue;\n }\n\n if (typeof newValue === \"object\" && newValue?.action === \"CreateElement\") {\n // Handle CreateElement action by generating element and operations\n const newElement = this.elementFactory.createElementFromComponent({\n componentName: newValue.params.component,\n parentId: this.elementId,\n slot: flatKey,\n index: -1,\n bindings: newValue.params\n });\n\n const createdId = newElement.element.id;\n\n // Assign or generate a stable unique id for the binding\n const existingId = originalEntry?.id;\n const idToUse = existingId ?? generateElementId();\n\n // Build binding for the new element id(s)\n const binding = {\n static: node.list ? [createdId] : createdId,\n type: node.type,\n list: node.list,\n id: idToUse\n };\n\n if (node.input?.responsive && !this.isBaseBreakpoint(breakpoint)) {\n const inheritedValue = valueResolver.getInheritedValue(\n flatKey,\n breakpoint\n );\n\n if (binding.static === undefined) {\n // Unset override\n if (rebuilt.overrides[breakpoint]?.inputs?.[flatKey]) {\n delete rebuilt.overrides[breakpoint].inputs[flatKey];\n }\n } else if (\n inheritedValue === undefined ||\n !deepEqual(inheritedValue, binding.static)\n ) {\n if (!rebuilt.overrides[breakpoint]) {\n rebuilt.overrides[breakpoint] = { inputs: {} };\n }\n rebuilt.overrides[breakpoint].inputs[flatKey] = binding;\n } else {\n if (rebuilt.overrides[breakpoint]?.inputs?.[flatKey]) {\n delete rebuilt.overrides[breakpoint].inputs[flatKey];\n }\n }\n\n if (originalEntry) {\n rebuilt.inputs[flatKey] = originalEntry;\n }\n } else {\n // Normal case: update base inputs\n rebuilt.inputs[flatKey] = binding;\n }\n\n // Add generated operations for this element creation\n operations.push(...newElement.operations);\n } else {\n // Normal value update\n const isResponsive =\n node.input?.responsive && !this.isBaseBreakpoint(breakpoint);\n\n // Assign or generate a stable unique id for the binding\n const existingId = originalEntry?.id;\n const idToUse = existingId ?? generateElementId();\n\n // Merge existing original entry data with updated static value\n const binding = {\n ...(originalEntry ?? {}),\n static: newValue,\n type: node.type,\n list: node.list,\n id: idToUse\n };\n\n if (isResponsive) {\n const inheritedValue = valueResolver.getInheritedValue(\n flatKey,\n breakpoint\n );\n\n if (binding.static === undefined) {\n // Unset override\n if (rebuilt.overrides[breakpoint]?.inputs?.[flatKey]) {\n delete rebuilt.overrides[breakpoint].inputs[flatKey];\n }\n } else if (\n inheritedValue === undefined ||\n !deepEqual(inheritedValue, binding.static)\n ) {\n if (!rebuilt.overrides[breakpoint]) {\n rebuilt.overrides[breakpoint] = { inputs: {} };\n }\n rebuilt.overrides[breakpoint].inputs[flatKey] = binding;\n } else {\n if (rebuilt.overrides[breakpoint]?.inputs?.[flatKey]) {\n delete rebuilt.overrides[breakpoint].inputs[flatKey];\n }\n }\n\n if (originalEntry) {\n rebuilt.inputs[flatKey] = originalEntry;\n }\n } else {\n // Base binding update\n rebuilt.inputs[flatKey] = binding;\n }\n }\n }\n }\n };\n\n // Start the AST traversal and collection.\n compareAndCollect(this.inputsAst, []);\n\n // Identify elements referenced in slots that were removed since last state,\n // and queue their removal.\n const usedSlotIds = this.getElementReferences(rebuilt.inputs);\n for (const id of this.elementReferences) {\n if (!usedSlotIds.has(id)) {\n operations.push(new DocumentOperations.RemoveElement(id));\n }\n }\n\n return new InputsUpdater(this.elementId, rebuilt, operations);\n }\n\n // Returns a set of element IDs referenced in slot bindings within the provided inputs.\n private getElementReferences(inputs: DocumentElementBindings[\"inputs\"] = {}) {\n const references = new Set<string>();\n\n for (const [, binding] of Object.entries(inputs)) {\n if (binding.type === \"slot\") {\n if (Array.isArray(binding.static)) {\n ((binding.static ?? []) as string[]).forEach(id => references.add(id));\n } else if (typeof binding.static === \"string\") {\n references.add(binding.static);\n }\n }\n }\n\n return references;\n }\n\n private isBaseBreakpoint(name: string): boolean {\n return this.breakpoints.indexOf(name) === 0;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { InputsBindingsProcessor } from "./InputBindingsProcessor";
2
- import { ElementFactory } from "./ElementFactory";
1
+ import { InputsBindingsProcessor } from "./InputBindingsProcessor.js";
2
+ import { ElementFactory } from "./ElementFactory.js";
3
3
  describe("InputsBindingsProcessor", () => {
4
4
  // Example simple AST (you can expand as needed)
5
5
  const simpleAst = [{
@@ -1 +1 @@
1
- {"version":3,"names":["InputsBindingsProcessor","ElementFactory","describe","simpleAst","name","type","list","path","children","input","label","fields","withSlotAst","breakpoints","baseBindings","inputs","title","id","static","styles","overrides","tablet","mobile","getInputsBindingsProcessor","bindings","ast","elementFactory","acceptsChildren","renderer","defaultValue","processor","it","deep","toDeepInputs","expect","toEqual","items","newInputs","updater","createUpdate","rebuilt","elementId","applyToDocument","elementBindings","toBe","toBeUndefined","rawBindings","patch","createJsonPatch","arrayContaining","objectContaining","op","value","deepInputs","push","action","params","component","elements","toMatchObject","any","String"],"sources":["InputsBindingsProcessor.test.ts"],"sourcesContent":["import { InputsBindingsProcessor } from \"./InputBindingsProcessor\";\nimport type { InputAstNode } from \"~/ComponentManifestToAstConverter\";\nimport type { DocumentElementBindings } from \"~/types\";\nimport { ElementFactory } from \"~/ElementFactory\";\n\ndescribe(\"InputsBindingsProcessor\", () => {\n // Example simple AST (you can expand as needed)\n const simpleAst: InputAstNode[] = [\n {\n name: \"title\",\n type: \"text\",\n list: false,\n path: \"title\",\n children: [],\n input: {\n type: \"text\",\n name: \"title\",\n label: \"Title\"\n }\n },\n {\n name: \"items\",\n type: \"object\",\n list: true,\n path: \"items\",\n children: [\n {\n name: \"label\",\n type: \"text\",\n list: false,\n path: \"items.label\",\n children: [],\n input: {\n type: \"text\",\n name: \"label\",\n label: \"Label\"\n }\n }\n ],\n input: {\n type: \"object\",\n name: \"items\",\n list: true,\n fields: [\n {\n type: \"text\",\n name: \"label\",\n label: \"Label\"\n }\n ]\n }\n }\n ];\n\n const withSlotAst: InputAstNode[] = [\n {\n path: \"children\",\n children: [],\n name: \"children\",\n type: \"slot\",\n list: false,\n input: {\n type: \"slot\",\n name: \"children\",\n label: \"Children\"\n }\n }\n ];\n\n const breakpoints = [\"desktop\", \"tablet\", \"mobile\"];\n\n const baseBindings: DocumentElementBindings = {\n inputs: {\n title: { id: \"title\", static: \"Base Title\", type: \"text\" },\n \"items/0/label\": {\n id: \"label0\",\n static: \"Base Label 1\",\n type: \"text\"\n },\n \"items/1/label\": {\n id: \"label1\",\n static: \"Base Label 2\",\n type: \"text\"\n }\n },\n styles: {}\n };\n\n const overrides: DocumentElementBindings[\"overrides\"] = {\n tablet: {\n inputs: {\n title: { id: \"title\", static: \"Tablet Title\", type: \"text\" },\n \"items/0/label\": {\n id: \"label0\",\n static: \"Tablet Label 1\",\n type: \"text\"\n }\n }\n },\n mobile: {\n inputs: {\n title: { id: \"title\", static: \"Mobile Title\", type: \"text\" }\n }\n }\n };\n\n const getInputsBindingsProcessor = (\n bindings: DocumentElementBindings = baseBindings,\n ast = simpleAst\n ) => {\n const elementFactory = new ElementFactory({\n \"Webiny/GridColumn\": {\n name: \"Webiny/GridColumn\",\n label: \"Column\",\n acceptsChildren: true,\n inputs: [\n {\n type: \"slot\",\n list: true,\n renderer: \"Webiny/Slot\",\n name: \"children\",\n defaultValue: []\n }\n ]\n }\n });\n const processor = new InputsBindingsProcessor(\n \"elementId\",\n ast,\n breakpoints,\n bindings,\n elementFactory\n );\n\n return { processor, bindings };\n };\n\n it(\"toDeep should convert flat bindings to nested object\", () => {\n const { processor } = getInputsBindingsProcessor();\n\n const deep = processor.toDeepInputs(baseBindings.inputs ?? {});\n expect(deep).toEqual({\n title: \"Base Title\",\n items: [{ label: \"Base Label 1\" }, { label: \"Base Label 2\" }]\n });\n });\n\n it(\"applyInputs should assign base breakpoint inputs correctly\", () => {\n const { processor } = getInputsBindingsProcessor();\n\n const newInputs = {\n title: \"New Base Title\",\n items: [{ label: \"New Label 1\" }, { label: \"New Label 2\" }]\n };\n\n const updater = processor.createUpdate(newInputs, \"mobile\");\n const rebuilt: any = { bindings: { elementId: { inputs: {}, styles: {} } } };\n updater.applyToDocument(rebuilt);\n\n const elementBindings = rebuilt.bindings.elementId;\n\n expect(elementBindings.inputs.title.static).toBe(\"New Base Title\");\n expect(elementBindings.inputs[\"items/0/label\"].static).toBe(\"New Label 1\");\n expect(elementBindings.inputs[\"items/1/label\"].static).toBe(\"New Label 2\");\n expect(elementBindings.overrides).toBeUndefined();\n });\n\n it(\"applyInputs should assign overrides correctly, skipping inherited values\", () => {\n const rawBindings: DocumentElementBindings = {\n inputs: baseBindings.inputs,\n overrides,\n styles: {}\n };\n const { processor } = getInputsBindingsProcessor(rawBindings);\n\n const newInputs = {\n title: \"Mobile Title\",\n items: [{ label: \"Base Label 1\" }, { label: \"Base Label 2\" }]\n };\n\n const updater = processor.createUpdate(newInputs, \"mobile\");\n const rebuilt: any = { bindings: { elementId: { inputs: {}, styles: {} } } };\n updater.applyToDocument(rebuilt);\n\n const elementBindings = rebuilt.bindings.elementId;\n\n expect(elementBindings.inputs.title.static).toBe(\"Mobile Title\");\n // Items are same as base, so should not be in overrides\n expect(elementBindings.overrides?.mobile.inputs?.[\"items/0/label\"]).toBeUndefined();\n });\n\n it(\"createPatch should create correct json patch for input changes\", () => {\n const rawBindings: DocumentElementBindings = {\n inputs: baseBindings.inputs,\n overrides,\n styles: {}\n };\n const { processor, bindings } = getInputsBindingsProcessor(rawBindings);\n\n const newInputs = {\n title: \"Changed Title\",\n items: [{ label: \"Changed Label 1\" }]\n };\n\n const updater = processor.createUpdate(newInputs, \"mobile\");\n const patch = updater.createJsonPatch(bindings);\n\n // You're seeing the weird `~1` delimiter because that's what fast-json-patch does with indexes.\n expect(patch).toEqual(\n expect.arrayContaining([\n expect.objectContaining({\n op: \"remove\",\n path: \"/inputs/items~11~1label\"\n }),\n expect.objectContaining({\n op: \"replace\",\n path: \"/inputs/title/static\",\n value: \"Changed Title\"\n }),\n expect.objectContaining({\n op: \"replace\",\n path: \"/inputs/items~10~1label/static\",\n value: \"Changed Label 1\"\n })\n ])\n );\n });\n\n it(\"applyInputs removes keys missing in new inputs\", () => {\n const rawBindings: DocumentElementBindings = {\n inputs: {\n ...baseBindings.inputs,\n \"some/key\": { id: \"someKey\", static: \"toRemove\", type: \"text\" }\n },\n overrides,\n styles: {}\n };\n const { processor } = getInputsBindingsProcessor(rawBindings);\n\n const newInputs = {\n title: \"Base Title\",\n items: [{ label: \"Base Label 1\" }, { label: \"Base Label 2\" }]\n };\n\n const updater = processor.createUpdate(newInputs, \"mobile\");\n const rebuilt: any = { bindings: { elementId: { inputs: {}, styles: {} } } };\n updater.applyToDocument(rebuilt);\n\n const elementBindings = rebuilt.bindings.elementId;\n\n expect(elementBindings.inputs[\"some/key\"]).toBeUndefined();\n });\n\n it(\"createUpdate should apply correct changes to the document\", () => {\n const rawBindings: DocumentElementBindings = {\n inputs: baseBindings.inputs,\n overrides,\n styles: {}\n };\n const { processor } = getInputsBindingsProcessor(rawBindings, [\n ...simpleAst,\n ...withSlotAst\n ]);\n\n const deepInputs = processor.toDeepInputs(rawBindings.inputs!);\n\n deepInputs.items.push({ label: \"New Label 1\" });\n deepInputs.children = {\n action: \"CreateElement\",\n params: {\n component: \"Webiny/GridColumn\"\n }\n };\n\n const updater = processor.createUpdate(deepInputs, \"mobile\");\n const rebuilt: any = { bindings: { elementId: { inputs: {}, styles: {} } }, elements: {} };\n updater.applyToDocument(rebuilt);\n\n expect(rebuilt.bindings.elementId.inputs).toMatchObject({\n title: { id: \"title\", static: \"Base Title\", type: \"text\" },\n \"items/0/label\": {\n id: \"label0\",\n static: \"Base Label 1\",\n type: \"text\"\n },\n \"items/1/label\": {\n id: \"label1\",\n static: \"Base Label 2\",\n type: \"text\"\n },\n \"items/2/label\": {\n id: expect.any(String),\n static: \"New Label 1\",\n type: \"text\"\n },\n children: {\n id: expect.any(String),\n static: expect.any(String),\n type: \"slot\"\n }\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["InputsBindingsProcessor","ElementFactory","describe","simpleAst","name","type","list","path","children","input","label","fields","withSlotAst","breakpoints","baseBindings","inputs","title","id","static","styles","overrides","tablet","mobile","getInputsBindingsProcessor","bindings","ast","elementFactory","acceptsChildren","renderer","defaultValue","processor","it","deep","toDeepInputs","expect","toEqual","items","newInputs","updater","createUpdate","rebuilt","elementId","applyToDocument","elementBindings","toBe","toBeUndefined","rawBindings","patch","createJsonPatch","arrayContaining","objectContaining","op","value","deepInputs","push","action","params","component","elements","toMatchObject","any","String"],"sources":["InputsBindingsProcessor.test.ts"],"sourcesContent":["import { InputsBindingsProcessor } from \"./InputBindingsProcessor.js\";\nimport type { InputAstNode } from \"~/ComponentManifestToAstConverter.js\";\nimport type { DocumentElementBindings } from \"~/types.js\";\nimport { ElementFactory } from \"~/ElementFactory.js\";\n\ndescribe(\"InputsBindingsProcessor\", () => {\n // Example simple AST (you can expand as needed)\n const simpleAst: InputAstNode[] = [\n {\n name: \"title\",\n type: \"text\",\n list: false,\n path: \"title\",\n children: [],\n input: {\n type: \"text\",\n name: \"title\",\n label: \"Title\"\n }\n },\n {\n name: \"items\",\n type: \"object\",\n list: true,\n path: \"items\",\n children: [\n {\n name: \"label\",\n type: \"text\",\n list: false,\n path: \"items.label\",\n children: [],\n input: {\n type: \"text\",\n name: \"label\",\n label: \"Label\"\n }\n }\n ],\n input: {\n type: \"object\",\n name: \"items\",\n list: true,\n fields: [\n {\n type: \"text\",\n name: \"label\",\n label: \"Label\"\n }\n ]\n }\n }\n ];\n\n const withSlotAst: InputAstNode[] = [\n {\n path: \"children\",\n children: [],\n name: \"children\",\n type: \"slot\",\n list: false,\n input: {\n type: \"slot\",\n name: \"children\",\n label: \"Children\"\n }\n }\n ];\n\n const breakpoints = [\"desktop\", \"tablet\", \"mobile\"];\n\n const baseBindings: DocumentElementBindings = {\n inputs: {\n title: { id: \"title\", static: \"Base Title\", type: \"text\" },\n \"items/0/label\": {\n id: \"label0\",\n static: \"Base Label 1\",\n type: \"text\"\n },\n \"items/1/label\": {\n id: \"label1\",\n static: \"Base Label 2\",\n type: \"text\"\n }\n },\n styles: {}\n };\n\n const overrides: DocumentElementBindings[\"overrides\"] = {\n tablet: {\n inputs: {\n title: { id: \"title\", static: \"Tablet Title\", type: \"text\" },\n \"items/0/label\": {\n id: \"label0\",\n static: \"Tablet Label 1\",\n type: \"text\"\n }\n }\n },\n mobile: {\n inputs: {\n title: { id: \"title\", static: \"Mobile Title\", type: \"text\" }\n }\n }\n };\n\n const getInputsBindingsProcessor = (\n bindings: DocumentElementBindings = baseBindings,\n ast = simpleAst\n ) => {\n const elementFactory = new ElementFactory({\n \"Webiny/GridColumn\": {\n name: \"Webiny/GridColumn\",\n label: \"Column\",\n acceptsChildren: true,\n inputs: [\n {\n type: \"slot\",\n list: true,\n renderer: \"Webiny/Slot\",\n name: \"children\",\n defaultValue: []\n }\n ]\n }\n });\n const processor = new InputsBindingsProcessor(\n \"elementId\",\n ast,\n breakpoints,\n bindings,\n elementFactory\n );\n\n return { processor, bindings };\n };\n\n it(\"toDeep should convert flat bindings to nested object\", () => {\n const { processor } = getInputsBindingsProcessor();\n\n const deep = processor.toDeepInputs(baseBindings.inputs ?? {});\n expect(deep).toEqual({\n title: \"Base Title\",\n items: [{ label: \"Base Label 1\" }, { label: \"Base Label 2\" }]\n });\n });\n\n it(\"applyInputs should assign base breakpoint inputs correctly\", () => {\n const { processor } = getInputsBindingsProcessor();\n\n const newInputs = {\n title: \"New Base Title\",\n items: [{ label: \"New Label 1\" }, { label: \"New Label 2\" }]\n };\n\n const updater = processor.createUpdate(newInputs, \"mobile\");\n const rebuilt: any = { bindings: { elementId: { inputs: {}, styles: {} } } };\n updater.applyToDocument(rebuilt);\n\n const elementBindings = rebuilt.bindings.elementId;\n\n expect(elementBindings.inputs.title.static).toBe(\"New Base Title\");\n expect(elementBindings.inputs[\"items/0/label\"].static).toBe(\"New Label 1\");\n expect(elementBindings.inputs[\"items/1/label\"].static).toBe(\"New Label 2\");\n expect(elementBindings.overrides).toBeUndefined();\n });\n\n it(\"applyInputs should assign overrides correctly, skipping inherited values\", () => {\n const rawBindings: DocumentElementBindings = {\n inputs: baseBindings.inputs,\n overrides,\n styles: {}\n };\n const { processor } = getInputsBindingsProcessor(rawBindings);\n\n const newInputs = {\n title: \"Mobile Title\",\n items: [{ label: \"Base Label 1\" }, { label: \"Base Label 2\" }]\n };\n\n const updater = processor.createUpdate(newInputs, \"mobile\");\n const rebuilt: any = { bindings: { elementId: { inputs: {}, styles: {} } } };\n updater.applyToDocument(rebuilt);\n\n const elementBindings = rebuilt.bindings.elementId;\n\n expect(elementBindings.inputs.title.static).toBe(\"Mobile Title\");\n // Items are same as base, so should not be in overrides\n expect(elementBindings.overrides?.mobile.inputs?.[\"items/0/label\"]).toBeUndefined();\n });\n\n it(\"createPatch should create correct json patch for input changes\", () => {\n const rawBindings: DocumentElementBindings = {\n inputs: baseBindings.inputs,\n overrides,\n styles: {}\n };\n const { processor, bindings } = getInputsBindingsProcessor(rawBindings);\n\n const newInputs = {\n title: \"Changed Title\",\n items: [{ label: \"Changed Label 1\" }]\n };\n\n const updater = processor.createUpdate(newInputs, \"mobile\");\n const patch = updater.createJsonPatch(bindings);\n\n // You're seeing the weird `~1` delimiter because that's what fast-json-patch does with indexes.\n expect(patch).toEqual(\n expect.arrayContaining([\n expect.objectContaining({\n op: \"remove\",\n path: \"/inputs/items~11~1label\"\n }),\n expect.objectContaining({\n op: \"replace\",\n path: \"/inputs/title/static\",\n value: \"Changed Title\"\n }),\n expect.objectContaining({\n op: \"replace\",\n path: \"/inputs/items~10~1label/static\",\n value: \"Changed Label 1\"\n })\n ])\n );\n });\n\n it(\"applyInputs removes keys missing in new inputs\", () => {\n const rawBindings: DocumentElementBindings = {\n inputs: {\n ...baseBindings.inputs,\n \"some/key\": { id: \"someKey\", static: \"toRemove\", type: \"text\" }\n },\n overrides,\n styles: {}\n };\n const { processor } = getInputsBindingsProcessor(rawBindings);\n\n const newInputs = {\n title: \"Base Title\",\n items: [{ label: \"Base Label 1\" }, { label: \"Base Label 2\" }]\n };\n\n const updater = processor.createUpdate(newInputs, \"mobile\");\n const rebuilt: any = { bindings: { elementId: { inputs: {}, styles: {} } } };\n updater.applyToDocument(rebuilt);\n\n const elementBindings = rebuilt.bindings.elementId;\n\n expect(elementBindings.inputs[\"some/key\"]).toBeUndefined();\n });\n\n it(\"createUpdate should apply correct changes to the document\", () => {\n const rawBindings: DocumentElementBindings = {\n inputs: baseBindings.inputs,\n overrides,\n styles: {}\n };\n const { processor } = getInputsBindingsProcessor(rawBindings, [\n ...simpleAst,\n ...withSlotAst\n ]);\n\n const deepInputs = processor.toDeepInputs(rawBindings.inputs!);\n\n deepInputs.items.push({ label: \"New Label 1\" });\n deepInputs.children = {\n action: \"CreateElement\",\n params: {\n component: \"Webiny/GridColumn\"\n }\n };\n\n const updater = processor.createUpdate(deepInputs, \"mobile\");\n const rebuilt: any = { bindings: { elementId: { inputs: {}, styles: {} } }, elements: {} };\n updater.applyToDocument(rebuilt);\n\n expect(rebuilt.bindings.elementId.inputs).toMatchObject({\n title: { id: \"title\", static: \"Base Title\", type: \"text\" },\n \"items/0/label\": {\n id: \"label0\",\n static: \"Base Label 1\",\n type: \"text\"\n },\n \"items/1/label\": {\n id: \"label1\",\n static: \"Base Label 2\",\n type: \"text\"\n },\n \"items/2/label\": {\n id: expect.any(String),\n static: \"New Label 1\",\n type: \"text\"\n },\n children: {\n id: expect.any(String),\n static: expect.any(String),\n type: \"slot\"\n }\n });\n });\n});\n"],"mappings":"AAAA,SAASA,uBAAuB;AAGhC,SAASC,cAAc;AAEvBC,QAAQ,CAAC,yBAAyB,EAAE,MAAM;EACtC;EACA,MAAMC,SAAyB,GAAG,CAC9B;IACIC,IAAI,EAAE,OAAO;IACbC,IAAI,EAAE,MAAM;IACZC,IAAI,EAAE,KAAK;IACXC,IAAI,EAAE,OAAO;IACbC,QAAQ,EAAE,EAAE;IACZC,KAAK,EAAE;MACHJ,IAAI,EAAE,MAAM;MACZD,IAAI,EAAE,OAAO;MACbM,KAAK,EAAE;IACX;EACJ,CAAC,EACD;IACIN,IAAI,EAAE,OAAO;IACbC,IAAI,EAAE,QAAQ;IACdC,IAAI,EAAE,IAAI;IACVC,IAAI,EAAE,OAAO;IACbC,QAAQ,EAAE,CACN;MACIJ,IAAI,EAAE,OAAO;MACbC,IAAI,EAAE,MAAM;MACZC,IAAI,EAAE,KAAK;MACXC,IAAI,EAAE,aAAa;MACnBC,QAAQ,EAAE,EAAE;MACZC,KAAK,EAAE;QACHJ,IAAI,EAAE,MAAM;QACZD,IAAI,EAAE,OAAO;QACbM,KAAK,EAAE;MACX;IACJ,CAAC,CACJ;IACDD,KAAK,EAAE;MACHJ,IAAI,EAAE,QAAQ;MACdD,IAAI,EAAE,OAAO;MACbE,IAAI,EAAE,IAAI;MACVK,MAAM,EAAE,CACJ;QACIN,IAAI,EAAE,MAAM;QACZD,IAAI,EAAE,OAAO;QACbM,KAAK,EAAE;MACX,CAAC;IAET;EACJ,CAAC,CACJ;EAED,MAAME,WAA2B,GAAG,CAChC;IACIL,IAAI,EAAE,UAAU;IAChBC,QAAQ,EAAE,EAAE;IACZJ,IAAI,EAAE,UAAU;IAChBC,IAAI,EAAE,MAAM;IACZC,IAAI,EAAE,KAAK;IACXG,KAAK,EAAE;MACHJ,IAAI,EAAE,MAAM;MACZD,IAAI,EAAE,UAAU;MAChBM,KAAK,EAAE;IACX;EACJ,CAAC,CACJ;EAED,MAAMG,WAAW,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;EAEnD,MAAMC,YAAqC,GAAG;IAC1CC,MAAM,EAAE;MACJC,KAAK,EAAE;QAAEC,EAAE,EAAE,OAAO;QAAEC,MAAM,EAAE,YAAY;QAAEb,IAAI,EAAE;MAAO,CAAC;MAC1D,eAAe,EAAE;QACbY,EAAE,EAAE,QAAQ;QACZC,MAAM,EAAE,cAAc;QACtBb,IAAI,EAAE;MACV,CAAC;MACD,eAAe,EAAE;QACbY,EAAE,EAAE,QAAQ;QACZC,MAAM,EAAE,cAAc;QACtBb,IAAI,EAAE;MACV;IACJ,CAAC;IACDc,MAAM,EAAE,CAAC;EACb,CAAC;EAED,MAAMC,SAA+C,GAAG;IACpDC,MAAM,EAAE;MACJN,MAAM,EAAE;QACJC,KAAK,EAAE;UAAEC,EAAE,EAAE,OAAO;UAAEC,MAAM,EAAE,cAAc;UAAEb,IAAI,EAAE;QAAO,CAAC;QAC5D,eAAe,EAAE;UACbY,EAAE,EAAE,QAAQ;UACZC,MAAM,EAAE,gBAAgB;UACxBb,IAAI,EAAE;QACV;MACJ;IACJ,CAAC;IACDiB,MAAM,EAAE;MACJP,MAAM,EAAE;QACJC,KAAK,EAAE;UAAEC,EAAE,EAAE,OAAO;UAAEC,MAAM,EAAE,cAAc;UAAEb,IAAI,EAAE;QAAO;MAC/D;IACJ;EACJ,CAAC;EAED,MAAMkB,0BAA0B,GAAGA,CAC/BC,QAAiC,GAAGV,YAAY,EAChDW,GAAG,GAAGtB,SAAS,KACd;IACD,MAAMuB,cAAc,GAAG,IAAIzB,cAAc,CAAC;MACtC,mBAAmB,EAAE;QACjBG,IAAI,EAAE,mBAAmB;QACzBM,KAAK,EAAE,QAAQ;QACfiB,eAAe,EAAE,IAAI;QACrBZ,MAAM,EAAE,CACJ;UACIV,IAAI,EAAE,MAAM;UACZC,IAAI,EAAE,IAAI;UACVsB,QAAQ,EAAE,aAAa;UACvBxB,IAAI,EAAE,UAAU;UAChByB,YAAY,EAAE;QAClB,CAAC;MAET;IACJ,CAAC,CAAC;IACF,MAAMC,SAAS,GAAG,IAAI9B,uBAAuB,CACzC,WAAW,EACXyB,GAAG,EACHZ,WAAW,EACXW,QAAQ,EACRE,cACJ,CAAC;IAED,OAAO;MAAEI,SAAS;MAAEN;IAAS,CAAC;EAClC,CAAC;EAEDO,EAAE,CAAC,sDAAsD,EAAE,MAAM;IAC7D,MAAM;MAAED;IAAU,CAAC,GAAGP,0BAA0B,CAAC,CAAC;IAElD,MAAMS,IAAI,GAAGF,SAAS,CAACG,YAAY,CAACnB,YAAY,CAACC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC9DmB,MAAM,CAACF,IAAI,CAAC,CAACG,OAAO,CAAC;MACjBnB,KAAK,EAAE,YAAY;MACnBoB,KAAK,EAAE,CAAC;QAAE1B,KAAK,EAAE;MAAe,CAAC,EAAE;QAAEA,KAAK,EAAE;MAAe,CAAC;IAChE,CAAC,CAAC;EACN,CAAC,CAAC;EAEFqB,EAAE,CAAC,4DAA4D,EAAE,MAAM;IACnE,MAAM;MAAED;IAAU,CAAC,GAAGP,0BAA0B,CAAC,CAAC;IAElD,MAAMc,SAAS,GAAG;MACdrB,KAAK,EAAE,gBAAgB;MACvBoB,KAAK,EAAE,CAAC;QAAE1B,KAAK,EAAE;MAAc,CAAC,EAAE;QAAEA,KAAK,EAAE;MAAc,CAAC;IAC9D,CAAC;IAED,MAAM4B,OAAO,GAAGR,SAAS,CAACS,YAAY,CAACF,SAAS,EAAE,QAAQ,CAAC;IAC3D,MAAMG,OAAY,GAAG;MAAEhB,QAAQ,EAAE;QAAEiB,SAAS,EAAE;UAAE1B,MAAM,EAAE,CAAC,CAAC;UAAEI,MAAM,EAAE,CAAC;QAAE;MAAE;IAAE,CAAC;IAC5EmB,OAAO,CAACI,eAAe,CAACF,OAAO,CAAC;IAEhC,MAAMG,eAAe,GAAGH,OAAO,CAAChB,QAAQ,CAACiB,SAAS;IAElDP,MAAM,CAACS,eAAe,CAAC5B,MAAM,CAACC,KAAK,CAACE,MAAM,CAAC,CAAC0B,IAAI,CAAC,gBAAgB,CAAC;IAClEV,MAAM,CAACS,eAAe,CAAC5B,MAAM,CAAC,eAAe,CAAC,CAACG,MAAM,CAAC,CAAC0B,IAAI,CAAC,aAAa,CAAC;IAC1EV,MAAM,CAACS,eAAe,CAAC5B,MAAM,CAAC,eAAe,CAAC,CAACG,MAAM,CAAC,CAAC0B,IAAI,CAAC,aAAa,CAAC;IAC1EV,MAAM,CAACS,eAAe,CAACvB,SAAS,CAAC,CAACyB,aAAa,CAAC,CAAC;EACrD,CAAC,CAAC;EAEFd,EAAE,CAAC,0EAA0E,EAAE,MAAM;IACjF,MAAMe,WAAoC,GAAG;MACzC/B,MAAM,EAAED,YAAY,CAACC,MAAM;MAC3BK,SAAS;MACTD,MAAM,EAAE,CAAC;IACb,CAAC;IACD,MAAM;MAAEW;IAAU,CAAC,GAAGP,0BAA0B,CAACuB,WAAW,CAAC;IAE7D,MAAMT,SAAS,GAAG;MACdrB,KAAK,EAAE,cAAc;MACrBoB,KAAK,EAAE,CAAC;QAAE1B,KAAK,EAAE;MAAe,CAAC,EAAE;QAAEA,KAAK,EAAE;MAAe,CAAC;IAChE,CAAC;IAED,MAAM4B,OAAO,GAAGR,SAAS,CAACS,YAAY,CAACF,SAAS,EAAE,QAAQ,CAAC;IAC3D,MAAMG,OAAY,GAAG;MAAEhB,QAAQ,EAAE;QAAEiB,SAAS,EAAE;UAAE1B,MAAM,EAAE,CAAC,CAAC;UAAEI,MAAM,EAAE,CAAC;QAAE;MAAE;IAAE,CAAC;IAC5EmB,OAAO,CAACI,eAAe,CAACF,OAAO,CAAC;IAEhC,MAAMG,eAAe,GAAGH,OAAO,CAAChB,QAAQ,CAACiB,SAAS;IAElDP,MAAM,CAACS,eAAe,CAAC5B,MAAM,CAACC,KAAK,CAACE,MAAM,CAAC,CAAC0B,IAAI,CAAC,cAAc,CAAC;IAChE;IACAV,MAAM,CAACS,eAAe,CAACvB,SAAS,EAAEE,MAAM,CAACP,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC8B,aAAa,CAAC,CAAC;EACvF,CAAC,CAAC;EAEFd,EAAE,CAAC,gEAAgE,EAAE,MAAM;IACvE,MAAMe,WAAoC,GAAG;MACzC/B,MAAM,EAAED,YAAY,CAACC,MAAM;MAC3BK,SAAS;MACTD,MAAM,EAAE,CAAC;IACb,CAAC;IACD,MAAM;MAAEW,SAAS;MAAEN;IAAS,CAAC,GAAGD,0BAA0B,CAACuB,WAAW,CAAC;IAEvE,MAAMT,SAAS,GAAG;MACdrB,KAAK,EAAE,eAAe;MACtBoB,KAAK,EAAE,CAAC;QAAE1B,KAAK,EAAE;MAAkB,CAAC;IACxC,CAAC;IAED,MAAM4B,OAAO,GAAGR,SAAS,CAACS,YAAY,CAACF,SAAS,EAAE,QAAQ,CAAC;IAC3D,MAAMU,KAAK,GAAGT,OAAO,CAACU,eAAe,CAACxB,QAAQ,CAAC;;IAE/C;IACAU,MAAM,CAACa,KAAK,CAAC,CAACZ,OAAO,CACjBD,MAAM,CAACe,eAAe,CAAC,CACnBf,MAAM,CAACgB,gBAAgB,CAAC;MACpBC,EAAE,EAAE,QAAQ;MACZ5C,IAAI,EAAE;IACV,CAAC,CAAC,EACF2B,MAAM,CAACgB,gBAAgB,CAAC;MACpBC,EAAE,EAAE,SAAS;MACb5C,IAAI,EAAE,sBAAsB;MAC5B6C,KAAK,EAAE;IACX,CAAC,CAAC,EACFlB,MAAM,CAACgB,gBAAgB,CAAC;MACpBC,EAAE,EAAE,SAAS;MACb5C,IAAI,EAAE,gCAAgC;MACtC6C,KAAK,EAAE;IACX,CAAC,CAAC,CACL,CACL,CAAC;EACL,CAAC,CAAC;EAEFrB,EAAE,CAAC,gDAAgD,EAAE,MAAM;IACvD,MAAMe,WAAoC,GAAG;MACzC/B,MAAM,EAAE;QACJ,GAAGD,YAAY,CAACC,MAAM;QACtB,UAAU,EAAE;UAAEE,EAAE,EAAE,SAAS;UAAEC,MAAM,EAAE,UAAU;UAAEb,IAAI,EAAE;QAAO;MAClE,CAAC;MACDe,SAAS;MACTD,MAAM,EAAE,CAAC;IACb,CAAC;IACD,MAAM;MAAEW;IAAU,CAAC,GAAGP,0BAA0B,CAACuB,WAAW,CAAC;IAE7D,MAAMT,SAAS,GAAG;MACdrB,KAAK,EAAE,YAAY;MACnBoB,KAAK,EAAE,CAAC;QAAE1B,KAAK,EAAE;MAAe,CAAC,EAAE;QAAEA,KAAK,EAAE;MAAe,CAAC;IAChE,CAAC;IAED,MAAM4B,OAAO,GAAGR,SAAS,CAACS,YAAY,CAACF,SAAS,EAAE,QAAQ,CAAC;IAC3D,MAAMG,OAAY,GAAG;MAAEhB,QAAQ,EAAE;QAAEiB,SAAS,EAAE;UAAE1B,MAAM,EAAE,CAAC,CAAC;UAAEI,MAAM,EAAE,CAAC;QAAE;MAAE;IAAE,CAAC;IAC5EmB,OAAO,CAACI,eAAe,CAACF,OAAO,CAAC;IAEhC,MAAMG,eAAe,GAAGH,OAAO,CAAChB,QAAQ,CAACiB,SAAS;IAElDP,MAAM,CAACS,eAAe,CAAC5B,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC8B,aAAa,CAAC,CAAC;EAC9D,CAAC,CAAC;EAEFd,EAAE,CAAC,2DAA2D,EAAE,MAAM;IAClE,MAAMe,WAAoC,GAAG;MACzC/B,MAAM,EAAED,YAAY,CAACC,MAAM;MAC3BK,SAAS;MACTD,MAAM,EAAE,CAAC;IACb,CAAC;IACD,MAAM;MAAEW;IAAU,CAAC,GAAGP,0BAA0B,CAACuB,WAAW,EAAE,CAC1D,GAAG3C,SAAS,EACZ,GAAGS,WAAW,CACjB,CAAC;IAEF,MAAMyC,UAAU,GAAGvB,SAAS,CAACG,YAAY,CAACa,WAAW,CAAC/B,MAAO,CAAC;IAE9DsC,UAAU,CAACjB,KAAK,CAACkB,IAAI,CAAC;MAAE5C,KAAK,EAAE;IAAc,CAAC,CAAC;IAC/C2C,UAAU,CAAC7C,QAAQ,GAAG;MAClB+C,MAAM,EAAE,eAAe;MACvBC,MAAM,EAAE;QACJC,SAAS,EAAE;MACf;IACJ,CAAC;IAED,MAAMnB,OAAO,GAAGR,SAAS,CAACS,YAAY,CAACc,UAAU,EAAE,QAAQ,CAAC;IAC5D,MAAMb,OAAY,GAAG;MAAEhB,QAAQ,EAAE;QAAEiB,SAAS,EAAE;UAAE1B,MAAM,EAAE,CAAC,CAAC;UAAEI,MAAM,EAAE,CAAC;QAAE;MAAE,CAAC;MAAEuC,QAAQ,EAAE,CAAC;IAAE,CAAC;IAC1FpB,OAAO,CAACI,eAAe,CAACF,OAAO,CAAC;IAEhCN,MAAM,CAACM,OAAO,CAAChB,QAAQ,CAACiB,SAAS,CAAC1B,MAAM,CAAC,CAAC4C,aAAa,CAAC;MACpD3C,KAAK,EAAE;QAAEC,EAAE,EAAE,OAAO;QAAEC,MAAM,EAAE,YAAY;QAAEb,IAAI,EAAE;MAAO,CAAC;MAC1D,eAAe,EAAE;QACbY,EAAE,EAAE,QAAQ;QACZC,MAAM,EAAE,cAAc;QACtBb,IAAI,EAAE;MACV,CAAC;MACD,eAAe,EAAE;QACbY,EAAE,EAAE,QAAQ;QACZC,MAAM,EAAE,cAAc;QACtBb,IAAI,EAAE;MACV,CAAC;MACD,eAAe,EAAE;QACbY,EAAE,EAAEiB,MAAM,CAAC0B,GAAG,CAACC,MAAM,CAAC;QACtB3C,MAAM,EAAE,aAAa;QACrBb,IAAI,EAAE;MACV,CAAC;MACDG,QAAQ,EAAE;QACNS,EAAE,EAAEiB,MAAM,CAAC0B,GAAG,CAACC,MAAM,CAAC;QACtB3C,MAAM,EAAEgB,MAAM,CAAC0B,GAAG,CAACC,MAAM,CAAC;QAC1BxD,IAAI,EAAE;MACV;IACJ,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
@@ -1,12 +1,12 @@
1
- import type { Document, DocumentElementBindings } from "./types";
2
- import type { IBindingsUpdater } from "./IBindingsUpdater";
3
- import type { ElementInputsBindings } from "./InputBindingsProcessor";
4
- import type { IDocumentOperation } from "./documentOperations";
1
+ import type { Document, DocumentElementBindings } from "./types.js";
2
+ import type { IBindingsUpdater } from "./IBindingsUpdater.js";
3
+ import type { ElementInputsBindings } from "./InputBindingsProcessor.js";
4
+ import type { IDocumentOperation } from "./documentOperations/index.js";
5
5
  export declare class InputsUpdater implements IBindingsUpdater {
6
6
  private readonly bindings;
7
7
  private operations;
8
8
  private elementId;
9
9
  constructor(elementId: string, bindings: ElementInputsBindings, operations: IDocumentOperation[]);
10
10
  applyToDocument(document: Document): void;
11
- createJsonPatch(bindings: DocumentElementBindings): import("./jsonPatch").JsonPatchOperation[];
11
+ createJsonPatch(bindings: DocumentElementBindings): import("./jsonPatch.js").JsonPatchOperation[];
12
12
  }
package/InputsUpdater.js CHANGED
@@ -1,5 +1,5 @@
1
- import { jsonPatch } from "./jsonPatch";
2
- import set from "lodash/set";
1
+ import { jsonPatch } from "./jsonPatch.js";
2
+ import set from "lodash/set.js";
3
3
  export class InputsUpdater {
4
4
  constructor(elementId, bindings, operations) {
5
5
  this.elementId = elementId;
@@ -1 +1 @@
1
- {"version":3,"names":["jsonPatch","set","InputsUpdater","constructor","elementId","bindings","operations","applyToDocument","document","inputs","structuredClone","overrides","bp","Object","entries","forEach","operation","apply","createJsonPatch","toCompare","keys","length","ignore","compare","filter","op","some","prefix","path","startsWith"],"sources":["InputsUpdater.ts"],"sourcesContent":["import { jsonPatch } from \"~/jsonPatch\";\nimport set from \"lodash/set\";\nimport type { Document, DocumentElementBindings } from \"./types\";\nimport type { IBindingsUpdater } from \"./IBindingsUpdater\";\nimport type { ElementInputsBindings } from \"./InputBindingsProcessor\";\nimport type { IDocumentOperation } from \"~/documentOperations\";\n\nexport class InputsUpdater implements IBindingsUpdater {\n private readonly bindings: ElementInputsBindings;\n private operations: IDocumentOperation[];\n private elementId: string;\n\n constructor(\n elementId: string,\n bindings: ElementInputsBindings,\n operations: IDocumentOperation[]\n ) {\n this.elementId = elementId;\n this.operations = operations;\n this.bindings = bindings;\n }\n\n applyToDocument(document: Document) {\n document.bindings[this.elementId].inputs = structuredClone(this.bindings.inputs);\n\n if (this.bindings.overrides) {\n for (const [bp, overrides] of Object.entries(this.bindings.overrides)) {\n if (overrides.inputs) {\n set(\n document.bindings,\n `${this.elementId}.overrides.${bp}.inputs`,\n structuredClone(this.bindings.overrides[bp].inputs)\n );\n }\n }\n }\n\n this.operations.forEach(operation => operation.apply(document));\n }\n\n createJsonPatch(bindings: DocumentElementBindings) {\n const toCompare: Partial<DocumentElementBindings> = { ...this.bindings };\n if (Object.keys(toCompare.overrides ?? {}).length === 0) {\n delete toCompare.overrides;\n }\n\n const ignore = [\"/styles\", \"/overrides/styles\", \"/metadata\"];\n\n return jsonPatch.compare(bindings, toCompare).filter(op => {\n return !ignore.some(prefix => op.path.startsWith(prefix));\n });\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS;AAClB,OAAOC,GAAG,MAAM,YAAY;AAM5B,OAAO,MAAMC,aAAa,CAA6B;EAKnDC,WAAWA,CACPC,SAAiB,EACjBC,QAA+B,EAC/BC,UAAgC,EAClC;IACE,IAAI,CAACF,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACE,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC5B;EAEAE,eAAeA,CAACC,QAAkB,EAAE;IAChCA,QAAQ,CAACH,QAAQ,CAAC,IAAI,CAACD,SAAS,CAAC,CAACK,MAAM,GAAGC,eAAe,CAAC,IAAI,CAACL,QAAQ,CAACI,MAAM,CAAC;IAEhF,IAAI,IAAI,CAACJ,QAAQ,CAACM,SAAS,EAAE;MACzB,KAAK,MAAM,CAACC,EAAE,EAAED,SAAS,CAAC,IAAIE,MAAM,CAACC,OAAO,CAAC,IAAI,CAACT,QAAQ,CAACM,SAAS,CAAC,EAAE;QACnE,IAAIA,SAAS,CAACF,MAAM,EAAE;UAClBR,GAAG,CACCO,QAAQ,CAACH,QAAQ,EACjB,GAAG,IAAI,CAACD,SAAS,cAAcQ,EAAE,SAAS,EAC1CF,eAAe,CAAC,IAAI,CAACL,QAAQ,CAACM,SAAS,CAACC,EAAE,CAAC,CAACH,MAAM,CACtD,CAAC;QACL;MACJ;IACJ;IAEA,IAAI,CAACH,UAAU,CAACS,OAAO,CAACC,SAAS,IAAIA,SAAS,CAACC,KAAK,CAACT,QAAQ,CAAC,CAAC;EACnE;EAEAU,eAAeA,CAACb,QAAiC,EAAE;IAC/C,MAAMc,SAA2C,GAAG;MAAE,GAAG,IAAI,CAACd;IAAS,CAAC;IACxE,IAAIQ,MAAM,CAACO,IAAI,CAACD,SAAS,CAACR,SAAS,IAAI,CAAC,CAAC,CAAC,CAACU,MAAM,KAAK,CAAC,EAAE;MACrD,OAAOF,SAAS,CAACR,SAAS;IAC9B;IAEA,MAAMW,MAAM,GAAG,CAAC,SAAS,EAAE,mBAAmB,EAAE,WAAW,CAAC;IAE5D,OAAOtB,SAAS,CAACuB,OAAO,CAAClB,QAAQ,EAAEc,SAAS,CAAC,CAACK,MAAM,CAACC,EAAE,IAAI;MACvD,OAAO,CAACH,MAAM,CAACI,IAAI,CAACC,MAAM,IAAIF,EAAE,CAACG,IAAI,CAACC,UAAU,CAACF,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["jsonPatch","set","InputsUpdater","constructor","elementId","bindings","operations","applyToDocument","document","inputs","structuredClone","overrides","bp","Object","entries","forEach","operation","apply","createJsonPatch","toCompare","keys","length","ignore","compare","filter","op","some","prefix","path","startsWith"],"sources":["InputsUpdater.ts"],"sourcesContent":["import { jsonPatch } from \"~/jsonPatch.js\";\nimport set from \"lodash/set.js\";\nimport type { Document, DocumentElementBindings } from \"./types.js\";\nimport type { IBindingsUpdater } from \"./IBindingsUpdater.js\";\nimport type { ElementInputsBindings } from \"./InputBindingsProcessor.js\";\nimport type { IDocumentOperation } from \"~/documentOperations/index.js\";\n\nexport class InputsUpdater implements IBindingsUpdater {\n private readonly bindings: ElementInputsBindings;\n private operations: IDocumentOperation[];\n private elementId: string;\n\n constructor(\n elementId: string,\n bindings: ElementInputsBindings,\n operations: IDocumentOperation[]\n ) {\n this.elementId = elementId;\n this.operations = operations;\n this.bindings = bindings;\n }\n\n applyToDocument(document: Document) {\n document.bindings[this.elementId].inputs = structuredClone(this.bindings.inputs);\n\n if (this.bindings.overrides) {\n for (const [bp, overrides] of Object.entries(this.bindings.overrides)) {\n if (overrides.inputs) {\n set(\n document.bindings,\n `${this.elementId}.overrides.${bp}.inputs`,\n structuredClone(this.bindings.overrides[bp].inputs)\n );\n }\n }\n }\n\n this.operations.forEach(operation => operation.apply(document));\n }\n\n createJsonPatch(bindings: DocumentElementBindings) {\n const toCompare: Partial<DocumentElementBindings> = { ...this.bindings };\n if (Object.keys(toCompare.overrides ?? {}).length === 0) {\n delete toCompare.overrides;\n }\n\n const ignore = [\"/styles\", \"/overrides/styles\", \"/metadata\"];\n\n return jsonPatch.compare(bindings, toCompare).filter(op => {\n return !ignore.some(prefix => op.path.startsWith(prefix));\n });\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS;AAClB,OAAOC,GAAG,MAAM,eAAe;AAM/B,OAAO,MAAMC,aAAa,CAA6B;EAKnDC,WAAWA,CACPC,SAAiB,EACjBC,QAA+B,EAC/BC,UAAgC,EAClC;IACE,IAAI,CAACF,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACE,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACD,QAAQ,GAAGA,QAAQ;EAC5B;EAEAE,eAAeA,CAACC,QAAkB,EAAE;IAChCA,QAAQ,CAACH,QAAQ,CAAC,IAAI,CAACD,SAAS,CAAC,CAACK,MAAM,GAAGC,eAAe,CAAC,IAAI,CAACL,QAAQ,CAACI,MAAM,CAAC;IAEhF,IAAI,IAAI,CAACJ,QAAQ,CAACM,SAAS,EAAE;MACzB,KAAK,MAAM,CAACC,EAAE,EAAED,SAAS,CAAC,IAAIE,MAAM,CAACC,OAAO,CAAC,IAAI,CAACT,QAAQ,CAACM,SAAS,CAAC,EAAE;QACnE,IAAIA,SAAS,CAACF,MAAM,EAAE;UAClBR,GAAG,CACCO,QAAQ,CAACH,QAAQ,EACjB,GAAG,IAAI,CAACD,SAAS,cAAcQ,EAAE,SAAS,EAC1CF,eAAe,CAAC,IAAI,CAACL,QAAQ,CAACM,SAAS,CAACC,EAAE,CAAC,CAACH,MAAM,CACtD,CAAC;QACL;MACJ;IACJ;IAEA,IAAI,CAACH,UAAU,CAACS,OAAO,CAACC,SAAS,IAAIA,SAAS,CAACC,KAAK,CAACT,QAAQ,CAAC,CAAC;EACnE;EAEAU,eAAeA,CAACb,QAAiC,EAAE;IAC/C,MAAMc,SAA2C,GAAG;MAAE,GAAG,IAAI,CAACd;IAAS,CAAC;IACxE,IAAIQ,MAAM,CAACO,IAAI,CAACD,SAAS,CAACR,SAAS,IAAI,CAAC,CAAC,CAAC,CAACU,MAAM,KAAK,CAAC,EAAE;MACrD,OAAOF,SAAS,CAACR,SAAS;IAC9B;IAEA,MAAMW,MAAM,GAAG,CAAC,SAAS,EAAE,mBAAmB,EAAE,WAAW,CAAC;IAE5D,OAAOtB,SAAS,CAACuB,OAAO,CAAClB,QAAQ,EAAEc,SAAS,CAAC,CAACK,MAAM,CAACC,EAAE,IAAI;MACvD,OAAO,CAACH,MAAM,CAACI,IAAI,CAACC,MAAM,IAAIF,EAAE,CAACG,IAAI,CAACC,UAAU,CAACF,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
package/LiveSdk.js CHANGED
@@ -1,4 +1,4 @@
1
- import { documentStoreManager } from "./DocumentStoreManager";
1
+ import { documentStoreManager } from "./DocumentStoreManager.js";
2
2
  export class LiveSdk {
3
3
  constructor(dataProvider) {
4
4
  this.dataProvider = dataProvider;
package/LiveSdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["documentStoreManager","LiveSdk","constructor","dataProvider","getPage","path","options","page","getPageByPath","getStore","properties","id","setDocument","listPages"],"sources":["LiveSdk.ts"],"sourcesContent":["import type {\n GetPageOptions,\n IContentSdk,\n IDataProvider,\n ListPagesOptions,\n PublicPage\n} from \"~/types.js\";\nimport { documentStoreManager } from \"~/DocumentStoreManager\";\n\nexport class LiveSdk implements IContentSdk {\n private dataProvider: IDataProvider;\n\n constructor(dataProvider: IDataProvider) {\n this.dataProvider = dataProvider;\n }\n\n async getPage(path: string, options?: GetPageOptions): Promise<PublicPage | null> {\n const page = await this.dataProvider.getPageByPath(path, options);\n if (page) {\n documentStoreManager.getStore<PublicPage>(page.properties.id).setDocument(page);\n }\n return page;\n }\n\n listPages(options?: ListPagesOptions): Promise<PublicPage[]> {\n return this.dataProvider.listPages(options);\n }\n}\n"],"mappings":"AAOA,SAASA,oBAAoB;AAE7B,OAAO,MAAMC,OAAO,CAAwB;EAGxCC,WAAWA,CAACC,YAA2B,EAAE;IACrC,IAAI,CAACA,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAMC,OAAOA,CAACC,IAAY,EAAEC,OAAwB,EAA8B;IAC9E,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACJ,YAAY,CAACK,aAAa,CAACH,IAAI,EAAEC,OAAO,CAAC;IACjE,IAAIC,IAAI,EAAE;MACNP,oBAAoB,CAACS,QAAQ,CAAaF,IAAI,CAACG,UAAU,CAACC,EAAE,CAAC,CAACC,WAAW,CAACL,IAAI,CAAC;IACnF;IACA,OAAOA,IAAI;EACf;EAEAM,SAASA,CAACP,OAA0B,EAAyB;IACzD,OAAO,IAAI,CAACH,YAAY,CAACU,SAAS,CAACP,OAAO,CAAC;EAC/C;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["documentStoreManager","LiveSdk","constructor","dataProvider","getPage","path","options","page","getPageByPath","getStore","properties","id","setDocument","listPages"],"sources":["LiveSdk.ts"],"sourcesContent":["import type {\n GetPageOptions,\n IContentSdk,\n IDataProvider,\n ListPagesOptions,\n PublicPage\n} from \"~/types.js\";\nimport { documentStoreManager } from \"~/DocumentStoreManager.js\";\n\nexport class LiveSdk implements IContentSdk {\n private dataProvider: IDataProvider;\n\n constructor(dataProvider: IDataProvider) {\n this.dataProvider = dataProvider;\n }\n\n async getPage(path: string, options?: GetPageOptions): Promise<PublicPage | null> {\n const page = await this.dataProvider.getPageByPath(path, options);\n if (page) {\n documentStoreManager.getStore<PublicPage>(page.properties.id).setDocument(page);\n }\n return page;\n }\n\n listPages(options?: ListPagesOptions): Promise<PublicPage[]> {\n return this.dataProvider.listPages(options);\n }\n}\n"],"mappings":"AAOA,SAASA,oBAAoB;AAE7B,OAAO,MAAMC,OAAO,CAAwB;EAGxCC,WAAWA,CAACC,YAA2B,EAAE;IACrC,IAAI,CAACA,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAMC,OAAOA,CAACC,IAAY,EAAEC,OAAwB,EAA8B;IAC9E,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACJ,YAAY,CAACK,aAAa,CAACH,IAAI,EAAEC,OAAO,CAAC;IACjE,IAAIC,IAAI,EAAE;MACNP,oBAAoB,CAACS,QAAQ,CAAaF,IAAI,CAACG,UAAU,CAACC,EAAE,CAAC,CAACC,WAAW,CAACL,IAAI,CAAC;IACnF;IACA,OAAOA,IAAI;EACf;EAEAM,SAASA,CAACP,OAA0B,EAAyB;IACzD,OAAO,IAAI,CAACH,YAAY,CAACU,SAAS,CAACP,OAAO,CAAC;EAC/C;AACJ","ignoreList":[]}
package/Logger.js CHANGED
@@ -1,10 +1,13 @@
1
1
  import pino from "pino";
2
+ const isProduction = process.env.NODE_ENV === "production";
2
3
  export const logger = pino({
3
4
  name: "Website Builder SDK",
4
- level: "debug",
5
- transport: {
6
- target: "pino-pretty"
7
- }
5
+ level: isProduction ? "silent" : "debug",
6
+ ...(isProduction ? {} : {
7
+ transport: {
8
+ target: "pino-pretty"
9
+ }
10
+ })
8
11
  });
9
12
 
10
13
  //# sourceMappingURL=Logger.js.map
package/Logger.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["pino","logger","name","level","transport","target"],"sources":["Logger.ts"],"sourcesContent":["import pino from \"pino\";\n\nexport const logger = pino({\n name: \"Website Builder SDK\",\n level: \"debug\",\n transport: {\n target: \"pino-pretty\"\n }\n});\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AAEvB,OAAO,MAAMC,MAAM,GAAGD,IAAI,CAAC;EACvBE,IAAI,EAAE,qBAAqB;EAC3BC,KAAK,EAAE,OAAO;EACdC,SAAS,EAAE;IACPC,MAAM,EAAE;EACZ;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["pino","isProduction","process","env","NODE_ENV","logger","name","level","transport","target"],"sources":["Logger.ts"],"sourcesContent":["import pino from \"pino\";\n\nconst isProduction = process.env.NODE_ENV === \"production\";\n\nexport const logger = pino({\n name: \"Website Builder SDK\",\n level: isProduction ? \"silent\" : \"debug\",\n ...(isProduction ? {} : { transport: { target: \"pino-pretty\" } })\n});\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,MAAM;AAEvB,MAAMC,YAAY,GAAGC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY;AAE1D,OAAO,MAAMC,MAAM,GAAGL,IAAI,CAAC;EACvBM,IAAI,EAAE,qBAAqB;EAC3BC,KAAK,EAAEN,YAAY,GAAG,QAAQ,GAAG,OAAO;EACxC,IAAIA,YAAY,GAAG,CAAC,CAAC,GAAG;IAAEO,SAAS,EAAE;MAAEC,MAAM,EAAE;IAAc;EAAE,CAAC;AACpE,CAAC,CAAC","ignoreList":[]}
package/NullSdk.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import type { IContentSdk, Page, ResolvedComponent } from "./types";
1
+ import type { IContentSdk, Page, PublicRedirect, ResolvedComponent } from "./types.js";
2
2
  export declare class NullSdk implements IContentSdk {
3
3
  getPage(): Promise<Page | null>;
4
4
  listPages(): Promise<Page[]>;
5
+ listRedirects(): Promise<PublicRedirect[]>;
5
6
  registerComponent(): void;
6
7
  resolveElement(): ResolvedComponent[] | null;
7
8
  }
package/NullSdk.js CHANGED
@@ -5,6 +5,9 @@ export class NullSdk {
5
5
  listPages() {
6
6
  return Promise.resolve([]);
7
7
  }
8
+ listRedirects() {
9
+ return Promise.resolve([]);
10
+ }
8
11
  registerComponent() {}
9
12
  resolveElement() {
10
13
  return null;
package/NullSdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["NullSdk","getPage","listPages","Promise","resolve","registerComponent","resolveElement"],"sources":["NullSdk.ts"],"sourcesContent":["import type { IContentSdk, Page, ResolvedComponent } from \"./types\";\n\nexport class NullSdk implements IContentSdk {\n async getPage(): Promise<Page | null> {\n return null;\n }\n\n listPages(): Promise<Page[]> {\n return Promise.resolve([]);\n }\n\n registerComponent(): void {}\n\n resolveElement(): ResolvedComponent[] | null {\n return null;\n }\n}\n"],"mappings":"AAEA,OAAO,MAAMA,OAAO,CAAwB;EACxC,MAAMC,OAAOA,CAAA,EAAyB;IAClC,OAAO,IAAI;EACf;EAEAC,SAASA,CAAA,EAAoB;IACzB,OAAOC,OAAO,CAACC,OAAO,CAAC,EAAE,CAAC;EAC9B;EAEAC,iBAAiBA,CAAA,EAAS,CAAC;EAE3BC,cAAcA,CAAA,EAA+B;IACzC,OAAO,IAAI;EACf;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["NullSdk","getPage","listPages","Promise","resolve","listRedirects","registerComponent","resolveElement"],"sources":["NullSdk.ts"],"sourcesContent":["import type { IContentSdk, Page, PublicRedirect, ResolvedComponent } from \"./types.js\";\n\nexport class NullSdk implements IContentSdk {\n async getPage(): Promise<Page | null> {\n return null;\n }\n\n listPages(): Promise<Page[]> {\n return Promise.resolve([]);\n }\n\n listRedirects(): Promise<PublicRedirect[]> {\n return Promise.resolve([]);\n }\n\n registerComponent(): void {}\n\n resolveElement(): ResolvedComponent[] | null {\n return null;\n }\n}\n"],"mappings":"AAEA,OAAO,MAAMA,OAAO,CAAwB;EACxC,MAAMC,OAAOA,CAAA,EAAyB;IAClC,OAAO,IAAI;EACf;EAEAC,SAASA,CAAA,EAAoB;IACzB,OAAOC,OAAO,CAACC,OAAO,CAAC,EAAE,CAAC;EAC9B;EAEAC,aAAaA,CAAA,EAA8B;IACvC,OAAOF,OAAO,CAACC,OAAO,CAAC,EAAE,CAAC;EAC9B;EAEAE,iBAAiBA,CAAA,EAAS,CAAC;EAE3BC,cAAcA,CAAA,EAA+B;IACzC,OAAO,IAAI;EACf;AACJ","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { getHeadersProvider } from "./headersProvider";
1
+ import { getHeadersProvider } from "./headersProvider.js";
2
2
  export class PreviewDocument {
3
3
  constructor(prefix, query) {
4
4
  this.props = {};
@@ -1 +1 @@
1
- {"version":3,"names":["getHeadersProvider","PreviewDocument","constructor","prefix","query","props","forEach","value","key","startsWith","strippedKey","slice","length","createFromWindow","URLSearchParams","window","location","search","createFromHeaders","headersProvider","headers","previewFromHeaders","get","matches","params","Object","entries","getId","id"],"sources":["PreviewDocument.ts"],"sourcesContent":["import { getHeadersProvider } from \"./headersProvider\";\n\nexport class PreviewDocument {\n public readonly props: Record<string, string>;\n\n private constructor(prefix: string, query: URLSearchParams) {\n this.props = {};\n query.forEach((value, key) => {\n if (key.startsWith(prefix + \".\")) {\n const strippedKey = key.slice(prefix.length + 1); // +1 for the dot\n this.props[strippedKey] = value as string;\n }\n });\n }\n\n static createFromWindow(): PreviewDocument {\n const query = new URLSearchParams(window.location.search);\n return new PreviewDocument(\"wb\", query);\n }\n\n static async createFromHeaders(): Promise<PreviewDocument> {\n const headersProvider = getHeadersProvider();\n const headers = await headersProvider();\n const previewFromHeaders = headers.get(\"X-Preview-Params\");\n\n return new PreviewDocument(\"wb\", new URLSearchParams(previewFromHeaders ?? \"\"));\n }\n\n matches(params: Record<string, string>) {\n for (const [key, value] of Object.entries(params)) {\n if (this.props[key] !== value) {\n return false;\n }\n }\n return true;\n }\n\n getId() {\n return this.props.id;\n }\n}\n"],"mappings":"AAAA,SAASA,kBAAkB;AAE3B,OAAO,MAAMC,eAAe,CAAC;EAGjBC,WAAWA,CAACC,MAAc,EAAEC,KAAsB,EAAE;IACxD,IAAI,CAACC,KAAK,GAAG,CAAC,CAAC;IACfD,KAAK,CAACE,OAAO,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAK;MAC1B,IAAIA,GAAG,CAACC,UAAU,CAACN,MAAM,GAAG,GAAG,CAAC,EAAE;QAC9B,MAAMO,WAAW,GAAGF,GAAG,CAACG,KAAK,CAACR,MAAM,CAACS,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,CAACP,KAAK,CAACK,WAAW,CAAC,GAAGH,KAAe;MAC7C;IACJ,CAAC,CAAC;EACN;EAEA,OAAOM,gBAAgBA,CAAA,EAAoB;IACvC,MAAMT,KAAK,GAAG,IAAIU,eAAe,CAACC,MAAM,CAACC,QAAQ,CAACC,MAAM,CAAC;IACzD,OAAO,IAAIhB,eAAe,CAAC,IAAI,EAAEG,KAAK,CAAC;EAC3C;EAEA,aAAac,iBAAiBA,CAAA,EAA6B;IACvD,MAAMC,eAAe,GAAGnB,kBAAkB,CAAC,CAAC;IAC5C,MAAMoB,OAAO,GAAG,MAAMD,eAAe,CAAC,CAAC;IACvC,MAAME,kBAAkB,GAAGD,OAAO,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAE1D,OAAO,IAAIrB,eAAe,CAAC,IAAI,EAAE,IAAIa,eAAe,CAACO,kBAAkB,IAAI,EAAE,CAAC,CAAC;EACnF;EAEAE,OAAOA,CAACC,MAA8B,EAAE;IACpC,KAAK,MAAM,CAAChB,GAAG,EAAED,KAAK,CAAC,IAAIkB,MAAM,CAACC,OAAO,CAACF,MAAM,CAAC,EAAE;MAC/C,IAAI,IAAI,CAACnB,KAAK,CAACG,GAAG,CAAC,KAAKD,KAAK,EAAE;QAC3B,OAAO,KAAK;MAChB;IACJ;IACA,OAAO,IAAI;EACf;EAEAoB,KAAKA,CAAA,EAAG;IACJ,OAAO,IAAI,CAACtB,KAAK,CAACuB,EAAE;EACxB;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["getHeadersProvider","PreviewDocument","constructor","prefix","query","props","forEach","value","key","startsWith","strippedKey","slice","length","createFromWindow","URLSearchParams","window","location","search","createFromHeaders","headersProvider","headers","previewFromHeaders","get","matches","params","Object","entries","getId","id"],"sources":["PreviewDocument.ts"],"sourcesContent":["import { getHeadersProvider } from \"./headersProvider.js\";\n\nexport class PreviewDocument {\n public readonly props: Record<string, string>;\n\n private constructor(prefix: string, query: URLSearchParams) {\n this.props = {};\n query.forEach((value, key) => {\n if (key.startsWith(prefix + \".\")) {\n const strippedKey = key.slice(prefix.length + 1); // +1 for the dot\n this.props[strippedKey] = value as string;\n }\n });\n }\n\n static createFromWindow(): PreviewDocument {\n const query = new URLSearchParams(window.location.search);\n return new PreviewDocument(\"wb\", query);\n }\n\n static async createFromHeaders(): Promise<PreviewDocument> {\n const headersProvider = getHeadersProvider();\n const headers = await headersProvider();\n const previewFromHeaders = headers.get(\"X-Preview-Params\");\n\n return new PreviewDocument(\"wb\", new URLSearchParams(previewFromHeaders ?? \"\"));\n }\n\n matches(params: Record<string, string>) {\n for (const [key, value] of Object.entries(params)) {\n if (this.props[key] !== value) {\n return false;\n }\n }\n return true;\n }\n\n getId() {\n return this.props.id;\n }\n}\n"],"mappings":"AAAA,SAASA,kBAAkB;AAE3B,OAAO,MAAMC,eAAe,CAAC;EAGjBC,WAAWA,CAACC,MAAc,EAAEC,KAAsB,EAAE;IACxD,IAAI,CAACC,KAAK,GAAG,CAAC,CAAC;IACfD,KAAK,CAACE,OAAO,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAK;MAC1B,IAAIA,GAAG,CAACC,UAAU,CAACN,MAAM,GAAG,GAAG,CAAC,EAAE;QAC9B,MAAMO,WAAW,GAAGF,GAAG,CAACG,KAAK,CAACR,MAAM,CAACS,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,CAACP,KAAK,CAACK,WAAW,CAAC,GAAGH,KAAe;MAC7C;IACJ,CAAC,CAAC;EACN;EAEA,OAAOM,gBAAgBA,CAAA,EAAoB;IACvC,MAAMT,KAAK,GAAG,IAAIU,eAAe,CAACC,MAAM,CAACC,QAAQ,CAACC,MAAM,CAAC;IACzD,OAAO,IAAIhB,eAAe,CAAC,IAAI,EAAEG,KAAK,CAAC;EAC3C;EAEA,aAAac,iBAAiBA,CAAA,EAA6B;IACvD,MAAMC,eAAe,GAAGnB,kBAAkB,CAAC,CAAC;IAC5C,MAAMoB,OAAO,GAAG,MAAMD,eAAe,CAAC,CAAC;IACvC,MAAME,kBAAkB,GAAGD,OAAO,CAACE,GAAG,CAAC,kBAAkB,CAAC;IAE1D,OAAO,IAAIrB,eAAe,CAAC,IAAI,EAAE,IAAIa,eAAe,CAACO,kBAAkB,IAAI,EAAE,CAAC,CAAC;EACnF;EAEAE,OAAOA,CAACC,MAA8B,EAAE;IACpC,KAAK,MAAM,CAAChB,GAAG,EAAED,KAAK,CAAC,IAAIkB,MAAM,CAACC,OAAO,CAACF,MAAM,CAAC,EAAE;MAC/C,IAAI,IAAI,CAACnB,KAAK,CAACG,GAAG,CAAC,KAAKD,KAAK,EAAE;QAC3B,OAAO,KAAK;MAChB;IACJ;IACA,OAAO,IAAI;EACf;EAEAoB,KAAKA,CAAA,EAAG;IACJ,OAAO,IAAI,CAACtB,KAAK,CAACuB,EAAE;EACxB;AACJ","ignoreList":[]}
package/PreviewSdk.js CHANGED
@@ -1,4 +1,4 @@
1
- import { PreviewDocument } from "./PreviewDocument";
1
+ import { PreviewDocument } from "./PreviewDocument.js";
2
2
  export class PreviewSdk {
3
3
  constructor(dataProvider, liveSdk) {
4
4
  this.liveSdk = liveSdk;
package/PreviewSdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["PreviewDocument","PreviewSdk","constructor","dataProvider","liveSdk","getPage","path","previewDocument","createFromHeaders","matches","type","getPageById","getId","listPages"],"sources":["PreviewSdk.ts"],"sourcesContent":["import type { IContentSdk, IDataProvider, PublicPage } from \"~/types.js\";\nimport { PreviewDocument } from \"~/PreviewDocument\";\n\nexport class PreviewSdk implements IContentSdk {\n private liveSdk: IContentSdk;\n private dataProvider: IDataProvider;\n\n constructor(dataProvider: IDataProvider, liveSdk: IContentSdk) {\n this.liveSdk = liveSdk;\n this.dataProvider = dataProvider;\n }\n\n async getPage(path: string): Promise<PublicPage | null> {\n const previewDocument = await PreviewDocument.createFromHeaders();\n if (!previewDocument.matches({ type: \"page\", path })) {\n return this.liveSdk.getPage(path);\n }\n return this.dataProvider.getPageById(previewDocument.getId());\n }\n\n async listPages(): Promise<PublicPage[]> {\n return this.liveSdk.listPages();\n }\n}\n"],"mappings":"AACA,SAASA,eAAe;AAExB,OAAO,MAAMC,UAAU,CAAwB;EAI3CC,WAAWA,CAACC,YAA2B,EAAEC,OAAoB,EAAE;IAC3D,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACD,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAME,OAAOA,CAACC,IAAY,EAA8B;IACpD,MAAMC,eAAe,GAAG,MAAMP,eAAe,CAACQ,iBAAiB,CAAC,CAAC;IACjE,IAAI,CAACD,eAAe,CAACE,OAAO,CAAC;MAAEC,IAAI,EAAE,MAAM;MAAEJ;IAAK,CAAC,CAAC,EAAE;MAClD,OAAO,IAAI,CAACF,OAAO,CAACC,OAAO,CAACC,IAAI,CAAC;IACrC;IACA,OAAO,IAAI,CAACH,YAAY,CAACQ,WAAW,CAACJ,eAAe,CAACK,KAAK,CAAC,CAAC,CAAC;EACjE;EAEA,MAAMC,SAASA,CAAA,EAA0B;IACrC,OAAO,IAAI,CAACT,OAAO,CAACS,SAAS,CAAC,CAAC;EACnC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["PreviewDocument","PreviewSdk","constructor","dataProvider","liveSdk","getPage","path","previewDocument","createFromHeaders","matches","type","getPageById","getId","listPages"],"sources":["PreviewSdk.ts"],"sourcesContent":["import type { IContentSdk, IDataProvider, PublicPage } from \"~/types.js\";\nimport { PreviewDocument } from \"~/PreviewDocument.js\";\n\nexport class PreviewSdk implements IContentSdk {\n private liveSdk: IContentSdk;\n private dataProvider: IDataProvider;\n\n constructor(dataProvider: IDataProvider, liveSdk: IContentSdk) {\n this.liveSdk = liveSdk;\n this.dataProvider = dataProvider;\n }\n\n async getPage(path: string): Promise<PublicPage | null> {\n const previewDocument = await PreviewDocument.createFromHeaders();\n if (!previewDocument.matches({ type: \"page\", path })) {\n return this.liveSdk.getPage(path);\n }\n return this.dataProvider.getPageById(previewDocument.getId());\n }\n\n async listPages(): Promise<PublicPage[]> {\n return this.liveSdk.listPages();\n }\n}\n"],"mappings":"AACA,SAASA,eAAe;AAExB,OAAO,MAAMC,UAAU,CAAwB;EAI3CC,WAAWA,CAACC,YAA2B,EAAEC,OAAoB,EAAE;IAC3D,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACD,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAME,OAAOA,CAACC,IAAY,EAA8B;IACpD,MAAMC,eAAe,GAAG,MAAMP,eAAe,CAACQ,iBAAiB,CAAC,CAAC;IACjE,IAAI,CAACD,eAAe,CAACE,OAAO,CAAC;MAAEC,IAAI,EAAE,MAAM;MAAEJ;IAAK,CAAC,CAAC,EAAE;MAClD,OAAO,IAAI,CAACF,OAAO,CAACC,OAAO,CAACC,IAAI,CAAC;IACrC;IACA,OAAO,IAAI,CAACH,YAAY,CAACQ,WAAW,CAACJ,eAAe,CAACK,KAAK,CAAC,CAAC,CAAC;EACjE;EAEA,MAAMC,SAASA,CAAA,EAA0B;IACrC,OAAO,IAAI,CAACT,OAAO,CAACS,SAAS,CAAC,CAAC;EACnC;AACJ","ignoreList":[]}
@@ -3,7 +3,7 @@ export declare class PreviewViewport {
3
3
  getBoxes(): {
4
4
  [x: string]: ElementBoxData | ElementSlotBoxData;
5
5
  };
6
- getViewport(): import("./ViewportManager").ViewportInfo;
6
+ getViewport(): import("./ViewportManager.js").ViewportInfo;
7
7
  getVisibleBoxes(): Record<string, ElementBoxData | ElementSlotBoxData>;
8
8
  destroy(): void;
9
9
  }
@@ -1,4 +1,4 @@
1
- import { viewportManager } from "./ViewportManager";
1
+ import { viewportManager } from "./ViewportManager.js";
2
2
  export class PreviewViewport {
3
3
  getBoxes() {
4
4
  const elementBoxes = {};
@@ -1 +1 @@
1
- {"version":3,"names":["viewportManager","PreviewViewport","getBoxes","elementBoxes","elements","document","querySelectorAll","forEach","element","id","getAttribute","depth","rect","firstElementChild","getBoundingClientRect","type","parseInt","parentId","parentSlot","parentIndex","top","left","width","height","slotBoxes","elementSlots","slot","getViewport","getVisibleBoxes","allBoxes","viewport","visibleBoxes","box","Object","entries","bottom","right","isVisible","destroy"],"sources":["PreviewViewport.ts"],"sourcesContent":["import type { ElementBoxData, ElementSlotBoxData } from \"~/types.js\";\nimport { viewportManager } from \"./ViewportManager\";\n\nexport class PreviewViewport {\n getBoxes() {\n const elementBoxes: Record<string, ElementBoxData> = {};\n\n // Collect positions for all elements\n const elements = document.querySelectorAll(\"[data-element-id]\");\n\n elements.forEach(element => {\n const id = element.getAttribute(\"data-element-id\");\n const depth = element.getAttribute(\"data-depth\");\n if (id) {\n // Get the bounding box relative to the viewport\n const rect = element.firstElementChild?.getBoundingClientRect();\n\n if (!rect) {\n return;\n }\n\n // Convert DOMRect to a plain object to ensure it can be serialized\n elementBoxes[id] = {\n type: \"element\",\n depth: parseInt(depth ?? \"0\"),\n parentId: element.getAttribute(\"data-parent-id\")!,\n parentSlot: element.getAttribute(\"data-parent-slot\")!,\n parentIndex: parseInt(element.getAttribute(\"data-parent-index\") ?? \"0\"),\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height\n };\n }\n });\n\n // Collect positions for all element slots\n const slotBoxes: Record<string, ElementSlotBoxData> = {};\n\n const elementSlots = document.querySelectorAll(\"[data-role='element-slot']\");\n\n elementSlots.forEach(element => {\n const parentId = element.getAttribute(\"data-parent-id\");\n const slot = element.getAttribute(\"data-parent-slot\");\n const depth = element.getAttribute(\"data-depth\");\n\n // Get the bounding box relative to the viewport\n const rect = element.getBoundingClientRect();\n\n // Convert DOMRect to a plain object to ensure it can be serialized\n slotBoxes[`${parentId}:${slot}`] = {\n type: \"element-slot\",\n depth: parseInt(depth ?? \"0\"),\n parentId: element.getAttribute(\"data-parent-id\")!,\n parentSlot: element.getAttribute(\"data-parent-slot\")!,\n parentIndex: parseInt(element.getAttribute(\"data-parent-index\") ?? \"0\"),\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height\n };\n });\n\n return { ...elementBoxes, ...slotBoxes };\n }\n\n getViewport() {\n return viewportManager.getViewport();\n }\n\n getVisibleBoxes(): Record<string, ElementBoxData | ElementSlotBoxData> {\n const allBoxes = this.getBoxes();\n const viewport = this.getViewport();\n\n const visibleBoxes: Record<string, ElementBoxData | ElementSlotBoxData> = {};\n\n for (const [id, box] of Object.entries(allBoxes)) {\n const { top, left, width, height } = box;\n\n const bottom = top + height;\n const right = left + width;\n\n const isVisible =\n bottom > 0 && right > 0 && top < viewport.height && left < viewport.width;\n\n if (isVisible) {\n visibleBoxes[id] = box;\n }\n }\n\n return visibleBoxes;\n }\n\n destroy(): void {}\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["viewportManager","PreviewViewport","getBoxes","elementBoxes","elements","document","querySelectorAll","forEach","element","id","getAttribute","depth","rect","firstElementChild","getBoundingClientRect","type","parseInt","parentId","parentSlot","parentIndex","top","left","width","height","slotBoxes","elementSlots","slot","getViewport","getVisibleBoxes","allBoxes","viewport","visibleBoxes","box","Object","entries","bottom","right","isVisible","destroy"],"sources":["PreviewViewport.ts"],"sourcesContent":["import type { ElementBoxData, ElementSlotBoxData } from \"~/types.js\";\nimport { viewportManager } from \"./ViewportManager.js\";\n\nexport class PreviewViewport {\n getBoxes() {\n const elementBoxes: Record<string, ElementBoxData> = {};\n\n // Collect positions for all elements\n const elements = document.querySelectorAll(\"[data-element-id]\");\n\n elements.forEach(element => {\n const id = element.getAttribute(\"data-element-id\");\n const depth = element.getAttribute(\"data-depth\");\n if (id) {\n // Get the bounding box relative to the viewport\n const rect = element.firstElementChild?.getBoundingClientRect();\n\n if (!rect) {\n return;\n }\n\n // Convert DOMRect to a plain object to ensure it can be serialized\n elementBoxes[id] = {\n type: \"element\",\n depth: parseInt(depth ?? \"0\"),\n parentId: element.getAttribute(\"data-parent-id\")!,\n parentSlot: element.getAttribute(\"data-parent-slot\")!,\n parentIndex: parseInt(element.getAttribute(\"data-parent-index\") ?? \"0\"),\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height\n };\n }\n });\n\n // Collect positions for all element slots\n const slotBoxes: Record<string, ElementSlotBoxData> = {};\n\n const elementSlots = document.querySelectorAll(\"[data-role='element-slot']\");\n\n elementSlots.forEach(element => {\n const parentId = element.getAttribute(\"data-parent-id\");\n const slot = element.getAttribute(\"data-parent-slot\");\n const depth = element.getAttribute(\"data-depth\");\n\n // Get the bounding box relative to the viewport\n const rect = element.getBoundingClientRect();\n\n // Convert DOMRect to a plain object to ensure it can be serialized\n slotBoxes[`${parentId}:${slot}`] = {\n type: \"element-slot\",\n depth: parseInt(depth ?? \"0\"),\n parentId: element.getAttribute(\"data-parent-id\")!,\n parentSlot: element.getAttribute(\"data-parent-slot\")!,\n parentIndex: parseInt(element.getAttribute(\"data-parent-index\") ?? \"0\"),\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height\n };\n });\n\n return { ...elementBoxes, ...slotBoxes };\n }\n\n getViewport() {\n return viewportManager.getViewport();\n }\n\n getVisibleBoxes(): Record<string, ElementBoxData | ElementSlotBoxData> {\n const allBoxes = this.getBoxes();\n const viewport = this.getViewport();\n\n const visibleBoxes: Record<string, ElementBoxData | ElementSlotBoxData> = {};\n\n for (const [id, box] of Object.entries(allBoxes)) {\n const { top, left, width, height } = box;\n\n const bottom = top + height;\n const right = left + width;\n\n const isVisible =\n bottom > 0 && right > 0 && top < viewport.height && left < viewport.width;\n\n if (isVisible) {\n visibleBoxes[id] = box;\n }\n }\n\n return visibleBoxes;\n }\n\n destroy(): void {}\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import type { DocumentElementBindings, DocumentElementStyleBindings } from "./types";
2
- import { StylesUpdater } from "./StylesUpdater";
1
+ import type { DocumentElementBindings, DocumentElementStyleBindings } from "./types.js";
2
+ import { StylesUpdater } from "./StylesUpdater.js";
3
3
  type DeepBindings = Record<string, any>;
4
4
  export type ElementStylesBindings = {
5
5
  styles: DocumentElementStyleBindings;
@@ -1,7 +1,7 @@
1
- import set from "lodash/set";
2
- import unset from "lodash/unset";
3
- import { InheritedValueResolver } from "./InheritedValueResolver";
4
- import { StylesUpdater } from "./StylesUpdater";
1
+ import set from "lodash/set.js";
2
+ import unset from "lodash/unset.js";
3
+ import { InheritedValueResolver } from "./InheritedValueResolver.js";
4
+ import { StylesUpdater } from "./StylesUpdater.js";
5
5
  /**
6
6
  * Handles deep-to-flat and flat-to-deep conversion of style bindings,
7
7
  * with breakpoint inheritance awareness.
@@ -1 +1 @@
1
- {"version":3,"names":["set","unset","InheritedValueResolver","StylesUpdater","StylesBindingsProcessor","constructor","elementId","breakpoints","rawBindings","toDeepStyles","styles","result","Object","keys","forEach","key","static","createUpdate","currentBreakpoint","rebuilt","getBaseStyles","valueResolver","breakpoint","isBaseBreakpoint","overrides","originalStyles","newKeys","Set","originalKeys","has","value","entries","inheritedValue","getInheritedValue","baseStyles","structuredClone","bp","name","indexOf"],"sources":["StylesBindingsProcessor.ts"],"sourcesContent":["import set from \"lodash/set\";\nimport unset from \"lodash/unset\";\nimport type { DocumentElementBindings, DocumentElementStyleBindings } from \"~/types\";\nimport { InheritedValueResolver } from \"~/InheritedValueResolver\";\nimport { StylesUpdater } from \"./StylesUpdater\";\n\ntype DeepBindings = Record<string, any>;\n\nexport type ElementStylesBindings = {\n styles: DocumentElementStyleBindings;\n overrides: {\n [breakpoint: string]: {\n styles: DocumentElementStyleBindings;\n };\n };\n};\n\n/**\n * Handles deep-to-flat and flat-to-deep conversion of style bindings,\n * with breakpoint inheritance awareness.\n */\nexport class StylesBindingsProcessor {\n private breakpoints: string[];\n private rawBindings: DocumentElementBindings;\n private elementId: string;\n\n constructor(elementId: string, breakpoints: string[], rawBindings: DocumentElementBindings) {\n this.elementId = elementId;\n this.breakpoints = breakpoints;\n this.rawBindings = rawBindings;\n }\n\n /**\n * Converts flat style bindings into deep styles object (removes `.static`).\n */\n public toDeepStyles(styles: DocumentElementBindings[\"styles\"] = {}): DeepBindings {\n const result: DeepBindings = {};\n Object.keys(styles).forEach(key => {\n // @ts-expect-error Style keys cannot be indexed with a string.\n result[key] = styles[key].static;\n });\n return result;\n }\n\n /**\n * Flattens deep styles object into flat bindings with `.static` wrappers.\n * Skips overrides where the value matches inherited parent breakpoint.\n */\n public createUpdate(styles: DeepBindings, currentBreakpoint: string) {\n const rebuilt = this.getBaseStyles();\n const valueResolver = new InheritedValueResolver(this.breakpoints, breakpoint => {\n if (this.isBaseBreakpoint(breakpoint)) {\n return this.rawBindings.styles;\n }\n return this.rawBindings?.overrides?.[breakpoint]?.styles;\n });\n\n // Collect original keys for the breakpoint\n const originalStyles = this.isBaseBreakpoint(currentBreakpoint)\n ? this.rawBindings.styles || {}\n : this.rawBindings?.overrides?.[currentBreakpoint]?.styles || {};\n\n const newKeys = new Set(Object.keys(styles));\n const originalKeys = Object.keys(originalStyles);\n\n // Remove keys that no longer exist\n for (const key of originalKeys) {\n if (!newKeys.has(key)) {\n if (this.isBaseBreakpoint(currentBreakpoint)) {\n unset(rebuilt, `styles.${key}`);\n } else {\n unset(rebuilt, `overrides.${currentBreakpoint}.styles.${key}`);\n }\n }\n }\n\n for (const [key, value] of Object.entries(styles)) {\n if (this.isBaseBreakpoint(currentBreakpoint)) {\n set(rebuilt, `styles.${key}.static`, value);\n } else {\n const inheritedValue = valueResolver.getInheritedValue(key, currentBreakpoint);\n\n if (value !== inheritedValue) {\n set(rebuilt, `overrides.${currentBreakpoint}.styles.${key}.static`, value);\n } else {\n unset(rebuilt, `overrides.${currentBreakpoint}.styles.${key}`);\n }\n }\n }\n\n return new StylesUpdater(this.elementId, rebuilt);\n }\n\n private getBaseStyles(): ElementStylesBindings {\n const baseStyles: ElementStylesBindings = {\n styles: structuredClone(this.rawBindings.styles) ?? {},\n overrides: {}\n };\n\n // Clone existing overrides if present, to avoid losing breakpoint overrides\n if (this.rawBindings.overrides) {\n for (const [bp, overrides] of Object.entries(this.rawBindings.overrides)) {\n if (overrides.styles) {\n set(\n baseStyles,\n `overrides.${bp}.styles`,\n structuredClone(this.rawBindings.overrides[bp].styles)\n );\n }\n }\n }\n\n return baseStyles;\n }\n\n private isBaseBreakpoint(name: string): boolean {\n return this.breakpoints.indexOf(name) === 0;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["set","unset","InheritedValueResolver","StylesUpdater","StylesBindingsProcessor","constructor","elementId","breakpoints","rawBindings","toDeepStyles","styles","result","Object","keys","forEach","key","static","createUpdate","currentBreakpoint","rebuilt","getBaseStyles","valueResolver","breakpoint","isBaseBreakpoint","overrides","originalStyles","newKeys","Set","originalKeys","has","value","entries","inheritedValue","getInheritedValue","baseStyles","structuredClone","bp","name","indexOf"],"sources":["StylesBindingsProcessor.ts"],"sourcesContent":["import set from \"lodash/set.js\";\nimport unset from \"lodash/unset.js\";\nimport type { DocumentElementBindings, DocumentElementStyleBindings } from \"~/types.js\";\nimport { InheritedValueResolver } from \"~/InheritedValueResolver.js\";\nimport { StylesUpdater } from \"./StylesUpdater.js\";\n\ntype DeepBindings = Record<string, any>;\n\nexport type ElementStylesBindings = {\n styles: DocumentElementStyleBindings;\n overrides: {\n [breakpoint: string]: {\n styles: DocumentElementStyleBindings;\n };\n };\n};\n\n/**\n * Handles deep-to-flat and flat-to-deep conversion of style bindings,\n * with breakpoint inheritance awareness.\n */\nexport class StylesBindingsProcessor {\n private breakpoints: string[];\n private rawBindings: DocumentElementBindings;\n private elementId: string;\n\n constructor(elementId: string, breakpoints: string[], rawBindings: DocumentElementBindings) {\n this.elementId = elementId;\n this.breakpoints = breakpoints;\n this.rawBindings = rawBindings;\n }\n\n /**\n * Converts flat style bindings into deep styles object (removes `.static`).\n */\n public toDeepStyles(styles: DocumentElementBindings[\"styles\"] = {}): DeepBindings {\n const result: DeepBindings = {};\n Object.keys(styles).forEach(key => {\n // @ts-expect-error Style keys cannot be indexed with a string.\n result[key] = styles[key].static;\n });\n return result;\n }\n\n /**\n * Flattens deep styles object into flat bindings with `.static` wrappers.\n * Skips overrides where the value matches inherited parent breakpoint.\n */\n public createUpdate(styles: DeepBindings, currentBreakpoint: string) {\n const rebuilt = this.getBaseStyles();\n const valueResolver = new InheritedValueResolver(this.breakpoints, breakpoint => {\n if (this.isBaseBreakpoint(breakpoint)) {\n return this.rawBindings.styles;\n }\n return this.rawBindings?.overrides?.[breakpoint]?.styles;\n });\n\n // Collect original keys for the breakpoint\n const originalStyles = this.isBaseBreakpoint(currentBreakpoint)\n ? this.rawBindings.styles || {}\n : this.rawBindings?.overrides?.[currentBreakpoint]?.styles || {};\n\n const newKeys = new Set(Object.keys(styles));\n const originalKeys = Object.keys(originalStyles);\n\n // Remove keys that no longer exist\n for (const key of originalKeys) {\n if (!newKeys.has(key)) {\n if (this.isBaseBreakpoint(currentBreakpoint)) {\n unset(rebuilt, `styles.${key}`);\n } else {\n unset(rebuilt, `overrides.${currentBreakpoint}.styles.${key}`);\n }\n }\n }\n\n for (const [key, value] of Object.entries(styles)) {\n if (this.isBaseBreakpoint(currentBreakpoint)) {\n set(rebuilt, `styles.${key}.static`, value);\n } else {\n const inheritedValue = valueResolver.getInheritedValue(key, currentBreakpoint);\n\n if (value !== inheritedValue) {\n set(rebuilt, `overrides.${currentBreakpoint}.styles.${key}.static`, value);\n } else {\n unset(rebuilt, `overrides.${currentBreakpoint}.styles.${key}`);\n }\n }\n }\n\n return new StylesUpdater(this.elementId, rebuilt);\n }\n\n private getBaseStyles(): ElementStylesBindings {\n const baseStyles: ElementStylesBindings = {\n styles: structuredClone(this.rawBindings.styles) ?? {},\n overrides: {}\n };\n\n // Clone existing overrides if present, to avoid losing breakpoint overrides\n if (this.rawBindings.overrides) {\n for (const [bp, overrides] of Object.entries(this.rawBindings.overrides)) {\n if (overrides.styles) {\n set(\n baseStyles,\n `overrides.${bp}.styles`,\n structuredClone(this.rawBindings.overrides[bp].styles)\n );\n }\n }\n }\n\n return baseStyles;\n }\n\n private isBaseBreakpoint(name: string): boolean {\n return this.breakpoints.indexOf(name) === 0;\n }\n}\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,eAAe;AAC/B,OAAOC,KAAK,MAAM,iBAAiB;AAEnC,SAASC,sBAAsB;AAC/B,SAASC,aAAa;AAatB;AACA;AACA;AACA;AACA,OAAO,MAAMC,uBAAuB,CAAC;EAKjCC,WAAWA,CAACC,SAAiB,EAAEC,WAAqB,EAAEC,WAAoC,EAAE;IACxF,IAAI,CAACF,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,WAAW,GAAGA,WAAW;EAClC;;EAEA;AACJ;AACA;EACWC,YAAYA,CAACC,MAAyC,GAAG,CAAC,CAAC,EAAgB;IAC9E,MAAMC,MAAoB,GAAG,CAAC,CAAC;IAC/BC,MAAM,CAACC,IAAI,CAACH,MAAM,CAAC,CAACI,OAAO,CAACC,GAAG,IAAI;MAC/B;MACAJ,MAAM,CAACI,GAAG,CAAC,GAAGL,MAAM,CAACK,GAAG,CAAC,CAACC,MAAM;IACpC,CAAC,CAAC;IACF,OAAOL,MAAM;EACjB;;EAEA;AACJ;AACA;AACA;EACWM,YAAYA,CAACP,MAAoB,EAAEQ,iBAAyB,EAAE;IACjE,MAAMC,OAAO,GAAG,IAAI,CAACC,aAAa,CAAC,CAAC;IACpC,MAAMC,aAAa,GAAG,IAAInB,sBAAsB,CAAC,IAAI,CAACK,WAAW,EAAEe,UAAU,IAAI;MAC7E,IAAI,IAAI,CAACC,gBAAgB,CAACD,UAAU,CAAC,EAAE;QACnC,OAAO,IAAI,CAACd,WAAW,CAACE,MAAM;MAClC;MACA,OAAO,IAAI,CAACF,WAAW,EAAEgB,SAAS,GAAGF,UAAU,CAAC,EAAEZ,MAAM;IAC5D,CAAC,CAAC;;IAEF;IACA,MAAMe,cAAc,GAAG,IAAI,CAACF,gBAAgB,CAACL,iBAAiB,CAAC,GACzD,IAAI,CAACV,WAAW,CAACE,MAAM,IAAI,CAAC,CAAC,GAC7B,IAAI,CAACF,WAAW,EAAEgB,SAAS,GAAGN,iBAAiB,CAAC,EAAER,MAAM,IAAI,CAAC,CAAC;IAEpE,MAAMgB,OAAO,GAAG,IAAIC,GAAG,CAACf,MAAM,CAACC,IAAI,CAACH,MAAM,CAAC,CAAC;IAC5C,MAAMkB,YAAY,GAAGhB,MAAM,CAACC,IAAI,CAACY,cAAc,CAAC;;IAEhD;IACA,KAAK,MAAMV,GAAG,IAAIa,YAAY,EAAE;MAC5B,IAAI,CAACF,OAAO,CAACG,GAAG,CAACd,GAAG,CAAC,EAAE;QACnB,IAAI,IAAI,CAACQ,gBAAgB,CAACL,iBAAiB,CAAC,EAAE;UAC1CjB,KAAK,CAACkB,OAAO,EAAE,UAAUJ,GAAG,EAAE,CAAC;QACnC,CAAC,MAAM;UACHd,KAAK,CAACkB,OAAO,EAAE,aAAaD,iBAAiB,WAAWH,GAAG,EAAE,CAAC;QAClE;MACJ;IACJ;IAEA,KAAK,MAAM,CAACA,GAAG,EAAEe,KAAK,CAAC,IAAIlB,MAAM,CAACmB,OAAO,CAACrB,MAAM,CAAC,EAAE;MAC/C,IAAI,IAAI,CAACa,gBAAgB,CAACL,iBAAiB,CAAC,EAAE;QAC1ClB,GAAG,CAACmB,OAAO,EAAE,UAAUJ,GAAG,SAAS,EAAEe,KAAK,CAAC;MAC/C,CAAC,MAAM;QACH,MAAME,cAAc,GAAGX,aAAa,CAACY,iBAAiB,CAAClB,GAAG,EAAEG,iBAAiB,CAAC;QAE9E,IAAIY,KAAK,KAAKE,cAAc,EAAE;UAC1BhC,GAAG,CAACmB,OAAO,EAAE,aAAaD,iBAAiB,WAAWH,GAAG,SAAS,EAAEe,KAAK,CAAC;QAC9E,CAAC,MAAM;UACH7B,KAAK,CAACkB,OAAO,EAAE,aAAaD,iBAAiB,WAAWH,GAAG,EAAE,CAAC;QAClE;MACJ;IACJ;IAEA,OAAO,IAAIZ,aAAa,CAAC,IAAI,CAACG,SAAS,EAAEa,OAAO,CAAC;EACrD;EAEQC,aAAaA,CAAA,EAA0B;IAC3C,MAAMc,UAAiC,GAAG;MACtCxB,MAAM,EAAEyB,eAAe,CAAC,IAAI,CAAC3B,WAAW,CAACE,MAAM,CAAC,IAAI,CAAC,CAAC;MACtDc,SAAS,EAAE,CAAC;IAChB,CAAC;;IAED;IACA,IAAI,IAAI,CAAChB,WAAW,CAACgB,SAAS,EAAE;MAC5B,KAAK,MAAM,CAACY,EAAE,EAAEZ,SAAS,CAAC,IAAIZ,MAAM,CAACmB,OAAO,CAAC,IAAI,CAACvB,WAAW,CAACgB,SAAS,CAAC,EAAE;QACtE,IAAIA,SAAS,CAACd,MAAM,EAAE;UAClBV,GAAG,CACCkC,UAAU,EACV,aAAaE,EAAE,SAAS,EACxBD,eAAe,CAAC,IAAI,CAAC3B,WAAW,CAACgB,SAAS,CAACY,EAAE,CAAC,CAAC1B,MAAM,CACzD,CAAC;QACL;MACJ;IACJ;IAEA,OAAOwB,UAAU;EACrB;EAEQX,gBAAgBA,CAACc,IAAY,EAAW;IAC5C,OAAO,IAAI,CAAC9B,WAAW,CAAC+B,OAAO,CAACD,IAAI,CAAC,KAAK,CAAC;EAC/C;AACJ","ignoreList":[]}
@@ -1,10 +1,10 @@
1
- import type { Document, DocumentElementBindings } from "./types";
2
- import type { IBindingsUpdater } from "./IBindingsUpdater";
3
- import type { ElementStylesBindings } from "./StylesBindingsProcessor";
1
+ import type { Document, DocumentElementBindings } from "./types.js";
2
+ import type { IBindingsUpdater } from "./IBindingsUpdater.js";
3
+ import type { ElementStylesBindings } from "./StylesBindingsProcessor.js";
4
4
  export declare class StylesUpdater implements IBindingsUpdater {
5
5
  private readonly bindings;
6
6
  private elementId;
7
7
  constructor(elementId: string, bindings: ElementStylesBindings);
8
8
  applyToDocument(document: Document): void;
9
- createJsonPatch(bindings: DocumentElementBindings): import("./jsonPatch").JsonPatchOperation[];
9
+ createJsonPatch(bindings: DocumentElementBindings): import("./jsonPatch.js").JsonPatchOperation[];
10
10
  }
package/StylesUpdater.js CHANGED
@@ -1,5 +1,5 @@
1
- import { jsonPatch } from "./jsonPatch";
2
- import set from "lodash/set";
1
+ import { jsonPatch } from "./jsonPatch.js";
2
+ import set from "lodash/set.js";
3
3
  export class StylesUpdater {
4
4
  constructor(elementId, bindings) {
5
5
  this.elementId = elementId;
@@ -1 +1 @@
1
- {"version":3,"names":["jsonPatch","set","StylesUpdater","constructor","elementId","bindings","applyToDocument","document","styles","overrides","bp","Object","entries","structuredClone","createJsonPatch","toCompare","keys","length","ignore","compare","filter","op","some","prefix","path","startsWith"],"sources":["StylesUpdater.ts"],"sourcesContent":["import { jsonPatch } from \"~/jsonPatch\";\nimport set from \"lodash/set\";\nimport type { Document, DocumentElementBindings } from \"./types\";\nimport type { IBindingsUpdater } from \"./IBindingsUpdater\";\nimport type { ElementStylesBindings } from \"./StylesBindingsProcessor\";\n\nexport class StylesUpdater implements IBindingsUpdater {\n private readonly bindings: ElementStylesBindings;\n private elementId: string;\n\n constructor(elementId: string, bindings: ElementStylesBindings) {\n this.elementId = elementId;\n this.bindings = bindings;\n }\n\n applyToDocument(document: Document) {\n if (this.bindings.styles) {\n document.bindings[this.elementId].styles = this.bindings.styles;\n }\n\n if (this.bindings.overrides) {\n for (const [bp, overrides] of Object.entries(this.bindings.overrides)) {\n if (overrides.styles) {\n set(\n document.bindings,\n `${this.elementId}.overrides.${bp}.styles`,\n structuredClone(this.bindings.overrides[bp].styles)\n );\n }\n }\n }\n }\n\n createJsonPatch(bindings: DocumentElementBindings) {\n const toCompare: Partial<DocumentElementBindings> = { ...this.bindings };\n if (Object.keys(toCompare.overrides ?? {}).length === 0) {\n delete toCompare.overrides;\n }\n\n const ignore = [\"/inputs\", \"/overrides/inputs\", \"/metadata\"];\n\n return jsonPatch.compare(bindings, toCompare).filter(op => {\n return !ignore.some(prefix => op.path.startsWith(prefix));\n });\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS;AAClB,OAAOC,GAAG,MAAM,YAAY;AAK5B,OAAO,MAAMC,aAAa,CAA6B;EAInDC,WAAWA,CAACC,SAAiB,EAAEC,QAA+B,EAAE;IAC5D,IAAI,CAACD,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACC,QAAQ,GAAGA,QAAQ;EAC5B;EAEAC,eAAeA,CAACC,QAAkB,EAAE;IAChC,IAAI,IAAI,CAACF,QAAQ,CAACG,MAAM,EAAE;MACtBD,QAAQ,CAACF,QAAQ,CAAC,IAAI,CAACD,SAAS,CAAC,CAACI,MAAM,GAAG,IAAI,CAACH,QAAQ,CAACG,MAAM;IACnE;IAEA,IAAI,IAAI,CAACH,QAAQ,CAACI,SAAS,EAAE;MACzB,KAAK,MAAM,CAACC,EAAE,EAAED,SAAS,CAAC,IAAIE,MAAM,CAACC,OAAO,CAAC,IAAI,CAACP,QAAQ,CAACI,SAAS,CAAC,EAAE;QACnE,IAAIA,SAAS,CAACD,MAAM,EAAE;UAClBP,GAAG,CACCM,QAAQ,CAACF,QAAQ,EACjB,GAAG,IAAI,CAACD,SAAS,cAAcM,EAAE,SAAS,EAC1CG,eAAe,CAAC,IAAI,CAACR,QAAQ,CAACI,SAAS,CAACC,EAAE,CAAC,CAACF,MAAM,CACtD,CAAC;QACL;MACJ;IACJ;EACJ;EAEAM,eAAeA,CAACT,QAAiC,EAAE;IAC/C,MAAMU,SAA2C,GAAG;MAAE,GAAG,IAAI,CAACV;IAAS,CAAC;IACxE,IAAIM,MAAM,CAACK,IAAI,CAACD,SAAS,CAACN,SAAS,IAAI,CAAC,CAAC,CAAC,CAACQ,MAAM,KAAK,CAAC,EAAE;MACrD,OAAOF,SAAS,CAACN,SAAS;IAC9B;IAEA,MAAMS,MAAM,GAAG,CAAC,SAAS,EAAE,mBAAmB,EAAE,WAAW,CAAC;IAE5D,OAAOlB,SAAS,CAACmB,OAAO,CAACd,QAAQ,EAAEU,SAAS,CAAC,CAACK,MAAM,CAACC,EAAE,IAAI;MACvD,OAAO,CAACH,MAAM,CAACI,IAAI,CAACC,MAAM,IAAIF,EAAE,CAACG,IAAI,CAACC,UAAU,CAACF,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["jsonPatch","set","StylesUpdater","constructor","elementId","bindings","applyToDocument","document","styles","overrides","bp","Object","entries","structuredClone","createJsonPatch","toCompare","keys","length","ignore","compare","filter","op","some","prefix","path","startsWith"],"sources":["StylesUpdater.ts"],"sourcesContent":["import { jsonPatch } from \"~/jsonPatch.js\";\nimport set from \"lodash/set.js\";\nimport type { Document, DocumentElementBindings } from \"./types.js\";\nimport type { IBindingsUpdater } from \"./IBindingsUpdater.js\";\nimport type { ElementStylesBindings } from \"./StylesBindingsProcessor.js\";\n\nexport class StylesUpdater implements IBindingsUpdater {\n private readonly bindings: ElementStylesBindings;\n private elementId: string;\n\n constructor(elementId: string, bindings: ElementStylesBindings) {\n this.elementId = elementId;\n this.bindings = bindings;\n }\n\n applyToDocument(document: Document) {\n if (this.bindings.styles) {\n document.bindings[this.elementId].styles = this.bindings.styles;\n }\n\n if (this.bindings.overrides) {\n for (const [bp, overrides] of Object.entries(this.bindings.overrides)) {\n if (overrides.styles) {\n set(\n document.bindings,\n `${this.elementId}.overrides.${bp}.styles`,\n structuredClone(this.bindings.overrides[bp].styles)\n );\n }\n }\n }\n }\n\n createJsonPatch(bindings: DocumentElementBindings) {\n const toCompare: Partial<DocumentElementBindings> = { ...this.bindings };\n if (Object.keys(toCompare.overrides ?? {}).length === 0) {\n delete toCompare.overrides;\n }\n\n const ignore = [\"/inputs\", \"/overrides/inputs\", \"/metadata\"];\n\n return jsonPatch.compare(bindings, toCompare).filter(op => {\n return !ignore.some(prefix => op.path.startsWith(prefix));\n });\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS;AAClB,OAAOC,GAAG,MAAM,eAAe;AAK/B,OAAO,MAAMC,aAAa,CAA6B;EAInDC,WAAWA,CAACC,SAAiB,EAAEC,QAA+B,EAAE;IAC5D,IAAI,CAACD,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACC,QAAQ,GAAGA,QAAQ;EAC5B;EAEAC,eAAeA,CAACC,QAAkB,EAAE;IAChC,IAAI,IAAI,CAACF,QAAQ,CAACG,MAAM,EAAE;MACtBD,QAAQ,CAACF,QAAQ,CAAC,IAAI,CAACD,SAAS,CAAC,CAACI,MAAM,GAAG,IAAI,CAACH,QAAQ,CAACG,MAAM;IACnE;IAEA,IAAI,IAAI,CAACH,QAAQ,CAACI,SAAS,EAAE;MACzB,KAAK,MAAM,CAACC,EAAE,EAAED,SAAS,CAAC,IAAIE,MAAM,CAACC,OAAO,CAAC,IAAI,CAACP,QAAQ,CAACI,SAAS,CAAC,EAAE;QACnE,IAAIA,SAAS,CAACD,MAAM,EAAE;UAClBP,GAAG,CACCM,QAAQ,CAACF,QAAQ,EACjB,GAAG,IAAI,CAACD,SAAS,cAAcM,EAAE,SAAS,EAC1CG,eAAe,CAAC,IAAI,CAACR,QAAQ,CAACI,SAAS,CAACC,EAAE,CAAC,CAACF,MAAM,CACtD,CAAC;QACL;MACJ;IACJ;EACJ;EAEAM,eAAeA,CAACT,QAAiC,EAAE;IAC/C,MAAMU,SAA2C,GAAG;MAAE,GAAG,IAAI,CAACV;IAAS,CAAC;IACxE,IAAIM,MAAM,CAACK,IAAI,CAACD,SAAS,CAACN,SAAS,IAAI,CAAC,CAAC,CAAC,CAACQ,MAAM,KAAK,CAAC,EAAE;MACrD,OAAOF,SAAS,CAACN,SAAS;IAC9B;IAEA,MAAMS,MAAM,GAAG,CAAC,SAAS,EAAE,mBAAmB,EAAE,WAAW,CAAC;IAE5D,OAAOlB,SAAS,CAACmB,OAAO,CAACd,QAAQ,EAAEU,SAAS,CAAC,CAACK,MAAM,CAACC,EAAE,IAAI;MACvD,OAAO,CAACH,MAAM,CAACI,IAAI,CAACC,MAAM,IAAIF,EAAE,CAACG,IAAI,CAACC,UAAU,CAACF,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
package/Theme.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { WebsiteBuilderTheme, WebsiteBuilderThemeInput } from "./types/WebsiteBuilderTheme";
1
+ import type { WebsiteBuilderTheme, WebsiteBuilderThemeInput } from "./types/WebsiteBuilderTheme.js";
2
2
  export declare class Theme {
3
3
  static from(input: WebsiteBuilderThemeInput): WebsiteBuilderTheme;
4
4
  }