@webiny/website-builder-sdk 0.0.0-unstable.6f45466a1d → 0.0.0-unstable.7be00a75a9

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 (175) hide show
  1. package/BindingsApi.js +29 -36
  2. package/BindingsApi.js.map +1 -1
  3. package/BindingsProcessor.js +34 -43
  4. package/BindingsProcessor.js.map +1 -1
  5. package/BindingsProcessor.test.js +82 -78
  6. package/BindingsProcessor.test.js.map +1 -1
  7. package/BindingsResolver.js +92 -122
  8. package/BindingsResolver.js.map +1 -1
  9. package/BindingsResolver.test.js +399 -363
  10. package/BindingsResolver.test.js.map +1 -1
  11. package/ComponentInputTraverser.js +28 -49
  12. package/ComponentInputTraverser.js.map +1 -1
  13. package/ComponentManifestToAstConverter.js +20 -21
  14. package/ComponentManifestToAstConverter.js.map +1 -1
  15. package/ComponentRegistry.js +33 -22
  16. package/ComponentRegistry.js.map +1 -1
  17. package/ComponentResolver.js +25 -29
  18. package/ComponentResolver.js.map +1 -1
  19. package/ConstraintEvaluator.d.ts +36 -0
  20. package/ConstraintEvaluator.js +288 -0
  21. package/ConstraintEvaluator.js.map +1 -0
  22. package/ConstraintEvaluator.test.d.ts +1 -0
  23. package/ConstraintEvaluator.test.js +1634 -0
  24. package/ConstraintEvaluator.test.js.map +1 -0
  25. package/ContentSdk.d.ts +3 -3
  26. package/ContentSdk.js +83 -90
  27. package/ContentSdk.js.map +1 -1
  28. package/DocumentStore.js +47 -59
  29. package/DocumentStore.js.map +1 -1
  30. package/DocumentStoreManager.js +17 -16
  31. package/DocumentStoreManager.js.map +1 -1
  32. package/EditingSdk.d.ts +2 -2
  33. package/EditingSdk.js +87 -121
  34. package/EditingSdk.js.map +1 -1
  35. package/ElementFactory.d.ts +2 -3
  36. package/ElementFactory.js +125 -164
  37. package/ElementFactory.js.map +1 -1
  38. package/ElementFactory.test.d.ts +1 -0
  39. package/ElementFactory.test.js +251 -0
  40. package/ElementFactory.test.js.map +1 -0
  41. package/Environment.js +18 -19
  42. package/Environment.js.map +1 -1
  43. package/FunctionConverter.js +8 -7
  44. package/FunctionConverter.js.map +1 -1
  45. package/HashObject.js +11 -12
  46. package/HashObject.js.map +1 -1
  47. package/HotkeyManager.js +41 -48
  48. package/HotkeyManager.js.map +1 -1
  49. package/IBindingsUpdater.js +0 -3
  50. package/IRedirects.js +0 -3
  51. package/InheritanceProcessor.js +99 -139
  52. package/InheritanceProcessor.js.map +1 -1
  53. package/InheritanceProcessor.test.js +178 -179
  54. package/InheritanceProcessor.test.js.map +1 -1
  55. package/InheritedValueResolver.js +15 -20
  56. package/InheritedValueResolver.js.map +1 -1
  57. package/InputBindingsProcessor.js +187 -289
  58. package/InputBindingsProcessor.js.map +1 -1
  59. package/InputsBindingsProcessor.test.js +334 -314
  60. package/InputsBindingsProcessor.test.js.map +1 -1
  61. package/InputsUpdater.d.ts +1 -1
  62. package/InputsUpdater.js +23 -26
  63. package/InputsUpdater.js.map +1 -1
  64. package/LiveSdk.d.ts +2 -2
  65. package/LiveSdk.js +12 -13
  66. package/LiveSdk.js.map +1 -1
  67. package/Logger.js +9 -8
  68. package/Logger.js.map +1 -1
  69. package/MouseTracker.js +77 -83
  70. package/MouseTracker.js.map +1 -1
  71. package/NullSdk.d.ts +4 -3
  72. package/NullSdk.js +22 -14
  73. package/NullSdk.js.map +1 -1
  74. package/PreviewDocument.js +27 -30
  75. package/PreviewDocument.js.map +1 -1
  76. package/PreviewSdk.d.ts +2 -2
  77. package/PreviewSdk.js +16 -17
  78. package/PreviewSdk.js.map +1 -1
  79. package/PreviewViewport.js +51 -63
  80. package/PreviewViewport.js.map +1 -1
  81. package/ResizeObserver.js +24 -31
  82. package/ResizeObserver.js.map +1 -1
  83. package/StylesBindingsProcessor.js +40 -79
  84. package/StylesBindingsProcessor.js.map +1 -1
  85. package/StylesUpdater.d.ts +1 -1
  86. package/StylesUpdater.js +20 -25
  87. package/StylesUpdater.js.map +1 -1
  88. package/Theme.js +29 -25
  89. package/Theme.js.map +1 -1
  90. package/ViewportManager.js +89 -101
  91. package/ViewportManager.js.map +1 -1
  92. package/constants.d.ts +1 -0
  93. package/constants.js +7 -5
  94. package/constants.js.map +1 -1
  95. package/createElement.js +5 -6
  96. package/createElement.js.map +1 -1
  97. package/createInput.js +85 -143
  98. package/createInput.js.map +1 -1
  99. package/createTheme.js +2 -3
  100. package/createTheme.js.map +1 -1
  101. package/dataProviders/ApiClient.js +40 -49
  102. package/dataProviders/ApiClient.js.map +1 -1
  103. package/dataProviders/DefaultDataProvider.d.ts +2 -2
  104. package/dataProviders/DefaultDataProvider.js +55 -44
  105. package/dataProviders/DefaultDataProvider.js.map +1 -1
  106. package/dataProviders/GET_PAGE_BY_ID.d.ts +1 -1
  107. package/dataProviders/GET_PAGE_BY_ID.js +3 -1
  108. package/dataProviders/GET_PAGE_BY_ID.js.map +1 -1
  109. package/dataProviders/GET_PAGE_BY_PATH.d.ts +1 -1
  110. package/dataProviders/GET_PAGE_BY_PATH.js +3 -1
  111. package/dataProviders/GET_PAGE_BY_PATH.js.map +1 -1
  112. package/dataProviders/LIST_PUBLISHED_PAGES.d.ts +1 -1
  113. package/dataProviders/LIST_PUBLISHED_PAGES.js +16 -5
  114. package/dataProviders/LIST_PUBLISHED_PAGES.js.map +1 -1
  115. package/dataProviders/NullDataProvider.d.ts +12 -4
  116. package/dataProviders/NullDataProvider.js +21 -13
  117. package/dataProviders/NullDataProvider.js.map +1 -1
  118. package/dataProviders/RedirectsProvider.js +24 -27
  119. package/dataProviders/RedirectsProvider.js.map +1 -1
  120. package/defaultBreakpoints.js +23 -22
  121. package/defaultBreakpoints.js.map +1 -1
  122. package/documentOperations/$addElementReferenceToParent.d.ts +1 -1
  123. package/documentOperations/$addElementReferenceToParent.js +30 -26
  124. package/documentOperations/$addElementReferenceToParent.js.map +1 -1
  125. package/documentOperations/AddElement.js +8 -7
  126. package/documentOperations/AddElement.js.map +1 -1
  127. package/documentOperations/AddToParent.d.ts +2 -2
  128. package/documentOperations/AddToParent.js +14 -13
  129. package/documentOperations/AddToParent.js.map +1 -1
  130. package/documentOperations/IDocumentOperation.js +0 -3
  131. package/documentOperations/RemoveElement.js +10 -7
  132. package/documentOperations/RemoveElement.js.map +1 -1
  133. package/documentOperations/SetGlobalInputBinding.js +23 -22
  134. package/documentOperations/SetGlobalInputBinding.js.map +1 -1
  135. package/documentOperations/SetGlobalStyleBinding.js +23 -23
  136. package/documentOperations/SetGlobalStyleBinding.js.map +1 -1
  137. package/documentOperations/SetInputBindingOverride.js +30 -29
  138. package/documentOperations/SetInputBindingOverride.js.map +1 -1
  139. package/documentOperations/SetStyleBindingOverride.js +30 -31
  140. package/documentOperations/SetStyleBindingOverride.js.map +1 -1
  141. package/documentOperations/index.js +9 -8
  142. package/documentOperations/index.js.map +1 -1
  143. package/findMatchingAstNode.js +11 -13
  144. package/findMatchingAstNode.js.map +1 -1
  145. package/generateElementId.js +2 -2
  146. package/generateElementId.js.map +1 -1
  147. package/headersProvider.js +4 -3
  148. package/headersProvider.js.map +1 -1
  149. package/index.d.ts +1 -0
  150. package/index.js +1 -2
  151. package/jsonPatch.js +5 -9
  152. package/jsonPatch.js.map +1 -1
  153. package/messages.js +12 -11
  154. package/messages.js.map +1 -1
  155. package/messenger/MessageOrigin.js +12 -11
  156. package/messenger/MessageOrigin.js.map +1 -1
  157. package/messenger/Messenger.js +58 -71
  158. package/messenger/Messenger.js.map +1 -1
  159. package/messenger/index.js +0 -2
  160. package/package.json +16 -16
  161. package/registerComponentGroup.js +5 -6
  162. package/registerComponentGroup.js.map +1 -1
  163. package/types/ShorthandCssProperties.js +0 -3
  164. package/types/WebsiteBuilderTheme.d.ts +7 -0
  165. package/types/WebsiteBuilderTheme.js +0 -3
  166. package/types.d.ts +173 -11
  167. package/types.js +0 -3
  168. package/IBindingsUpdater.js.map +0 -1
  169. package/IRedirects.js.map +0 -1
  170. package/documentOperations/IDocumentOperation.js.map +0 -1
  171. package/index.js.map +0 -1
  172. package/messenger/index.js.map +0 -1
  173. package/types/ShorthandCssProperties.js.map +0 -1
  174. package/types/WebsiteBuilderTheme.js.map +0 -1
  175. package/types.js.map +0 -1
