@webiny/website-builder-sdk 6.3.0 → 6.4.0-beta.0
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.
- package/BindingsApi.js +29 -36
- package/BindingsApi.js.map +1 -1
- package/BindingsProcessor.js +34 -43
- package/BindingsProcessor.js.map +1 -1
- package/BindingsProcessor.test.js +82 -78
- package/BindingsProcessor.test.js.map +1 -1
- package/BindingsResolver.js +92 -119
- package/BindingsResolver.js.map +1 -1
- package/BindingsResolver.test.js +399 -363
- package/BindingsResolver.test.js.map +1 -1
- package/ComponentInputTraverser.js +28 -49
- package/ComponentInputTraverser.js.map +1 -1
- package/ComponentManifestToAstConverter.js +20 -21
- package/ComponentManifestToAstConverter.js.map +1 -1
- package/ComponentRegistry.js +26 -45
- package/ComponentRegistry.js.map +1 -1
- package/ComponentResolver.js +25 -29
- package/ComponentResolver.js.map +1 -1
- package/ConstraintEvaluator.js +246 -353
- package/ConstraintEvaluator.js.map +1 -1
- package/ConstraintEvaluator.test.js +1616 -1438
- package/ConstraintEvaluator.test.js.map +1 -1
- package/ContentSdk.js +83 -90
- package/ContentSdk.js.map +1 -1
- package/DocumentStore.js +47 -59
- package/DocumentStore.js.map +1 -1
- package/DocumentStoreManager.js +17 -16
- package/DocumentStoreManager.js.map +1 -1
- package/EditingSdk.js +87 -121
- package/EditingSdk.js.map +1 -1
- package/ElementFactory.js +126 -174
- package/ElementFactory.js.map +1 -1
- package/ElementFactory.test.js +234 -263
- package/ElementFactory.test.js.map +1 -1
- package/Environment.js +18 -19
- package/Environment.js.map +1 -1
- package/FunctionConverter.js +8 -7
- package/FunctionConverter.js.map +1 -1
- package/HashObject.js +11 -26
- package/HashObject.js.map +1 -1
- package/HotkeyManager.js +40 -47
- package/HotkeyManager.js.map +1 -1
- package/IBindingsUpdater.js +0 -3
- package/IRedirects.js +0 -3
- package/InheritanceProcessor.js +99 -139
- package/InheritanceProcessor.js.map +1 -1
- package/InheritanceProcessor.test.js +178 -179
- package/InheritanceProcessor.test.js.map +1 -1
- package/InheritedValueResolver.js +15 -20
- package/InheritedValueResolver.js.map +1 -1
- package/InputBindingsProcessor.js +187 -307
- package/InputBindingsProcessor.js.map +1 -1
- package/InputsBindingsProcessor.test.js +334 -315
- package/InputsBindingsProcessor.test.js.map +1 -1
- package/InputsUpdater.js +23 -26
- package/InputsUpdater.js.map +1 -1
- package/LiveSdk.js +12 -13
- package/LiveSdk.js.map +1 -1
- package/Logger.js +9 -8
- package/Logger.js.map +1 -1
- package/MouseTracker.js +77 -83
- package/MouseTracker.js.map +1 -1
- package/NullSdk.js +22 -21
- package/NullSdk.js.map +1 -1
- package/PreviewDocument.js +27 -30
- package/PreviewDocument.js.map +1 -1
- package/PreviewSdk.js +16 -17
- package/PreviewSdk.js.map +1 -1
- package/PreviewViewport.js +51 -63
- package/PreviewViewport.js.map +1 -1
- package/ResizeObserver.js +24 -31
- package/ResizeObserver.js.map +1 -1
- package/StylesBindingsProcessor.js +40 -79
- package/StylesBindingsProcessor.js.map +1 -1
- package/StylesUpdater.js +20 -25
- package/StylesUpdater.js.map +1 -1
- package/Theme.js +28 -25
- package/Theme.js.map +1 -1
- package/ViewportManager.js +89 -101
- package/ViewportManager.js.map +1 -1
- package/constants.js +7 -6
- package/constants.js.map +1 -1
- package/createElement.js +5 -6
- package/createElement.js.map +1 -1
- package/createInput.js +85 -143
- package/createInput.js.map +1 -1
- package/createTheme.js +2 -3
- package/createTheme.js.map +1 -1
- package/dataProviders/ApiClient.js +40 -49
- package/dataProviders/ApiClient.js.map +1 -1
- package/dataProviders/DefaultDataProvider.js +56 -58
- package/dataProviders/DefaultDataProvider.js.map +1 -1
- package/dataProviders/GET_PAGE_BY_ID.js +2 -1
- package/dataProviders/GET_PAGE_BY_ID.js.map +1 -1
- package/dataProviders/GET_PAGE_BY_PATH.js +2 -1
- package/dataProviders/GET_PAGE_BY_PATH.js.map +1 -1
- package/dataProviders/LIST_PUBLISHED_PAGES.js +2 -1
- package/dataProviders/LIST_PUBLISHED_PAGES.js.map +1 -1
- package/dataProviders/NullDataProvider.js +21 -20
- package/dataProviders/NullDataProvider.js.map +1 -1
- package/dataProviders/RedirectsProvider.js +24 -27
- package/dataProviders/RedirectsProvider.js.map +1 -1
- package/defaultBreakpoints.js +23 -22
- package/defaultBreakpoints.js.map +1 -1
- package/documentOperations/$addElementReferenceToParent.js +29 -32
- package/documentOperations/$addElementReferenceToParent.js.map +1 -1
- package/documentOperations/AddElement.js +8 -7
- package/documentOperations/AddElement.js.map +1 -1
- package/documentOperations/AddToParent.js +14 -13
- package/documentOperations/AddToParent.js.map +1 -1
- package/documentOperations/IDocumentOperation.js +0 -3
- package/documentOperations/RemoveElement.js +9 -15
- package/documentOperations/RemoveElement.js.map +1 -1
- package/documentOperations/SetGlobalInputBinding.js +23 -22
- package/documentOperations/SetGlobalInputBinding.js.map +1 -1
- package/documentOperations/SetGlobalStyleBinding.js +23 -23
- package/documentOperations/SetGlobalStyleBinding.js.map +1 -1
- package/documentOperations/SetInputBindingOverride.js +30 -29
- package/documentOperations/SetInputBindingOverride.js.map +1 -1
- package/documentOperations/SetStyleBindingOverride.js +30 -31
- package/documentOperations/SetStyleBindingOverride.js.map +1 -1
- package/documentOperations/index.js +9 -8
- package/documentOperations/index.js.map +1 -1
- package/findMatchingAstNode.js +11 -13
- package/findMatchingAstNode.js.map +1 -1
- package/generateElementId.js +2 -1
- package/generateElementId.js.map +1 -1
- package/headersProvider.js +4 -3
- package/headersProvider.js.map +1 -1
- package/index.js +0 -2
- package/jsonPatch.js +5 -9
- package/jsonPatch.js.map +1 -1
- package/messages.js +12 -11
- package/messages.js.map +1 -1
- package/messenger/MessageOrigin.js +12 -11
- package/messenger/MessageOrigin.js.map +1 -1
- package/messenger/Messenger.js +58 -69
- package/messenger/Messenger.js.map +1 -1
- package/messenger/index.js +0 -2
- package/package.json +5 -5
- package/registerComponentGroup.js +5 -6
- package/registerComponentGroup.js.map +1 -1
- package/types/ShorthandCssProperties.js +0 -3
- package/types/WebsiteBuilderTheme.js +0 -3
- package/types.d.ts +3 -0
- package/types.js +0 -3
- package/IBindingsUpdater.js.map +0 -1
- package/IRedirects.js.map +0 -1
- package/documentOperations/IDocumentOperation.js.map +0 -1
- package/index.js.map +0 -1
- package/messenger/index.js.map +0 -1
- package/types/ShorthandCssProperties.js.map +0 -1
- package/types/WebsiteBuilderTheme.js.map +0 -1
- package/types.js.map +0 -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","item","action","newElement","createElementFromComponent","componentName","params","component","parentId","slot","bindings","filter","op","AddToParent","element","id","index","createdId","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 let 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 // For list slots, process CreateElement items within the array.\n if (node.list && Array.isArray(newValue)) {\n newValue = newValue.map(item => {\n if (\n typeof item === \"object\" &&\n item !== null &&\n item.action === \"CreateElement\"\n ) {\n const newElement = this.elementFactory.createElementFromComponent({\n componentName: item.params.component,\n parentId: this.elementId,\n slot: flatKey,\n bindings: item.params\n });\n // Skip AddToParent — this processor manages the binding array.\n operations.push(\n ...newElement.operations.filter(\n op => !(op instanceof DocumentOperations.AddToParent)\n )\n );\n return newElement.element.id;\n }\n return item;\n });\n }\n\n if (\n !Array.isArray(newValue) &&\n typeof newValue === \"object\" &&\n newValue?.action === \"CreateElement\"\n ) {\n // Handle single (non-list) CreateElement action\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: 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 // Skip AddToParent — this processor manages the binding directly.\n operations.push(\n ...newElement.operations.filter(\n op => !(op instanceof DocumentOperations.AddToParent)\n )\n );\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":"AAAA,OAAOA,SAAS,MAAM,YAAY;AAClC,OAAOC,GAAG,MAAM,eAAe;AAE/B,SAASC,sBAAsB;AAE/B,SAASC,kBAAkB;AAE3B,SAASC,aAAa;AACtB,SAASC,iBAAiB;AAY1B;AACA;AACA;AACA;AACA,OAAO,MAAMC,uBAAuB,CAAC;EAQjCC,WAAWA,CACPC,SAAiB,EACjBC,SAAyB,EACzBC,WAAqB,EACrBC,WAAoC,EACpCC,cAA8B,EAChC;IACE,IAAI,CAACJ,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACC,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,cAAc,GAAGA,cAAc;IACpC,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAACC,oBAAoB,CAACH,WAAW,CAACI,MAAM,CAAC;EAC1E;;EAEA;AACJ;AACA;EACWC,YAAYA,CAACC,IAAoD,EAAgB;IACpF,MAAMC,MAAoB,GAAG,CAAC,CAAC;;IAE/B;IACA,MAAMC,WAAW,GAAGA,CAACC,IAAyB,EAAEC,KAAU,KAAK;MAC3D,IAAIC,OAAO,GAAGJ,MAAM;MACpB,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,CAACI,MAAM,GAAG,CAAC,EAAED,CAAC,EAAE,EAAE;QACtC,MAAME,GAAG,GAAGL,IAAI,CAACG,CAAC,CAAC;QACnB,MAAMG,OAAO,GAAGN,IAAI,CAACG,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAMI,WAAW,GAAG,OAAOD,OAAO,KAAK,QAAQ;QAE/C,IAAI,OAAOD,GAAG,KAAK,QAAQ,EAAE;UACzB,IAAI,CAACG,KAAK,CAACC,OAAO,CAACP,OAAO,CAAC,EAAE;YACzB,MAAM,IAAIQ,KAAK,CAAC,oCAAoC,CAAC;UACzD;UACA,OAAOR,OAAO,CAACE,MAAM,IAAIC,GAAG,EAAE;YAC1BH,OAAO,CAACS,IAAI,CAACJ,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;UACvC;UACA,IAAI,OAAOL,OAAO,CAACG,GAAG,CAAC,KAAK,QAAQ,EAAE;YAClCH,OAAO,CAACG,GAAG,CAAC,GAAGE,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;UACxC;UACAL,OAAO,GAAGA,OAAO,CAACG,GAAG,CAAC;QAC1B,CAAC,MAAM;UACH,IAAI,EAAEA,GAAG,IAAIH,OAAO,CAAC,IAAI,OAAOA,OAAO,CAACG,GAAG,CAAC,KAAK,QAAQ,EAAE;YACvDH,OAAO,CAACG,GAAG,CAAC,GAAGE,WAAW,GAAG,EAAE,GAAG,CAAC,CAAC;UACxC;UACAL,OAAO,GAAGA,OAAO,CAACG,GAAG,CAAC;QAC1B;MACJ;MACAH,OAAO,CAACF,IAAI,CAACA,IAAI,CAACI,MAAM,GAAG,CAAC,CAAC,CAAC,GAAGH,KAAK;IAC1C,CAAC;;IAED;IACA,MAAMW,IAAI,GAAGA,CAACC,KAAqB,EAAEC,MAAgB,KAAK;MACtD,KAAK,MAAMC,IAAI,IAAIF,KAAK,EAAE;QACtB,MAAMG,SAAS,GAAG,CAAC,GAAGF,MAAM,EAAEC,IAAI,CAACE,IAAI,CAAC;QACxC,MAAMC,OAAO,GAAGF,SAAS,CAACG,IAAI,CAAC,GAAG,CAAC;QACnC,MAAMC,KAAK,GAAGvB,IAAI,CAACqB,OAAO,CAAC;QAC3B,MAAMG,WAAW,GAAGD,KAAK,EAAEE,MAAM;QAEjC,IAAIP,IAAI,CAACQ,QAAQ,CAACnB,MAAM,GAAG,CAAC,EAAE;UAC1B,IAAIW,IAAI,CAACS,IAAI,EAAE;YACX,MAAMC,OAAO,GAAG,IAAIC,MAAM,CAAC,IAAIR,OAAO,cAAc,CAAC;YACrD,MAAMS,OAAO,GAAGC,MAAM,CAACC,IAAI,CAAChC,IAAI,CAAC,CAACiC,MAAM,CAAC,CAACC,GAAa,EAAE1B,GAAG,KAAK;cAC7D,MAAM2B,KAAK,GAAG3B,GAAG,CAAC2B,KAAK,CAACP,OAAO,CAAC;cAChC,IAAIO,KAAK,EAAE;gBACPD,GAAG,CAACpB,IAAI,CAACsB,QAAQ,CAACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;cACpC;cACA,OAAOD,GAAG;YACd,CAAC,EAAE,EAAE,CAAC;YAEN,MAAMG,aAAa,GAAG1B,KAAK,CAAC2B,IAAI,CAAC,IAAIC,GAAG,CAACT,OAAO,CAAC,CAAC,CAACU,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;YAExE,KAAK,MAAMpC,CAAC,IAAI+B,aAAa,EAAE;cAC3BtB,IAAI,CAACG,IAAI,CAACQ,QAAQ,EAAE,CAAC,GAAGT,MAAM,EAAE,GAAGC,IAAI,CAACE,IAAI,IAAId,CAAC,EAAE,CAAC,CAAC;YACzD;UACJ,CAAC,MAAM;YACHS,IAAI,CAACG,IAAI,CAACQ,QAAQ,EAAEP,SAAS,CAAC;UAClC;QACJ,CAAC,MAAM,IAAIK,WAAW,KAAKmB,SAAS,EAAE;UAClC,MAAMxC,IAAI,GAAGgB,SAAS,CAACc,MAAM,CAAsB,CAACC,GAAG,EAAEU,IAAI,KAAK;YAC9D,MAAMT,KAAK,GAAGS,IAAI,CAACT,KAAK,CAAC,cAAc,CAAC;YACxC,IAAIA,KAAK,EAAE;cACPD,GAAG,CAACpB,IAAI,CAACqB,KAAK,CAAC,CAAC,CAAC,EAAEU,MAAM,CAACV,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC,MAAM;cACHD,GAAG,CAACpB,IAAI,CAAC8B,IAAI,CAAC;YAClB;YACA,OAAOV,GAAG;UACd,CAAC,EAAE,EAAE,CAAC;UACNhC,WAAW,CAACC,IAAI,EAAEqB,WAAW,CAAC;QAClC;MACJ;IACJ,CAAC;IAEDT,IAAI,CAAC,IAAI,CAACvB,SAAS,EAAE,EAAE,CAAC;IACxB,OAAOS,MAAM;EACjB;;EAEA;AACJ;AACA;AACA;EACW6C,YAAYA,CAAChD,MAAoB,EAAEiD,UAAkB,EAAE;IAC1D,MAAMC,UAAgC,GAAG,EAAE;IAC3C,MAAMC,cAAc,GAAG,IAAI,CAACvD,WAAW,CAACI,MAAM,IAAI,CAAC,CAAC;IAEpD,MAAMoD,OAA8B,GAAG;MAAEpD,MAAM,EAAE,CAAC,CAAC;MAAEqD,SAAS,EAAE,CAAC;IAAE,CAAC;;IAEpE;IACA,IAAI,IAAI,CAACzD,WAAW,CAACyD,SAAS,EAAE;MAC5B,KAAK,MAAM,CAACC,EAAE,EAAED,SAAS,CAAC,IAAIpB,MAAM,CAACsB,OAAO,CAAC,IAAI,CAAC3D,WAAW,CAACyD,SAAS,CAAC,EAAE;QACtE,IAAIA,SAAS,CAACrD,MAAM,EAAE;UAClBd,GAAG,CACCkE,OAAO,EACP,aAAaE,EAAE,SAAS,EACxBE,eAAe,CAAC,IAAI,CAAC5D,WAAW,CAACyD,SAAS,CAACC,EAAE,CAAC,CAACtD,MAAM,CACzD,CAAC;QACL;MACJ;IACJ;;IAEA;IACA,MAAMyD,SAAS,GAAG,IAAIhB,GAAG,CAAS,CAAC;IACnC,MAAMiB,aAAa,GAAG,IAAIvE,sBAAsB,CAAC,IAAI,CAACQ,WAAW,EAAE2D,EAAE,IAAI;MACrE,IAAI,IAAI,CAACK,gBAAgB,CAACL,EAAE,CAAC,EAAE;QAC3B,OAAO,IAAI,CAAC1D,WAAW,CAACI,MAAM;MAClC;MACA,OAAO,IAAI,CAACJ,WAAW,CAACyD,SAAS,GAAGC,EAAE,CAAC,EAAEtD,MAAM;IACnD,CAAC,CAAC;;IAEF;IACA;IACA,MAAM4D,QAAQ,GAAGA,CAACC,GAAQ,EAAExD,IAAY,KAAU;MAC9C,MAAMyD,QAAQ,GAAGzD,IAAI,CAAC0D,KAAK,CAAC,GAAG,CAAC;MAChC,MAAM7B,IAAI,GAAG4B,QAAQ,CAACE,OAAO,CAACC,OAAO,IAAI;QACrC,OAAOA,OAAO,CAACF,KAAK,CAAC,GAAG,CAAC,CAACG,GAAG,CAACpB,IAAI,IAAI;UAClC,OAAO,OAAO,CAACqB,IAAI,CAACrB,IAAI,CAAC,GAAGR,QAAQ,CAACQ,IAAI,EAAE,EAAE,CAAC,GAAGA,IAAI;QACzD,CAAC,CAAC;MACN,CAAC,CAAC;MACF,OAAOZ,IAAI,CAACC,MAAM,CAAC,CAACC,GAAG,EAAE1B,GAAG,KAAM0B,GAAG,GAAGA,GAAG,CAAC1B,GAAG,CAAC,GAAGmC,SAAU,EAAEgB,GAAG,CAAC;IACvE,CAAC;;IAED;IACA;IACA,MAAMO,iBAAiB,GAAGA,CAAClD,KAAqB,EAAEC,MAAgB,KAAK;MACnE,KAAK,MAAMC,IAAI,IAAIF,KAAK,EAAE;QACtB,MAAMG,SAAS,GAAG,CAAC,GAAGF,MAAM,EAAEC,IAAI,CAACE,IAAI,CAAC;QACxC,MAAMC,OAAO,GAAGF,SAAS,CAACG,IAAI,CAAC,GAAG,CAAC;;QAEnC;QACAiC,SAAS,CAACY,GAAG,CAAC9C,OAAO,CAAC;QAEtB,IAAIH,IAAI,CAACQ,QAAQ,CAACnB,MAAM,EAAE;UACtB,IAAIW,IAAI,CAACS,IAAI,EAAE;YACX;YACA,MAAMA,IAAI,GAAG+B,QAAQ,CAAC5D,MAAM,EAAEuB,OAAO,CAAC;YACtC,IAAIV,KAAK,CAACC,OAAO,CAACe,IAAI,CAAC,EAAE;cACrB,KAAK,IAAIrB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqB,IAAI,CAACpB,MAAM,EAAED,CAAC,EAAE,EAAE;gBAClC;gBACA4D,iBAAiB,CAAChD,IAAI,CAACQ,QAAQ,EAAE,CAC7B,GAAGP,SAAS,CAACiD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACzB,GAAGlD,IAAI,CAACE,IAAI,IAAId,CAAC,EAAE,CACtB,CAAC;cACN;YACJ;UACJ,CAAC,MAAM;YACH;YACA4D,iBAAiB,CAAChD,IAAI,CAACQ,QAAQ,EAAEP,SAAS,CAAC;UAC/C;QACJ,CAAC,MAAM;UACH;;UAEA;UACA,IAAIkD,QAAQ,GAAGX,QAAQ,CAAC5D,MAAM,EAAEuB,OAAO,CAAC;;UAExC;UACA,MAAMiD,aAAa,GAAGrB,cAAc,CAAC5B,OAAO,CAAC;;UAE7C;UACA,IAAIgD,QAAQ,KAAK1B,SAAS,IAAI,CAAC2B,aAAa,EAAE;YAC1C;UACJ;;UAEA;UACA,IAAIpD,IAAI,CAACS,IAAI,IAAIhB,KAAK,CAACC,OAAO,CAACyD,QAAQ,CAAC,EAAE;YACtCA,QAAQ,GAAGA,QAAQ,CAACL,GAAG,CAACO,IAAI,IAAI;cAC5B,IACI,OAAOA,IAAI,KAAK,QAAQ,IACxBA,IAAI,KAAK,IAAI,IACbA,IAAI,CAACC,MAAM,KAAK,eAAe,EACjC;gBACE,MAAMC,UAAU,GAAG,IAAI,CAAC9E,cAAc,CAAC+E,0BAA0B,CAAC;kBAC9DC,aAAa,EAAEJ,IAAI,CAACK,MAAM,CAACC,SAAS;kBACpCC,QAAQ,EAAE,IAAI,CAACvF,SAAS;kBACxBwF,IAAI,EAAE1D,OAAO;kBACb2D,QAAQ,EAAET,IAAI,CAACK;gBACnB,CAAC,CAAC;gBACF;gBACA5B,UAAU,CAAClC,IAAI,CACX,GAAG2D,UAAU,CAACzB,UAAU,CAACiC,MAAM,CAC3BC,EAAE,IAAI,EAAEA,EAAE,YAAYhG,kBAAkB,CAACiG,WAAW,CACxD,CACJ,CAAC;gBACD,OAAOV,UAAU,CAACW,OAAO,CAACC,EAAE;cAChC;cACA,OAAOd,IAAI;YACf,CAAC,CAAC;UACN;UAEA,IACI,CAAC5D,KAAK,CAACC,OAAO,CAACyD,QAAQ,CAAC,IACxB,OAAOA,QAAQ,KAAK,QAAQ,IAC5BA,QAAQ,EAAEG,MAAM,KAAK,eAAe,EACtC;YACE;YACA,MAAMC,UAAU,GAAG,IAAI,CAAC9E,cAAc,CAAC+E,0BAA0B,CAAC;cAC9DC,aAAa,EAAEN,QAAQ,CAACO,MAAM,CAACC,SAAS;cACxCC,QAAQ,EAAE,IAAI,CAACvF,SAAS;cACxBwF,IAAI,EAAE1D,OAAO;cACbiE,KAAK,EAAE,CAAC,CAAC;cACTN,QAAQ,EAAEX,QAAQ,CAACO;YACvB,CAAC,CAAC;YAEF,MAAMW,SAAS,GAAGd,UAAU,CAACW,OAAO,CAACC,EAAE;;YAEvC;YACA,MAAMG,UAAU,GAAGlB,aAAa,EAAEe,EAAE;YACpC,MAAMI,OAAO,GAAGD,UAAU,IAAIpG,iBAAiB,CAAC,CAAC;;YAEjD;YACA,MAAMsG,OAAO,GAAG;cACZjE,MAAM,EAAE8D,SAAS;cACjBI,IAAI,EAAEzE,IAAI,CAACyE,IAAI;cACfhE,IAAI,EAAET,IAAI,CAACS,IAAI;cACf0D,EAAE,EAAEI;YACR,CAAC;YAED,IAAIvE,IAAI,CAAC0E,KAAK,EAAEC,UAAU,IAAI,CAAC,IAAI,CAACpC,gBAAgB,CAACV,UAAU,CAAC,EAAE;cAC9D,MAAM+C,cAAc,GAAGtC,aAAa,CAACuC,iBAAiB,CAClD1E,OAAO,EACP0B,UACJ,CAAC;cAED,IAAI2C,OAAO,CAACjE,MAAM,KAAKkB,SAAS,EAAE;gBAC9B;gBACA,IAAIO,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,EAAEjD,MAAM,GAAGuB,OAAO,CAAC,EAAE;kBAClD,OAAO6B,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,CAACjD,MAAM,CAACuB,OAAO,CAAC;gBACxD;cACJ,CAAC,MAAM,IACHyE,cAAc,KAAKnD,SAAS,IAC5B,CAAC5D,SAAS,CAAC+G,cAAc,EAAEJ,OAAO,CAACjE,MAAM,CAAC,EAC5C;gBACE,IAAI,CAACyB,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,EAAE;kBAChCG,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,GAAG;oBAAEjD,MAAM,EAAE,CAAC;kBAAE,CAAC;gBAClD;gBACAoD,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,CAACjD,MAAM,CAACuB,OAAO,CAAC,GAAGqE,OAAO;cAC3D,CAAC,MAAM;gBACH,IAAIxC,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,EAAEjD,MAAM,GAAGuB,OAAO,CAAC,EAAE;kBAClD,OAAO6B,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,CAACjD,MAAM,CAACuB,OAAO,CAAC;gBACxD;cACJ;cAEA,IAAIiD,aAAa,EAAE;gBACfpB,OAAO,CAACpD,MAAM,CAACuB,OAAO,CAAC,GAAGiD,aAAa;cAC3C;YACJ,CAAC,MAAM;cACH;cACApB,OAAO,CAACpD,MAAM,CAACuB,OAAO,CAAC,GAAGqE,OAAO;YACrC;;YAEA;YACA1C,UAAU,CAAClC,IAAI,CACX,GAAG2D,UAAU,CAACzB,UAAU,CAACiC,MAAM,CAC3BC,EAAE,IAAI,EAAEA,EAAE,YAAYhG,kBAAkB,CAACiG,WAAW,CACxD,CACJ,CAAC;UACL,CAAC,MAAM;YACH;YACA,MAAMa,YAAY,GACd9E,IAAI,CAAC0E,KAAK,EAAEC,UAAU,IAAI,CAAC,IAAI,CAACpC,gBAAgB,CAACV,UAAU,CAAC;;YAEhE;YACA,MAAMyC,UAAU,GAAGlB,aAAa,EAAEe,EAAE;YACpC,MAAMI,OAAO,GAAGD,UAAU,IAAIpG,iBAAiB,CAAC,CAAC;;YAEjD;YACA,MAAMsG,OAAO,GAAG;cACZ,IAAIpB,aAAa,IAAI,CAAC,CAAC,CAAC;cACxB7C,MAAM,EAAE4C,QAAQ;cAChBsB,IAAI,EAAEzE,IAAI,CAACyE,IAAI;cACfhE,IAAI,EAAET,IAAI,CAACS,IAAI;cACf0D,EAAE,EAAEI;YACR,CAAC;YAED,IAAIO,YAAY,EAAE;cACd,MAAMF,cAAc,GAAGtC,aAAa,CAACuC,iBAAiB,CAClD1E,OAAO,EACP0B,UACJ,CAAC;cAED,IAAI2C,OAAO,CAACjE,MAAM,KAAKkB,SAAS,EAAE;gBAC9B;gBACA,IAAIO,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,EAAEjD,MAAM,GAAGuB,OAAO,CAAC,EAAE;kBAClD,OAAO6B,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,CAACjD,MAAM,CAACuB,OAAO,CAAC;gBACxD;cACJ,CAAC,MAAM,IACHyE,cAAc,KAAKnD,SAAS,IAC5B,CAAC5D,SAAS,CAAC+G,cAAc,EAAEJ,OAAO,CAACjE,MAAM,CAAC,EAC5C;gBACE,IAAI,CAACyB,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,EAAE;kBAChCG,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,GAAG;oBAAEjD,MAAM,EAAE,CAAC;kBAAE,CAAC;gBAClD;gBACAoD,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,CAACjD,MAAM,CAACuB,OAAO,CAAC,GAAGqE,OAAO;cAC3D,CAAC,MAAM;gBACH,IAAIxC,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,EAAEjD,MAAM,GAAGuB,OAAO,CAAC,EAAE;kBAClD,OAAO6B,OAAO,CAACC,SAAS,CAACJ,UAAU,CAAC,CAACjD,MAAM,CAACuB,OAAO,CAAC;gBACxD;cACJ;cAEA,IAAIiD,aAAa,EAAE;gBACfpB,OAAO,CAACpD,MAAM,CAACuB,OAAO,CAAC,GAAGiD,aAAa;cAC3C;YACJ,CAAC,MAAM;cACH;cACApB,OAAO,CAACpD,MAAM,CAACuB,OAAO,CAAC,GAAGqE,OAAO;YACrC;UACJ;QACJ;MACJ;IACJ,CAAC;;IAED;IACAxB,iBAAiB,CAAC,IAAI,CAAC1E,SAAS,EAAE,EAAE,CAAC;;IAErC;IACA;IACA,MAAMyG,WAAW,GAAG,IAAI,CAACpG,oBAAoB,CAACqD,OAAO,CAACpD,MAAM,CAAC;IAC7D,KAAK,MAAMuF,EAAE,IAAI,IAAI,CAACzF,iBAAiB,EAAE;MACrC,IAAI,CAACqG,WAAW,CAACC,GAAG,CAACb,EAAE,CAAC,EAAE;QACtBrC,UAAU,CAAClC,IAAI,CAAC,IAAI5B,kBAAkB,CAACiH,aAAa,CAACd,EAAE,CAAC,CAAC;MAC7D;IACJ;IAEA,OAAO,IAAIlG,aAAa,CAAC,IAAI,CAACI,SAAS,EAAE2D,OAAO,EAAEF,UAAU,CAAC;EACjE;;EAEA;EACQnD,oBAAoBA,CAACC,MAAyC,GAAG,CAAC,CAAC,EAAE;IACzE,MAAMsG,UAAU,GAAG,IAAI7D,GAAG,CAAS,CAAC;IAEpC,KAAK,MAAM,GAAGmD,OAAO,CAAC,IAAI3D,MAAM,CAACsB,OAAO,CAACvD,MAAM,CAAC,EAAE;MAC9C,IAAI4F,OAAO,CAACC,IAAI,KAAK,MAAM,EAAE;QACzB,IAAIhF,KAAK,CAACC,OAAO,CAAC8E,OAAO,CAACjE,MAAM,CAAC,EAAE;UAC/B,CAAEiE,OAAO,CAACjE,MAAM,IAAI,EAAE,EAAe4E,OAAO,CAAChB,EAAE,IAAIe,UAAU,CAACjC,GAAG,CAACkB,EAAE,CAAC,CAAC;QAC1E,CAAC,MAAM,IAAI,OAAOK,OAAO,CAACjE,MAAM,KAAK,QAAQ,EAAE;UAC3C2E,UAAU,CAACjC,GAAG,CAACuB,OAAO,CAACjE,MAAM,CAAC;QAClC;MACJ;IACJ;IAEA,OAAO2E,UAAU;EACrB;EAEQ3C,gBAAgBA,CAACrC,IAAY,EAAW;IAC5C,OAAO,IAAI,CAAC3B,WAAW,CAAC6G,OAAO,CAAClF,IAAI,CAAC,KAAK,CAAC;EAC/C;AACJ","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"InputBindingsProcessor.js","sources":["../src/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 let 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 // For list slots, process CreateElement items within the array.\n if (node.list && Array.isArray(newValue)) {\n newValue = newValue.map(item => {\n if (\n typeof item === \"object\" &&\n item !== null &&\n item.action === \"CreateElement\"\n ) {\n const newElement = this.elementFactory.createElementFromComponent({\n componentName: item.params.component,\n parentId: this.elementId,\n slot: flatKey,\n bindings: item.params\n });\n // Skip AddToParent — this processor manages the binding array.\n operations.push(\n ...newElement.operations.filter(\n op => !(op instanceof DocumentOperations.AddToParent)\n )\n );\n return newElement.element.id;\n }\n return item;\n });\n }\n\n if (\n !Array.isArray(newValue) &&\n typeof newValue === \"object\" &&\n newValue?.action === \"CreateElement\"\n ) {\n // Handle single (non-list) CreateElement action\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: 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 // Skip AddToParent — this processor manages the binding directly.\n operations.push(\n ...newElement.operations.filter(\n op => !(op instanceof DocumentOperations.AddToParent)\n )\n );\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"],"names":["InputsBindingsProcessor","elementId","inputsAst","breakpoints","rawBindings","elementFactory","flat","result","assignValue","path","value","current","i","key","nextKey","isNextIndex","Array","Error","walk","nodes","prefix","node","pathParts","flatKey","entry","staticValue","pattern","RegExp","indexes","Object","acc","match","parseInt","uniqueIndexes","Set","a","b","undefined","part","Number","inputs","breakpoint","operations","originalInputs","rebuilt","bp","overrides","set","structuredClone","seenPaths","valueResolver","InheritedValueResolver","getValue","obj","segments","keys","segment","compareAndCollect","list","newValue","originalEntry","item","newElement","op","DocumentOperations","isResponsive","existingId","idToUse","generateElementId","binding","inheritedValue","deepEqual","createdId","usedSlotIds","id","InputsUpdater","references","name"],"mappings":";;;;;;AAwBO,MAAMA;IAQT,YACIC,SAAiB,EACjBC,SAAyB,EACzBC,WAAqB,EACrBC,WAAoC,EACpCC,cAA8B,CAChC;QACE,IAAI,CAAC,SAAS,GAAGJ;QACjB,IAAI,CAAC,SAAS,GAAGC;QACjB,IAAI,CAAC,WAAW,GAAGC;QACnB,IAAI,CAAC,WAAW,GAAGC;QACnB,IAAI,CAAC,cAAc,GAAGC;QACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAACD,YAAY,MAAM;IACzE;IAKO,aAAaE,IAAoD,EAAgB;QACpF,MAAMC,SAAuB,CAAC;QAG9B,MAAMC,cAAc,CAACC,MAA2BC;YAC5C,IAAIC,UAAUJ;YACd,IAAK,IAAIK,IAAI,GAAGA,IAAIH,KAAK,MAAM,GAAG,GAAGG,IAAK;gBACtC,MAAMC,MAAMJ,IAAI,CAACG,EAAE;gBACnB,MAAME,UAAUL,IAAI,CAACG,IAAI,EAAE;gBAC3B,MAAMG,cAAc,AAAmB,YAAnB,OAAOD;gBAE3B,IAAI,AAAe,YAAf,OAAOD,KAAkB;oBACzB,IAAI,CAACG,MAAM,OAAO,CAACL,UACf,MAAM,IAAIM,MAAM;oBAEpB,MAAON,QAAQ,MAAM,IAAIE,IACrBF,QAAQ,IAAI,CAACI,cAAc,EAAE,GAAG,CAAC;oBAErC,IAAI,AAAwB,YAAxB,OAAOJ,OAAO,CAACE,IAAI,EACnBF,OAAO,CAACE,IAAI,GAAGE,cAAc,EAAE,GAAG,CAAC;oBAEvCJ,UAAUA,OAAO,CAACE,IAAI;gBAC1B,OAAO;oBACH,IAAI,CAAEA,CAAAA,OAAOF,OAAM,KAAM,AAAwB,YAAxB,OAAOA,OAAO,CAACE,IAAI,EACxCF,OAAO,CAACE,IAAI,GAAGE,cAAc,EAAE,GAAG,CAAC;oBAEvCJ,UAAUA,OAAO,CAACE,IAAI;gBAC1B;YACJ;YACAF,OAAO,CAACF,IAAI,CAACA,KAAK,MAAM,GAAG,EAAE,CAAC,GAAGC;QACrC;QAGA,MAAMQ,OAAO,CAACC,OAAuBC;YACjC,KAAK,MAAMC,QAAQF,MAAO;gBACtB,MAAMG,YAAY;uBAAIF;oBAAQC,KAAK,IAAI;iBAAC;gBACxC,MAAME,UAAUD,UAAU,IAAI,CAAC;gBAC/B,MAAME,QAAQlB,IAAI,CAACiB,QAAQ;gBAC3B,MAAME,cAAcD,OAAO;gBAE3B,IAAIH,KAAK,QAAQ,CAAC,MAAM,GAAG,GACvB,IAAIA,KAAK,IAAI,EAAE;oBACX,MAAMK,UAAU,IAAIC,OAAO,CAAC,CAAC,EAAEJ,QAAQ,YAAY,CAAC;oBACpD,MAAMK,UAAUC,OAAO,IAAI,CAACvB,MAAM,MAAM,CAAC,CAACwB,KAAejB;wBACrD,MAAMkB,QAAQlB,IAAI,KAAK,CAACa;wBACxB,IAAIK,OACAD,IAAI,IAAI,CAACE,SAASD,KAAK,CAAC,EAAE,EAAE;wBAEhC,OAAOD;oBACX,GAAG,EAAE;oBAEL,MAAMG,gBAAgBjB,MAAM,IAAI,CAAC,IAAIkB,IAAIN,UAAU,IAAI,CAAC,CAACO,GAAGC,IAAMD,IAAIC;oBAEtE,KAAK,MAAMxB,KAAKqB,cACZf,KAAKG,KAAK,QAAQ,EAAE;2BAAID;wBAAQ,GAAGC,KAAK,IAAI,CAAC,CAAC,EAAET,GAAG;qBAAC;gBAE5D,OACIM,KAAKG,KAAK,QAAQ,EAAEC;qBAErB,IAAIG,AAAgBY,WAAhBZ,aAA2B;oBAClC,MAAMhB,OAAOa,UAAU,MAAM,CAAsB,CAACQ,KAAKQ;wBACrD,MAAMP,QAAQO,KAAK,KAAK,CAAC;wBACzB,IAAIP,OACAD,IAAI,IAAI,CAACC,KAAK,CAAC,EAAE,EAAEQ,OAAOR,KAAK,CAAC,EAAE;6BAElCD,IAAI,IAAI,CAACQ;wBAEb,OAAOR;oBACX,GAAG,EAAE;oBACLtB,YAAYC,MAAMgB;gBACtB;YACJ;QACJ;QAEAP,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE;QACvB,OAAOX;IACX;IAMO,aAAaiC,MAAoB,EAAEC,UAAkB,EAAE;QAC1D,MAAMC,aAAmC,EAAE;QAC3C,MAAMC,iBAAiB,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC;QAEnD,MAAMC,UAAiC;YAAE,QAAQ,CAAC;YAAG,WAAW,CAAC;QAAE;QAGnE,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAC1B;YAAA,KAAK,MAAM,CAACC,IAAIC,UAAU,IAAIjB,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EACnE,IAAIiB,UAAU,MAAM,EAChBC,IACIH,SACA,CAAC,UAAU,EAAEC,GAAG,OAAO,CAAC,EACxBG,gBAAgB,IAAI,CAAC,WAAW,CAAC,SAAS,CAACH,GAAG,CAAC,MAAM;QAGjE;QAIJ,MAAMI,YAAY,IAAIf;QACtB,MAAMgB,gBAAgB,IAAIC,uBAAuB,IAAI,CAAC,WAAW,EAAEN,CAAAA;YAC/D,IAAI,IAAI,CAAC,gBAAgB,CAACA,KACtB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM;YAElC,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAACA,GAAG,EAAE;QAC7C;QAIA,MAAMO,WAAW,CAACC,KAAU5C;YACxB,MAAM6C,WAAW7C,KAAK,KAAK,CAAC;YAC5B,MAAM8C,OAAOD,SAAS,OAAO,CAACE,CAAAA,UACnBA,QAAQ,KAAK,CAAC,KAAK,GAAG,CAAClB,CAAAA,OACnB,QAAQ,IAAI,CAACA,QAAQN,SAASM,MAAM,MAAMA;YAGzD,OAAOiB,KAAK,MAAM,CAAC,CAACzB,KAAKjB,MAASiB,MAAMA,GAAG,CAACjB,IAAI,GAAGwB,QAAYgB;QACnE;QAIA,MAAMI,oBAAoB,CAACtC,OAAuBC;YAC9C,KAAK,MAAMC,QAAQF,MAAO;gBACtB,MAAMG,YAAY;uBAAIF;oBAAQC,KAAK,IAAI;iBAAC;gBACxC,MAAME,UAAUD,UAAU,IAAI,CAAC;gBAG/B2B,UAAU,GAAG,CAAC1B;gBAEd,IAAIF,KAAK,QAAQ,CAAC,MAAM,EACpB,IAAIA,KAAK,IAAI,EAAE;oBAEX,MAAMqC,OAAON,SAASZ,QAAQjB;oBAC9B,IAAIP,MAAM,OAAO,CAAC0C,OACd,IAAK,IAAI9C,IAAI,GAAGA,IAAI8C,KAAK,MAAM,EAAE9C,IAE7B6C,kBAAkBpC,KAAK,QAAQ,EAAE;2BAC1BC,UAAU,KAAK,CAAC,GAAG;wBACtB,GAAGD,KAAK,IAAI,CAAC,CAAC,EAAET,GAAG;qBACtB;gBAGb,OAEI6C,kBAAkBpC,KAAK,QAAQ,EAAEC;qBAElC;oBAIH,IAAIqC,WAAWP,SAASZ,QAAQjB;oBAGhC,MAAMqC,gBAAgBjB,cAAc,CAACpB,QAAQ;oBAG7C,IAAIoC,AAAatB,WAAbsB,YAA0B,CAACC,eAC3B;oBAIJ,IAAIvC,KAAK,IAAI,IAAIL,MAAM,OAAO,CAAC2C,WAC3BA,WAAWA,SAAS,GAAG,CAACE,CAAAA;wBACpB,IACI,AAAgB,YAAhB,OAAOA,QACPA,AAAS,SAATA,QACAA,AAAgB,oBAAhBA,KAAK,MAAM,EACb;4BACE,MAAMC,aAAa,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC;gCAC9D,eAAeD,KAAK,MAAM,CAAC,SAAS;gCACpC,UAAU,IAAI,CAAC,SAAS;gCACxB,MAAMtC;gCACN,UAAUsC,KAAK,MAAM;4BACzB;4BAEAnB,WAAW,IAAI,IACRoB,WAAW,UAAU,CAAC,MAAM,CAC3BC,CAAAA,KAAM,CAAEA,CAAAA,cAAcC,mBAAmB,WAAU;4BAG3D,OAAOF,WAAW,OAAO,CAAC,EAAE;wBAChC;wBACA,OAAOD;oBACX;oBAGJ,IACI,AAAC7C,MAAM,OAAO,CAAC2C,aACf,AAAoB,YAApB,OAAOA,YACPA,UAAU,WAAW,iBAgElB;wBAEH,MAAMM,eACF5C,KAAK,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAACoB;wBAGrD,MAAMyB,aAAaN,eAAe;wBAClC,MAAMO,UAAUD,cAAcE;wBAG9B,MAAMC,UAAU;4BACZ,GAAIT,iBAAiB,CAAC,CAAC;4BACvB,QAAQD;4BACR,MAAMtC,KAAK,IAAI;4BACf,MAAMA,KAAK,IAAI;4BACf,IAAI8C;wBACR;wBAEA,IAAIF,cAAc;4BACd,MAAMK,iBAAiBpB,cAAc,iBAAiB,CAClD3B,SACAkB;4BAGJ,IAAI4B,AAAmBhC,WAAnBgC,QAAQ,MAAM,EAEd;gCAAA,IAAIzB,QAAQ,SAAS,CAACH,WAAW,EAAE,QAAQ,CAAClB,QAAQ,EAChD,OAAOqB,QAAQ,SAAS,CAACH,WAAW,CAAC,MAAM,CAAClB,QAAQ;4BACxD,OACG,IACH+C,AAAmBjC,WAAnBiC,kBACCC,WAAUD,gBAAgBD,QAAQ,MAAM,GAOzC;gCAAA,IAAIzB,QAAQ,SAAS,CAACH,WAAW,EAAE,QAAQ,CAAClB,QAAQ,EAChD,OAAOqB,QAAQ,SAAS,CAACH,WAAW,CAAC,MAAM,CAAClB,QAAQ;4BACxD,OARF;gCACE,IAAI,CAACqB,QAAQ,SAAS,CAACH,WAAW,EAC9BG,QAAQ,SAAS,CAACH,WAAW,GAAG;oCAAE,QAAQ,CAAC;gCAAE;gCAEjDG,QAAQ,SAAS,CAACH,WAAW,CAAC,MAAM,CAAClB,QAAQ,GAAG8C;4BACpD;4BAMA,IAAIT,eACAhB,QAAQ,MAAM,CAACrB,QAAQ,GAAGqC;wBAElC,OAEIhB,QAAQ,MAAM,CAACrB,QAAQ,GAAG8C;oBAElC,OAjHE;wBAEE,MAAMP,aAAa,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC;4BAC9D,eAAeH,SAAS,MAAM,CAAC,SAAS;4BACxC,UAAU,IAAI,CAAC,SAAS;4BACxB,MAAMpC;4BACN,OAAO;4BACP,UAAUoC,SAAS,MAAM;wBAC7B;wBAEA,MAAMa,YAAYV,WAAW,OAAO,CAAC,EAAE;wBAGvC,MAAMI,aAAaN,eAAe;wBAClC,MAAMO,UAAUD,cAAcE;wBAG9B,MAAMC,UAAU;4BACZ,QAAQG;4BACR,MAAMnD,KAAK,IAAI;4BACf,MAAMA,KAAK,IAAI;4BACf,IAAI8C;wBACR;wBAEA,IAAI9C,KAAK,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAACoB,aAAa;4BAC9D,MAAM6B,iBAAiBpB,cAAc,iBAAiB,CAClD3B,SACAkB;4BAGJ,IAAI4B,AAAmBhC,WAAnBgC,QAAQ,MAAM,EAEd;gCAAA,IAAIzB,QAAQ,SAAS,CAACH,WAAW,EAAE,QAAQ,CAAClB,QAAQ,EAChD,OAAOqB,QAAQ,SAAS,CAACH,WAAW,CAAC,MAAM,CAAClB,QAAQ;4BACxD,OACG,IACH+C,AAAmBjC,WAAnBiC,kBACCC,WAAUD,gBAAgBD,QAAQ,MAAM,GAOzC;gCAAA,IAAIzB,QAAQ,SAAS,CAACH,WAAW,EAAE,QAAQ,CAAClB,QAAQ,EAChD,OAAOqB,QAAQ,SAAS,CAACH,WAAW,CAAC,MAAM,CAAClB,QAAQ;4BACxD,OARF;gCACE,IAAI,CAACqB,QAAQ,SAAS,CAACH,WAAW,EAC9BG,QAAQ,SAAS,CAACH,WAAW,GAAG;oCAAE,QAAQ,CAAC;gCAAE;gCAEjDG,QAAQ,SAAS,CAACH,WAAW,CAAC,MAAM,CAAClB,QAAQ,GAAG8C;4BACpD;4BAMA,IAAIT,eACAhB,QAAQ,MAAM,CAACrB,QAAQ,GAAGqC;wBAElC,OAEIhB,QAAQ,MAAM,CAACrB,QAAQ,GAAG8C;wBAI9B3B,WAAW,IAAI,IACRoB,WAAW,UAAU,CAAC,MAAM,CAC3BC,CAAAA,KAAM,CAAEA,CAAAA,cAAcC,mBAAmB,WAAU;oBAG/D;gBAmDJ;YACJ;QACJ;QAGAP,kBAAkB,IAAI,CAAC,SAAS,EAAE,EAAE;QAIpC,MAAMgB,cAAc,IAAI,CAAC,oBAAoB,CAAC7B,QAAQ,MAAM;QAC5D,KAAK,MAAM8B,MAAM,IAAI,CAAC,iBAAiB,CACnC,IAAI,CAACD,YAAY,GAAG,CAACC,KACjBhC,WAAW,IAAI,CAAC,IAAIsB,mBAAmB,aAAa,CAACU;QAI7D,OAAO,IAAIC,cAAc,IAAI,CAAC,SAAS,EAAE/B,SAASF;IACtD;IAGQ,qBAAqBF,SAA4C,CAAC,CAAC,EAAE;QACzE,MAAMoC,aAAa,IAAI1C;QAEvB,KAAK,MAAM,GAAGmC,QAAQ,IAAIxC,OAAO,OAAO,CAACW,QACrC,IAAI6B,AAAiB,WAAjBA,QAAQ,IAAI,EACZ;YAAA,IAAIrD,MAAM,OAAO,CAACqD,QAAQ,MAAM,GAC1BA,AAAAA,CAAAA,QAAQ,MAAM,IAAI,EAAC,EAAgB,OAAO,CAACK,CAAAA,KAAME,WAAW,GAAG,CAACF;iBAC/D,IAAI,AAA0B,YAA1B,OAAOL,QAAQ,MAAM,EAC5BO,WAAW,GAAG,CAACP,QAAQ,MAAM;QACjC;QAIR,OAAOO;IACX;IAEQ,iBAAiBC,IAAY,EAAW;QAC5C,OAAO,AAAmC,MAAnC,IAAI,CAAC,WAAW,CAAC,OAAO,CAACA;IACpC;AACJ"}
|