@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.
Files changed (89) hide show
  1. package/BindingsProcessor.test.js +1 -0
  2. package/BindingsProcessor.test.js.map +1 -1
  3. package/BindingsResolver.d.ts +1 -1
  4. package/BindingsResolver.js +2 -2
  5. package/BindingsResolver.js.map +1 -1
  6. package/BindingsResolver.test.js +1 -0
  7. package/BindingsResolver.test.js.map +1 -1
  8. package/ContentSdk.d.ts +3 -3
  9. package/ContentSdk.js +4 -4
  10. package/ContentSdk.js.map +1 -1
  11. package/DocumentStore.d.ts +1 -1
  12. package/EditingSdk.d.ts +2 -2
  13. package/EditingSdk.js +4 -7
  14. package/EditingSdk.js.map +1 -1
  15. package/ElementFactory.js.map +1 -1
  16. package/HotkeyManager.js +1 -1
  17. package/HotkeyManager.js.map +1 -1
  18. package/InheritanceProcessor.d.ts +2 -2
  19. package/InheritanceProcessor.test.js +1 -0
  20. package/InheritanceProcessor.test.js.map +1 -1
  21. package/InputsBindingsProcessor.test.js +1 -0
  22. package/InputsBindingsProcessor.test.js.map +1 -1
  23. package/InputsUpdater.d.ts +1 -1
  24. package/LiveSdk.d.ts +2 -2
  25. package/LiveSdk.js.map +1 -1
  26. package/Logger.d.ts +2 -1
  27. package/NullSdk.d.ts +2 -2
  28. package/NullSdk.js +8 -1
  29. package/NullSdk.js.map +1 -1
  30. package/PreviewSdk.d.ts +2 -2
  31. package/PreviewSdk.js +2 -2
  32. package/PreviewSdk.js.map +1 -1
  33. package/PreviewViewport.d.ts +0 -1
  34. package/PreviewViewport.js +0 -20
  35. package/PreviewViewport.js.map +1 -1
  36. package/README.md +10 -2
  37. package/StylesUpdater.d.ts +1 -1
  38. package/Theme.js +3 -10
  39. package/Theme.js.map +1 -1
  40. package/ViewportManager.d.ts +2 -0
  41. package/ViewportManager.js +4 -0
  42. package/ViewportManager.js.map +1 -1
  43. package/createInput.d.ts +123 -15
  44. package/createInput.js +32 -0
  45. package/createInput.js.map +1 -1
  46. package/dataProviders/DefaultDataProvider.d.ts +3 -3
  47. package/dataProviders/DefaultDataProvider.js +16 -3
  48. package/dataProviders/DefaultDataProvider.js.map +1 -1
  49. package/dataProviders/GET_PAGE_BY_ID.d.ts +1 -1
  50. package/dataProviders/GET_PAGE_BY_ID.js +1 -0
  51. package/dataProviders/GET_PAGE_BY_ID.js.map +1 -1
  52. package/dataProviders/GET_PAGE_BY_PATH.d.ts +1 -1
  53. package/dataProviders/GET_PAGE_BY_PATH.js +1 -0
  54. package/dataProviders/GET_PAGE_BY_PATH.js.map +1 -1
  55. package/dataProviders/LIST_PUBLISHED_PAGES.d.ts +1 -1
  56. package/dataProviders/LIST_PUBLISHED_PAGES.js +15 -4
  57. package/dataProviders/LIST_PUBLISHED_PAGES.js.map +1 -1
  58. package/dataProviders/NullDataProvider.d.ts +8 -1
  59. package/dataProviders/NullDataProvider.js +8 -1
  60. package/dataProviders/NullDataProvider.js.map +1 -1
  61. package/documentOperations/SetGlobalStyleBinding.js.map +1 -1
  62. package/documentOperations/SetInputBindingOverride.js.map +1 -1
  63. package/documentOperations/SetStyleBindingOverride.js.map +1 -1
  64. package/generateElementId.d.ts +1 -1
  65. package/generateElementId.js +0 -1
  66. package/generateElementId.js.map +1 -1
  67. package/index.d.ts +1 -1
  68. package/index.js +0 -1
  69. package/index.js.map +1 -1
  70. package/jsonPatch.d.ts +1 -1
  71. package/messenger/Messenger.js +9 -7
  72. package/messenger/Messenger.js.map +1 -1
  73. package/package.json +14 -19
  74. package/types/WebsiteBuilderTheme.d.ts +42 -45
  75. package/types/WebsiteBuilderTheme.js.map +1 -1
  76. package/types.d.ts +49 -7
  77. package/types.js.map +1 -1
  78. package/lexical/createDefaultLexicalTheme.d.ts +0 -2
  79. package/lexical/createDefaultLexicalTheme.js +0 -84
  80. package/lexical/createDefaultLexicalTheme.js.map +0 -1
  81. package/lexical/createLexicalTheme.d.ts +0 -2
  82. package/lexical/createLexicalTheme.js +0 -7
  83. package/lexical/createLexicalTheme.js.map +0 -1
  84. package/lexical/deepMerge.d.ts +0 -1
  85. package/lexical/deepMerge.js +0 -23
  86. package/lexical/deepMerge.js.map +0 -1
  87. package/types/LexicalEditorTheme.d.ts +0 -2
  88. package/types/LexicalEditorTheme.js +0 -3
  89. 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 | undefined;
