@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.
- package/BindingsApi.js +29 -36
- package/BindingsApi.js.map +1 -1
- package/BindingsProcessor.js +34 -43
- package/BindingsProcessor.js.map +1 -1
- package/BindingsProcessor.test.js +82 -78
- package/BindingsProcessor.test.js.map +1 -1
- package/BindingsResolver.js +92 -122
- package/BindingsResolver.js.map +1 -1
- package/BindingsResolver.test.js +399 -363
- package/BindingsResolver.test.js.map +1 -1
- package/ComponentInputTraverser.js +28 -49
- package/ComponentInputTraverser.js.map +1 -1
- package/ComponentManifestToAstConverter.js +20 -21
- package/ComponentManifestToAstConverter.js.map +1 -1
- package/ComponentRegistry.js +33 -22
- package/ComponentRegistry.js.map +1 -1
- package/ComponentResolver.js +25 -29
- package/ComponentResolver.js.map +1 -1
- package/ConstraintEvaluator.d.ts +36 -0
- package/ConstraintEvaluator.js +288 -0
- package/ConstraintEvaluator.js.map +1 -0
- package/ConstraintEvaluator.test.d.ts +1 -0
- package/ConstraintEvaluator.test.js +1634 -0
- package/ConstraintEvaluator.test.js.map +1 -0
- package/ContentSdk.d.ts +3 -3
- package/ContentSdk.js +83 -90
- package/ContentSdk.js.map +1 -1
- package/DocumentStore.js +47 -59
- package/DocumentStore.js.map +1 -1
- package/DocumentStoreManager.js +17 -16
- package/DocumentStoreManager.js.map +1 -1
- package/EditingSdk.d.ts +2 -2
- package/EditingSdk.js +87 -121
- package/EditingSdk.js.map +1 -1
- package/ElementFactory.d.ts +2 -3
- package/ElementFactory.js +125 -164
- package/ElementFactory.js.map +1 -1
- package/ElementFactory.test.d.ts +1 -0
- package/ElementFactory.test.js +251 -0
- package/ElementFactory.test.js.map +1 -0
- package/Environment.js +18 -19
- package/Environment.js.map +1 -1
- package/FunctionConverter.js +8 -7
- package/FunctionConverter.js.map +1 -1
- package/HashObject.js +11 -12
- package/HashObject.js.map +1 -1
- package/HotkeyManager.js +41 -48
- package/HotkeyManager.js.map +1 -1
- package/IBindingsUpdater.js +0 -3
- package/IRedirects.js +0 -3
- package/InheritanceProcessor.js +99 -139
- package/InheritanceProcessor.js.map +1 -1
- package/InheritanceProcessor.test.js +178 -179
- package/InheritanceProcessor.test.js.map +1 -1
- package/InheritedValueResolver.js +15 -20
- package/InheritedValueResolver.js.map +1 -1
- package/InputBindingsProcessor.js +187 -289
- package/InputBindingsProcessor.js.map +1 -1
- package/InputsBindingsProcessor.test.js +334 -314
- package/InputsBindingsProcessor.test.js.map +1 -1
- package/InputsUpdater.d.ts +1 -1
- package/InputsUpdater.js +23 -26
- package/InputsUpdater.js.map +1 -1
- package/LiveSdk.d.ts +2 -2
- package/LiveSdk.js +12 -13
- package/LiveSdk.js.map +1 -1
- package/Logger.js +9 -8
- package/Logger.js.map +1 -1
- package/MouseTracker.js +77 -83
- package/MouseTracker.js.map +1 -1
- package/NullSdk.d.ts +4 -3
- package/NullSdk.js +22 -14
- package/NullSdk.js.map +1 -1
- package/PreviewDocument.js +27 -30
- package/PreviewDocument.js.map +1 -1
- package/PreviewSdk.d.ts +2 -2
- package/PreviewSdk.js +16 -17
- package/PreviewSdk.js.map +1 -1
- package/PreviewViewport.js +51 -63
- package/PreviewViewport.js.map +1 -1
- package/ResizeObserver.js +24 -31
- package/ResizeObserver.js.map +1 -1
- package/StylesBindingsProcessor.js +40 -79
- package/StylesBindingsProcessor.js.map +1 -1
- package/StylesUpdater.d.ts +1 -1
- package/StylesUpdater.js +20 -25
- package/StylesUpdater.js.map +1 -1
- package/Theme.js +29 -25
- package/Theme.js.map +1 -1
- package/ViewportManager.js +89 -101
- package/ViewportManager.js.map +1 -1
- package/constants.d.ts +1 -0
- package/constants.js +7 -5
- package/constants.js.map +1 -1
- package/createElement.js +5 -6
- package/createElement.js.map +1 -1
- package/createInput.js +85 -143
- package/createInput.js.map +1 -1
- package/createTheme.js +2 -3
- package/createTheme.js.map +1 -1
- package/dataProviders/ApiClient.js +40 -49
- package/dataProviders/ApiClient.js.map +1 -1
- package/dataProviders/DefaultDataProvider.d.ts +2 -2
- package/dataProviders/DefaultDataProvider.js +55 -44
- package/dataProviders/DefaultDataProvider.js.map +1 -1
- package/dataProviders/GET_PAGE_BY_ID.d.ts +1 -1
- package/dataProviders/GET_PAGE_BY_ID.js +3 -1
- package/dataProviders/GET_PAGE_BY_ID.js.map +1 -1
- package/dataProviders/GET_PAGE_BY_PATH.d.ts +1 -1
- package/dataProviders/GET_PAGE_BY_PATH.js +3 -1
- package/dataProviders/GET_PAGE_BY_PATH.js.map +1 -1
- package/dataProviders/LIST_PUBLISHED_PAGES.d.ts +1 -1
- package/dataProviders/LIST_PUBLISHED_PAGES.js +16 -5
- package/dataProviders/LIST_PUBLISHED_PAGES.js.map +1 -1
- package/dataProviders/NullDataProvider.d.ts +12 -4
- package/dataProviders/NullDataProvider.js +21 -13
- package/dataProviders/NullDataProvider.js.map +1 -1
- package/dataProviders/RedirectsProvider.js +24 -27
- package/dataProviders/RedirectsProvider.js.map +1 -1
- package/defaultBreakpoints.js +23 -22
- package/defaultBreakpoints.js.map +1 -1
- package/documentOperations/$addElementReferenceToParent.d.ts +1 -1
- package/documentOperations/$addElementReferenceToParent.js +30 -26
- package/documentOperations/$addElementReferenceToParent.js.map +1 -1
- package/documentOperations/AddElement.js +8 -7
- package/documentOperations/AddElement.js.map +1 -1
- package/documentOperations/AddToParent.d.ts +2 -2
- package/documentOperations/AddToParent.js +14 -13
- package/documentOperations/AddToParent.js.map +1 -1
- package/documentOperations/IDocumentOperation.js +0 -3
- package/documentOperations/RemoveElement.js +10 -7
- package/documentOperations/RemoveElement.js.map +1 -1
- package/documentOperations/SetGlobalInputBinding.js +23 -22
- package/documentOperations/SetGlobalInputBinding.js.map +1 -1
- package/documentOperations/SetGlobalStyleBinding.js +23 -23
- package/documentOperations/SetGlobalStyleBinding.js.map +1 -1
- package/documentOperations/SetInputBindingOverride.js +30 -29
- package/documentOperations/SetInputBindingOverride.js.map +1 -1
- package/documentOperations/SetStyleBindingOverride.js +30 -31
- package/documentOperations/SetStyleBindingOverride.js.map +1 -1
- package/documentOperations/index.js +9 -8
- package/documentOperations/index.js.map +1 -1
- package/findMatchingAstNode.js +11 -13
- package/findMatchingAstNode.js.map +1 -1
- package/generateElementId.js +2 -2
- package/generateElementId.js.map +1 -1
- package/headersProvider.js +4 -3
- package/headersProvider.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -2
- package/jsonPatch.js +5 -9
- package/jsonPatch.js.map +1 -1
- package/messages.js +12 -11
- package/messages.js.map +1 -1
- package/messenger/MessageOrigin.js +12 -11
- package/messenger/MessageOrigin.js.map +1 -1
- package/messenger/Messenger.js +58 -71
- package/messenger/Messenger.js.map +1 -1
- package/messenger/index.js +0 -2
- package/package.json +16 -16
- package/registerComponentGroup.js +5 -6
- package/registerComponentGroup.js.map +1 -1
- package/types/ShorthandCssProperties.js +0 -3
- package/types/WebsiteBuilderTheme.d.ts +7 -0
- package/types/WebsiteBuilderTheme.js +0 -3
- package/types.d.ts +173 -11
- package/types.js +0 -3
- package/IBindingsUpdater.js.map +0 -1
- package/IRedirects.js.map +0 -1
- package/documentOperations/IDocumentOperation.js.map +0 -1
- package/index.js.map +0 -1
- package/messenger/index.js.map +0 -1
- package/types/ShorthandCssProperties.js.map +0 -1
- package/types/WebsiteBuilderTheme.js.map +0 -1
- package/types.js.map +0 -1
package/BindingsApi.js
CHANGED
|
@@ -1,42 +1,35 @@
|
|
|
1
1
|
import { createElement } from "./createElement.js";
|
|
2
2
|
import { StylesBindingsProcessor } from "./StylesBindingsProcessor.js";
|
|
3
3
|
import { InputsBindingsProcessor } from "./InputBindingsProcessor.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
applyToDocument(document) {
|
|
35
|
-
const inputs = this.inputsProcessor.createUpdate(this.inputs, this.breakpoint);
|
|
36
|
-
const styles = this.stylesProcessor.createUpdate(this.styles, this.breakpoint);
|
|
37
|
-
inputs.applyToDocument(document);
|
|
38
|
-
styles.applyToDocument(document);
|
|
39
|
-
}
|
|
4
|
+
class BindingsApi {
|
|
5
|
+
constructor(elementId, rawBindings, resolvedBindings, inputsAst, elementFactory, breakpoint){
|
|
6
|
+
this.inputs = {};
|
|
7
|
+
this.styles = {};
|
|
8
|
+
this.breakpoint = breakpoint;
|
|
9
|
+
this.breakpoints = [
|
|
10
|
+
"desktop",
|
|
11
|
+
"tablet",
|
|
12
|
+
"mobile"
|
|
13
|
+
];
|
|
14
|
+
this.inputsProcessor = new InputsBindingsProcessor(elementId, inputsAst, this.breakpoints, rawBindings, elementFactory);
|
|
15
|
+
this.stylesProcessor = new StylesBindingsProcessor(elementId, this.breakpoints, rawBindings);
|
|
16
|
+
this.inputs = this.inputsProcessor.toDeepInputs(resolvedBindings.inputs || {});
|
|
17
|
+
this.styles = this.stylesProcessor.toDeepStyles(resolvedBindings.styles || {});
|
|
18
|
+
}
|
|
19
|
+
getPublicApi() {
|
|
20
|
+
return {
|
|
21
|
+
inputs: this.inputs,
|
|
22
|
+
styles: this.styles ?? {},
|
|
23
|
+
createElement: (params)=>createElement(params)
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
applyToDocument(document) {
|
|
27
|
+
const inputs = this.inputsProcessor.createUpdate(this.inputs, this.breakpoint);
|
|
28
|
+
const styles = this.stylesProcessor.createUpdate(this.styles, this.breakpoint);
|
|
29
|
+
inputs.applyToDocument(document);
|
|
30
|
+
styles.applyToDocument(document);
|
|
31
|
+
}
|
|
40
32
|
}
|
|
33
|
+
export { BindingsApi };
|
|
41
34
|
|
|
42
35
|
//# sourceMappingURL=BindingsApi.js.map
|
package/BindingsApi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"BindingsApi.js","sources":["../src/BindingsApi.ts"],"sourcesContent":["import type { ElementFactory } from \"~/ElementFactory.js\";\nimport type { InputAstNode } from \"./ComponentManifestToAstConverter.js\";\nimport type { DocumentElementBindings, Document } from \"~/types.js\";\nimport { createElement, type CreateElementParams } from \"./createElement.js\";\nimport { StylesBindingsProcessor } from \"~/StylesBindingsProcessor.js\";\nimport { InputsBindingsProcessor } from \"~/InputBindingsProcessor.js\";\n\nexport type FlatBindings = Record<string, Record<string, any>>;\ntype DeepBindings = Record<string, any>;\n\n// The BindingsApi class manages the transformation and handling of element bindings,\n// including inputs and styles, for a document element within the editor.\nexport class BindingsApi {\n public inputs: DeepBindings = {};\n public styles: DeepBindings = {};\n private inputsProcessor: InputsBindingsProcessor;\n private stylesProcessor: StylesBindingsProcessor;\n private breakpoint: string;\n private breakpoints: string[];\n\n // TODO: refactor to pass inputs and styles processor instead of their deps.\n\n // Constructs a new BindingsApi instance for a specific element, providing its\n // raw and resolved bindings, the input AST, an element factory, and the current breakpoint.\n constructor(\n elementId: string,\n rawBindings: DocumentElementBindings,\n resolvedBindings: DocumentElementBindings,\n inputsAst: InputAstNode[],\n elementFactory: ElementFactory,\n breakpoint: string\n ) {\n this.breakpoint = breakpoint;\n // TODO: improve handling of breakpoints.\n this.breakpoints = [\"desktop\", \"tablet\", \"mobile\"];\n this.inputsProcessor = new InputsBindingsProcessor(\n elementId,\n inputsAst,\n this.breakpoints,\n rawBindings,\n elementFactory\n );\n this.stylesProcessor = new StylesBindingsProcessor(\n elementId,\n this.breakpoints,\n rawBindings\n );\n this.inputs = this.inputsProcessor.toDeepInputs(resolvedBindings.inputs || {});\n this.styles = this.stylesProcessor.toDeepStyles(resolvedBindings.styles || {});\n }\n\n // Returns the public API for this binding context, exposing deep inputs, styles,\n // and a function to create elements.\n public getPublicApi() {\n return {\n inputs: this.inputs,\n styles: this.styles ?? {},\n createElement: (params: CreateElementParams) => {\n return createElement(params);\n }\n };\n }\n\n public applyToDocument(document: Document) {\n const inputs = this.inputsProcessor.createUpdate(this.inputs, this.breakpoint);\n const styles = this.stylesProcessor.createUpdate(this.styles, this.breakpoint);\n\n inputs.applyToDocument(document);\n styles.applyToDocument(document);\n }\n}\n"],"names":["BindingsApi","elementId","rawBindings","resolvedBindings","inputsAst","elementFactory","breakpoint","InputsBindingsProcessor","StylesBindingsProcessor","params","createElement","document","inputs","styles"],"mappings":";;;AAYO,MAAMA;IAYT,YACIC,SAAiB,EACjBC,WAAoC,EACpCC,gBAAyC,EACzCC,SAAyB,EACzBC,cAA8B,EAC9BC,UAAkB,CACpB;aAlBK,MAAM,GAAiB,CAAC;aACxB,MAAM,GAAiB,CAAC;QAkB3B,IAAI,CAAC,UAAU,GAAGA;QAElB,IAAI,CAAC,WAAW,GAAG;YAAC;YAAW;YAAU;SAAS;QAClD,IAAI,CAAC,eAAe,GAAG,IAAIC,wBACvBN,WACAG,WACA,IAAI,CAAC,WAAW,EAChBF,aACAG;QAEJ,IAAI,CAAC,eAAe,GAAG,IAAIG,wBACvBP,WACA,IAAI,CAAC,WAAW,EAChBC;QAEJ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAACC,iBAAiB,MAAM,IAAI,CAAC;QAC5E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAACA,iBAAiB,MAAM,IAAI,CAAC;IAChF;IAIO,eAAe;QAClB,OAAO;YACH,QAAQ,IAAI,CAAC,MAAM;YACnB,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC;YACxB,eAAe,CAACM,SACLC,cAAcD;QAE7B;IACJ;IAEO,gBAAgBE,QAAkB,EAAE;QACvC,MAAMC,SAAS,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU;QAC7E,MAAMC,SAAS,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU;QAE7ED,OAAO,eAAe,CAACD;QACvBE,OAAO,eAAe,CAACF;IAC3B;AACJ"}
|
package/BindingsProcessor.js
CHANGED
|
@@ -1,49 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}
|
|
5
|
-
getBindings(bindings, breakpoint) {
|
|
6
|
-
const result = {
|
|
7
|
-
$repeat: bindings.$repeat,
|
|
8
|
-
inputs: {
|
|
9
|
-
...(bindings.inputs || {})
|
|
10
|
-
},
|
|
11
|
-
styles: {
|
|
12
|
-
...(bindings.styles || {})
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
const overrides = bindings.overrides ?? {};
|
|
16
|
-
let upTo = this.breakpoints.indexOf(breakpoint);
|
|
17
|
-
if (upTo === -1) {
|
|
18
|
-
upTo = 0;
|
|
1
|
+
class BindingsProcessor {
|
|
2
|
+
constructor(breakpoints){
|
|
3
|
+
this.breakpoints = breakpoints;
|
|
19
4
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
5
|
+
getBindings(bindings, breakpoint) {
|
|
6
|
+
const result = {
|
|
7
|
+
$repeat: bindings.$repeat,
|
|
8
|
+
inputs: {
|
|
9
|
+
...bindings.inputs || {}
|
|
10
|
+
},
|
|
11
|
+
styles: {
|
|
12
|
+
...bindings.styles || {}
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const overrides = bindings.overrides ?? {};
|
|
16
|
+
let upTo = this.breakpoints.indexOf(breakpoint);
|
|
17
|
+
if (-1 === upTo) upTo = 0;
|
|
18
|
+
for(let i = 0; i <= upTo; i++){
|
|
19
|
+
const bp = this.breakpoints[i];
|
|
20
|
+
const override = overrides[bp];
|
|
21
|
+
if (override) {
|
|
22
|
+
if (override.inputs) for(const key in override.inputs)result.inputs[key] = {
|
|
23
|
+
...result.inputs[key] || {},
|
|
24
|
+
...override.inputs[key]
|
|
25
|
+
};
|
|
26
|
+
if (override.styles) for(const styleKey in override.styles){
|
|
27
|
+
const key = styleKey;
|
|
28
|
+
result.styles[key] = {
|
|
29
|
+
...result.styles[key] || {},
|
|
30
|
+
...override.styles[key]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
32
34
|
}
|
|
33
|
-
|
|
34
|
-
if (override.styles) {
|
|
35
|
-
for (const styleKey in override.styles) {
|
|
36
|
-
const key = styleKey;
|
|
37
|
-
// @ts-expect-error It's hard to make CSS properties happy.
|
|
38
|
-
result.styles[key] = {
|
|
39
|
-
...(result.styles[key] || {}),
|
|
40
|
-
...override.styles[key]
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
}
|
|
35
|
+
return result;
|
|
44
36
|
}
|
|
45
|
-
return result;
|
|
46
|
-
}
|
|
47
37
|
}
|
|
38
|
+
export { BindingsProcessor };
|
|
48
39
|
|
|
49
40
|
//# sourceMappingURL=BindingsProcessor.js.map
|
package/BindingsProcessor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"BindingsProcessor.js","sources":["../src/BindingsProcessor.ts"],"sourcesContent":["import type { DocumentElementBindings, CssProperties } from \"~/types.js\";\n\ntype RequiredBindings<T extends DocumentElementBindings> = T & {\n inputs: NonNullable<T[\"inputs\"]>;\n styles: NonNullable<T[\"styles\"]>;\n};\n\nexport class BindingsProcessor {\n private readonly breakpoints: string[];\n\n constructor(breakpoints: string[]) {\n this.breakpoints = breakpoints;\n }\n\n public getBindings(bindings: DocumentElementBindings, breakpoint: string) {\n const result: RequiredBindings<DocumentElementBindings> = {\n $repeat: bindings.$repeat,\n inputs: { ...(bindings.inputs || {}) },\n styles: { ...(bindings.styles || {}) }\n };\n\n const overrides = bindings.overrides ?? {};\n\n let upTo = this.breakpoints.indexOf(breakpoint);\n if (upTo === -1) {\n upTo = 0;\n }\n\n for (let i = 0; i <= upTo; i++) {\n const bp = this.breakpoints[i];\n const override = overrides[bp];\n if (!override) {\n continue;\n }\n\n if (override.inputs) {\n for (const key in override.inputs) {\n result.inputs[key] = {\n ...(result.inputs![key] || {}),\n ...override.inputs[key]\n };\n }\n }\n\n if (override.styles) {\n for (const styleKey in override.styles) {\n const key = styleKey as keyof CssProperties;\n // @ts-expect-error It's hard to make CSS properties happy.\n result.styles[key] = {\n ...(result.styles[key] || {}),\n ...override.styles[key]\n };\n }\n }\n }\n\n return result;\n }\n}\n"],"names":["BindingsProcessor","breakpoints","bindings","breakpoint","result","overrides","upTo","i","bp","override","key","styleKey"],"mappings":"AAOO,MAAMA;IAGT,YAAYC,WAAqB,CAAE;QAC/B,IAAI,CAAC,WAAW,GAAGA;IACvB;IAEO,YAAYC,QAAiC,EAAEC,UAAkB,EAAE;QACtE,MAAMC,SAAoD;YACtD,SAASF,SAAS,OAAO;YACzB,QAAQ;gBAAE,GAAIA,SAAS,MAAM,IAAI,CAAC,CAAC;YAAE;YACrC,QAAQ;gBAAE,GAAIA,SAAS,MAAM,IAAI,CAAC,CAAC;YAAE;QACzC;QAEA,MAAMG,YAAYH,SAAS,SAAS,IAAI,CAAC;QAEzC,IAAII,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAACH;QACpC,IAAIG,AAAS,OAATA,MACAA,OAAO;QAGX,IAAK,IAAIC,IAAI,GAAGA,KAAKD,MAAMC,IAAK;YAC5B,MAAMC,KAAK,IAAI,CAAC,WAAW,CAACD,EAAE;YAC9B,MAAME,WAAWJ,SAAS,CAACG,GAAG;YAC9B,IAAKC;gBAIL,IAAIA,SAAS,MAAM,EACf,IAAK,MAAMC,OAAOD,SAAS,MAAM,CAC7BL,OAAO,MAAM,CAACM,IAAI,GAAG;oBACjB,GAAIN,OAAO,MAAO,CAACM,IAAI,IAAI,CAAC,CAAC;oBAC7B,GAAGD,SAAS,MAAM,CAACC,IAAI;gBAC3B;gBAIR,IAAID,SAAS,MAAM,EACf,IAAK,MAAME,YAAYF,SAAS,MAAM,CAAE;oBACpC,MAAMC,MAAMC;oBAEZP,OAAO,MAAM,CAACM,IAAI,GAAG;wBACjB,GAAIN,OAAO,MAAM,CAACM,IAAI,IAAI,CAAC,CAAC;wBAC5B,GAAGD,SAAS,MAAM,CAACC,IAAI;oBAC3B;gBACJ;;QAER;QAEA,OAAON;IACX;AACJ"}
|
|
@@ -1,87 +1,91 @@
|
|
|
1
|
-
import { describe,
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
2
|
import { BindingsProcessor } from "./BindingsProcessor.js";
|
|
3
|
-
describe("BindingsProcessor", ()
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
type: "text"
|
|
12
|
-
},
|
|
13
|
-
count: {
|
|
14
|
-
id: "count",
|
|
15
|
-
static: 1,
|
|
16
|
-
type: "number",
|
|
17
|
-
expression: "$state.count"
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
styles: {
|
|
21
|
-
paddingTop: {
|
|
22
|
-
static: "10px"
|
|
23
|
-
},
|
|
24
|
-
backgroundColor: {
|
|
25
|
-
static: "white"
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
overrides: {
|
|
29
|
-
tablet: {
|
|
3
|
+
describe("BindingsProcessor", ()=>{
|
|
4
|
+
const breakpoints = [
|
|
5
|
+
"desktop",
|
|
6
|
+
"tablet",
|
|
7
|
+
"mobile"
|
|
8
|
+
];
|
|
9
|
+
const processor = new BindingsProcessor(breakpoints);
|
|
10
|
+
const bindings = {
|
|
30
11
|
inputs: {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
12
|
+
title: {
|
|
13
|
+
id: "title",
|
|
14
|
+
static: "Hello",
|
|
15
|
+
type: "text"
|
|
16
|
+
},
|
|
17
|
+
count: {
|
|
18
|
+
id: "count",
|
|
19
|
+
static: 1,
|
|
20
|
+
type: "number",
|
|
21
|
+
expression: "$state.count"
|
|
22
|
+
}
|
|
36
23
|
},
|
|
37
24
|
styles: {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
inputs: {
|
|
45
|
-
count: {
|
|
46
|
-
id: "count",
|
|
47
|
-
static: 3,
|
|
48
|
-
type: "number"
|
|
49
|
-
}
|
|
25
|
+
paddingTop: {
|
|
26
|
+
static: "10px"
|
|
27
|
+
},
|
|
28
|
+
backgroundColor: {
|
|
29
|
+
static: "white"
|
|
30
|
+
}
|
|
50
31
|
},
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
32
|
+
overrides: {
|
|
33
|
+
tablet: {
|
|
34
|
+
inputs: {
|
|
35
|
+
title: {
|
|
36
|
+
id: "title",
|
|
37
|
+
static: "Hello Tablet",
|
|
38
|
+
type: "text"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
styles: {
|
|
42
|
+
backgroundColor: {
|
|
43
|
+
static: "gray"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
mobile: {
|
|
48
|
+
inputs: {
|
|
49
|
+
count: {
|
|
50
|
+
id: "count",
|
|
51
|
+
static: 3,
|
|
52
|
+
type: "number"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
styles: {
|
|
56
|
+
paddingTop: {
|
|
57
|
+
static: "5px"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
55
61
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
expect(result.styles).toEqual(bindings.styles);
|
|
84
|
-
});
|
|
62
|
+
};
|
|
63
|
+
it("should return unmodified bindings when base breakpoint is specified", ()=>{
|
|
64
|
+
const result = processor.getBindings(bindings, "desktop");
|
|
65
|
+
expect(result.inputs).toEqual(bindings.inputs);
|
|
66
|
+
expect(result.styles).toEqual(bindings.styles);
|
|
67
|
+
});
|
|
68
|
+
it("should merge tablet overrides", ()=>{
|
|
69
|
+
const result = processor.getBindings(bindings, "tablet");
|
|
70
|
+
expect(result.inputs?.title.static).toBe("Hello Tablet");
|
|
71
|
+
expect(result.inputs?.count.static).toBe(1);
|
|
72
|
+
expect(result.inputs?.count.expression).toBe("$state.count");
|
|
73
|
+
expect(result.styles?.backgroundColor?.static).toBe("gray");
|
|
74
|
+
expect(result.styles?.paddingTop?.static).toBe("10px");
|
|
75
|
+
});
|
|
76
|
+
it("should merge mobile and tablet overrides", ()=>{
|
|
77
|
+
const result = processor.getBindings(bindings, "mobile");
|
|
78
|
+
expect(result.inputs?.title.static).toBe("Hello Tablet");
|
|
79
|
+
expect(result.inputs?.count.static).toBe(3);
|
|
80
|
+
expect(result.inputs?.count.expression).toBe("$state.count");
|
|
81
|
+
expect(result.styles?.backgroundColor?.static).toBe("gray");
|
|
82
|
+
expect(result.styles?.paddingTop?.static).toBe("5px");
|
|
83
|
+
});
|
|
84
|
+
it("should ignore unknown breakpoints", ()=>{
|
|
85
|
+
const result = processor.getBindings(bindings, "unknown");
|
|
86
|
+
expect(result.inputs).toEqual(bindings.inputs);
|
|
87
|
+
expect(result.styles).toEqual(bindings.styles);
|
|
88
|
+
});
|
|
85
89
|
});
|
|
86
90
|
|
|
87
91
|
//# sourceMappingURL=BindingsProcessor.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"BindingsProcessor.test.js","sources":["../src/BindingsProcessor.test.ts"],"sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { BindingsProcessor } from \"./BindingsProcessor.js\";\nimport type { DocumentElementBindings } from \"~/types.js\";\n\ndescribe(\"BindingsProcessor\", () => {\n const breakpoints = [\"desktop\", \"tablet\", \"mobile\"];\n const processor = new BindingsProcessor(breakpoints);\n\n const bindings: DocumentElementBindings = {\n inputs: {\n title: { id: \"title\", static: \"Hello\", type: \"text\" },\n count: { id: \"count\", static: 1, type: \"number\", expression: \"$state.count\" }\n },\n styles: {\n paddingTop: { static: \"10px\" },\n backgroundColor: { static: \"white\" }\n },\n overrides: {\n tablet: {\n inputs: {\n title: { id: \"title\", static: \"Hello Tablet\", type: \"text\" }\n },\n styles: {\n backgroundColor: { static: \"gray\" }\n }\n },\n mobile: {\n inputs: {\n count: { id: \"count\", static: 3, type: \"number\" }\n },\n styles: {\n paddingTop: { static: \"5px\" }\n }\n }\n }\n };\n\n it(\"should return unmodified bindings when base breakpoint is specified\", () => {\n const result = processor.getBindings(bindings, \"desktop\");\n expect(result.inputs).toEqual(bindings.inputs);\n expect(result.styles).toEqual(bindings.styles);\n });\n\n it(\"should merge tablet overrides\", () => {\n const result = processor.getBindings(bindings, \"tablet\");\n expect(result.inputs?.title.static).toBe(\"Hello Tablet\");\n expect(result.inputs?.count.static).toBe(1);\n expect(result.inputs?.count.expression).toBe(\"$state.count\");\n expect(result.styles?.backgroundColor?.static).toBe(\"gray\");\n expect(result.styles?.paddingTop?.static).toBe(\"10px\");\n });\n\n it(\"should merge mobile and tablet overrides\", () => {\n const result = processor.getBindings(bindings, \"mobile\");\n expect(result.inputs?.title.static).toBe(\"Hello Tablet\");\n expect(result.inputs?.count.static).toBe(3);\n expect(result.inputs?.count.expression).toBe(\"$state.count\");\n expect(result.styles?.backgroundColor?.static).toBe(\"gray\");\n expect(result.styles?.paddingTop?.static).toBe(\"5px\");\n });\n\n it(\"should ignore unknown breakpoints\", () => {\n const result = processor.getBindings(bindings, \"unknown\");\n expect(result.inputs).toEqual(bindings.inputs);\n expect(result.styles).toEqual(bindings.styles);\n });\n});\n"],"names":["describe","breakpoints","processor","BindingsProcessor","bindings","it","result","expect"],"mappings":";;AAIAA,SAAS,qBAAqB;IAC1B,MAAMC,cAAc;QAAC;QAAW;QAAU;KAAS;IACnD,MAAMC,YAAY,IAAIC,kBAAkBF;IAExC,MAAMG,WAAoC;QACtC,QAAQ;YACJ,OAAO;gBAAE,IAAI;gBAAS,QAAQ;gBAAS,MAAM;YAAO;YACpD,OAAO;gBAAE,IAAI;gBAAS,QAAQ;gBAAG,MAAM;gBAAU,YAAY;YAAe;QAChF;QACA,QAAQ;YACJ,YAAY;gBAAE,QAAQ;YAAO;YAC7B,iBAAiB;gBAAE,QAAQ;YAAQ;QACvC;QACA,WAAW;YACP,QAAQ;gBACJ,QAAQ;oBACJ,OAAO;wBAAE,IAAI;wBAAS,QAAQ;wBAAgB,MAAM;oBAAO;gBAC/D;gBACA,QAAQ;oBACJ,iBAAiB;wBAAE,QAAQ;oBAAO;gBACtC;YACJ;YACA,QAAQ;gBACJ,QAAQ;oBACJ,OAAO;wBAAE,IAAI;wBAAS,QAAQ;wBAAG,MAAM;oBAAS;gBACpD;gBACA,QAAQ;oBACJ,YAAY;wBAAE,QAAQ;oBAAM;gBAChC;YACJ;QACJ;IACJ;IAEAC,GAAG,uEAAuE;QACtE,MAAMC,SAASJ,UAAU,WAAW,CAACE,UAAU;QAC/CG,OAAOD,OAAO,MAAM,EAAE,OAAO,CAACF,SAAS,MAAM;QAC7CG,OAAOD,OAAO,MAAM,EAAE,OAAO,CAACF,SAAS,MAAM;IACjD;IAEAC,GAAG,iCAAiC;QAChC,MAAMC,SAASJ,UAAU,WAAW,CAACE,UAAU;QAC/CG,OAAOD,OAAO,MAAM,EAAE,MAAM,QAAQ,IAAI,CAAC;QACzCC,OAAOD,OAAO,MAAM,EAAE,MAAM,QAAQ,IAAI,CAAC;QACzCC,OAAOD,OAAO,MAAM,EAAE,MAAM,YAAY,IAAI,CAAC;QAC7CC,OAAOD,OAAO,MAAM,EAAE,iBAAiB,QAAQ,IAAI,CAAC;QACpDC,OAAOD,OAAO,MAAM,EAAE,YAAY,QAAQ,IAAI,CAAC;IACnD;IAEAD,GAAG,4CAA4C;QAC3C,MAAMC,SAASJ,UAAU,WAAW,CAACE,UAAU;QAC/CG,OAAOD,OAAO,MAAM,EAAE,MAAM,QAAQ,IAAI,CAAC;QACzCC,OAAOD,OAAO,MAAM,EAAE,MAAM,QAAQ,IAAI,CAAC;QACzCC,OAAOD,OAAO,MAAM,EAAE,MAAM,YAAY,IAAI,CAAC;QAC7CC,OAAOD,OAAO,MAAM,EAAE,iBAAiB,QAAQ,IAAI,CAAC;QACpDC,OAAOD,OAAO,MAAM,EAAE,YAAY,QAAQ,IAAI,CAAC;IACnD;IAEAD,GAAG,qCAAqC;QACpC,MAAMC,SAASJ,UAAU,WAAW,CAACE,UAAU;QAC/CG,OAAOD,OAAO,MAAM,EAAE,OAAO,CAACF,SAAS,MAAM;QAC7CG,OAAOD,OAAO,MAAM,EAAE,OAAO,CAACF,SAAS,MAAM;IACjD;AACJ"}
|