@webiny/website-builder-sdk 0.0.0-unstable.eb196ccd2f β 0.0.0-unstable.f6dc066313
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/BindingsProcessor.test.js +1 -0
- package/BindingsProcessor.test.js.map +1 -1
- package/BindingsResolver.d.ts +1 -1
- package/BindingsResolver.js +2 -2
- package/BindingsResolver.js.map +1 -1
- package/BindingsResolver.test.js +1 -0
- package/BindingsResolver.test.js.map +1 -1
- package/ContentSdk.d.ts +3 -3
- package/ContentSdk.js +4 -4
- package/ContentSdk.js.map +1 -1
- package/DocumentStore.d.ts +1 -1
- package/EditingSdk.d.ts +2 -2
- package/EditingSdk.js +4 -7
- package/EditingSdk.js.map +1 -1
- package/ElementFactory.js.map +1 -1
- package/HotkeyManager.js +1 -1
- package/HotkeyManager.js.map +1 -1
- package/InheritanceProcessor.d.ts +2 -2
- package/InheritanceProcessor.test.js +1 -0
- package/InheritanceProcessor.test.js.map +1 -1
- package/InputsBindingsProcessor.test.js +1 -0
- package/InputsBindingsProcessor.test.js.map +1 -1
- package/InputsUpdater.d.ts +1 -1
- package/LiveSdk.d.ts +2 -2
- package/LiveSdk.js.map +1 -1
- package/Logger.d.ts +2 -1
- package/NullSdk.d.ts +2 -2
- package/NullSdk.js +8 -1
- package/NullSdk.js.map +1 -1
- package/PreviewSdk.d.ts +2 -2
- package/PreviewSdk.js +2 -2
- package/PreviewSdk.js.map +1 -1
- package/PreviewViewport.d.ts +0 -1
- package/PreviewViewport.js +0 -20
- package/PreviewViewport.js.map +1 -1
- package/README.md +10 -2
- package/StylesUpdater.d.ts +1 -1
- package/Theme.js +3 -10
- package/Theme.js.map +1 -1
- package/ViewportManager.d.ts +2 -0
- package/ViewportManager.js +4 -0
- package/ViewportManager.js.map +1 -1
- package/createInput.d.ts +123 -15
- package/createInput.js +32 -0
- package/createInput.js.map +1 -1
- package/dataProviders/DefaultDataProvider.d.ts +3 -3
- package/dataProviders/DefaultDataProvider.js +16 -3
- package/dataProviders/DefaultDataProvider.js.map +1 -1
- package/dataProviders/GET_PAGE_BY_ID.d.ts +1 -1
- package/dataProviders/GET_PAGE_BY_ID.js +1 -0
- package/dataProviders/GET_PAGE_BY_ID.js.map +1 -1
- package/dataProviders/GET_PAGE_BY_PATH.d.ts +1 -1
- package/dataProviders/GET_PAGE_BY_PATH.js +1 -0
- package/dataProviders/GET_PAGE_BY_PATH.js.map +1 -1
- package/dataProviders/LIST_PUBLISHED_PAGES.d.ts +1 -1
- package/dataProviders/LIST_PUBLISHED_PAGES.js +15 -4
- package/dataProviders/LIST_PUBLISHED_PAGES.js.map +1 -1
- package/dataProviders/NullDataProvider.d.ts +8 -1
- package/dataProviders/NullDataProvider.js +8 -1
- package/dataProviders/NullDataProvider.js.map +1 -1
- package/documentOperations/SetGlobalStyleBinding.js.map +1 -1
- package/documentOperations/SetInputBindingOverride.js.map +1 -1
- package/documentOperations/SetStyleBindingOverride.js.map +1 -1
- package/generateElementId.d.ts +1 -1
- package/generateElementId.js +0 -1
- package/generateElementId.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.js +0 -1
- package/index.js.map +1 -1
- package/jsonPatch.d.ts +1 -1
- package/messenger/Messenger.js +9 -7
- package/messenger/Messenger.js.map +1 -1
- package/package.json +14 -19
- package/types/WebsiteBuilderTheme.d.ts +42 -45
- package/types/WebsiteBuilderTheme.js.map +1 -1
- package/types.d.ts +49 -7
- package/types.js.map +1 -1
- package/lexical/createDefaultLexicalTheme.d.ts +0 -2
- package/lexical/createDefaultLexicalTheme.js +0 -84
- package/lexical/createDefaultLexicalTheme.js.map +0 -1
- package/lexical/createLexicalTheme.d.ts +0 -2
- package/lexical/createLexicalTheme.js +0 -7
- package/lexical/createLexicalTheme.js.map +0 -1
- package/lexical/deepMerge.d.ts +0 -1
- package/lexical/deepMerge.js +0 -23
- package/lexical/deepMerge.js.map +0 -1
- package/types/LexicalEditorTheme.d.ts +0 -2
- package/types/LexicalEditorTheme.js +0 -3
- package/types/LexicalEditorTheme.js.map +0 -1
|
@@ -17,11 +17,11 @@ export declare class InheritanceProcessor {
|
|
|
17
17
|
getInheritanceMap(bindings: DocumentElementBindings, breakpoint: string): {
|
|
18
18
|
inputs: Record<string, {
|
|
19
19
|
overridden: boolean;
|
|
20
|
-
inheritedFrom?: string
|
|
20
|
+
inheritedFrom?: string;
|
|
21
21
|
}>;
|
|
22
22
|
styles: Record<string, {
|
|
23
23
|
overridden: boolean;
|
|
24
|
-
inheritedFrom?: string
|
|
24
|
+
inheritedFrom?: string;
|
|
25
25
|
}>;
|
|
26
26
|
};
|
|
27
27
|
private normalizeBindingKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["InheritanceProcessor","inputsAst","name","type","list","path","children","input","responsive","describe","breakpoints","processor","it","bindings","inputs","rowGap","static","title","styles","paddingTop","color","overrides","tablet","mobile","desktopResult","getInheritanceMap","expect","toEqual","overridden","inheritedFrom","undefined","toBeUndefined","tabletResult","mobileResult","result","backgroundColor","marginTop"],"sources":["InheritanceProcessor.test.ts"],"sourcesContent":["import { InheritanceProcessor } from \"./InheritanceProcessor.js\";\nimport type { InputAstNode } from \"~/ComponentManifestToAstConverter.js\";\n\n// Mock AST for inputs\nconst inputsAst: InputAstNode[] = [\n {\n name: \"rowGap\",\n type: \"text\",\n list: false,\n path: \"rowGap\",\n children: [],\n input: { type: \"text\", responsive: true, name: \"rowGap\" }\n },\n {\n name: \"title\",\n type: \"text\",\n list: false,\n path: \"title\",\n children: [],\n input: { type: \"text\", responsive: false, name: \"title\" }\n }\n];\n\ndescribe(\"InheritanceProcessor\", () => {\n const breakpoints = [\"desktop\", \"tablet\", \"mobile\"];\n const processor = new InheritanceProcessor(breakpoints, inputsAst);\n\n it(\"should correctly compute inheritance info for responsive inputs and styles\", () => {\n const bindings = {\n inputs: {\n rowGap: { static: \"20px\" },\n title: { static: \"Default Title\" }\n },\n styles: {\n paddingTop: { static: \"10px\" },\n color: { static: \"red\" }\n },\n overrides: {\n tablet: {\n styles: {\n paddingTop: { static: \"5px\" }\n }\n },\n mobile: {\n inputs: {\n rowGap: { static: \"10px\" }\n },\n styles: {\n paddingTop: { static: \"2px\" },\n color: { static: \"blue\" }\n }\n }\n }\n };\n\n // desktop breakpoint\n const desktopResult = processor.getInheritanceMap(bindings as any, \"desktop\");\n\n expect(desktopResult.inputs[\"rowGap\"]).toEqual({\n overridden: true,\n inheritedFrom: undefined\n });\n expect(desktopResult.inputs[\"title\"]).toBeUndefined(); // not responsive\n expect(desktopResult.styles[\"paddingTop\"]).toEqual({\n overridden: true,\n inheritedFrom: undefined\n });\n expect(desktopResult.styles[\"color\"]).toEqual({\n overridden: true,\n inheritedFrom: undefined\n });\n\n // tablet breakpoint\n const tabletResult = processor.getInheritanceMap(bindings as any, \"tablet\");\n\n expect(tabletResult.inputs[\"rowGap\"]).toEqual({\n overridden: false,\n inheritedFrom: \"desktop\"\n });\n expect(tabletResult.styles[\"paddingTop\"]).toEqual({\n overridden: true,\n inheritedFrom: \"desktop\"\n });\n expect(tabletResult.styles[\"color\"]).toEqual({\n overridden: false,\n inheritedFrom: \"desktop\"\n });\n\n // mobile breakpoint\n const mobileResult = processor.getInheritanceMap(bindings as any, \"mobile\");\n\n expect(mobileResult.inputs[\"rowGap\"]).toEqual({\n overridden: true,\n inheritedFrom: \"desktop\"\n });\n expect(mobileResult.styles[\"paddingTop\"]).toEqual({\n overridden: true,\n inheritedFrom: \"tablet\"\n });\n expect(mobileResult.styles[\"color\"]).toEqual({\n overridden: true,\n inheritedFrom: \"desktop\"\n });\n });\n\n it(\"should skip non-responsive inputs in inheritance info\", () => {\n const bindings = {\n inputs: {\n title: { static: \"Static Title\" }\n },\n styles: {},\n overrides: {}\n };\n\n const result = processor.getInheritanceMap(bindings as any, \"desktop\");\n expect(result.inputs[\"title\"]).toBeUndefined();\n });\n\n it(\"should handle missing overrides gracefully\", () => {\n const bindings = {\n inputs: {\n rowGap: { static: \"20px\" }\n },\n styles: {\n paddingTop: { static: \"10px\" }\n }\n // no overrides\n };\n\n const result = processor.getInheritanceMap(bindings as any, \"mobile\");\n expect(result.inputs[\"rowGap\"]).toEqual({ overridden: false, inheritedFrom: \"desktop\" });\n expect(result.styles[\"paddingTop\"]).toEqual({\n overridden: false,\n inheritedFrom: \"desktop\"\n });\n });\n\n it(\"should handle missing ancestor values gracefully\", () => {\n const bindings = {\n inputs: {},\n styles: {\n backgroundColor: {\n static: \"#ec8787\"\n }\n },\n overrides: {\n tablet: {\n styles: {}\n },\n mobile: {\n styles: {\n backgroundColor: {\n static: \"#50e3c2\"\n },\n marginTop: {\n static: \"122px\"\n }\n }\n }\n }\n };\n\n const result = processor.getInheritanceMap(bindings as any, \"mobile\");\n expect(result.styles[\"backgroundColor\"]).toEqual({\n overridden: true,\n inheritedFrom: \"desktop\"\n });\n\n expect(result.styles[\"marginTop\"]).toEqual({\n overridden: true,\n inheritedFrom: \"desktop\"\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["describe","it","expect","InheritanceProcessor","inputsAst","name","type","list","path","children","input","responsive","breakpoints","processor","bindings","inputs","rowGap","static","title","styles","paddingTop","color","overrides","tablet","mobile","desktopResult","getInheritanceMap","toEqual","overridden","inheritedFrom","undefined","toBeUndefined","tabletResult","mobileResult","result","backgroundColor","marginTop"],"sources":["InheritanceProcessor.test.ts"],"sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { InheritanceProcessor } from \"./InheritanceProcessor.js\";\nimport type { InputAstNode } from \"~/ComponentManifestToAstConverter.js\";\n\n// Mock AST for inputs\nconst inputsAst: InputAstNode[] = [\n {\n name: \"rowGap\",\n type: \"text\",\n list: false,\n path: \"rowGap\",\n children: [],\n input: { type: \"text\", responsive: true, name: \"rowGap\" }\n },\n {\n name: \"title\",\n type: \"text\",\n list: false,\n path: \"title\",\n children: [],\n input: { type: \"text\", responsive: false, name: \"title\" }\n }\n];\n\ndescribe(\"InheritanceProcessor\", () => {\n const breakpoints = [\"desktop\", \"tablet\", \"mobile\"];\n const processor = new InheritanceProcessor(breakpoints, inputsAst);\n\n it(\"should correctly compute inheritance info for responsive inputs and styles\", () => {\n const bindings = {\n inputs: {\n rowGap: { static: \"20px\" },\n title: { static: \"Default Title\" }\n },\n styles: {\n paddingTop: { static: \"10px\" },\n color: { static: \"red\" }\n },\n overrides: {\n tablet: {\n styles: {\n paddingTop: { static: \"5px\" }\n }\n },\n mobile: {\n inputs: {\n rowGap: { static: \"10px\" }\n },\n styles: {\n paddingTop: { static: \"2px\" },\n color: { static: \"blue\" }\n }\n }\n }\n };\n\n // desktop breakpoint\n const desktopResult = processor.getInheritanceMap(bindings as any, \"desktop\");\n\n expect(desktopResult.inputs[\"rowGap\"]).toEqual({\n overridden: true,\n inheritedFrom: undefined\n });\n expect(desktopResult.inputs[\"title\"]).toBeUndefined(); // not responsive\n expect(desktopResult.styles[\"paddingTop\"]).toEqual({\n overridden: true,\n inheritedFrom: undefined\n });\n expect(desktopResult.styles[\"color\"]).toEqual({\n overridden: true,\n inheritedFrom: undefined\n });\n\n // tablet breakpoint\n const tabletResult = processor.getInheritanceMap(bindings as any, \"tablet\");\n\n expect(tabletResult.inputs[\"rowGap\"]).toEqual({\n overridden: false,\n inheritedFrom: \"desktop\"\n });\n expect(tabletResult.styles[\"paddingTop\"]).toEqual({\n overridden: true,\n inheritedFrom: \"desktop\"\n });\n expect(tabletResult.styles[\"color\"]).toEqual({\n overridden: false,\n inheritedFrom: \"desktop\"\n });\n\n // mobile breakpoint\n const mobileResult = processor.getInheritanceMap(bindings as any, \"mobile\");\n\n expect(mobileResult.inputs[\"rowGap\"]).toEqual({\n overridden: true,\n inheritedFrom: \"desktop\"\n });\n expect(mobileResult.styles[\"paddingTop\"]).toEqual({\n overridden: true,\n inheritedFrom: \"tablet\"\n });\n expect(mobileResult.styles[\"color\"]).toEqual({\n overridden: true,\n inheritedFrom: \"desktop\"\n });\n });\n\n it(\"should skip non-responsive inputs in inheritance info\", () => {\n const bindings = {\n inputs: {\n title: { static: \"Static Title\" }\n },\n styles: {},\n overrides: {}\n };\n\n const result = processor.getInheritanceMap(bindings as any, \"desktop\");\n expect(result.inputs[\"title\"]).toBeUndefined();\n });\n\n it(\"should handle missing overrides gracefully\", () => {\n const bindings = {\n inputs: {\n rowGap: { static: \"20px\" }\n },\n styles: {\n paddingTop: { static: \"10px\" }\n }\n // no overrides\n };\n\n const result = processor.getInheritanceMap(bindings as any, \"mobile\");\n expect(result.inputs[\"rowGap\"]).toEqual({ overridden: false, inheritedFrom: \"desktop\" });\n expect(result.styles[\"paddingTop\"]).toEqual({\n overridden: false,\n inheritedFrom: \"desktop\"\n });\n });\n\n it(\"should handle missing ancestor values gracefully\", () => {\n const bindings = {\n inputs: {},\n styles: {\n backgroundColor: {\n static: \"#ec8787\"\n }\n },\n overrides: {\n tablet: {\n styles: {}\n },\n mobile: {\n styles: {\n backgroundColor: {\n static: \"#50e3c2\"\n },\n marginTop: {\n static: \"122px\"\n }\n }\n }\n }\n };\n\n const result = processor.getInheritanceMap(bindings as any, \"mobile\");\n expect(result.styles[\"backgroundColor\"]).toEqual({\n overridden: true,\n inheritedFrom: \"desktop\"\n });\n\n expect(result.styles[\"marginTop\"]).toEqual({\n overridden: true,\n inheritedFrom: \"desktop\"\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["InputsBindingsProcessor","ElementFactory","describe","simpleAst","name","type","list","path","children","input","label","fields","withSlotAst","breakpoints","baseBindings","inputs","title","id","static","styles","overrides","tablet","mobile","getInputsBindingsProcessor","bindings","ast","elementFactory","acceptsChildren","renderer","defaultValue","processor","it","deep","toDeepInputs","expect","toEqual","items","newInputs","updater","createUpdate","rebuilt","elementId","applyToDocument","elementBindings","toBe","toBeUndefined","rawBindings","patch","createJsonPatch","arrayContaining","objectContaining","op","value","deepInputs","push","action","params","component","elements","toMatchObject","any","String"],"sources":["InputsBindingsProcessor.test.ts"],"sourcesContent":["import { InputsBindingsProcessor } from \"./InputBindingsProcessor.js\";\nimport type { InputAstNode } from \"~/ComponentManifestToAstConverter.js\";\nimport type { DocumentElementBindings } from \"~/types.js\";\nimport { ElementFactory } from \"~/ElementFactory.js\";\n\ndescribe(\"InputsBindingsProcessor\", () => {\n // Example simple AST (you can expand as needed)\n const simpleAst: InputAstNode[] = [\n {\n name: \"title\",\n type: \"text\",\n list: false,\n path: \"title\",\n children: [],\n input: {\n type: \"text\",\n name: \"title\",\n label: \"Title\"\n }\n },\n {\n name: \"items\",\n type: \"object\",\n list: true,\n path: \"items\",\n children: [\n {\n name: \"label\",\n type: \"text\",\n list: false,\n path: \"items.label\",\n children: [],\n input: {\n type: \"text\",\n name: \"label\",\n label: \"Label\"\n }\n }\n ],\n input: {\n type: \"object\",\n name: \"items\",\n list: true,\n fields: [\n {\n type: \"text\",\n name: \"label\",\n label: \"Label\"\n }\n ]\n }\n }\n ];\n\n const withSlotAst: InputAstNode[] = [\n {\n path: \"children\",\n children: [],\n name: \"children\",\n type: \"slot\",\n list: false,\n input: {\n type: \"slot\",\n name: \"children\",\n label: \"Children\"\n }\n }\n ];\n\n const breakpoints = [\"desktop\", \"tablet\", \"mobile\"];\n\n const baseBindings: DocumentElementBindings = {\n inputs: {\n title: { id: \"title\", static: \"Base Title\", type: \"text\" },\n \"items/0/label\": {\n id: \"label0\",\n static: \"Base Label 1\",\n type: \"text\"\n },\n \"items/1/label\": {\n id: \"label1\",\n static: \"Base Label 2\",\n type: \"text\"\n }\n },\n styles: {}\n };\n\n const overrides: DocumentElementBindings[\"overrides\"] = {\n tablet: {\n inputs: {\n title: { id: \"title\", static: \"Tablet Title\", type: \"text\" },\n \"items/0/label\": {\n id: \"label0\",\n static: \"Tablet Label 1\",\n type: \"text\"\n }\n }\n },\n mobile: {\n inputs: {\n title: { id: \"title\", static: \"Mobile Title\", type: \"text\" }\n }\n }\n };\n\n const getInputsBindingsProcessor = (\n bindings: DocumentElementBindings = baseBindings,\n ast = simpleAst\n ) => {\n const elementFactory = new ElementFactory({\n \"Webiny/GridColumn\": {\n name: \"Webiny/GridColumn\",\n label: \"Column\",\n acceptsChildren: true,\n inputs: [\n {\n type: \"slot\",\n list: true,\n renderer: \"Webiny/Slot\",\n name: \"children\",\n defaultValue: []\n }\n ]\n }\n });\n const processor = new InputsBindingsProcessor(\n \"elementId\",\n ast,\n breakpoints,\n bindings,\n elementFactory\n );\n\n return { processor, bindings };\n };\n\n it(\"toDeep should convert flat bindings to nested object\", () => {\n const { processor } = getInputsBindingsProcessor();\n\n const deep = processor.toDeepInputs(baseBindings.inputs ?? {});\n expect(deep).toEqual({\n title: \"Base Title\",\n items: [{ label: \"Base Label 1\" }, { label: \"Base Label 2\" }]\n });\n });\n\n it(\"applyInputs should assign base breakpoint inputs correctly\", () => {\n const { processor } = getInputsBindingsProcessor();\n\n const newInputs = {\n title: \"New Base Title\",\n items: [{ label: \"New Label 1\" }, { label: \"New Label 2\" }]\n };\n\n const updater = processor.createUpdate(newInputs, \"mobile\");\n const rebuilt: any = { bindings: { elementId: { inputs: {}, styles: {} } } };\n updater.applyToDocument(rebuilt);\n\n const elementBindings = rebuilt.bindings.elementId;\n\n expect(elementBindings.inputs.title.static).toBe(\"New Base Title\");\n expect(elementBindings.inputs[\"items/0/label\"].static).toBe(\"New Label 1\");\n expect(elementBindings.inputs[\"items/1/label\"].static).toBe(\"New Label 2\");\n expect(elementBindings.overrides).toBeUndefined();\n });\n\n it(\"applyInputs should assign overrides correctly, skipping inherited values\", () => {\n const rawBindings: DocumentElementBindings = {\n inputs: baseBindings.inputs,\n overrides,\n styles: {}\n };\n const { processor } = getInputsBindingsProcessor(rawBindings);\n\n const newInputs = {\n title: \"Mobile Title\",\n items: [{ label: \"Base Label 1\" }, { label: \"Base Label 2\" }]\n };\n\n const updater = processor.createUpdate(newInputs, \"mobile\");\n const rebuilt: any = { bindings: { elementId: { inputs: {}, styles: {} } } };\n updater.applyToDocument(rebuilt);\n\n const elementBindings = rebuilt.bindings.elementId;\n\n expect(elementBindings.inputs.title.static).toBe(\"Mobile Title\");\n // Items are same as base, so should not be in overrides\n expect(elementBindings.overrides?.mobile.inputs?.[\"items/0/label\"]).toBeUndefined();\n });\n\n it(\"createPatch should create correct json patch for input changes\", () => {\n const rawBindings: DocumentElementBindings = {\n inputs: baseBindings.inputs,\n overrides,\n styles: {}\n };\n const { processor, bindings } = getInputsBindingsProcessor(rawBindings);\n\n const newInputs = {\n title: \"Changed Title\",\n items: [{ label: \"Changed Label 1\" }]\n };\n\n const updater = processor.createUpdate(newInputs, \"mobile\");\n const patch = updater.createJsonPatch(bindings);\n\n // You're seeing the weird `~1` delimiter because that's what fast-json-patch does with indexes.\n expect(patch).toEqual(\n expect.arrayContaining([\n expect.objectContaining({\n op: \"remove\",\n path: \"/inputs/items~11~1label\"\n }),\n expect.objectContaining({\n op: \"replace\",\n path: \"/inputs/title/static\",\n value: \"Changed Title\"\n }),\n expect.objectContaining({\n op: \"replace\",\n path: \"/inputs/items~10~1label/static\",\n value: \"Changed Label 1\"\n })\n ])\n );\n });\n\n it(\"applyInputs removes keys missing in new inputs\", () => {\n const rawBindings: DocumentElementBindings = {\n inputs: {\n ...baseBindings.inputs,\n \"some/key\": { id: \"someKey\", static: \"toRemove\", type: \"text\" }\n },\n overrides,\n styles: {}\n };\n const { processor } = getInputsBindingsProcessor(rawBindings);\n\n const newInputs = {\n title: \"Base Title\",\n items: [{ label: \"Base Label 1\" }, { label: \"Base Label 2\" }]\n };\n\n const updater = processor.createUpdate(newInputs, \"mobile\");\n const rebuilt: any = { bindings: { elementId: { inputs: {}, styles: {} } } };\n updater.applyToDocument(rebuilt);\n\n const elementBindings = rebuilt.bindings.elementId;\n\n expect(elementBindings.inputs[\"some/key\"]).toBeUndefined();\n });\n\n it(\"createUpdate should apply correct changes to the document\", () => {\n const rawBindings: DocumentElementBindings = {\n inputs: baseBindings.inputs,\n overrides,\n styles: {}\n };\n const { processor } = getInputsBindingsProcessor(rawBindings, [\n ...simpleAst,\n ...withSlotAst\n ]);\n\n const deepInputs = processor.toDeepInputs(rawBindings.inputs!);\n\n deepInputs.items.push({ label: \"New Label 1\" });\n deepInputs.children = {\n action: \"CreateElement\",\n params: {\n component: \"Webiny/GridColumn\"\n }\n };\n\n const updater = processor.createUpdate(deepInputs, \"mobile\");\n const rebuilt: any = { bindings: { elementId: { inputs: {}, styles: {} } }, elements: {} };\n updater.applyToDocument(rebuilt);\n\n expect(rebuilt.bindings.elementId.inputs).toMatchObject({\n title: { id: \"title\", static: \"Base Title\", type: \"text\" },\n \"items/0/label\": {\n id: \"label0\",\n static: \"Base Label 1\",\n type: \"text\"\n },\n \"items/1/label\": {\n id: \"label1\",\n static: \"Base Label 2\",\n type: \"text\"\n },\n \"items/2/label\": {\n id: expect.any(String),\n static: \"New Label 1\",\n type: \"text\"\n },\n children: {\n id: expect.any(String),\n static: expect.any(String),\n type: \"slot\"\n }\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
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","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 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":[]}
|
package/InputsUpdater.d.ts
CHANGED
|
@@ -8,5 +8,5 @@ export declare class InputsUpdater implements IBindingsUpdater {
|
|
|
8
8
|
private elementId;
|
|
9
9
|
constructor(elementId: string, bindings: ElementInputsBindings, operations: IDocumentOperation[]);
|
|
10
10
|
applyToDocument(document: Document): void;
|
|
11
|
-
createJsonPatch(bindings: DocumentElementBindings): import("
|
|
11
|
+
createJsonPatch(bindings: DocumentElementBindings): import("~/jsonPatch.js").JsonPatchOperation[];
|
|
12
12
|
}
|
package/LiveSdk.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { GetPageOptions, IContentSdk, IDataProvider, ListPagesOptions, PublicPage } from "./types.js";
|
|
1
|
+
import type { GetPageOptions, IContentSdk, IDataProvider, ListPagesOptions, ListPagesResult, PublicPage } from "./types.js";
|
|
2
2
|
export declare class LiveSdk implements IContentSdk {
|
|
3
3
|
private dataProvider;
|
|
4
4
|
constructor(dataProvider: IDataProvider);
|
|
5
5
|
getPage(path: string, options?: GetPageOptions): Promise<PublicPage | null>;
|
|
6
|
-
listPages(options?: ListPagesOptions): Promise<
|
|
6
|
+
listPages(options?: ListPagesOptions): Promise<ListPagesResult>;
|
|
7
7
|
}
|
package/LiveSdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["documentStoreManager","LiveSdk","constructor","dataProvider","getPage","path","options","page","getPageByPath","getStore","properties","id","setDocument","listPages"],"sources":["LiveSdk.ts"],"sourcesContent":["import type {\n GetPageOptions,\n IContentSdk,\n IDataProvider,\n ListPagesOptions,\n PublicPage\n} from \"~/types.js\";\nimport { documentStoreManager } from \"~/DocumentStoreManager.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<
|
|
1
|
+
{"version":3,"names":["documentStoreManager","LiveSdk","constructor","dataProvider","getPage","path","options","page","getPageByPath","getStore","properties","id","setDocument","listPages"],"sources":["LiveSdk.ts"],"sourcesContent":["import type {\n GetPageOptions,\n IContentSdk,\n IDataProvider,\n ListPagesOptions,\n 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"],"mappings":"AAQA,SAASA,oBAAoB;AAE7B,OAAO,MAAMC,OAAO,CAAwB;EAGxCC,WAAWA,CAACC,YAA2B,EAAE;IACrC,IAAI,CAACA,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAMC,OAAOA,CAACC,IAAY,EAAEC,OAAwB,EAA8B;IAC9E,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACJ,YAAY,CAACK,aAAa,CAACH,IAAI,EAAEC,OAAO,CAAC;IACjE,IAAIC,IAAI,EAAE;MACNP,oBAAoB,CAACS,QAAQ,CAAaF,IAAI,CAACG,UAAU,CAACC,EAAE,CAAC,CAACC,WAAW,CAACL,IAAI,CAAC;IACnF;IACA,OAAOA,IAAI;EACf;EAEAM,SAASA,CAACP,OAA0B,EAA4B;IAC5D,OAAO,IAAI,CAACH,YAAY,CAACU,SAAS,CAACP,OAAO,CAAC;EAC/C;AACJ","ignoreList":[]}
|
package/Logger.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import pino from "pino";
|
|
2
|
+
export declare const logger: pino.Logger<never, boolean>;
|
package/NullSdk.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { IContentSdk, Page, PublicRedirect, ResolvedComponent } from "./types.js";
|
|
1
|
+
import type { IContentSdk, ListPagesResult, Page, PublicRedirect, ResolvedComponent } from "./types.js";
|
|
2
2
|
export declare class NullSdk implements IContentSdk {
|
|
3
3
|
getPage(): Promise<Page | null>;
|
|
4
|
-
listPages(): Promise<
|
|
4
|
+
listPages(): Promise<ListPagesResult>;
|
|
5
5
|
listRedirects(): Promise<PublicRedirect[]>;
|
|
6
6
|
registerComponent(): void;
|
|
7
7
|
resolveElement(): ResolvedComponent[] | null;
|
package/NullSdk.js
CHANGED
|
@@ -3,7 +3,14 @@ export class NullSdk {
|
|
|
3
3
|
return null;
|
|
4
4
|
}
|
|
5
5
|
listPages() {
|
|
6
|
-
return Promise.resolve(
|
|
6
|
+
return Promise.resolve({
|
|
7
|
+
data: [],
|
|
8
|
+
meta: {
|
|
9
|
+
hasMoreItems: false,
|
|
10
|
+
totalCount: 0,
|
|
11
|
+
cursor: null
|
|
12
|
+
}
|
|
13
|
+
});
|
|
7
14
|
}
|
|
8
15
|
listRedirects() {
|
|
9
16
|
return Promise.resolve([]);
|
package/NullSdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NullSdk","getPage","listPages","Promise","resolve","listRedirects","registerComponent","resolveElement"],"sources":["NullSdk.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"names":["NullSdk","getPage","listPages","Promise","resolve","data","meta","hasMoreItems","totalCount","cursor","listRedirects","registerComponent","resolveElement"],"sources":["NullSdk.ts"],"sourcesContent":["import type {\n IContentSdk,\n ListPagesResult,\n Page,\n PublicRedirect,\n ResolvedComponent\n} from \"./types.js\";\n\nexport class NullSdk implements IContentSdk {\n async getPage(): Promise<Page | 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"],"mappings":"AAQA,OAAO,MAAMA,OAAO,CAAwB;EACxC,MAAMC,OAAOA,CAAA,EAAyB;IAClC,OAAO,IAAI;EACf;EAEAC,SAASA,CAAA,EAA6B;IAClC,OAAOC,OAAO,CAACC,OAAO,CAAC;MACnBC,IAAI,EAAE,EAAE;MACRC,IAAI,EAAE;QAAEC,YAAY,EAAE,KAAK;QAAEC,UAAU,EAAE,CAAC;QAAEC,MAAM,EAAE;MAAK;IAC7D,CAAC,CAAC;EACN;EAEAC,aAAaA,CAAA,EAA8B;IACvC,OAAOP,OAAO,CAACC,OAAO,CAAC,EAAE,CAAC;EAC9B;EAEAO,iBAAiBA,CAAA,EAAS,CAAC;EAE3BC,cAAcA,CAAA,EAA+B;IACzC,OAAO,IAAI;EACf;AACJ","ignoreList":[]}
|
package/PreviewSdk.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { IContentSdk, IDataProvider, PublicPage } from "./types.js";
|
|
1
|
+
import type { IContentSdk, IDataProvider, ListPagesOptions, ListPagesResult, PublicPage } from "./types.js";
|
|
2
2
|
export declare class PreviewSdk implements IContentSdk {
|
|
3
3
|
private liveSdk;
|
|
4
4
|
private dataProvider;
|
|
5
5
|
constructor(dataProvider: IDataProvider, liveSdk: IContentSdk);
|
|
6
6
|
getPage(path: string): Promise<PublicPage | null>;
|
|
7
|
-
listPages(): Promise<
|
|
7
|
+
listPages(options?: ListPagesOptions): Promise<ListPagesResult>;
|
|
8
8
|
}
|
package/PreviewSdk.js
CHANGED
package/PreviewSdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PreviewDocument","PreviewSdk","constructor","dataProvider","liveSdk","getPage","path","previewDocument","createFromHeaders","matches","type","getPageById","getId","listPages"],"sources":["PreviewSdk.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"names":["PreviewDocument","PreviewSdk","constructor","dataProvider","liveSdk","getPage","path","previewDocument","createFromHeaders","matches","type","getPageById","getId","listPages","options"],"sources":["PreviewSdk.ts"],"sourcesContent":["import type {\n IContentSdk,\n IDataProvider,\n ListPagesOptions,\n ListPagesResult,\n PublicPage\n} from \"~/types.js\";\nimport { PreviewDocument } from \"~/PreviewDocument.js\";\n\nexport class PreviewSdk implements IContentSdk {\n private liveSdk: IContentSdk;\n private dataProvider: IDataProvider;\n\n constructor(dataProvider: IDataProvider, liveSdk: IContentSdk) {\n this.liveSdk = liveSdk;\n this.dataProvider = dataProvider;\n }\n\n async getPage(path: string): Promise<PublicPage | null> {\n const previewDocument = await PreviewDocument.createFromHeaders();\n if (!previewDocument.matches({ type: \"page\", path })) {\n return this.liveSdk.getPage(path);\n }\n return this.dataProvider.getPageById(previewDocument.getId());\n }\n\n async listPages(options?: ListPagesOptions): Promise<ListPagesResult> {\n return this.liveSdk.listPages(options);\n }\n}\n"],"mappings":"AAOA,SAASA,eAAe;AAExB,OAAO,MAAMC,UAAU,CAAwB;EAI3CC,WAAWA,CAACC,YAA2B,EAAEC,OAAoB,EAAE;IAC3D,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACD,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAME,OAAOA,CAACC,IAAY,EAA8B;IACpD,MAAMC,eAAe,GAAG,MAAMP,eAAe,CAACQ,iBAAiB,CAAC,CAAC;IACjE,IAAI,CAACD,eAAe,CAACE,OAAO,CAAC;MAAEC,IAAI,EAAE,MAAM;MAAEJ;IAAK,CAAC,CAAC,EAAE;MAClD,OAAO,IAAI,CAACF,OAAO,CAACC,OAAO,CAACC,IAAI,CAAC;IACrC;IACA,OAAO,IAAI,CAACH,YAAY,CAACQ,WAAW,CAACJ,eAAe,CAACK,KAAK,CAAC,CAAC,CAAC;EACjE;EAEA,MAAMC,SAASA,CAACC,OAA0B,EAA4B;IAClE,OAAO,IAAI,CAACV,OAAO,CAACS,SAAS,CAACC,OAAO,CAAC;EAC1C;AACJ","ignoreList":[]}
|
package/PreviewViewport.d.ts
CHANGED
package/PreviewViewport.js
CHANGED
|
@@ -62,26 +62,6 @@ export class PreviewViewport {
|
|
|
62
62
|
getViewport() {
|
|
63
63
|
return viewportManager.getViewport();
|
|
64
64
|
}
|
|
65
|
-
getVisibleBoxes() {
|
|
66
|
-
const allBoxes = this.getBoxes();
|
|
67
|
-
const viewport = this.getViewport();
|
|
68
|
-
const visibleBoxes = {};
|
|
69
|
-
for (const [id, box] of Object.entries(allBoxes)) {
|
|
70
|
-
const {
|
|
71
|
-
top,
|
|
72
|
-
left,
|
|
73
|
-
width,
|
|
74
|
-
height
|
|
75
|
-
} = box;
|
|
76
|
-
const bottom = top + height;
|
|
77
|
-
const right = left + width;
|
|
78
|
-
const isVisible = bottom > 0 && right > 0 && top < viewport.height && left < viewport.width;
|
|
79
|
-
if (isVisible) {
|
|
80
|
-
visibleBoxes[id] = box;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return visibleBoxes;
|
|
84
|
-
}
|
|
85
65
|
destroy() {}
|
|
86
66
|
}
|
|
87
67
|
|
package/PreviewViewport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["viewportManager","PreviewViewport","getBoxes","elementBoxes","elements","document","querySelectorAll","forEach","element","id","getAttribute","depth","rect","firstElementChild","getBoundingClientRect","type","parseInt","parentId","parentSlot","parentIndex","top","left","width","height","slotBoxes","elementSlots","slot","getViewport","
|
|
1
|
+
{"version":3,"names":["viewportManager","PreviewViewport","getBoxes","elementBoxes","elements","document","querySelectorAll","forEach","element","id","getAttribute","depth","rect","firstElementChild","getBoundingClientRect","type","parseInt","parentId","parentSlot","parentIndex","top","left","width","height","slotBoxes","elementSlots","slot","getViewport","destroy"],"sources":["PreviewViewport.ts"],"sourcesContent":["import type { ElementBoxData, ElementSlotBoxData } from \"~/types.js\";\nimport { viewportManager } from \"./ViewportManager.js\";\n\nexport class PreviewViewport {\n getBoxes() {\n const elementBoxes: Record<string, ElementBoxData> = {};\n\n // Collect positions for all elements\n const elements = document.querySelectorAll(\"[data-element-id]\");\n\n elements.forEach(element => {\n const id = element.getAttribute(\"data-element-id\");\n const depth = element.getAttribute(\"data-depth\");\n if (id) {\n // Get the bounding box relative to the viewport\n const rect = element.firstElementChild?.getBoundingClientRect();\n\n if (!rect) {\n return;\n }\n\n // Convert DOMRect to a plain object to ensure it can be serialized\n elementBoxes[id] = {\n type: \"element\",\n depth: parseInt(depth ?? \"0\"),\n parentId: element.getAttribute(\"data-parent-id\")!,\n parentSlot: element.getAttribute(\"data-parent-slot\")!,\n parentIndex: parseInt(element.getAttribute(\"data-parent-index\") ?? \"0\"),\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height\n };\n }\n });\n\n // Collect positions for all element slots\n const slotBoxes: Record<string, ElementSlotBoxData> = {};\n\n const elementSlots = document.querySelectorAll(\"[data-role='element-slot']\");\n\n elementSlots.forEach(element => {\n const parentId = element.getAttribute(\"data-parent-id\");\n const slot = element.getAttribute(\"data-parent-slot\");\n const depth = element.getAttribute(\"data-depth\");\n\n // Get the bounding box relative to the viewport\n const rect = element.getBoundingClientRect();\n\n // Convert DOMRect to a plain object to ensure it can be serialized\n slotBoxes[`${parentId}:${slot}`] = {\n type: \"element-slot\",\n depth: parseInt(depth ?? \"0\"),\n parentId: element.getAttribute(\"data-parent-id\")!,\n parentSlot: element.getAttribute(\"data-parent-slot\")!,\n parentIndex: parseInt(element.getAttribute(\"data-parent-index\") ?? \"0\"),\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height\n };\n });\n\n return { ...elementBoxes, ...slotBoxes };\n }\n\n getViewport() {\n return viewportManager.getViewport();\n }\n\n destroy(): void {}\n}\n"],"mappings":"AACA,SAASA,eAAe;AAExB,OAAO,MAAMC,eAAe,CAAC;EACzBC,QAAQA,CAAA,EAAG;IACP,MAAMC,YAA4C,GAAG,CAAC,CAAC;;IAEvD;IACA,MAAMC,QAAQ,GAAGC,QAAQ,CAACC,gBAAgB,CAAC,mBAAmB,CAAC;IAE/DF,QAAQ,CAACG,OAAO,CAACC,OAAO,IAAI;MACxB,MAAMC,EAAE,GAAGD,OAAO,CAACE,YAAY,CAAC,iBAAiB,CAAC;MAClD,MAAMC,KAAK,GAAGH,OAAO,CAACE,YAAY,CAAC,YAAY,CAAC;MAChD,IAAID,EAAE,EAAE;QACJ;QACA,MAAMG,IAAI,GAAGJ,OAAO,CAACK,iBAAiB,EAAEC,qBAAqB,CAAC,CAAC;QAE/D,IAAI,CAACF,IAAI,EAAE;UACP;QACJ;;QAEA;QACAT,YAAY,CAACM,EAAE,CAAC,GAAG;UACfM,IAAI,EAAE,SAAS;UACfJ,KAAK,EAAEK,QAAQ,CAACL,KAAK,IAAI,GAAG,CAAC;UAC7BM,QAAQ,EAAET,OAAO,CAACE,YAAY,CAAC,gBAAgB,CAAE;UACjDQ,UAAU,EAAEV,OAAO,CAACE,YAAY,CAAC,kBAAkB,CAAE;UACrDS,WAAW,EAAEH,QAAQ,CAACR,OAAO,CAACE,YAAY,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC;UACvEU,GAAG,EAAER,IAAI,CAACQ,GAAG;UACbC,IAAI,EAAET,IAAI,CAACS,IAAI;UACfC,KAAK,EAAEV,IAAI,CAACU,KAAK;UACjBC,MAAM,EAAEX,IAAI,CAACW;QACjB,CAAC;MACL;IACJ,CAAC,CAAC;;IAEF;IACA,MAAMC,SAA6C,GAAG,CAAC,CAAC;IAExD,MAAMC,YAAY,GAAGpB,QAAQ,CAACC,gBAAgB,CAAC,4BAA4B,CAAC;IAE5EmB,YAAY,CAAClB,OAAO,CAACC,OAAO,IAAI;MAC5B,MAAMS,QAAQ,GAAGT,OAAO,CAACE,YAAY,CAAC,gBAAgB,CAAC;MACvD,MAAMgB,IAAI,GAAGlB,OAAO,CAACE,YAAY,CAAC,kBAAkB,CAAC;MACrD,MAAMC,KAAK,GAAGH,OAAO,CAACE,YAAY,CAAC,YAAY,CAAC;;MAEhD;MACA,MAAME,IAAI,GAAGJ,OAAO,CAACM,qBAAqB,CAAC,CAAC;;MAE5C;MACAU,SAAS,CAAC,GAAGP,QAAQ,IAAIS,IAAI,EAAE,CAAC,GAAG;QAC/BX,IAAI,EAAE,cAAc;QACpBJ,KAAK,EAAEK,QAAQ,CAACL,KAAK,IAAI,GAAG,CAAC;QAC7BM,QAAQ,EAAET,OAAO,CAACE,YAAY,CAAC,gBAAgB,CAAE;QACjDQ,UAAU,EAAEV,OAAO,CAACE,YAAY,CAAC,kBAAkB,CAAE;QACrDS,WAAW,EAAEH,QAAQ,CAACR,OAAO,CAACE,YAAY,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC;QACvEU,GAAG,EAAER,IAAI,CAACQ,GAAG;QACbC,IAAI,EAAET,IAAI,CAACS,IAAI;QACfC,KAAK,EAAEV,IAAI,CAACU,KAAK;QACjBC,MAAM,EAAEX,IAAI,CAACW;MACjB,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;MAAE,GAAGpB,YAAY;MAAE,GAAGqB;IAAU,CAAC;EAC5C;EAEAG,WAAWA,CAAA,EAAG;IACV,OAAO3B,eAAe,CAAC2B,WAAW,CAAC,CAAC;EACxC;EAEAC,OAAOA,CAAA,EAAS,CAAC;AACrB","ignoreList":[]}
|
package/README.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @webiny/website-builder-sdk
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> [!NOTE]
|
|
4
|
+
> This package is part of the [Webiny](https://www.webiny.com) monorepo.
|
|
5
|
+
> Itβs **included in every Webiny project by default** and is not meant to be used as a standalone package.
|
|
6
|
+
|
|
7
|
+
π **Documentation:** [https://www.webiny.com/docs](https://www.webiny.com/docs)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
_This README file is automatically generated during the publish process._
|
package/StylesUpdater.d.ts
CHANGED
|
@@ -6,5 +6,5 @@ export declare class StylesUpdater implements IBindingsUpdater {
|
|
|
6
6
|
private elementId;
|
|
7
7
|
constructor(elementId: string, bindings: ElementStylesBindings);
|
|
8
8
|
applyToDocument(document: Document): void;
|
|
9
|
-
createJsonPatch(bindings: DocumentElementBindings): import("
|
|
9
|
+
createJsonPatch(bindings: DocumentElementBindings): import("~/jsonPatch.js").JsonPatchOperation[];
|
|
10
10
|
}
|
package/Theme.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import deepMerge from "deepmerge";
|
|
2
2
|
import { defaultBreakpoints } from "./defaultBreakpoints.js";
|
|
3
|
-
import { createLexicalTheme } from "./lexical/createLexicalTheme.js";
|
|
4
3
|
export class Theme {
|
|
5
4
|
static from(input) {
|
|
6
5
|
const {
|
|
@@ -17,17 +16,11 @@ export class Theme {
|
|
|
17
16
|
});
|
|
18
17
|
return {
|
|
19
18
|
css: input.css,
|
|
20
|
-
cssVariables: input.cssVariables,
|
|
21
19
|
fonts: input.fonts,
|
|
22
20
|
breakpoints: breakpoints.sort((a, b) => b.maxWidth - a.maxWidth),
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
...input?.styles?.colors
|
|
27
|
-
},
|
|
28
|
-
typography: {
|
|
29
|
-
...input?.styles?.typography
|
|
30
|
-
}
|
|
21
|
+
colors: input?.colors ?? [],
|
|
22
|
+
typography: {
|
|
23
|
+
...input?.typography
|
|
31
24
|
}
|
|
32
25
|
};
|
|
33
26
|
}
|
package/Theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["deepMerge","defaultBreakpoints","
|
|
1
|
+
{"version":3,"names":["deepMerge","defaultBreakpoints","Theme","from","input","custom","builtInOverrides","breakpoints","mergedBreakpoints","all","Object","entries","forEach","name","breakpoint","push","css","fonts","sort","a","b","maxWidth","colors","typography"],"sources":["Theme.ts"],"sourcesContent":["import deepMerge from \"deepmerge\";\nimport type {\n Breakpoint,\n WebsiteBuilderTheme,\n WebsiteBuilderThemeInput\n} from \"~/types/WebsiteBuilderTheme.js\";\nimport { defaultBreakpoints } from \"~/defaultBreakpoints.js\";\n\nexport class Theme {\n static from(input: WebsiteBuilderThemeInput): WebsiteBuilderTheme {\n const { custom = {}, ...builtInOverrides } = input?.breakpoints ?? {};\n\n const mergedBreakpoints = deepMerge.all([\n {},\n defaultBreakpoints,\n builtInOverrides,\n custom\n ]) as WebsiteBuilderThemeInput[\"breakpoints\"];\n\n const breakpoints: Breakpoint[] = [];\n Object.entries(mergedBreakpoints ?? {}).forEach(([name, breakpoint]) => {\n breakpoints.push({\n name,\n ...(breakpoint as Omit<Breakpoint, \"name\">)\n });\n });\n\n return {\n css: input.css,\n fonts: input.fonts,\n breakpoints: breakpoints.sort((a, b) => b.maxWidth - a.maxWidth),\n colors: input?.colors ?? [],\n typography: {\n ...input?.typography\n }\n };\n }\n}\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,WAAW;AAMjC,SAASC,kBAAkB;AAE3B,OAAO,MAAMC,KAAK,CAAC;EACf,OAAOC,IAAIA,CAACC,KAA+B,EAAuB;IAC9D,MAAM;MAAEC,MAAM,GAAG,CAAC,CAAC;MAAE,GAAGC;IAAiB,CAAC,GAAGF,KAAK,EAAEG,WAAW,IAAI,CAAC,CAAC;IAErE,MAAMC,iBAAiB,GAAGR,SAAS,CAACS,GAAG,CAAC,CACpC,CAAC,CAAC,EACFR,kBAAkB,EAClBK,gBAAgB,EAChBD,MAAM,CACT,CAA4C;IAE7C,MAAME,WAAyB,GAAG,EAAE;IACpCG,MAAM,CAACC,OAAO,CAACH,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAACI,OAAO,CAAC,CAAC,CAACC,IAAI,EAAEC,UAAU,CAAC,KAAK;MACpEP,WAAW,CAACQ,IAAI,CAAC;QACbF,IAAI;QACJ,GAAIC;MACR,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,OAAO;MACHE,GAAG,EAAEZ,KAAK,CAACY,GAAG;MACdC,KAAK,EAAEb,KAAK,CAACa,KAAK;MAClBV,WAAW,EAAEA,WAAW,CAACW,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKA,CAAC,CAACC,QAAQ,GAAGF,CAAC,CAACE,QAAQ,CAAC;MAChEC,MAAM,EAAElB,KAAK,EAAEkB,MAAM,IAAI,EAAE;MAC3BC,UAAU,EAAE;QACR,GAAGnB,KAAK,EAAEmB;MACd;IACJ,CAAC;EACL;AACJ","ignoreList":[]}
|
package/ViewportManager.d.ts
CHANGED
package/ViewportManager.js
CHANGED
|
@@ -77,12 +77,16 @@ export class ViewportManager {
|
|
|
77
77
|
const viewport = environment.isClient() ? {
|
|
78
78
|
width: window.innerWidth,
|
|
79
79
|
height: window.innerHeight,
|
|
80
|
+
scrollWidth: window.document.body.scrollWidth,
|
|
81
|
+
scrollHeight: window.document.body.scrollHeight,
|
|
80
82
|
scrollX: window.scrollX,
|
|
81
83
|
scrollY: window.scrollY
|
|
82
84
|
} : {
|
|
83
85
|
// During SSR or Next.js build, viewport is not available.
|
|
84
86
|
height: 0,
|
|
85
87
|
width: 2000,
|
|
88
|
+
scrollHeight: 0,
|
|
89
|
+
scrollWidth: 2000,
|
|
86
90
|
scrollX: 0,
|
|
87
91
|
scrollY: 0
|
|
88
92
|
};
|
package/ViewportManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["environment","ViewportManager","breakpoints","name","title","description","icon","minWidth","maxWidth","constructor","timeout","changeTimeout","changeStartSubscribers","Set","changeEndSubscribers","isChanging","changeTimer","handleViewportChange","bind","handleResize","isClient","window","addEventListener","passive","setBreakpoints","onViewportChangeStart","callback","add","delete","onViewportChangeEnd","getViewport","getViewportInfo","destroy","removeEventListener","clearTimeout","clear","viewportInfo","notifySubscribers","setTimeout","modes","reverse","viewport","width","innerWidth","height","innerHeight","scrollX","scrollY","breakpoint","filter","mode","subscribers","forEach","viewportManager"],"sources":["ViewportManager.ts"],"sourcesContent":["\"use client\";\nimport type { Breakpoint } from \"~/types.js\";\nimport { environment } from \"~/Environment.js\";\n\nexport interface ViewportInfo {\n width: number;\n height: number;\n scrollX: number;\n scrollY: number;\n breakpoint: string;\n breakpoints: Breakpoint[];\n}\n\nexport class ViewportManager {\n private readonly changeTimeout: number;\n private readonly changeStartSubscribers: Set<(info: ViewportInfo) => void>;\n private readonly changeEndSubscribers: Set<(info: ViewportInfo) => void>;\n private isChanging: boolean;\n private changeTimer: number | null;\n\n /**\n * We need this fallback breakpoint for server environments.\n */\n private breakpoints: Breakpoint[] = [\n {\n name: \"desktop\",\n title: \"\",\n description: \"\",\n icon: \"\",\n minWidth: 0,\n maxWidth: 4000\n }\n ];\n\n constructor(timeout: number = 150) {\n this.changeTimeout = timeout;\n this.changeStartSubscribers = new Set();\n this.changeEndSubscribers = new Set();\n this.isChanging = false;\n this.changeTimer = null;\n\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleResize = this.handleResize.bind(this);\n\n if (environment.isClient()) {\n window.addEventListener(\"resize\", this.handleResize, { passive: true });\n }\n }\n\n public setBreakpoints(breakpoints: Breakpoint[]) {\n this.breakpoints = breakpoints;\n }\n\n public onViewportChangeStart(callback: (info: ViewportInfo) => void): () => void {\n this.changeStartSubscribers.add(callback);\n return () => this.changeStartSubscribers.delete(callback);\n }\n\n public onViewportChangeEnd(callback: (info: ViewportInfo) => void): () => void {\n this.changeEndSubscribers.add(callback);\n return () => this.changeEndSubscribers.delete(callback);\n }\n\n /**\n * Get the current viewport information\n */\n public getViewport(): ViewportInfo {\n return this.getViewportInfo();\n }\n\n public destroy(): void {\n if (environment.isClient()) {\n window.removeEventListener(\"resize\", this.handleResize);\n if (this.changeTimer !== null) {\n clearTimeout(this.changeTimer);\n }\n this.changeStartSubscribers.clear();\n this.changeEndSubscribers.clear();\n }\n }\n\n private handleResize(): void {\n this.handleViewportChange();\n }\n\n private handleViewportChange(): void {\n const viewportInfo = this.getViewportInfo();\n\n if (!this.isChanging) {\n this.isChanging = true;\n this.notifySubscribers(this.changeStartSubscribers, viewportInfo);\n }\n\n if (this.changeTimer !== null) {\n clearTimeout(this.changeTimer);\n }\n\n this.changeTimer = window.setTimeout(() => {\n this.isChanging = false;\n this.notifySubscribers(this.changeEndSubscribers, viewportInfo);\n }, this.changeTimeout);\n }\n\n private getViewportInfo(): ViewportInfo {\n const modes = [...this.breakpoints].reverse();\n const viewport = environment.isClient()\n ? {\n width: window.innerWidth,\n height: window.innerHeight,\n scrollX: window.scrollX,\n scrollY: window.scrollY\n }\n : {\n // During SSR or Next.js build, viewport is not available.\n height: 0,\n width: 2000,\n scrollX: 0,\n scrollY: 0\n };\n\n const [breakpoint] = modes.filter(mode => mode.maxWidth >= viewport.width);\n\n return { ...viewport, breakpoint: breakpoint.name, breakpoints: this.breakpoints };\n }\n\n private notifySubscribers(\n subscribers: Set<(info: ViewportInfo) => void>,\n viewportInfo: ViewportInfo\n ): void {\n subscribers.forEach(callback => {\n if (typeof callback === \"function\") {\n callback(viewportInfo);\n }\n });\n }\n}\n\nexport const viewportManager = new ViewportManager();\n"],"mappings":"AAAA,YAAY;;AAEZ,SAASA,WAAW;
|
|
1
|
+
{"version":3,"names":["environment","ViewportManager","breakpoints","name","title","description","icon","minWidth","maxWidth","constructor","timeout","changeTimeout","changeStartSubscribers","Set","changeEndSubscribers","isChanging","changeTimer","handleViewportChange","bind","handleResize","isClient","window","addEventListener","passive","setBreakpoints","onViewportChangeStart","callback","add","delete","onViewportChangeEnd","getViewport","getViewportInfo","destroy","removeEventListener","clearTimeout","clear","viewportInfo","notifySubscribers","setTimeout","modes","reverse","viewport","width","innerWidth","height","innerHeight","scrollWidth","document","body","scrollHeight","scrollX","scrollY","breakpoint","filter","mode","subscribers","forEach","viewportManager"],"sources":["ViewportManager.ts"],"sourcesContent":["\"use client\";\nimport type { Breakpoint } from \"~/types.js\";\nimport { environment } from \"~/Environment.js\";\n\nexport interface ViewportInfo {\n width: number;\n height: number;\n scrollWidth: number;\n scrollHeight: number;\n scrollX: number;\n scrollY: number;\n breakpoint: string;\n breakpoints: Breakpoint[];\n}\n\nexport class ViewportManager {\n private readonly changeTimeout: number;\n private readonly changeStartSubscribers: Set<(info: ViewportInfo) => void>;\n private readonly changeEndSubscribers: Set<(info: ViewportInfo) => void>;\n private isChanging: boolean;\n private changeTimer: number | null;\n\n /**\n * We need this fallback breakpoint for server environments.\n */\n private breakpoints: Breakpoint[] = [\n {\n name: \"desktop\",\n title: \"\",\n description: \"\",\n icon: \"\",\n minWidth: 0,\n maxWidth: 4000\n }\n ];\n\n constructor(timeout: number = 150) {\n this.changeTimeout = timeout;\n this.changeStartSubscribers = new Set();\n this.changeEndSubscribers = new Set();\n this.isChanging = false;\n this.changeTimer = null;\n\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleResize = this.handleResize.bind(this);\n\n if (environment.isClient()) {\n window.addEventListener(\"resize\", this.handleResize, { passive: true });\n }\n }\n\n public setBreakpoints(breakpoints: Breakpoint[]) {\n this.breakpoints = breakpoints;\n }\n\n public onViewportChangeStart(callback: (info: ViewportInfo) => void): () => void {\n this.changeStartSubscribers.add(callback);\n return () => this.changeStartSubscribers.delete(callback);\n }\n\n public onViewportChangeEnd(callback: (info: ViewportInfo) => void): () => void {\n this.changeEndSubscribers.add(callback);\n return () => this.changeEndSubscribers.delete(callback);\n }\n\n /**\n * Get the current viewport information\n */\n public getViewport(): ViewportInfo {\n return this.getViewportInfo();\n }\n\n public destroy(): void {\n if (environment.isClient()) {\n window.removeEventListener(\"resize\", this.handleResize);\n if (this.changeTimer !== null) {\n clearTimeout(this.changeTimer);\n }\n this.changeStartSubscribers.clear();\n this.changeEndSubscribers.clear();\n }\n }\n\n private handleResize(): void {\n this.handleViewportChange();\n }\n\n private handleViewportChange(): void {\n const viewportInfo = this.getViewportInfo();\n\n if (!this.isChanging) {\n this.isChanging = true;\n this.notifySubscribers(this.changeStartSubscribers, viewportInfo);\n }\n\n if (this.changeTimer !== null) {\n clearTimeout(this.changeTimer);\n }\n\n this.changeTimer = window.setTimeout(() => {\n this.isChanging = false;\n this.notifySubscribers(this.changeEndSubscribers, viewportInfo);\n }, this.changeTimeout);\n }\n\n private getViewportInfo(): ViewportInfo {\n const modes = [...this.breakpoints].reverse();\n const viewport = environment.isClient()\n ? {\n width: window.innerWidth,\n height: window.innerHeight,\n scrollWidth: window.document.body.scrollWidth,\n scrollHeight: window.document.body.scrollHeight,\n scrollX: window.scrollX,\n scrollY: window.scrollY\n }\n : {\n // During SSR or Next.js build, viewport is not available.\n height: 0,\n width: 2000,\n scrollHeight: 0,\n scrollWidth: 2000,\n scrollX: 0,\n scrollY: 0\n };\n\n const [breakpoint] = modes.filter(mode => mode.maxWidth >= viewport.width);\n\n return { ...viewport, breakpoint: breakpoint.name, breakpoints: this.breakpoints };\n }\n\n private notifySubscribers(\n subscribers: Set<(info: ViewportInfo) => void>,\n viewportInfo: ViewportInfo\n ): void {\n subscribers.forEach(callback => {\n if (typeof callback === \"function\") {\n callback(viewportInfo);\n }\n });\n }\n}\n\nexport const viewportManager = new ViewportManager();\n"],"mappings":"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","ignoreList":[]}
|