20
+ inheritedFrom?: string;
21
21
  }>;
22
22
  styles: Record<string, {
23
23
  overridden: boolean;
24
- inheritedFrom?: string | undefined;
24
+ inheritedFrom?: string;
25
25
  }>;
26
26
  };
27
27
  private normalizeBindingKey;
@@ -1,3 +1,4 @@
1
+ import { describe, it, expect } from "vitest";
1
2
  import { InheritanceProcessor } from "./InheritanceProcessor.js";
2
3
  // Mock AST for inputs
3
4
  const inputsAst = [{
@@ -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,3 +1,4 @@
1
+ import { describe, it, expect } from "vitest";
1
2
  import { InputsBindingsProcessor } from "./InputBindingsProcessor.js";
2
3
  import { ElementFactory } from "./ElementFactory.js";
3
4
  describe("InputsBindingsProcessor", () => {
@@ -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":[]}
@@ -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("./jsonPatch.js").JsonPatchOperation[];
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<PublicPage[]>;
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<PublicPage[]> {\n return this.dataProvider.listPages(options);\n }\n}\n"],"mappings":"AAOA,SAASA,oBAAoB;AAE7B,OAAO,MAAMC,OAAO,CAAwB;EAGxCC,WAAWA,CAACC,YAA2B,EAAE;IACrC,IAAI,CAACA,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAMC,OAAOA,CAACC,IAAY,EAAEC,OAAwB,EAA8B;IAC9E,MAAMC,IAAI,GAAG,MAAM,IAAI,CAACJ,YAAY,CAACK,aAAa,CAACH,IAAI,EAAEC,OAAO,CAAC;IACjE,IAAIC,IAAI,EAAE;MACNP,oBAAoB,CAACS,QAAQ,CAAaF,IAAI,CAACG,UAAU,CAACC,EAAE,CAAC,CAACC,WAAW,CAACL,IAAI,CAAC;IACnF;IACA,OAAOA,IAAI;EACf;EAEAM,SAASA,CAACP,OAA0B,EAAyB;IACzD,OAAO,IAAI,CAACH,YAAY,CAACU,SAAS,CAACP,OAAO,CAAC;EAC/C;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["documentStoreManager","LiveSdk","constructor","dataProvider","getPage","path","options","page","getPageByPath","getStore","properties","id","setDocument","listPages"],"sources":["LiveSdk.ts"],"sourcesContent":["import type {\n GetPageOptions,\n IContentSdk,\n IDataProvider,\n ListPagesOptions,\n 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
- export declare const logger: import("pino").Logger<never>;
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<Page[]>;
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 { IContentSdk, Page, PublicRedirect, ResolvedComponent } from \"./types.js\";\n\nexport class NullSdk implements IContentSdk {\n async getPage(): Promise<Page | null> {\n return null;\n }\n\n listPages(): Promise<Page[]> {\n return Promise.resolve([]);\n }\n\n listRedirects(): Promise<PublicRedirect[]> {\n return Promise.resolve([]);\n }\n\n registerComponent(): void {}\n\n resolveElement(): ResolvedComponent[] | null {\n return null;\n }\n}\n"],"mappings":"AAEA,OAAO,MAAMA,OAAO,CAAwB;EACxC,MAAMC,OAAOA,CAAA,EAAyB;IAClC,OAAO,IAAI;EACf;EAEAC,SAASA,CAAA,EAAoB;IACzB,OAAOC,OAAO,CAACC,OAAO,CAAC,EAAE,CAAC;EAC9B;EAEAC,aAAaA,CAAA,EAA8B;IACvC,OAAOF,OAAO,CAACC,OAAO,CAAC,EAAE,CAAC;EAC9B;EAEAE,iBAAiBA,CAAA,EAAS,CAAC;EAE3BC,cAAcA,CAAA,EAA+B;IACzC,OAAO,IAAI;EACf;AACJ","ignoreList":[]}
1
+ {"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<PublicPage[]>;
7
+ listPages(options?: ListPagesOptions): Promise<ListPagesResult>;
8
8
  }
package/PreviewSdk.js CHANGED
@@ -14,8 +14,8 @@ export class PreviewSdk {
14
14
  }
15
15
  return this.dataProvider.getPageById(previewDocument.getId());
16
16
  }
17
- async listPages() {
18
- return this.liveSdk.listPages();
17
+ async listPages(options) {
18
+ return this.liveSdk.listPages(options);
19
19
  }
20
20
  }
21
21
 
package/PreviewSdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["PreviewDocument","PreviewSdk","constructor","dataProvider","liveSdk","getPage","path","previewDocument","createFromHeaders","matches","type","getPageById","getId","listPages"],"sources":["PreviewSdk.ts"],"sourcesContent":["import type { IContentSdk, IDataProvider, PublicPage } from \"~/types.js\";\nimport { PreviewDocument } from \"~/PreviewDocument.js\";\n\nexport class PreviewSdk implements IContentSdk {\n private liveSdk: IContentSdk;\n private dataProvider: IDataProvider;\n\n constructor(dataProvider: IDataProvider, liveSdk: IContentSdk) {\n this.liveSdk = liveSdk;\n this.dataProvider = dataProvider;\n }\n\n async getPage(path: string): Promise<PublicPage | null> {\n const previewDocument = await PreviewDocument.createFromHeaders();\n if (!previewDocument.matches({ type: \"page\", path })) {\n return this.liveSdk.getPage(path);\n }\n return this.dataProvider.getPageById(previewDocument.getId());\n }\n\n async listPages(): Promise<PublicPage[]> {\n return this.liveSdk.listPages();\n }\n}\n"],"mappings":"AACA,SAASA,eAAe;AAExB,OAAO,MAAMC,UAAU,CAAwB;EAI3CC,WAAWA,CAACC,YAA2B,EAAEC,OAAoB,EAAE;IAC3D,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACD,YAAY,GAAGA,YAAY;EACpC;EAEA,MAAME,OAAOA,CAACC,IAAY,EAA8B;IACpD,MAAMC,eAAe,GAAG,MAAMP,eAAe,CAACQ,iBAAiB,CAAC,CAAC;IACjE,IAAI,CAACD,eAAe,CAACE,OAAO,CAAC;MAAEC,IAAI,EAAE,MAAM;MAAEJ;IAAK,CAAC,CAAC,EAAE;MAClD,OAAO,IAAI,CAACF,OAAO,CAACC,OAAO,CAACC,IAAI,CAAC;IACrC;IACA,OAAO,IAAI,CAACH,YAAY,CAACQ,WAAW,CAACJ,eAAe,CAACK,KAAK,CAAC,CAAC,CAAC;EACjE;EAEA,MAAMC,SAASA,CAAA,EAA0B;IACrC,OAAO,IAAI,CAACT,OAAO,CAACS,SAAS,CAAC,CAAC;EACnC;AACJ","ignoreList":[]}
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":[]}
@@ -4,6 +4,5 @@ export declare class PreviewViewport {
4
4
  [x: string]: ElementBoxData | ElementSlotBoxData;
5
5
  };