@@ -1,193 +1,192 @@
1
- import { describe, it, expect } from "vitest";
1
+ import { describe, expect, it } from "vitest";
2
2
  import { InheritanceProcessor } from "./InheritanceProcessor.js";
3
- // Mock AST for inputs
4
- const inputsAst = [{
5
- name: "rowGap",
6
- type: "text",
7
- list: false,
8
- path: "rowGap",
9
- children: [],
10
- input: {
11
- type: "text",
12
- responsive: true,
13
- name: "rowGap"
14
- }
15
- }, {
16
- name: "title",
17
- type: "text",
18
- list: false,
19
- path: "title",
20
- children: [],
21
- input: {
22
- type: "text",
23
- responsive: false,
24
- name: "title"
25
- }
26
- }];
27
- describe("InheritanceProcessor", () => {
28
- const breakpoints = ["desktop", "tablet", "mobile"];
29
- const processor = new InheritanceProcessor(breakpoints, inputsAst);
30
- it("should correctly compute inheritance info for responsive inputs and styles", () => {
31
- const bindings = {
32
- inputs: {
33
- rowGap: {
34
- static: "20px"
35
- },
36
- title: {
37
- static: "Default Title"
3
+ const inputsAst = [
4
+ {
5
+ name: "rowGap",
6
+ type: "text",
7
+ list: false,
8
+ path: "rowGap",
9
+ children: [],
10
+ input: {
11
+ type: "text",
12
+ responsive: true,
13
+ name: "rowGap"
38
14
  }
39
- },
40
- styles: {
41
- paddingTop: {
42
- static: "10px"
43
- },
44
- color: {
45
- static: "red"
15
+ },
16
+ {
17
+ name: "title",
18
+ type: "text",
19
+ list: false,
20
+ path: "title",
21
+ children: [],
22
+ input: {
23
+ type: "text",
24
+ responsive: false,
25
+ name: "title"
46
26
  }
47
- },
48
- overrides: {
49
- tablet: {
50
- styles: {
51
- paddingTop: {
52
- static: "5px"
53
- }
54
- }
55
- },
56
- mobile: {
57
- inputs: {
58
- rowGap: {
59
- static: "10px"
60
- }
61
- },
62
- styles: {
63
- paddingTop: {
64
- static: "2px"
27
+ }
28
+ ];
29
+ describe("InheritanceProcessor", ()=>{
30
+ const breakpoints = [
31
+ "desktop",
32
+ "tablet",
33
+ "mobile"
34
+ ];
35
+ const processor = new InheritanceProcessor(breakpoints, inputsAst);
36
+ it("should correctly compute inheritance info for responsive inputs and styles", ()=>{
37
+ const bindings = {
38
+ inputs: {
39
+ rowGap: {
40
+ static: "20px"
41
+ },
42
+ title: {
43
+ static: "Default Title"
44
+ }
45
+ },
46
+ styles: {
47
+ paddingTop: {
48
+ static: "10px"
49
+ },
50
+ color: {
51
+ static: "red"
52
+ }
65
53
  },
66
- color: {
67
- static: "blue"
54
+ overrides: {
55
+ tablet: {
56
+ styles: {
57
+ paddingTop: {
58
+ static: "5px"
59
+ }
60
+ }
61
+ },
62
+ mobile: {
63
+ inputs: {
64
+ rowGap: {
65
+ static: "10px"
66
+ }
67
+ },
68
+ styles: {
69
+ paddingTop: {
70
+ static: "2px"
71
+ },
72
+ color: {
73
+ static: "blue"
74
+ }
75
+ }
76
+ }
68
77
  }
69
- }
70
- }
71
- }
72
- };
73
-
74
- // desktop breakpoint
75
- const desktopResult = processor.getInheritanceMap(bindings, "desktop");
76
- expect(desktopResult.inputs["rowGap"]).toEqual({
77
- overridden: true,
78
- inheritedFrom: undefined
79
- });
80
- expect(desktopResult.inputs["title"]).toBeUndefined(); // not responsive
81
- expect(desktopResult.styles["paddingTop"]).toEqual({
82
- overridden: true,
83
- inheritedFrom: undefined
84
- });
85
- expect(desktopResult.styles["color"]).toEqual({
86
- overridden: true,
87
- inheritedFrom: undefined
88
- });
89
-
90
- // tablet breakpoint
91
- const tabletResult = processor.getInheritanceMap(bindings, "tablet");
92
- expect(tabletResult.inputs["rowGap"]).toEqual({
93
- overridden: false,
94
- inheritedFrom: "desktop"
95
- });
96
- expect(tabletResult.styles["paddingTop"]).toEqual({
97
- overridden: true,
98
- inheritedFrom: "desktop"
99
- });
100
- expect(tabletResult.styles["color"]).toEqual({
101
- overridden: false,
102
- inheritedFrom: "desktop"
103
- });
104
-
105
- // mobile breakpoint
106
- const mobileResult = processor.getInheritanceMap(bindings, "mobile");
107
- expect(mobileResult.inputs["rowGap"]).toEqual({
108
- overridden: true,
109
- inheritedFrom: "desktop"
110
- });
111
- expect(mobileResult.styles["paddingTop"]).toEqual({
112
- overridden: true,
113
- inheritedFrom: "tablet"
114
- });
115
- expect(mobileResult.styles["color"]).toEqual({
116
- overridden: true,
117
- inheritedFrom: "desktop"
118
- });
119
- });
120
- it("should skip non-responsive inputs in inheritance info", () => {
121
- const bindings = {
122
- inputs: {
123
- title: {
124
- static: "Static Title"
125
- }
126
- },
127
- styles: {},
128
- overrides: {}
129
- };
130
- const result = processor.getInheritanceMap(bindings, "desktop");
131
- expect(result.inputs["title"]).toBeUndefined();
132
- });
133
- it("should handle missing overrides gracefully", () => {
134
- const bindings = {
135
- inputs: {
136
- rowGap: {
137
- static: "20px"
138
- }
139
- },
140
- styles: {
141
- paddingTop: {
142
- static: "10px"
143
- }
144
- }
145
- // no overrides
146
- };
147
- const result = processor.getInheritanceMap(bindings, "mobile");
148
- expect(result.inputs["rowGap"]).toEqual({
149
- overridden: false,
150
- inheritedFrom: "desktop"
78
+ };
79
+ const desktopResult = processor.getInheritanceMap(bindings, "desktop");
80
+ expect(desktopResult.inputs["rowGap"]).toEqual({
81
+ overridden: true,
82
+ inheritedFrom: void 0
83
+ });
84
+ expect(desktopResult.inputs["title"]).toBeUndefined();
85
+ expect(desktopResult.styles["paddingTop"]).toEqual({
86
+ overridden: true,
87
+ inheritedFrom: void 0
88
+ });
89
+ expect(desktopResult.styles["color"]).toEqual({
90
+ overridden: true,
91
+ inheritedFrom: void 0
92
+ });
93
+ const tabletResult = processor.getInheritanceMap(bindings, "tablet");
94
+ expect(tabletResult.inputs["rowGap"]).toEqual({
95
+ overridden: false,
96
+ inheritedFrom: "desktop"
97
+ });
98
+ expect(tabletResult.styles["paddingTop"]).toEqual({
99
+ overridden: true,
100
+ inheritedFrom: "desktop"
101
+ });
102
+ expect(tabletResult.styles["color"]).toEqual({
103
+ overridden: false,
104
+ inheritedFrom: "desktop"
105
+ });
106
+ const mobileResult = processor.getInheritanceMap(bindings, "mobile");
107
+ expect(mobileResult.inputs["rowGap"]).toEqual({
108
+ overridden: true,
109
+ inheritedFrom: "desktop"
110
+ });
111
+ expect(mobileResult.styles["paddingTop"]).toEqual({
112
+ overridden: true,
113
+ inheritedFrom: "tablet"
114
+ });
115
+ expect(mobileResult.styles["color"]).toEqual({
116
+ overridden: true,
117
+ inheritedFrom: "desktop"
118
+ });
151
119
  });
152
- expect(result.styles["paddingTop"]).toEqual({
153
- overridden: false,
154
- inheritedFrom: "desktop"
120
+ it("should skip non-responsive inputs in inheritance info", ()=>{
121
+ const bindings = {
122
+ inputs: {
123
+ title: {
124
+ static: "Static Title"
125
+ }
126
+ },
127
+ styles: {},
128
+ overrides: {}
129
+ };
130
+ const result = processor.getInheritanceMap(bindings, "desktop");
131
+ expect(result.inputs["title"]).toBeUndefined();
155
132
  });
156
- });
157
- it("should handle missing ancestor values gracefully", () => {
158
- const bindings = {
159
- inputs: {},
160
- styles: {
161
- backgroundColor: {
162
- static: "#ec8787"
163
- }
164
- },
165
- overrides: {
166
- tablet: {
167
- styles: {}
168
- },
169
- mobile: {
170
- styles: {
171
- backgroundColor: {
172
- static: "#50e3c2"
133
+ it("should handle missing overrides gracefully", ()=>{
134
+ const bindings = {
135
+ inputs: {
136
+ rowGap: {
137
+ static: "20px"
138
+ }
173
139
  },
174
- marginTop: {
175
- static: "122px"
140
+ styles: {
141
+ paddingTop: {
142
+ static: "10px"
143
+ }
176
144
  }
177
- }
178
- }
179
- }
180
- };
181
- const result = processor.getInheritanceMap(bindings, "mobile");
182
- expect(result.styles["backgroundColor"]).toEqual({
183
- overridden: true,
184
- inheritedFrom: "desktop"
145
+ };
146
+ const result = processor.getInheritanceMap(bindings, "mobile");
147
+ expect(result.inputs["rowGap"]).toEqual({
148
+ overridden: false,
149
+ inheritedFrom: "desktop"
150
+ });
151
+ expect(result.styles["paddingTop"]).toEqual({
152
+ overridden: false,
153
+ inheritedFrom: "desktop"
154
+ });
185
155
  });
186
- expect(result.styles["marginTop"]).toEqual({
187
- overridden: true,
188
- inheritedFrom: "desktop"
156
+ it("should handle missing ancestor values gracefully", ()=>{
157
+ const bindings = {
158
+ inputs: {},
159
+ styles: {
160
+ backgroundColor: {
161
+ static: "#ec8787"
162
+ }
163
+ },
164
+ overrides: {
165
+ tablet: {
166
+ styles: {}
167
+ },
168
+ mobile: {
169
+ styles: {
170
+ backgroundColor: {
171
+ static: "#50e3c2"
172
+ },
173
+ marginTop: {
174
+ static: "122px"
175
+ }
176
+ }
177
+ }
178
+ }
179
+ };
180
+ const result = processor.getInheritanceMap(bindings, "mobile");
181
+ expect(result.styles["backgroundColor"]).toEqual({
182
+ overridden: true,
183
+ inheritedFrom: "desktop"
184
+ });
185
+ expect(result.styles["marginTop"]).toEqual({
186
+ overridden: true,
187
+ inheritedFrom: "desktop"
188
+ });
189
189
  });
190
- });
191
190
  });
192
191
 
193
192
  //# sourceMappingURL=InheritanceProcessor.test.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"InheritanceProcessor.test.js","sources":["../src/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"],"names":["inputsAst","describe","breakpoints","processor","InheritanceProcessor","it","bindings","desktopResult","expect","undefined","tabletResult","mobileResult","result"],"mappings":";;AAKA,MAAMA,YAA4B;IAC9B;QACI,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,UAAU,EAAE;QACZ,OAAO;YAAE,MAAM;YAAQ,YAAY;YAAM,MAAM;QAAS;IAC5D;IACA;QACI,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,UAAU,EAAE;QACZ,OAAO;YAAE,MAAM;YAAQ,YAAY;YAAO,MAAM;QAAQ;IAC5D;CACH;AAEDC,SAAS,wBAAwB;IAC7B,MAAMC,cAAc;QAAC;QAAW;QAAU;KAAS;IACnD,MAAMC,YAAY,IAAIC,qBAAqBF,aAAaF;IAExDK,GAAG,8EAA8E;QAC7E,MAAMC,WAAW;YACb,QAAQ;gBACJ,QAAQ;oBAAE,QAAQ;gBAAO;gBACzB,OAAO;oBAAE,QAAQ;gBAAgB;YACrC;YACA,QAAQ;gBACJ,YAAY;oBAAE,QAAQ;gBAAO;gBAC7B,OAAO;oBAAE,QAAQ;gBAAM;YAC3B;YACA,WAAW;gBACP,QAAQ;oBACJ,QAAQ;wBACJ,YAAY;4BAAE,QAAQ;wBAAM;oBAChC;gBACJ;gBACA,QAAQ;oBACJ,QAAQ;wBACJ,QAAQ;4BAAE,QAAQ;wBAAO;oBAC7B;oBACA,QAAQ;wBACJ,YAAY;4BAAE,QAAQ;wBAAM;wBAC5B,OAAO;4BAAE,QAAQ;wBAAO;oBAC5B;gBACJ;YACJ;QACJ;QAGA,MAAMC,gBAAgBJ,UAAU,iBAAiB,CAACG,UAAiB;QAEnEE,OAAOD,cAAc,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;YAC3C,YAAY;YACZ,eAAeE;QACnB;QACAD,OAAOD,cAAc,MAAM,CAAC,QAAQ,EAAE,aAAa;QACnDC,OAAOD,cAAc,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC;YAC/C,YAAY;YACZ,eAAeE;QACnB;QACAD,OAAOD,cAAc,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;YAC1C,YAAY;YACZ,eAAeE;QACnB;QAGA,MAAMC,eAAeP,UAAU,iBAAiB,CAACG,UAAiB;QAElEE,OAAOE,aAAa,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;YAC1C,YAAY;YACZ,eAAe;QACnB;QACAF,OAAOE,aAAa,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC;YAC9C,YAAY;YACZ,eAAe;QACnB;QACAF,OAAOE,aAAa,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;YACzC,YAAY;YACZ,eAAe;QACnB;QAGA,MAAMC,eAAeR,UAAU,iBAAiB,CAACG,UAAiB;QAElEE,OAAOG,aAAa,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;YAC1C,YAAY;YACZ,eAAe;QACnB;QACAH,OAAOG,aAAa,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC;YAC9C,YAAY;YACZ,eAAe;QACnB;QACAH,OAAOG,aAAa,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;YACzC,YAAY;YACZ,eAAe;QACnB;IACJ;IAEAN,GAAG,yDAAyD;QACxD,MAAMC,WAAW;YACb,QAAQ;gBACJ,OAAO;oBAAE,QAAQ;gBAAe;YACpC;YACA,QAAQ,CAAC;YACT,WAAW,CAAC;QAChB;QAEA,MAAMM,SAAST,UAAU,iBAAiB,CAACG,UAAiB;QAC5DE,OAAOI,OAAO,MAAM,CAAC,QAAQ,EAAE,aAAa;IAChD;IAEAP,GAAG,8CAA8C;QAC7C,MAAMC,WAAW;YACb,QAAQ;gBACJ,QAAQ;oBAAE,QAAQ;gBAAO;YAC7B;YACA,QAAQ;gBACJ,YAAY;oBAAE,QAAQ;gBAAO;YACjC;QAEJ;QAEA,MAAMM,SAAST,UAAU,iBAAiB,CAACG,UAAiB;QAC5DE,OAAOI,OAAO,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;YAAE,YAAY;YAAO,eAAe;QAAU;QACtFJ,OAAOI,OAAO,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC;YACxC,YAAY;YACZ,eAAe;QACnB;IACJ;IAEAP,GAAG,oDAAoD;QACnD,MAAMC,WAAW;YACb,QAAQ,CAAC;YACT,QAAQ;gBACJ,iBAAiB;oBACb,QAAQ;gBACZ;YACJ;YACA,WAAW;gBACP,QAAQ;oBACJ,QAAQ,CAAC;gBACb;gBACA,QAAQ;oBACJ,QAAQ;wBACJ,iBAAiB;4BACb,QAAQ;wBACZ;wBACA,WAAW;4BACP,QAAQ;wBACZ;oBACJ;gBACJ;YACJ;QACJ;QAEA,MAAMM,SAAST,UAAU,iBAAiB,CAACG,UAAiB;QAC5DE,OAAOI,OAAO,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC;YAC7C,YAAY;YACZ,eAAe;QACnB;QAEAJ,OAAOI,OAAO,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC;YACvC,YAAY;YACZ,eAAe;QACnB;IACJ;AACJ"}
@@ -1,24 +1,19 @@
1
- export class InheritedValueResolver {
2
- constructor(breakpoints, getBindings) {
3
- this.breakpoints = breakpoints;
4
- this.getBindings = getBindings;
5
- }
6
- getInheritedValue(key, breakpoint) {
7
- const currentIndex = this.breakpoints.indexOf(breakpoint);
8
- // Walk backwards from currentIndex - 1 to 0
9
- for (let i = currentIndex - 1; i >= 0; i--) {
10
- const bp = this.breakpoints[i];
11
- const bindings = this.getBindings(bp);
12
- if (!bindings) {
13
- continue;
14
- }
15
- const value = bindings[key]?.static;
16
- if (value !== undefined) {
17
- return value;
18
- }
1
+ class InheritedValueResolver {
2
+ constructor(breakpoints, getBindings){
3
+ this.breakpoints = breakpoints;
4
+ this.getBindings = getBindings;
5
+ }
6
+ getInheritedValue(key, breakpoint) {
7
+ const currentIndex = this.breakpoints.indexOf(breakpoint);
8
+ for(let i = currentIndex - 1; i >= 0; i--){
9
+ const bp = this.breakpoints[i];
10
+ const bindings = this.getBindings(bp);
11
+ if (!bindings) continue;
12
+ const value = bindings[key]?.static;
13
+ if (void 0 !== value) return value;
14
+ }
19
15
  }
20
- return undefined;
21
- }
22
16
  }
17
+ export { InheritedValueResolver };
23
18
 
24
19
  //# sourceMappingURL=InheritedValueResolver.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["InheritedValueResolver","constructor","breakpoints","getBindings","getInheritedValue","key","breakpoint","currentIndex","indexOf","i","bp","bindings","value","static","undefined"],"sources":["InheritedValueResolver.ts"],"sourcesContent":["import type { ValueBinding } from \"~/types.js\";\n\nexport interface GetBreakpointBindings {\n (breakpoint: string): Record<string, ValueBinding> | undefined;\n}\n\nexport class InheritedValueResolver {\n private readonly breakpoints: string[];\n private readonly getBindings: GetBreakpointBindings;\n\n constructor(breakpoints: string[], getBindings: GetBreakpointBindings) {\n this.breakpoints = breakpoints;\n this.getBindings = getBindings;\n }\n\n getInheritedValue(key: string, breakpoint: string): ValueBinding | undefined {\n const currentIndex = this.breakpoints.indexOf(breakpoint);\n // Walk backwards from currentIndex - 1 to 0\n for (let i = currentIndex - 1; i >= 0; i--) {\n const bp = this.breakpoints[i];\n const bindings = this.getBindings(bp);\n\n if (!bindings) {\n continue;\n }\n\n const value = bindings[key]?.static;\n if (value !== undefined) {\n return value;\n }\n }\n return undefined;\n }\n}\n"],"mappings":"AAMA,OAAO,MAAMA,sBAAsB,CAAC;EAIhCC,WAAWA,CAACC,WAAqB,EAAEC,WAAkC,EAAE;IACnE,IAAI,CAACD,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,WAAW,GAAGA,WAAW;EAClC;EAEAC,iBAAiBA,CAACC,GAAW,EAAEC,UAAkB,EAA4B;IACzE,MAAMC,YAAY,GAAG,IAAI,CAACL,WAAW,CAACM,OAAO,CAACF,UAAU,CAAC;IACzD;IACA,KAAK,IAAIG,CAAC,GAAGF,YAAY,GAAG,CAAC,EAAEE,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MACxC,MAAMC,EAAE,GAAG,IAAI,CAACR,WAAW,CAACO,CAAC,CAAC;MAC9B,MAAME,QAAQ,GAAG,IAAI,CAACR,WAAW,CAACO,EAAE,CAAC;MAErC,IAAI,CAACC,QAAQ,EAAE;QACX;MACJ;MAEA,MAAMC,KAAK,GAAGD,QAAQ,CAACN,GAAG,CAAC,EAAEQ,MAAM;MACnC,IAAID,KAAK,KAAKE,SAAS,EAAE;QACrB,OAAOF,KAAK;MAChB;IACJ;IACA,OAAOE,SAAS;EACpB;AACJ","ignoreList":[]}
1
+ {"version":3,"file":"InheritedValueResolver.js","sources":["../src/InheritedValueResolver.ts"],"sourcesContent":["import type { ValueBinding } from \"~/types.js\";\n\nexport interface GetBreakpointBindings {\n (breakpoint: string): Record<string, ValueBinding> | undefined;\n}\n\nexport class InheritedValueResolver {\n private readonly breakpoints: string[];\n private readonly getBindings: GetBreakpointBindings;\n\n constructor(breakpoints: string[], getBindings: GetBreakpointBindings) {\n this.breakpoints = breakpoints;\n this.getBindings = getBindings;\n }\n\n getInheritedValue(key: string, breakpoint: string): ValueBinding | undefined {\n const currentIndex = this.breakpoints.indexOf(breakpoint);\n // Walk backwards from currentIndex - 1 to 0\n for (let i = currentIndex - 1; i >= 0; i--) {\n const bp = this.breakpoints[i];\n const bindings = this.getBindings(bp);\n\n if (!bindings) {\n continue;\n }\n\n const value = bindings[key]?.static;\n if (value !== undefined) {\n return value;\n }\n }\n return undefined;\n }\n}\n"],"names":["InheritedValueResolver","breakpoints","getBindings","key","breakpoint","currentIndex","i","bp","bindings","value","undefined"],"mappings":"AAMO,MAAMA;IAIT,YAAYC,WAAqB,EAAEC,WAAkC,CAAE;QACnE,IAAI,CAAC,WAAW,GAAGD;QACnB,IAAI,CAAC,WAAW,GAAGC;IACvB;IAEA,kBAAkBC,GAAW,EAAEC,UAAkB,EAA4B;QACzE,MAAMC,eAAe,IAAI,CAAC,WAAW,CAAC,OAAO,CAACD;QAE9C,IAAK,IAAIE,IAAID,eAAe,GAAGC,KAAK,GAAGA,IAAK;YACxC,MAAMC,KAAK,IAAI,CAAC,WAAW,CAACD,EAAE;YAC9B,MAAME,WAAW,IAAI,CAAC,WAAW,CAACD;YAElC,IAAI,CAACC,UACD;YAGJ,MAAMC,QAAQD,QAAQ,CAACL,IAAI,EAAE;YAC7B,IAAIM,AAAUC,WAAVD,OACA,OAAOA;QAEf;IAEJ;AACJ"}