@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":["describe","it","expect","InputsBindingsProcessor","ElementFactory","simpleAst","name","type","list","path","children","input","label","fields","withSlotAst","breakpoints","baseBindings","inputs","title","id","static","styles","overrides","tablet","mobile","getInputsBindingsProcessor","bindings","ast","elementFactory","tags","acceptsChildren","renderer","defaultValue","processor","deep","toDeepInputs","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 { describe, it, expect } from \"vitest\";\nimport { 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 tags: [],\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,"file":"InputsBindingsProcessor.test.js","sources":["../src/InputsBindingsProcessor.test.ts"],"sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { 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 tags: [],\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"],"names":["describe","simpleAst","withSlotAst","breakpoints","baseBindings","overrides","getInputsBindingsProcessor","bindings","ast","elementFactory","ElementFactory","processor","InputsBindingsProcessor","it","deep","expect","newInputs","updater","rebuilt","elementBindings","rawBindings","patch","deepInputs","String"],"mappings":"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"}
|
package/InputsUpdater.js
CHANGED
|
@@ -1,34 +1,31 @@
|
|
|
1
1
|
import { jsonPatch } from "./jsonPatch.js";
|
|
2
2
|
import set from "lodash/set.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (overrides.inputs) {
|
|
14
|
-
set(document.bindings, `${this.elementId}.overrides.${bp}.inputs`, structuredClone(this.bindings.overrides[bp].inputs));
|
|
3
|
+
class InputsUpdater {
|
|
4
|
+
constructor(elementId, bindings, operations){
|
|
5
|
+
this.elementId = elementId;
|
|
6
|
+
this.operations = operations;
|
|
7
|
+
this.bindings = bindings;
|
|
8
|
+
}
|
|
9
|
+
applyToDocument(document) {
|
|
10
|
+
document.bindings[this.elementId].inputs = structuredClone(this.bindings.inputs);
|
|
11
|
+
if (this.bindings.overrides) {
|
|
12
|
+
for (const [bp, overrides] of Object.entries(this.bindings.overrides))if (overrides.inputs) set(document.bindings, `${this.elementId}.overrides.${bp}.inputs`, structuredClone(this.bindings.overrides[bp].inputs));
|
|
15
13
|
}
|
|
16
|
-
|
|
14
|
+
this.operations.forEach((operation)=>operation.apply(document));
|
|
17
15
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
createJsonPatch(bindings) {
|
|
17
|
+
const toCompare = {
|
|
18
|
+
...this.bindings
|
|
19
|
+
};
|
|
20
|
+
if (0 === Object.keys(toCompare.overrides ?? {}).length) delete toCompare.overrides;
|
|
21
|
+
const ignore = [
|
|
22
|
+
"/styles",
|
|
23
|
+
"/overrides/styles",
|
|
24
|
+
"/metadata"
|
|
25
|
+
];
|
|
26
|
+
return jsonPatch.compare(bindings, toCompare).filter((op)=>!ignore.some((prefix)=>op.path.startsWith(prefix)));
|
|
26
27
|
}
|
|
27
|
-
const ignore = ["/styles", "/overrides/styles", "/metadata"];
|
|
28
|
-
return jsonPatch.compare(bindings, toCompare).filter(op => {
|
|
29
|
-
return !ignore.some(prefix => op.path.startsWith(prefix));
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
28
|
}
|
|
29
|
+
export { InputsUpdater };
|
|
33
30
|
|
|
34
31
|
//# sourceMappingURL=InputsUpdater.js.map
|
package/InputsUpdater.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"InputsUpdater.js","sources":["../src/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"],"names":["InputsUpdater","elementId","bindings","operations","document","structuredClone","bp","overrides","Object","set","operation","toCompare","ignore","jsonPatch","op","prefix"],"mappings":";;AAOO,MAAMA;IAKT,YACIC,SAAiB,EACjBC,QAA+B,EAC/BC,UAAgC,CAClC;QACE,IAAI,CAAC,SAAS,GAAGF;QACjB,IAAI,CAAC,UAAU,GAAGE;QAClB,IAAI,CAAC,QAAQ,GAAGD;IACpB;IAEA,gBAAgBE,QAAkB,EAAE;QAChCA,SAAS,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAGC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,MAAM;QAE/E,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EACvB;YAAA,KAAK,MAAM,CAACC,IAAIC,UAAU,IAAIC,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAChE,IAAID,UAAU,MAAM,EAChBE,IACIL,SAAS,QAAQ,EACjB,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAEE,GAAG,OAAO,CAAC,EAC1CD,gBAAgB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAACC,GAAG,CAAC,MAAM;QAG9D;QAGJ,IAAI,CAAC,UAAU,CAAC,OAAO,CAACI,CAAAA,YAAaA,UAAU,KAAK,CAACN;IACzD;IAEA,gBAAgBF,QAAiC,EAAE;QAC/C,MAAMS,YAA8C;YAAE,GAAG,IAAI,CAAC,QAAQ;QAAC;QACvE,IAAIH,AAAkD,MAAlDA,OAAO,IAAI,CAACG,UAAU,SAAS,IAAI,CAAC,GAAG,MAAM,EAC7C,OAAOA,UAAU,SAAS;QAG9B,MAAMC,SAAS;YAAC;YAAW;YAAqB;SAAY;QAE5D,OAAOC,UAAU,OAAO,CAACX,UAAUS,WAAW,MAAM,CAACG,CAAAA,KAC1C,CAACF,OAAO,IAAI,CAACG,CAAAA,SAAUD,GAAG,IAAI,CAAC,UAAU,CAACC;IAEzD;AACJ"}
|
package/LiveSdk.js
CHANGED
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { documentStoreManager } from "./DocumentStoreManager.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
class LiveSdk {
|
|
3
|
+
constructor(dataProvider){
|
|
4
|
+
this.dataProvider = dataProvider;
|
|
5
|
+
}
|
|
6
|
+
async getPage(path, options) {
|
|
7
|
+
const page = await this.dataProvider.getPageByPath(path, options);
|
|
8
|
+
if (page) documentStoreManager.getStore(page.properties.id).setDocument(page);
|
|
9
|
+
return page;
|
|
10
|
+
}
|
|
11
|
+
listPages(options) {
|
|
12
|
+
return this.dataProvider.listPages(options);
|
|
10
13
|
}
|
|
11
|
-
return page;
|
|
12
|
-
}
|
|
13
|
-
listPages(options) {
|
|
14
|
-
return this.dataProvider.listPages(options);
|
|
15
|
-
}
|
|
16
14
|
}
|
|
15
|
+
export { LiveSdk };
|
|
17
16
|
|
|
18
17
|
//# sourceMappingURL=LiveSdk.js.map
|
package/LiveSdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"LiveSdk.js","sources":["../src/LiveSdk.ts"],"sourcesContent":["import type {\n GetPageOptions,\n IContentSdk,\n IDataProvider,\n ListPagesOptions,\n ListPagesResult,\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<ListPagesResult> {\n return this.dataProvider.listPages(options);\n }\n}\n"],"names":["LiveSdk","dataProvider","path","options","page","documentStoreManager"],"mappings":";AAUO,MAAMA;IAGT,YAAYC,YAA2B,CAAE;QACrC,IAAI,CAAC,YAAY,GAAGA;IACxB;IAEA,MAAM,QAAQC,IAAY,EAAEC,OAAwB,EAA8B;QAC9E,MAAMC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAACF,MAAMC;QACzD,IAAIC,MACAC,qBAAqB,QAAQ,CAAaD,KAAK,UAAU,CAAC,EAAE,EAAE,WAAW,CAACA;QAE9E,OAAOA;IACX;IAEA,UAAUD,OAA0B,EAA4B;QAC5D,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAACA;IACvC;AACJ"}
|
package/Logger.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import pino from "pino";
|
|
2
|
-
const isProduction = process.env.NODE_ENV
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
const isProduction = "production" === process.env.NODE_ENV;
|
|
3
|
+
const logger = pino({
|
|
4
|
+
name: "Website Builder SDK",
|
|
5
|
+
level: isProduction ? "silent" : "debug",
|
|
6
|
+
...isProduction ? {} : {
|
|
7
|
+
transport: {
|
|
8
|
+
target: "pino-pretty"
|
|
9
|
+
}
|
|
9
10
|
}
|
|
10
|
-
})
|
|
11
11
|
});
|
|
12
|
+
export { logger };
|
|
12
13
|
|
|
13
14
|
//# sourceMappingURL=Logger.js.map
|
package/Logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Logger.js","sources":["../src/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"],"names":["isProduction","process","logger","pino"],"mappings":";AAEA,MAAMA,eAAeC,AAAyB,iBAAzBA,QAAQ,GAAG,CAAC,QAAQ;AAElC,MAAMC,SAASC,KAAK;IACvB,MAAM;IACN,OAAOH,eAAe,WAAW;IACjC,GAAIA,eAAe,CAAC,IAAI;QAAE,WAAW;YAAE,QAAQ;QAAc;IAAE,CAAC;AACpE"}
|
package/MouseTracker.js
CHANGED
|
@@ -1,93 +1,87 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
start() {
|
|
12
|
-
if (this.isTracking) {
|
|
13
|
-
return;
|
|
1
|
+
class MouseTracker {
|
|
2
|
+
constructor(window1){
|
|
3
|
+
this.latest = null;
|
|
4
|
+
this.lastSent = null;
|
|
5
|
+
this.callbacks = new Set();
|
|
6
|
+
this.frameId = null;
|
|
7
|
+
this.listener = null;
|
|
8
|
+
this.isTracking = false;
|
|
9
|
+
this.window = window1;
|
|
14
10
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
11
|
+
start() {
|
|
12
|
+
if (this.isTracking) return;
|
|
13
|
+
this.isTracking = true;
|
|
14
|
+
this.listener = (e)=>{
|
|
15
|
+
this.latest = {
|
|
16
|
+
x: e.clientX,
|
|
17
|
+
y: e.clientY
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
this.window.addEventListener("mousemove", this.listener);
|
|
21
|
+
const loop = ()=>{
|
|
22
|
+
if (this.latest) {
|
|
23
|
+
const { x, y } = this.latest;
|
|
24
|
+
if (!this.lastSent || x !== this.lastSent.x || y !== this.lastSent.y) {
|
|
25
|
+
this.lastSent = {
|
|
26
|
+
x,
|
|
27
|
+
y
|
|
28
|
+
};
|
|
29
|
+
this.callbacks.forEach((cb)=>cb({
|
|
30
|
+
x,
|
|
31
|
+
y
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
this.frameId = this.window.requestAnimationFrame(loop);
|
|
36
|
+
};
|
|
37
|
+
this.frameId = this.window.requestAnimationFrame(loop);
|
|
38
|
+
}
|
|
39
|
+
stop() {
|
|
40
|
+
if (!this.isTracking) return;
|
|
41
|
+
this.isTracking = false;
|
|
42
|
+
if (this.listener) {
|
|
43
|
+
this.window.removeEventListener("mousemove", this.listener);
|
|
44
|
+
this.listener = null;
|
|
45
|
+
}
|
|
46
|
+
if (null !== this.frameId) {
|
|
47
|
+
this.window.cancelAnimationFrame(this.frameId);
|
|
48
|
+
this.frameId = null;
|
|
38
49
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (!this.isTracking) {
|
|
46
|
-
return;
|
|
50
|
+
this.latest = null;
|
|
51
|
+
this.lastSent = null;
|
|
52
|
+
}
|
|
53
|
+
subscribe(cb) {
|
|
54
|
+
this.callbacks.add(cb);
|
|
55
|
+
return ()=>this.callbacks.delete(cb);
|
|
47
56
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
this.window.removeEventListener("mousemove", this.listener);
|
|
51
|
-
this.listener = null;
|
|
57
|
+
get x() {
|
|
58
|
+
return this.latest?.x ?? 0;
|
|
52
59
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
60
|
+
get y() {
|
|
61
|
+
return this.latest?.y ?? 0;
|
|
62
|
+
}
|
|
63
|
+
setPosition(x, y) {
|
|
64
|
+
this.latest = {
|
|
65
|
+
x,
|
|
66
|
+
y
|
|
67
|
+
};
|
|
56
68
|
}
|
|
57
|
-
this.latest = null;
|
|
58
|
-
this.lastSent = null;
|
|
59
|
-
}
|
|
60
|
-
subscribe(cb) {
|
|
61
|
-
this.callbacks.add(cb);
|
|
62
|
-
return () => this.callbacks.delete(cb);
|
|
63
|
-
}
|
|
64
|
-
get x() {
|
|
65
|
-
return this.latest?.x ?? 0;
|
|
66
|
-
}
|
|
67
|
-
get y() {
|
|
68
|
-
return this.latest?.y ?? 0;
|
|
69
|
-
}
|
|
70
|
-
setPosition(x, y) {
|
|
71
|
-
this.latest = {
|
|
72
|
-
x,
|
|
73
|
-
y
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
69
|
}
|
|
77
70
|
class NullMouseTracker {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
71
|
+
get x() {
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
get y() {
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
77
|
+
setPosition() {}
|
|
78
|
+
start() {}
|
|
79
|
+
stop() {}
|
|
80
|
+
subscribe() {
|
|
81
|
+
return function() {};
|
|
82
|
+
}
|
|
90
83
|
}
|
|
91
|
-
|
|
84
|
+
const mouseTracker = "u" > typeof window ? new MouseTracker(window) : new NullMouseTracker();
|
|
85
|
+
export { MouseTracker, mouseTracker };
|
|
92
86
|
|
|
93
87
|
//# sourceMappingURL=MouseTracker.js.map
|
package/MouseTracker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"MouseTracker.js","sources":["../src/MouseTracker.ts"],"sourcesContent":["type MousePosition = { x: number; y: number };\ntype MousePositionCallback = (pos: MousePosition) => void;\n\ninterface IMouseTracker {\n get x(): number;\n get y(): number;\n start(): void;\n stop(): void;\n subscribe(cb: MousePositionCallback): () => void;\n setPosition(x: number, y: number): void;\n}\n\nexport class MouseTracker implements IMouseTracker {\n private latest: MousePosition | null = null;\n private lastSent: MousePosition | null = null;\n private callbacks = new Set<MousePositionCallback>();\n private frameId: number | null = null;\n private listener: ((e: MouseEvent) => void) | null = null;\n private isTracking = false;\n private readonly window: Window;\n\n constructor(window: Window) {\n this.window = window;\n }\n\n start() {\n if (this.isTracking) {\n return;\n }\n\n this.isTracking = true;\n\n this.listener = (e: MouseEvent) => {\n this.latest = { x: e.clientX, y: e.clientY };\n };\n\n this.window.addEventListener(\"mousemove\", this.listener);\n\n const loop = () => {\n if (this.latest) {\n const { x, y } = this.latest;\n if (!this.lastSent || x !== this.lastSent.x || y !== this.lastSent.y) {\n this.lastSent = { x, y };\n this.callbacks.forEach(cb => cb({ x, y }));\n }\n }\n this.frameId = this.window.requestAnimationFrame(loop);\n };\n\n this.frameId = this.window.requestAnimationFrame(loop);\n }\n\n stop() {\n if (!this.isTracking) {\n return;\n }\n\n this.isTracking = false;\n\n if (this.listener) {\n this.window.removeEventListener(\"mousemove\", this.listener);\n this.listener = null;\n }\n\n if (this.frameId !== null) {\n this.window.cancelAnimationFrame(this.frameId);\n this.frameId = null;\n }\n\n this.latest = null;\n this.lastSent = null;\n }\n\n subscribe(cb: MousePositionCallback): () => void {\n this.callbacks.add(cb);\n return () => this.callbacks.delete(cb);\n }\n\n get x(): number {\n return this.latest?.x ?? 0;\n }\n\n get y(): number {\n return this.latest?.y ?? 0;\n }\n\n setPosition(x: number, y: number) {\n this.latest = { x, y };\n }\n}\n\nclass NullMouseTracker implements IMouseTracker {\n get x(): number {\n return 0;\n }\n\n get y(): number {\n return 0;\n }\n\n setPosition(): void {}\n\n start(): void {}\n\n stop(): void {}\n\n subscribe(): () => void {\n return function () {};\n }\n}\n\nexport const mouseTracker =\n typeof window !== \"undefined\" ? new MouseTracker(window) : new NullMouseTracker();\n"],"names":["MouseTracker","window1","Set","e","loop","x","y","cb","NullMouseTracker","mouseTracker","window"],"mappings":"AAYO,MAAMA;IAST,YAAYC,OAAc,CAAE;aARpB,MAAM,GAAyB;aAC/B,QAAQ,GAAyB;aACjC,SAAS,GAAG,IAAIC;aAChB,OAAO,GAAkB;aACzB,QAAQ,GAAqC;aAC7C,UAAU,GAAG;QAIjB,IAAI,CAAC,MAAM,GAAGD;IAClB;IAEA,QAAQ;QACJ,IAAI,IAAI,CAAC,UAAU,EACf;QAGJ,IAAI,CAAC,UAAU,GAAG;QAElB,IAAI,CAAC,QAAQ,GAAG,CAACE;YACb,IAAI,CAAC,MAAM,GAAG;gBAAE,GAAGA,EAAE,OAAO;gBAAE,GAAGA,EAAE,OAAO;YAAC;QAC/C;QAEA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,IAAI,CAAC,QAAQ;QAEvD,MAAMC,OAAO;YACT,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,MAAM,EAAEC,CAAC,EAAEC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM;gBAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAID,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAIC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;oBAClE,IAAI,CAAC,QAAQ,GAAG;wBAAED;wBAAGC;oBAAE;oBACvB,IAAI,CAAC,SAAS,CAAC,OAAO,CAACC,CAAAA,KAAMA,GAAG;4BAAEF;4BAAGC;wBAAE;gBAC3C;YACJ;YACA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAACF;QACrD;QAEA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAACA;IACrD;IAEA,OAAO;QACH,IAAI,CAAC,IAAI,CAAC,UAAU,EAChB;QAGJ,IAAI,CAAC,UAAU,GAAG;QAElB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,IAAI,CAAC,QAAQ;YAC1D,IAAI,CAAC,QAAQ,GAAG;QACpB;QAEA,IAAI,AAAiB,SAAjB,IAAI,CAAC,OAAO,EAAW;YACvB,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO;YAC7C,IAAI,CAAC,OAAO,GAAG;QACnB;QAEA,IAAI,CAAC,MAAM,GAAG;QACd,IAAI,CAAC,QAAQ,GAAG;IACpB;IAEA,UAAUG,EAAyB,EAAc;QAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAACA;QACnB,OAAO,IAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAACA;IACvC;IAEA,IAAI,IAAY;QACZ,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK;IAC7B;IAEA,IAAI,IAAY;QACZ,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK;IAC7B;IAEA,YAAYF,CAAS,EAAEC,CAAS,EAAE;QAC9B,IAAI,CAAC,MAAM,GAAG;YAAED;YAAGC;QAAE;IACzB;AACJ;AAEA,MAAME;IACF,IAAI,IAAY;QACZ,OAAO;IACX;IAEA,IAAI,IAAY;QACZ,OAAO;IACX;IAEA,cAAoB,CAAC;IAErB,QAAc,CAAC;IAEf,OAAa,CAAC;IAEd,YAAwB;QACpB,OAAO,YAAa;IACxB;AACJ;AAEO,MAAMC,eACT,AAAkB,MAAlB,OAAOC,SAAyB,IAAIV,aAAaU,UAAU,IAAIF"}
|
package/NullSdk.js
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
class NullSdk {
|
|
2
|
+
async getPage() {
|
|
3
|
+
return null;
|
|
4
|
+
}
|
|
5
|
+
listPages() {
|
|
6
|
+
return Promise.resolve({
|
|
7
|
+
data: [],
|
|
8
|
+
meta: {
|
|
9
|
+
hasMoreItems: false,
|
|
10
|
+
totalCount: 0,
|
|
11
|
+
cursor: null
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
listRedirects() {
|
|
16
|
+
return Promise.resolve([]);
|
|
17
|
+
}
|
|
18
|
+
registerComponent() {}
|
|
19
|
+
resolveElement() {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
22
|
}
|
|
23
|
+
export { NullSdk };
|
|
23
24
|
|
|
24
25
|
//# sourceMappingURL=NullSdk.js.map
|
package/NullSdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"NullSdk.js","sources":["../src/NullSdk.ts"],"sourcesContent":["import type { IContentSdk, ListPagesResult, PublicRedirect, ResolvedComponent } from \"./types.js\";\nimport type { PublicPage } from \"./types.js\";\n\nexport class NullSdk implements IContentSdk {\n async getPage(): Promise<PublicPage | null> {\n return null;\n }\n\n listPages(): Promise<ListPagesResult> {\n return Promise.resolve({\n data: [],\n meta: { hasMoreItems: false, totalCount: 0, cursor: null }\n });\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"],"names":["NullSdk","Promise"],"mappings":"AAGO,MAAMA;IACT,MAAM,UAAsC;QACxC,OAAO;IACX;IAEA,YAAsC;QAClC,OAAOC,QAAQ,OAAO,CAAC;YACnB,MAAM,EAAE;YACR,MAAM;gBAAE,cAAc;gBAAO,YAAY;gBAAG,QAAQ;YAAK;QAC7D;IACJ;IAEA,gBAA2C;QACvC,OAAOA,QAAQ,OAAO,CAAC,EAAE;IAC7B;IAEA,oBAA0B,CAAC;IAE3B,iBAA6C;QACzC,OAAO;IACX;AACJ"}
|
package/PreviewDocument.js
CHANGED
|
@@ -1,35 +1,32 @@
|
|
|
1
1
|
import { getHeadersProvider } from "./headersProvider.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
2
|
+
class PreviewDocument {
|
|
3
|
+
constructor(prefix, query){
|
|
4
|
+
this.props = {};
|
|
5
|
+
query.forEach((value, key)=>{
|
|
6
|
+
if (key.startsWith(prefix + ".")) {
|
|
7
|
+
const strippedKey = key.slice(prefix.length + 1);
|
|
8
|
+
this.props[strippedKey] = value;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
static createFromWindow() {
|
|
13
|
+
const query = new URLSearchParams(window.location.search);
|
|
14
|
+
return new PreviewDocument("wb", query);
|
|
15
|
+
}
|
|
16
|
+
static async createFromHeaders() {
|
|
17
|
+
const headersProvider = getHeadersProvider();
|
|
18
|
+
const headers = await headersProvider();
|
|
19
|
+
const previewFromHeaders = headers.get("X-Preview-Params");
|
|
20
|
+
return new PreviewDocument("wb", new URLSearchParams(previewFromHeaders ?? ""));
|
|
21
|
+
}
|
|
22
|
+
matches(params) {
|
|
23
|
+
for (const [key, value] of Object.entries(params))if (this.props[key] !== value) return false;
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
getId() {
|
|
27
|
+
return this.props.id;
|
|
27
28
|
}
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
getId() {
|
|
31
|
-
return this.props.id;
|
|
32
|
-
}
|
|
33
29
|
}
|
|
30
|
+
export { PreviewDocument };
|
|
34
31
|
|
|
35
32
|
//# sourceMappingURL=PreviewDocument.js.map
|
package/PreviewDocument.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"PreviewDocument.js","sources":["../src/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"],"names":["PreviewDocument","prefix","query","value","key","strippedKey","URLSearchParams","window","headersProvider","getHeadersProvider","headers","previewFromHeaders","params","Object"],"mappings":";AAEO,MAAMA;IAGT,YAAoBC,MAAc,EAAEC,KAAsB,CAAE;QACxD,IAAI,CAAC,KAAK,GAAG,CAAC;QACdA,MAAM,OAAO,CAAC,CAACC,OAAOC;YAClB,IAAIA,IAAI,UAAU,CAACH,SAAS,MAAM;gBAC9B,MAAMI,cAAcD,IAAI,KAAK,CAACH,OAAO,MAAM,GAAG;gBAC9C,IAAI,CAAC,KAAK,CAACI,YAAY,GAAGF;YAC9B;QACJ;IACJ;IAEA,OAAO,mBAAoC;QACvC,MAAMD,QAAQ,IAAII,gBAAgBC,OAAO,QAAQ,CAAC,MAAM;QACxD,OAAO,IAAIP,gBAAgB,MAAME;IACrC;IAEA,aAAa,oBAA8C;QACvD,MAAMM,kBAAkBC;QACxB,MAAMC,UAAU,MAAMF;QACtB,MAAMG,qBAAqBD,QAAQ,GAAG,CAAC;QAEvC,OAAO,IAAIV,gBAAgB,MAAM,IAAIM,gBAAgBK,sBAAsB;IAC/E;IAEA,QAAQC,MAA8B,EAAE;QACpC,KAAK,MAAM,CAACR,KAAKD,MAAM,IAAIU,OAAO,OAAO,CAACD,QACtC,IAAI,IAAI,CAAC,KAAK,CAACR,IAAI,KAAKD,OACpB,OAAO;QAGf,OAAO;IACX;IAEA,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;IACxB;AACJ"}
|