6
6
  getViewport(): import("./ViewportManager.js").ViewportInfo;
7
- getVisibleBoxes(): Record<string, ElementBoxData | ElementSlotBoxData>;
8
7
  destroy(): void;
9
8
  }
@@ -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
 
@@ -1 +1 @@
1
- {"version":3,"names":["viewportManager","PreviewViewport","getBoxes","elementBoxes","elements","document","querySelectorAll","forEach","element","id","getAttribute","depth","rect","firstElementChild","getBoundingClientRect","type","parseInt","parentId","parentSlot","parentIndex","top","left","width","height","slotBoxes","elementSlots","slot","getViewport","getVisibleBoxes","allBoxes","viewport","visibleBoxes","box","Object","entries","bottom","right","isVisible","destroy"],"sources":["PreviewViewport.ts"],"sourcesContent":["import type { ElementBoxData, ElementSlotBoxData } from \"~/types.js\";\nimport { viewportManager } from \"./ViewportManager.js\";\n\nexport class PreviewViewport {\n getBoxes() {\n const elementBoxes: Record<string, ElementBoxData> = {};\n\n // Collect positions for all elements\n const elements = document.querySelectorAll(\"[data-element-id]\");\n\n elements.forEach(element => {\n const id = element.getAttribute(\"data-element-id\");\n const depth = element.getAttribute(\"data-depth\");\n if (id) {\n // Get the bounding box relative to the viewport\n const rect = element.firstElementChild?.getBoundingClientRect();\n\n if (!rect) {\n return;\n }\n\n // Convert DOMRect to a plain object to ensure it can be serialized\n elementBoxes[id] = {\n type: \"element\",\n depth: parseInt(depth ?? \"0\"),\n parentId: element.getAttribute(\"data-parent-id\")!,\n parentSlot: element.getAttribute(\"data-parent-slot\")!,\n parentIndex: parseInt(element.getAttribute(\"data-parent-index\") ?? \"0\"),\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height\n };\n }\n });\n\n // Collect positions for all element slots\n const slotBoxes: Record<string, ElementSlotBoxData> = {};\n\n const elementSlots = document.querySelectorAll(\"[data-role='element-slot']\");\n\n elementSlots.forEach(element => {\n const parentId = element.getAttribute(\"data-parent-id\");\n const slot = element.getAttribute(\"data-parent-slot\");\n const depth = element.getAttribute(\"data-depth\");\n\n // Get the bounding box relative to the viewport\n const rect = element.getBoundingClientRect();\n\n // Convert DOMRect to a plain object to ensure it can be serialized\n slotBoxes[`${parentId}:${slot}`] = {\n type: \"element-slot\",\n depth: parseInt(depth ?? \"0\"),\n parentId: element.getAttribute(\"data-parent-id\")!,\n parentSlot: element.getAttribute(\"data-parent-slot\")!,\n parentIndex: parseInt(element.getAttribute(\"data-parent-index\") ?? \"0\"),\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height\n };\n });\n\n return { ...elementBoxes, ...slotBoxes };\n }\n\n getViewport() {\n return viewportManager.getViewport();\n }\n\n getVisibleBoxes(): Record<string, ElementBoxData | ElementSlotBoxData> {\n const allBoxes = this.getBoxes();\n const viewport = this.getViewport();\n\n const visibleBoxes: Record<string, ElementBoxData | ElementSlotBoxData> = {};\n\n for (const [id, box] of Object.entries(allBoxes)) {\n const { top, left, width, height } = box;\n\n const bottom = top + height;\n const right = left + width;\n\n const isVisible =\n bottom > 0 && right > 0 && top < viewport.height && left < viewport.width;\n\n if (isVisible) {\n visibleBoxes[id] = box;\n }\n }\n\n return visibleBoxes;\n }\n\n destroy(): void {}\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"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
- # Website Builder SDK
1
+ # @webiny/website-builder-sdk
2
2
 
3
- An integration SDK for Webiny Website Builder.
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._
@@ -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("./jsonPatch.js").JsonPatchOperation[];
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
- lexical: createLexicalTheme(input?.lexical),
24
- styles: {
25
- colors: {
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","createLexicalTheme","Theme","from","input","custom","builtInOverrides","breakpoints","mergedBreakpoints","all","Object","entries","forEach","name","breakpoint","push","css","cssVariables","fonts","sort","a","b","maxWidth","lexical","styles","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\";\nimport { createLexicalTheme } from \"~/lexical/createLexicalTheme.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 cssVariables: input.cssVariables,\n fonts: input.fonts,\n breakpoints: breakpoints.sort((a, b) => b.maxWidth - a.maxWidth),\n lexical: createLexicalTheme(input?.lexical),\n styles: {\n colors: {\n ...input?.styles?.colors\n },\n typography: {\n ...input?.styles?.typography\n }\n }\n };\n }\n}\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,WAAW;AAMjC,SAASC,kBAAkB;AAC3B,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,GAAGT,SAAS,CAACU,GAAG,CAAC,CACpC,CAAC,CAAC,EACFT,kBAAkB,EAClBM,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,YAAY,EAAEb,KAAK,CAACa,YAAY;MAChCC,KAAK,EAAEd,KAAK,CAACc,KAAK;MAClBX,WAAW,EAAEA,WAAW,CAACY,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKA,CAAC,CAACC,QAAQ,GAAGF,CAAC,CAACE,QAAQ,CAAC;MAChEC,OAAO,EAAEtB,kBAAkB,CAACG,KAAK,EAAEmB,OAAO,CAAC;MAC3CC,MAAM,EAAE;QACJC,MAAM,EAAE;UACJ,GAAGrB,KAAK,EAAEoB,MAAM,EAAEC;QACtB,CAAC;QACDC,UAAU,EAAE;UACR,GAAGtB,KAAK,EAAEoB,MAAM,EAAEE;QACtB;MACJ;IACJ,CAAC;EACL;AACJ","ignoreList":[]}
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":[]}
@@ -2,6 +2,8 @@ import type { Breakpoint } from "./types.js";
2
2
  export interface ViewportInfo {
3
3
  width: number;
4
4
  height: number;
5
+ scrollWidth: number;
6
+ scrollHeight: number;
5
7
  scrollX: number;
6
8
  scrollY: number;
7
9
  breakpoint: string;
@@ -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
  };
@@ -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":"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","ignoreList":[]}
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":[]}