@webiny/website-builder-sdk 0.0.0-unstable.eb196ccd2f → 0.0.0-unstable.eb81deee7e
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 -77
- package/BindingsProcessor.test.js.map +1 -1
- package/BindingsResolver.d.ts +5 -2
- package/BindingsResolver.js +99 -122
- package/BindingsResolver.js.map +1 -1
- package/BindingsResolver.test.js +399 -362
- package/BindingsResolver.test.js.map +1 -1
- package/ComponentInputTraverser.js +32 -49
- package/ComponentInputTraverser.js.map +1 -1
- package/ComponentManifestToAstConverter.js +20 -21
- package/ComponentManifestToAstConverter.js.map +1 -1
- package/ComponentRegistry.d.ts +9 -0
- package/ComponentRegistry.js +38 -22
- package/ComponentRegistry.js.map +1 -1
- package/ComponentResolver.d.ts +3 -2
- package/ComponentResolver.js +39 -29
- package/ComponentResolver.js.map +1 -1
- package/ComponentResolver.test.d.ts +1 -0
- package/ComponentResolver.test.js +81 -0
- package/ComponentResolver.test.js.map +1 -0
- 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 +17 -3
- package/ContentSdk.js +113 -90
- package/ContentSdk.js.map +1 -1
- package/DocumentStore.d.ts +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 +92 -124
- package/EditingSdk.js.map +1 -1
- package/ElementFactory.d.ts +2 -3
- package/ElementFactory.js +164 -163
- package/ElementFactory.js.map +1 -1
- package/ElementFactory.objectListDefaults.test.d.ts +1 -0
- package/ElementFactory.objectListDefaults.test.js +423 -0
- package/ElementFactory.objectListDefaults.test.js.map +1 -0
- package/ElementFactory.test.d.ts +1 -0
- package/ElementFactory.test.js +353 -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.d.ts +2 -2
- package/InheritanceProcessor.js +99 -139
- package/InheritanceProcessor.js.map +1 -1
- package/InheritanceProcessor.test.js +178 -178
- package/InheritanceProcessor.test.js.map +1 -1
- package/InheritedValueResolver.d.ts +18 -1
- package/InheritedValueResolver.js +18 -20
- package/InheritedValueResolver.js.map +1 -1
- package/InputBindingsProcessor.d.ts +23 -2
- package/InputBindingsProcessor.js +200 -289
- package/InputBindingsProcessor.js.map +1 -1
- package/InputBindingsProcessorTokens.test.d.ts +1 -0
- package/InputBindingsProcessorTokens.test.js +400 -0
- package/InputBindingsProcessorTokens.test.js.map +1 -0
- package/InputsBindingsProcessor.test.js +334 -313
- 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.d.ts +2 -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.d.ts +1 -0
- package/PreviewDocument.js +30 -30
- package/PreviewDocument.js.map +1 -1
- package/PreviewSdk.d.ts +4 -3
- package/PreviewSdk.js +19 -17
- package/PreviewSdk.js.map +1 -1
- package/PreviewViewport.d.ts +0 -1
- package/PreviewViewport.js +50 -82
- package/PreviewViewport.js.map +1 -1
- package/README.md +10 -2
- package/ResizeObserver.js +24 -31
- package/ResizeObserver.js.map +1 -1
- package/StylesBindingsProcessor.d.ts +12 -2
- package/StylesBindingsProcessor.js +62 -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 +30 -32
- package/Theme.js.map +1 -1
- package/ViewportManager.d.ts +2 -0
- package/ViewportManager.js +89 -97
- package/ViewportManager.js.map +1 -1
- package/assertBindingShapes.d.ts +31 -0
- package/assertBindingShapes.js +64 -0
- package/assertBindingShapes.js.map +1 -0
- package/assertBindingShapes.test.d.ts +1 -0
- package/assertBindingShapes.test.js +131 -0
- package/assertBindingShapes.test.js.map +1 -0
- package/asset/deliveryUrl.d.ts +41 -0
- package/asset/deliveryUrl.js +34 -0
- package/asset/deliveryUrl.js.map +1 -0
- package/asset/deliveryUrl.test.d.ts +1 -0
- package/asset/deliveryUrl.test.js +127 -0
- package/asset/deliveryUrl.test.js.map +1 -0
- package/asset/geometry.d.ts +7 -0
- package/asset/geometry.js +10 -0
- package/asset/geometry.js.map +1 -0
- package/asset/imageSrcSet.d.ts +63 -0
- package/asset/imageSrcSet.js +98 -0
- package/asset/imageSrcSet.js.map +1 -0
- package/asset/imageSrcSet.test.d.ts +1 -0
- package/asset/imageSrcSet.test.js +103 -0
- package/asset/imageSrcSet.test.js.map +1 -0
- package/asset/index.d.ts +5 -0
- package/asset/index.js +5 -0
- package/asset/normalize.d.ts +24 -0
- package/asset/normalize.js +106 -0
- package/asset/normalize.js.map +1 -0
- package/asset/normalize.test.d.ts +1 -0
- package/asset/normalize.test.js +263 -0
- package/asset/normalize.test.js.map +1 -0
- package/asset/types.d.ts +2 -0
- package/asset/types.js +0 -0
- package/constants.d.ts +1 -0
- package/constants.js +7 -5
- package/constants.js.map +1 -1
- package/contentEntry/ContentEntryBindingsResolver.d.ts +30 -0
- package/contentEntry/ContentEntryBindingsResolver.js +45 -0
- package/contentEntry/ContentEntryBindingsResolver.js.map +1 -0
- package/contentEntry/ContentEntryCache.d.ts +46 -0
- package/contentEntry/ContentEntryCache.js +50 -0
- package/contentEntry/ContentEntryCache.js.map +1 -0
- package/contentEntry/resolveContentEntry.d.ts +74 -0
- package/contentEntry/resolveContentEntry.js +53 -0
- package/contentEntry/resolveContentEntry.js.map +1 -0
- package/contentEntry/resolveContentEntry.test.d.ts +1 -0
- package/contentEntry/resolveContentEntry.test.js +213 -0
- package/contentEntry/resolveContentEntry.test.js.map +1 -0
- package/createComponent.d.ts +5 -0
- package/createComponent.js +32 -0
- package/createComponent.js.map +1 -0
- package/createElement.js +5 -6
- package/createElement.js.map +1 -1
- package/createInput.d.ts +132 -16
- package/createInput.js +92 -111
- package/createInput.js.map +1 -1
- package/createTheme.js +2 -3
- package/createTheme.js.map +1 -1
- package/dataProviders/ApiClient.d.ts +10 -5
- package/dataProviders/ApiClient.js +40 -49
- package/dataProviders/ApiClient.js.map +1 -1
- package/dataProviders/DefaultDataProvider.d.ts +7 -3
- package/dataProviders/DefaultDataProvider.js +91 -45
- package/dataProviders/DefaultDataProvider.js.map +1 -1
- package/dataProviders/GET_EXPERIMENT_PAUSED.d.ts +1 -0
- package/dataProviders/GET_EXPERIMENT_PAUSED.js +17 -0
- package/dataProviders/GET_EXPERIMENT_PAUSED.js.map +1 -0
- package/dataProviders/GET_PAGE_BY_ID.d.ts +1 -1
- package/dataProviders/GET_PAGE_BY_ID.js +4 -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 +4 -1
- package/dataProviders/GET_PAGE_BY_PATH.js.map +1 -1
- package/dataProviders/GET_PAGE_EXPERIMENT.d.ts +1 -0
- package/dataProviders/GET_PAGE_EXPERIMENT.js +32 -0
- package/dataProviders/GET_PAGE_EXPERIMENT.js.map +1 -0
- package/dataProviders/GET_VARIANT_CONTENT.d.ts +1 -0
- package/dataProviders/GET_VARIANT_CONTENT.js +24 -0
- package/dataProviders/GET_VARIANT_CONTENT.js.map +1 -0
- package/dataProviders/LIST_PUBLISHED_PAGES.d.ts +1 -1
- package/dataProviders/LIST_PUBLISHED_PAGES.js +17 -5
- package/dataProviders/LIST_PUBLISHED_PAGES.js.map +1 -1
- package/dataProviders/NullDataProvider.d.ts +16 -4
- package/dataProviders/NullDataProvider.js +30 -13
- package/dataProviders/NullDataProvider.js.map +1 -1
- package/dataProviders/RedirectsProvider.js +24 -27
- package/dataProviders/RedirectsProvider.js.map +1 -1
- package/defaultBreakpoints.js +43 -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/experiments/PostHogAnalyticsProvider.d.ts +31 -0
- package/experiments/PostHogAnalyticsProvider.js +28 -0
- package/experiments/PostHogAnalyticsProvider.js.map +1 -0
- package/experiments/analyticsProvider.d.ts +4 -0
- package/experiments/analyticsProvider.js +11 -0
- package/experiments/analyticsProvider.js.map +1 -0
- package/experiments/bucketing.d.ts +27 -0
- package/experiments/bucketing.js +91 -0
- package/experiments/bucketing.js.map +1 -0
- package/experiments/bucketing.test.d.ts +1 -0
- package/experiments/bucketing.test.js +183 -0
- package/experiments/bucketing.test.js.map +1 -0
- package/experiments/index.d.ts +5 -0
- package/experiments/index.js +5 -0
- package/experiments/render.d.ts +79 -0
- package/experiments/render.js +149 -0
- package/experiments/render.js.map +1 -0
- package/experiments/types.d.ts +108 -0
- package/experiments/types.js +4 -0
- package/experiments/types.js.map +1 -0
- package/findMatchingAstNode.js +11 -13
- package/findMatchingAstNode.js.map +1 -1
- package/generateElementId.d.ts +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/image/geometry.d.ts +54 -0
- package/image/geometry.js +112 -0
- package/image/geometry.js.map +1 -0
- package/image/geometry.test.d.ts +1 -0
- package/image/geometry.test.js +190 -0
- package/image/geometry.test.js.map +1 -0
- package/image/index.d.ts +3 -0
- package/image/index.js +3 -0
- package/image/presets.d.ts +6 -0
- package/image/presets.js +20 -0
- package/image/presets.js.map +1 -0
- package/image/types.d.ts +10 -0
- package/image/types.js +0 -0
- package/index.d.ts +12 -1
- package/index.js +11 -3
- package/jsonPatch.d.ts +1 -1
- 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 +59 -70
- package/messenger/Messenger.js.map +1 -1
- package/messenger/index.js +0 -2
- package/package.json +19 -22
- package/registerComponentGroup.js +5 -6
- package/registerComponentGroup.js.map +1 -1
- package/tokenBinding.d.ts +26 -0
- package/tokenBinding.js +15 -0
- package/tokenBinding.js.map +1 -0
- package/tokenBinding.test.d.ts +1 -0
- package/tokenBinding.test.js +165 -0
- package/tokenBinding.test.js.map +1 -0
- package/types/ShorthandCssProperties.js +0 -3
- package/types/WebsiteBuilderTheme.d.ts +54 -45
- package/types/WebsiteBuilderTheme.js +0 -3
- package/types.d.ts +294 -13
- 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/lexical/createDefaultLexicalTheme.d.ts +0 -2
- package/lexical/createDefaultLexicalTheme.js +0 -84
- package/lexical/createDefaultLexicalTheme.js.map +0 -1
- package/lexical/createLexicalTheme.d.ts +0 -2
- package/lexical/createLexicalTheme.js +0 -7
- package/lexical/createLexicalTheme.js.map +0 -1
- package/lexical/deepMerge.d.ts +0 -1
- package/lexical/deepMerge.js +0 -23
- package/lexical/deepMerge.js.map +0 -1
- package/messenger/index.js.map +0 -1
- package/types/LexicalEditorTheme.d.ts +0 -2
- package/types/LexicalEditorTheme.js +0 -3
- package/types/LexicalEditorTheme.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/HotkeyManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"HotkeyManager.js","sources":["../src/HotkeyManager.ts"],"sourcesContent":["import { isHotkey } from \"is-hotkey\";\n\ninterface KeyHandler {\n id: string;\n handler: (e: KeyboardEvent) => void;\n}\n\nconst keyStack: Record<string, KeyHandler[]> = {};\nlet listenerInitialized = false;\nconst filterTags = [\"TEXTAREA\", \"INPUT\"];\n\nconst isContentEditable = (value: any) => {\n return [\"true\", true].includes(value);\n};\n\nlet idCounter = 0;\nconst generateSimpleId = () => `hotkey-${++idCounter}`;\n\nconst setupListener = (): void => {\n if (listenerInitialized || !document.body) {\n return;\n }\n\n const eventListener = (ev: KeyboardEvent) => {\n const target = ev.target as HTMLElement;\n\n if (!target) {\n return;\n }\n if (filterTags.includes(target.nodeName) || isContentEditable(target.contentEditable)) {\n return;\n }\n\n const matchedKey = Object.keys(keyStack).find(key => isHotkey(key, ev));\n if (matchedKey && keyStack[matchedKey]?.length > 0) {\n const item = keyStack[matchedKey][0];\n item.handler(ev);\n ev.stopPropagation();\n }\n };\n\n document.body.addEventListener(\"keydown\", eventListener);\n listenerInitialized = true;\n};\n\nexport class HotkeyManager {\n private readonly id: string;\n\n constructor() {\n this.id = generateSimpleId();\n setupListener();\n }\n\n add(key: string, handler: (e: KeyboardEvent) => void): void {\n keyStack[key] = keyStack[key] || [];\n const exists = keyStack[key].some(item => item.id === this.id);\n if (!exists) {\n keyStack[key].unshift({ id: this.id, handler });\n }\n }\n\n remove(key: string): void {\n if (!keyStack[key]) {\n return;\n }\n\n const index = keyStack[key].findIndex(item => item.id === this.id);\n if (index >= 0) {\n keyStack[key].splice(index, 1);\n }\n }\n}\n"],"names":["keyStack","listenerInitialized","filterTags","isContentEditable","value","idCounter","generateSimpleId","setupListener","document","eventListener","ev","target","matchedKey","Object","key","isHotkey","item","HotkeyManager","handler","exists","index"],"mappings":";AAOA,MAAMA,WAAyC,CAAC;AAChD,IAAIC,sBAAsB;AAC1B,MAAMC,aAAa;IAAC;IAAY;CAAQ;AAExC,MAAMC,oBAAoB,CAACC,QAChB;QAAC;QAAQ;KAAK,CAAC,QAAQ,CAACA;AAGnC,IAAIC,YAAY;AAChB,MAAMC,mBAAmB,IAAM,CAAC,OAAO,EAAE,EAAED,WAAW;AAEtD,MAAME,gBAAgB;IAClB,IAAIN,uBAAuB,CAACO,SAAS,IAAI,EACrC;IAGJ,MAAMC,gBAAgB,CAACC;QACnB,MAAMC,SAASD,GAAG,MAAM;QAExB,IAAI,CAACC,QACD;QAEJ,IAAIT,WAAW,QAAQ,CAACS,OAAO,QAAQ,KAAKR,kBAAkBQ,OAAO,eAAe,GAChF;QAGJ,MAAMC,aAAaC,OAAO,IAAI,CAACb,UAAU,IAAI,CAACc,CAAAA,MAAOC,SAASD,KAAKJ;QACnE,IAAIE,cAAcZ,QAAQ,CAACY,WAAW,EAAE,SAAS,GAAG;YAChD,MAAMI,OAAOhB,QAAQ,CAACY,WAAW,CAAC,EAAE;YACpCI,KAAK,OAAO,CAACN;YACbA,GAAG,eAAe;QACtB;IACJ;IAEAF,SAAS,IAAI,CAAC,gBAAgB,CAAC,WAAWC;IAC1CR,sBAAsB;AAC1B;AAEO,MAAMgB;IAGT,aAAc;QACV,IAAI,CAAC,EAAE,GAAGX;QACVC;IACJ;IAEA,IAAIO,GAAW,EAAEI,OAAmC,EAAQ;QACxDlB,QAAQ,CAACc,IAAI,GAAGd,QAAQ,CAACc,IAAI,IAAI,EAAE;QACnC,MAAMK,SAASnB,QAAQ,CAACc,IAAI,CAAC,IAAI,CAACE,CAAAA,OAAQA,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;QAC7D,IAAI,CAACG,QACDnB,QAAQ,CAACc,IAAI,CAAC,OAAO,CAAC;YAAE,IAAI,IAAI,CAAC,EAAE;YAAEI;QAAQ;IAErD;IAEA,OAAOJ,GAAW,EAAQ;QACtB,IAAI,CAACd,QAAQ,CAACc,IAAI,EACd;QAGJ,MAAMM,QAAQpB,QAAQ,CAACc,IAAI,CAAC,SAAS,CAACE,CAAAA,OAAQA,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;QACjE,IAAII,SAAS,GACTpB,QAAQ,CAACc,IAAI,CAAC,MAAM,CAACM,OAAO;IAEpC;AACJ"}
|
package/IBindingsUpdater.js
CHANGED
package/IRedirects.js
CHANGED
|
@@ -17,11 +17,11 @@ export declare class InheritanceProcessor {
|
|
|
17
17
|
getInheritanceMap(bindings: DocumentElementBindings, breakpoint: string): {
|
|
18
18
|
inputs: Record<string, {
|
|
19
19
|
overridden: boolean;
|
|
20
|
-
inheritedFrom?: string
|
|
20
|
+
inheritedFrom?: string;
|
|
21
21
|
}>;
|
|
22
22
|
styles: Record<string, {
|
|
23
23
|
overridden: boolean;
|
|
24
|
-
inheritedFrom?: string
|
|
24
|
+
inheritedFrom?: string;
|
|
25
25
|
}>;
|
|
26
26
|
};
|
|
27
27
|
private normalizeBindingKey;
|
package/InheritanceProcessor.js
CHANGED
|
@@ -1,147 +1,107 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
getInheritanceMap(bindings, breakpoint) {
|
|
7
|
-
const overrides = bindings.overrides ?? {};
|
|
8
|
-
const inputs = bindings.inputs ?? {};
|
|
9
|
-
const styles = bindings.styles ?? {};
|
|
10
|
-
const upTo = Math.max(this.breakpoints.indexOf(breakpoint), 0);
|
|
11
|
-
const currentBpIndex = this.breakpoints.indexOf(breakpoint);
|
|
12
|
-
|
|
13
|
-
// Maps now store sets of all override indices per key for correct ancestor lookup
|
|
14
|
-
const overriddenInputsMap = new Map();
|
|
15
|
-
const overriddenStylesMap = new Map();
|
|
16
|
-
|
|
17
|
-
// 1) Merge overrides and track all override indices for inputs and styles
|
|
18
|
-
for (let i = 0; i <= upTo; i++) {
|
|
19
|
-
const bp = this.breakpoints[i];
|
|
20
|
-
const override = overrides[bp];
|
|
21
|
-
if (!override) {
|
|
22
|
-
continue;
|
|
23
|
-
}
|
|
24
|
-
if (override.inputs) {
|
|
25
|
-
for (const key in override.inputs) {
|
|
26
|
-
if (!overriddenInputsMap.has(key)) {
|
|
27
|
-
overriddenInputsMap.set(key, new Set());
|
|
28
|
-
}
|
|
29
|
-
overriddenInputsMap.get(key).add(i);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
if (override.styles) {
|
|
33
|
-
for (const key in override.styles) {
|
|
34
|
-
if (!overriddenStylesMap.has(key)) {
|
|
35
|
-
overriddenStylesMap.set(key, new Set());
|
|
36
|
-
}
|
|
37
|
-
overriddenStylesMap.get(key).add(i);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
1
|
+
class InheritanceProcessor {
|
|
2
|
+
constructor(breakpoints, inputsAst){
|
|
3
|
+
this.breakpoints = breakpoints;
|
|
4
|
+
this.responsiveInputPaths = this.getResponsiveInputPaths(inputsAst);
|
|
40
5
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
overriddenInputsMap
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const isResponsive = this.responsiveInputPaths.has(normalizedKey);
|
|
63
|
-
// Skip non-responsive input keys
|
|
64
|
-
if (!isResponsive) {
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// If responsive, normalize key to ignore indexes for inheritance checks
|
|
69
|
-
const lookupKey = isResponsive ? normalizedKey : key;
|
|
70
|
-
|
|
71
|
-
// Find the greatest index <= currentBpIndex where key is overridden
|
|
72
|
-
const overrideIndices = overriddenInputsMap.get(lookupKey) ?? new Set();
|
|
73
|
-
let lastOverrideIndex = -1;
|
|
74
|
-
for (const idx of overrideIndices) {
|
|
75
|
-
if (idx <= currentBpIndex && idx > lastOverrideIndex) {
|
|
76
|
-
lastOverrideIndex = idx;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
const overridden = lastOverrideIndex === currentBpIndex;
|
|
80
|
-
|
|
81
|
-
// Find nearest ancestor breakpoint less than currentBpIndex
|
|
82
|
-
let inheritedFromIndex = 0; // Use `desktop` as fallback.
|
|
83
|
-
for (let j = currentBpIndex - 1; j >= 0; j--) {
|
|
84
|
-
if (overrideIndices.has(j)) {
|
|
85
|
-
inheritedFromIndex = j;
|
|
86
|
-
break;
|
|
6
|
+
getInheritanceMap(bindings, breakpoint) {
|
|
7
|
+
const overrides = bindings.overrides ?? {};
|
|
8
|
+
const inputs = bindings.inputs ?? {};
|
|
9
|
+
const styles = bindings.styles ?? {};
|
|
10
|
+
const upTo = Math.max(this.breakpoints.indexOf(breakpoint), 0);
|
|
11
|
+
const currentBpIndex = this.breakpoints.indexOf(breakpoint);
|
|
12
|
+
const overriddenInputsMap = new Map();
|
|
13
|
+
const overriddenStylesMap = new Map();
|
|
14
|
+
for(let i = 0; i <= upTo; i++){
|
|
15
|
+
const bp = this.breakpoints[i];
|
|
16
|
+
const override = overrides[bp];
|
|
17
|
+
if (override) {
|
|
18
|
+
if (override.inputs) for(const key in override.inputs){
|
|
19
|
+
if (!overriddenInputsMap.has(key)) overriddenInputsMap.set(key, new Set());
|
|
20
|
+
overriddenInputsMap.get(key).add(i);
|
|
21
|
+
}
|
|
22
|
+
if (override.styles) for(const key in override.styles){
|
|
23
|
+
if (!overriddenStylesMap.has(key)) overriddenStylesMap.set(key, new Set());
|
|
24
|
+
overriddenStylesMap.get(key).add(i);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
87
27
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
28
|
+
for(const key in inputs)if (overriddenInputsMap.has(key)) overriddenInputsMap.get(key).add(0);
|
|
29
|
+
else overriddenInputsMap.set(key, new Set([
|
|
30
|
+
0
|
|
31
|
+
]));
|
|
32
|
+
for(const key in styles)if (overriddenStylesMap.has(key)) overriddenStylesMap.get(key).add(0);
|
|
33
|
+
else overriddenStylesMap.set(key, new Set([
|
|
34
|
+
0
|
|
35
|
+
]));
|
|
36
|
+
const inputsInheritance = {};
|
|
37
|
+
for (const key of Object.keys(inputs)){
|
|
38
|
+
const normalizedKey = this.normalizeBindingKey(key);
|
|
39
|
+
const isResponsive = this.responsiveInputPaths.has(normalizedKey);
|
|
40
|
+
if (!isResponsive) continue;
|
|
41
|
+
const lookupKey = isResponsive ? normalizedKey : key;
|
|
42
|
+
const overrideIndices = overriddenInputsMap.get(lookupKey) ?? new Set();
|
|
43
|
+
let lastOverrideIndex = -1;
|
|
44
|
+
for (const idx of overrideIndices)if (idx <= currentBpIndex && idx > lastOverrideIndex) lastOverrideIndex = idx;
|
|
45
|
+
const overridden = lastOverrideIndex === currentBpIndex;
|
|
46
|
+
let inheritedFromIndex = 0;
|
|
47
|
+
for(let j = currentBpIndex - 1; j >= 0; j--)if (overrideIndices.has(j)) {
|
|
48
|
+
inheritedFromIndex = j;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
const inheritedFrom = inheritedFromIndex >= 0 ? this.breakpoints[inheritedFromIndex] : void 0;
|
|
52
|
+
inputsInheritance[key] = {
|
|
53
|
+
overridden,
|
|
54
|
+
inheritedFrom: breakpoint === inheritedFrom ? void 0 : inheritedFrom
|
|
55
|
+
};
|
|
105
56
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
57
|
+
const stylesInheritance = {};
|
|
58
|
+
const keys = new Set([
|
|
59
|
+
...Object.keys(styles),
|
|
60
|
+
...Array.from(overriddenStylesMap.keys())
|
|
61
|
+
]);
|
|
62
|
+
for (const key of keys){
|
|
63
|
+
const overrideIndices = overriddenStylesMap.get(key) ?? new Set();
|
|
64
|
+
let lastOverrideIndex = -1;
|
|
65
|
+
for (const idx of overrideIndices)if (idx <= currentBpIndex && idx > lastOverrideIndex) lastOverrideIndex = idx;
|
|
66
|
+
const overridden = lastOverrideIndex === currentBpIndex;
|
|
67
|
+
let inheritedFromIndex = 0;
|
|
68
|
+
for(let j = currentBpIndex - 1; j >= 0; j--)if (overrideIndices.has(j)) {
|
|
69
|
+
inheritedFromIndex = j;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
const inheritedFrom = inheritedFromIndex >= 0 ? this.breakpoints[inheritedFromIndex] : void 0;
|
|
73
|
+
stylesInheritance[key] = {
|
|
74
|
+
overridden,
|
|
75
|
+
inheritedFrom: breakpoint === inheritedFrom ? void 0 : inheritedFrom
|
|
76
|
+
};
|
|
113
77
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
78
|
+
return {
|
|
79
|
+
inputs: inputsInheritance,
|
|
80
|
+
styles: stylesInheritance
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
normalizeBindingKey(path) {
|
|
84
|
+
return path.replace(/\[\d+\]/g, "");
|
|
85
|
+
}
|
|
86
|
+
getResponsiveInputPaths(inputsAst) {
|
|
87
|
+
const responsivePaths = new Set();
|
|
88
|
+
const traverse = (nodes, prefix)=>{
|
|
89
|
+
for (const node of nodes){
|
|
90
|
+
const currentPath = [
|
|
91
|
+
...prefix,
|
|
92
|
+
node.name
|
|
93
|
+
].join("/");
|
|
94
|
+
if (node.input?.responsive) responsivePaths.add(currentPath);
|
|
95
|
+
if (node.children.length) traverse(node.children, [
|
|
96
|
+
...prefix,
|
|
97
|
+
node.name
|
|
98
|
+
]);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
traverse(inputsAst, []);
|
|
102
|
+
return responsivePaths;
|
|
120
103
|
}
|
|
121
|
-
return {
|
|
122
|
-
inputs: inputsInheritance,
|
|
123
|
-
styles: stylesInheritance
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
normalizeBindingKey(path) {
|
|
127
|
-
return path.replace(/\[\d+\]/g, "");
|
|
128
|
-
}
|
|
129
|
-
getResponsiveInputPaths(inputsAst) {
|
|
130
|
-
const responsivePaths = new Set();
|
|
131
|
-
const traverse = (nodes, prefix) => {
|
|
132
|
-
for (const node of nodes) {
|
|
133
|
-
const currentPath = [...prefix, node.name].join("/");
|
|
134
|
-
if (node.input?.responsive) {
|
|
135
|
-
responsivePaths.add(currentPath);
|
|
136
|
-
}
|
|
137
|
-
if (node.children.length) {
|
|
138
|
-
traverse(node.children, [...prefix, node.name]);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
traverse(inputsAst, []);
|
|
143
|
-
return responsivePaths;
|
|
144
|
-
}
|
|
145
104
|
}
|
|
105
|
+
export { InheritanceProcessor };
|
|
146
106
|
|
|
147
107
|
//# sourceMappingURL=InheritanceProcessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["InheritanceProcessor","constructor","breakpoints","inputsAst","responsiveInputPaths","getResponsiveInputPaths","getInheritanceMap","bindings","breakpoint","overrides","inputs","styles","upTo","Math","max","indexOf","currentBpIndex","overriddenInputsMap","Map","overriddenStylesMap","i","bp","override","key","has","set","Set","get","add","inputsInheritance","Object","keys","normalizedKey","normalizeBindingKey","isResponsive","lookupKey","overrideIndices","lastOverrideIndex","idx","overridden","inheritedFromIndex","j","inheritedFrom","undefined","stylesInheritance","Array","from","path","replace","responsivePaths","traverse","nodes","prefix","node","currentPath","name","join","input","responsive","children","length"],"sources":["InheritanceProcessor.ts"],"sourcesContent":["import type { DocumentElementBindings } from \"~/types.js\";\nimport type { InputAstNode } from \"~/ComponentManifestToAstConverter.js\";\n\nexport type InheritanceInfo = {\n inputs: Record<\n string,\n {\n overridden: boolean;\n inheritedFrom?: string;\n }\n >;\n styles: Record<\n string,\n {\n overridden: boolean;\n inheritedFrom?: string;\n }\n >;\n};\n\nexport class InheritanceProcessor {\n private breakpoints: string[];\n private responsiveInputPaths: Set<string>;\n\n constructor(breakpoints: string[], inputsAst: InputAstNode[]) {\n this.breakpoints = breakpoints;\n this.responsiveInputPaths = this.getResponsiveInputPaths(inputsAst);\n }\n\n public getInheritanceMap(bindings: DocumentElementBindings, breakpoint: string) {\n const overrides = bindings.overrides ?? {};\n const inputs = bindings.inputs ?? {};\n const styles = bindings.styles ?? {};\n\n const upTo = Math.max(this.breakpoints.indexOf(breakpoint), 0);\n const currentBpIndex = this.breakpoints.indexOf(breakpoint);\n\n // Maps now store sets of all override indices per key for correct ancestor lookup\n const overriddenInputsMap = new Map<string, Set<number>>();\n const overriddenStylesMap = new Map<string, Set<number>>();\n\n // 1) Merge overrides and track all override indices for inputs and styles\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 if (!overriddenInputsMap.has(key)) {\n overriddenInputsMap.set(key, new Set());\n }\n overriddenInputsMap.get(key)!.add(i);\n }\n }\n if (override.styles) {\n for (const key in override.styles) {\n if (!overriddenStylesMap.has(key)) {\n overriddenStylesMap.set(key, new Set());\n }\n overriddenStylesMap.get(key)!.add(i);\n }\n }\n }\n\n // Also consider base bindings as overrides at index 0 if not already present\n for (const key in inputs) {\n if (!overriddenInputsMap.has(key)) {\n overriddenInputsMap.set(key, new Set([0]));\n } else {\n overriddenInputsMap.get(key)!.add(0);\n }\n }\n for (const key in styles) {\n if (!overriddenStylesMap.has(key)) {\n overriddenStylesMap.set(key, new Set([0]));\n } else {\n overriddenStylesMap.get(key)!.add(0);\n }\n }\n\n // 2) Compute inheritance info for inputs\n const inputsInheritance: InheritanceInfo[\"inputs\"] = {};\n for (const key of Object.keys(inputs)) {\n const normalizedKey = this.normalizeBindingKey(key);\n const isResponsive = this.responsiveInputPaths.has(normalizedKey);\n // Skip non-responsive input keys\n if (!isResponsive) {\n continue;\n }\n\n // If responsive, normalize key to ignore indexes for inheritance checks\n const lookupKey = isResponsive ? normalizedKey : key;\n\n // Find the greatest index <= currentBpIndex where key is overridden\n const overrideIndices = overriddenInputsMap.get(lookupKey) ?? new Set();\n\n let lastOverrideIndex = -1;\n for (const idx of overrideIndices) {\n if (idx <= currentBpIndex && idx > lastOverrideIndex) {\n lastOverrideIndex = idx;\n }\n }\n\n const overridden = lastOverrideIndex === currentBpIndex;\n\n // Find nearest ancestor breakpoint less than currentBpIndex\n let inheritedFromIndex = 0; // Use `desktop` as fallback.\n for (let j = currentBpIndex - 1; j >= 0; j--) {\n if (overrideIndices.has(j)) {\n inheritedFromIndex = j;\n break;\n }\n }\n\n const inheritedFrom =\n inheritedFromIndex >= 0 ? this.breakpoints[inheritedFromIndex] : undefined;\n\n inputsInheritance[key] = {\n overridden,\n inheritedFrom: breakpoint === inheritedFrom ? undefined : inheritedFrom\n };\n }\n\n // 3) Compute inheritance info for styles\n const stylesInheritance: InheritanceInfo[\"styles\"] = {};\n const keys = new Set([...Object.keys(styles), ...Array.from(overriddenStylesMap.keys())]);\n\n for (const key of keys) {\n const overrideIndices = overriddenStylesMap.get(key) ?? new Set();\n\n let lastOverrideIndex = -1;\n for (const idx of overrideIndices) {\n if (idx <= currentBpIndex && idx > lastOverrideIndex) {\n lastOverrideIndex = idx;\n }\n }\n\n const overridden = lastOverrideIndex === currentBpIndex;\n\n let inheritedFromIndex = 0; // Use `desktop` as fallback.\n for (let j = currentBpIndex - 1; j >= 0; j--) {\n if (overrideIndices.has(j)) {\n inheritedFromIndex = j;\n break;\n }\n }\n\n const inheritedFrom =\n inheritedFromIndex >= 0 ? this.breakpoints[inheritedFromIndex] : undefined;\n\n stylesInheritance[key] = {\n overridden,\n inheritedFrom: breakpoint === inheritedFrom ? undefined : inheritedFrom\n };\n }\n\n return {\n inputs: inputsInheritance,\n styles: stylesInheritance\n };\n }\n\n private normalizeBindingKey(path: string): string {\n return path.replace(/\\[\\d+\\]/g, \"\");\n }\n\n private getResponsiveInputPaths(inputsAst: InputAstNode[]): Set<string> {\n const responsivePaths = new Set<string>();\n\n const traverse = (nodes: InputAstNode[], prefix: string[]) => {\n for (const node of nodes) {\n const currentPath = [...prefix, node.name].join(\"/\");\n if (node.input?.responsive) {\n responsivePaths.add(currentPath);\n }\n if (node.children.length) {\n traverse(node.children, [...prefix, node.name]);\n }\n }\n };\n\n traverse(inputsAst, []);\n return responsivePaths;\n }\n}\n"],"mappings":"AAoBA,OAAO,MAAMA,oBAAoB,CAAC;EAI9BC,WAAWA,CAACC,WAAqB,EAAEC,SAAyB,EAAE;IAC1D,IAAI,CAACD,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACE,oBAAoB,GAAG,IAAI,CAACC,uBAAuB,CAACF,SAAS,CAAC;EACvE;EAEOG,iBAAiBA,CAACC,QAAiC,EAAEC,UAAkB,EAAE;IAC5E,MAAMC,SAAS,GAAGF,QAAQ,CAACE,SAAS,IAAI,CAAC,CAAC;IAC1C,MAAMC,MAAM,GAAGH,QAAQ,CAACG,MAAM,IAAI,CAAC,CAAC;IACpC,MAAMC,MAAM,GAAGJ,QAAQ,CAACI,MAAM,IAAI,CAAC,CAAC;IAEpC,MAAMC,IAAI,GAAGC,IAAI,CAACC,GAAG,CAAC,IAAI,CAACZ,WAAW,CAACa,OAAO,CAACP,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAMQ,cAAc,GAAG,IAAI,CAACd,WAAW,CAACa,OAAO,CAACP,UAAU,CAAC;;IAE3D;IACA,MAAMS,mBAAmB,GAAG,IAAIC,GAAG,CAAsB,CAAC;IAC1D,MAAMC,mBAAmB,GAAG,IAAID,GAAG,CAAsB,CAAC;;IAE1D;IACA,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIR,IAAI,EAAEQ,CAAC,EAAE,EAAE;MAC5B,MAAMC,EAAE,GAAG,IAAI,CAACnB,WAAW,CAACkB,CAAC,CAAC;MAC9B,MAAME,QAAQ,GAAGb,SAAS,CAACY,EAAE,CAAC;MAC9B,IAAI,CAACC,QAAQ,EAAE;QACX;MACJ;MAEA,IAAIA,QAAQ,CAACZ,MAAM,EAAE;QACjB,KAAK,MAAMa,GAAG,IAAID,QAAQ,CAACZ,MAAM,EAAE;UAC/B,IAAI,CAACO,mBAAmB,CAACO,GAAG,CAACD,GAAG,CAAC,EAAE;YAC/BN,mBAAmB,CAACQ,GAAG,CAACF,GAAG,EAAE,IAAIG,GAAG,CAAC,CAAC,CAAC;UAC3C;UACAT,mBAAmB,CAACU,GAAG,CAACJ,GAAG,CAAC,CAAEK,GAAG,CAACR,CAAC,CAAC;QACxC;MACJ;MACA,IAAIE,QAAQ,CAACX,MAAM,EAAE;QACjB,KAAK,MAAMY,GAAG,IAAID,QAAQ,CAACX,MAAM,EAAE;UAC/B,IAAI,CAACQ,mBAAmB,CAACK,GAAG,CAACD,GAAG,CAAC,EAAE;YAC/BJ,mBAAmB,CAACM,GAAG,CAACF,GAAG,EAAE,IAAIG,GAAG,CAAC,CAAC,CAAC;UAC3C;UACAP,mBAAmB,CAACQ,GAAG,CAACJ,GAAG,CAAC,CAAEK,GAAG,CAACR,CAAC,CAAC;QACxC;MACJ;IACJ;;IAEA;IACA,KAAK,MAAMG,GAAG,IAAIb,MAAM,EAAE;MACtB,IAAI,CAACO,mBAAmB,CAACO,GAAG,CAACD,GAAG,CAAC,EAAE;QAC/BN,mBAAmB,CAACQ,GAAG,CAACF,GAAG,EAAE,IAAIG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC9C,CAAC,MAAM;QACHT,mBAAmB,CAACU,GAAG,CAACJ,GAAG,CAAC,CAAEK,GAAG,CAAC,CAAC,CAAC;MACxC;IACJ;IACA,KAAK,MAAML,GAAG,IAAIZ,MAAM,EAAE;MACtB,IAAI,CAACQ,mBAAmB,CAACK,GAAG,CAACD,GAAG,CAAC,EAAE;QAC/BJ,mBAAmB,CAACM,GAAG,CAACF,GAAG,EAAE,IAAIG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC9C,CAAC,MAAM;QACHP,mBAAmB,CAACQ,GAAG,CAACJ,GAAG,CAAC,CAAEK,GAAG,CAAC,CAAC,CAAC;MACxC;IACJ;;IAEA;IACA,MAAMC,iBAA4C,GAAG,CAAC,CAAC;IACvD,KAAK,MAAMN,GAAG,IAAIO,MAAM,CAACC,IAAI,CAACrB,MAAM,CAAC,EAAE;MACnC,MAAMsB,aAAa,GAAG,IAAI,CAACC,mBAAmB,CAACV,GAAG,CAAC;MACnD,MAAMW,YAAY,GAAG,IAAI,CAAC9B,oBAAoB,CAACoB,GAAG,CAACQ,aAAa,CAAC;MACjE;MACA,IAAI,CAACE,YAAY,EAAE;QACf;MACJ;;MAEA;MACA,MAAMC,SAAS,GAAGD,YAAY,GAAGF,aAAa,GAAGT,GAAG;;MAEpD;MACA,MAAMa,eAAe,GAAGnB,mBAAmB,CAACU,GAAG,CAACQ,SAAS,CAAC,IAAI,IAAIT,GAAG,CAAC,CAAC;MAEvE,IAAIW,iBAAiB,GAAG,CAAC,CAAC;MAC1B,KAAK,MAAMC,GAAG,IAAIF,eAAe,EAAE;QAC/B,IAAIE,GAAG,IAAItB,cAAc,IAAIsB,GAAG,GAAGD,iBAAiB,EAAE;UAClDA,iBAAiB,GAAGC,GAAG;QAC3B;MACJ;MAEA,MAAMC,UAAU,GAAGF,iBAAiB,KAAKrB,cAAc;;MAEvD;MACA,IAAIwB,kBAAkB,GAAG,CAAC,CAAC,CAAC;MAC5B,KAAK,IAAIC,CAAC,GAAGzB,cAAc,GAAG,CAAC,EAAEyB,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;QAC1C,IAAIL,eAAe,CAACZ,GAAG,CAACiB,CAAC,CAAC,EAAE;UACxBD,kBAAkB,GAAGC,CAAC;UACtB;QACJ;MACJ;MAEA,MAAMC,aAAa,GACfF,kBAAkB,IAAI,CAAC,GAAG,IAAI,CAACtC,WAAW,CAACsC,kBAAkB,CAAC,GAAGG,SAAS;MAE9Ed,iBAAiB,CAACN,GAAG,CAAC,GAAG;QACrBgB,UAAU;QACVG,aAAa,EAAElC,UAAU,KAAKkC,aAAa,GAAGC,SAAS,GAAGD;MAC9D,CAAC;IACL;;IAEA;IACA,MAAME,iBAA4C,GAAG,CAAC,CAAC;IACvD,MAAMb,IAAI,GAAG,IAAIL,GAAG,CAAC,CAAC,GAAGI,MAAM,CAACC,IAAI,CAACpB,MAAM,CAAC,EAAE,GAAGkC,KAAK,CAACC,IAAI,CAAC3B,mBAAmB,CAACY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzF,KAAK,MAAMR,GAAG,IAAIQ,IAAI,EAAE;MACpB,MAAMK,eAAe,GAAGjB,mBAAmB,CAACQ,GAAG,CAACJ,GAAG,CAAC,IAAI,IAAIG,GAAG,CAAC,CAAC;MAEjE,IAAIW,iBAAiB,GAAG,CAAC,CAAC;MAC1B,KAAK,MAAMC,GAAG,IAAIF,eAAe,EAAE;QAC/B,IAAIE,GAAG,IAAItB,cAAc,IAAIsB,GAAG,GAAGD,iBAAiB,EAAE;UAClDA,iBAAiB,GAAGC,GAAG;QAC3B;MACJ;MAEA,MAAMC,UAAU,GAAGF,iBAAiB,KAAKrB,cAAc;MAEvD,IAAIwB,kBAAkB,GAAG,CAAC,CAAC,CAAC;MAC5B,KAAK,IAAIC,CAAC,GAAGzB,cAAc,GAAG,CAAC,EAAEyB,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;QAC1C,IAAIL,eAAe,CAACZ,GAAG,CAACiB,CAAC,CAAC,EAAE;UACxBD,kBAAkB,GAAGC,CAAC;UACtB;QACJ;MACJ;MAEA,MAAMC,aAAa,GACfF,kBAAkB,IAAI,CAAC,GAAG,IAAI,CAACtC,WAAW,CAACsC,kBAAkB,CAAC,GAAGG,SAAS;MAE9EC,iBAAiB,CAACrB,GAAG,CAAC,GAAG;QACrBgB,UAAU;QACVG,aAAa,EAAElC,UAAU,KAAKkC,aAAa,GAAGC,SAAS,GAAGD;MAC9D,CAAC;IACL;IAEA,OAAO;MACHhC,MAAM,EAAEmB,iBAAiB;MACzBlB,MAAM,EAAEiC;IACZ,CAAC;EACL;EAEQX,mBAAmBA,CAACc,IAAY,EAAU;IAC9C,OAAOA,IAAI,CAACC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;EACvC;EAEQ3C,uBAAuBA,CAACF,SAAyB,EAAe;IACpE,MAAM8C,eAAe,GAAG,IAAIvB,GAAG,CAAS,CAAC;IAEzC,MAAMwB,QAAQ,GAAGA,CAACC,KAAqB,EAAEC,MAAgB,KAAK;MAC1D,KAAK,MAAMC,IAAI,IAAIF,KAAK,EAAE;QACtB,MAAMG,WAAW,GAAG,CAAC,GAAGF,MAAM,EAAEC,IAAI,CAACE,IAAI,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;QACpD,IAAIH,IAAI,CAACI,KAAK,EAAEC,UAAU,EAAE;UACxBT,eAAe,CAACrB,GAAG,CAAC0B,WAAW,CAAC;QACpC;QACA,IAAID,IAAI,CAACM,QAAQ,CAACC,MAAM,EAAE;UACtBV,QAAQ,CAACG,IAAI,CAACM,QAAQ,EAAE,CAAC,GAAGP,MAAM,EAAEC,IAAI,CAACE,IAAI,CAAC,CAAC;QACnD;MACJ;IACJ,CAAC;IAEDL,QAAQ,CAAC/C,SAAS,EAAE,EAAE,CAAC;IACvB,OAAO8C,eAAe;EAC1B;AACJ","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"InheritanceProcessor.js","sources":["../src/InheritanceProcessor.ts"],"sourcesContent":["import type { DocumentElementBindings } from \"~/types.js\";\nimport type { InputAstNode } from \"~/ComponentManifestToAstConverter.js\";\n\nexport type InheritanceInfo = {\n inputs: Record<\n string,\n {\n overridden: boolean;\n inheritedFrom?: string;\n }\n >;\n styles: Record<\n string,\n {\n overridden: boolean;\n inheritedFrom?: string;\n }\n >;\n};\n\nexport class InheritanceProcessor {\n private breakpoints: string[];\n private responsiveInputPaths: Set<string>;\n\n constructor(breakpoints: string[], inputsAst: InputAstNode[]) {\n this.breakpoints = breakpoints;\n this.responsiveInputPaths = this.getResponsiveInputPaths(inputsAst);\n }\n\n public getInheritanceMap(bindings: DocumentElementBindings, breakpoint: string) {\n const overrides = bindings.overrides ?? {};\n const inputs = bindings.inputs ?? {};\n const styles = bindings.styles ?? {};\n\n const upTo = Math.max(this.breakpoints.indexOf(breakpoint), 0);\n const currentBpIndex = this.breakpoints.indexOf(breakpoint);\n\n // Maps now store sets of all override indices per key for correct ancestor lookup\n const overriddenInputsMap = new Map<string, Set<number>>();\n const overriddenStylesMap = new Map<string, Set<number>>();\n\n // 1) Merge overrides and track all override indices for inputs and styles\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 if (!overriddenInputsMap.has(key)) {\n overriddenInputsMap.set(key, new Set());\n }\n overriddenInputsMap.get(key)!.add(i);\n }\n }\n if (override.styles) {\n for (const key in override.styles) {\n if (!overriddenStylesMap.has(key)) {\n overriddenStylesMap.set(key, new Set());\n }\n overriddenStylesMap.get(key)!.add(i);\n }\n }\n }\n\n // Also consider base bindings as overrides at index 0 if not already present\n for (const key in inputs) {\n if (!overriddenInputsMap.has(key)) {\n overriddenInputsMap.set(key, new Set([0]));\n } else {\n overriddenInputsMap.get(key)!.add(0);\n }\n }\n for (const key in styles) {\n if (!overriddenStylesMap.has(key)) {\n overriddenStylesMap.set(key, new Set([0]));\n } else {\n overriddenStylesMap.get(key)!.add(0);\n }\n }\n\n // 2) Compute inheritance info for inputs\n const inputsInheritance: InheritanceInfo[\"inputs\"] = {};\n for (const key of Object.keys(inputs)) {\n const normalizedKey = this.normalizeBindingKey(key);\n const isResponsive = this.responsiveInputPaths.has(normalizedKey);\n // Skip non-responsive input keys\n if (!isResponsive) {\n continue;\n }\n\n // If responsive, normalize key to ignore indexes for inheritance checks\n const lookupKey = isResponsive ? normalizedKey : key;\n\n // Find the greatest index <= currentBpIndex where key is overridden\n const overrideIndices = overriddenInputsMap.get(lookupKey) ?? new Set();\n\n let lastOverrideIndex = -1;\n for (const idx of overrideIndices) {\n if (idx <= currentBpIndex && idx > lastOverrideIndex) {\n lastOverrideIndex = idx;\n }\n }\n\n const overridden = lastOverrideIndex === currentBpIndex;\n\n // Find nearest ancestor breakpoint less than currentBpIndex\n let inheritedFromIndex = 0; // Use `desktop` as fallback.\n for (let j = currentBpIndex - 1; j >= 0; j--) {\n if (overrideIndices.has(j)) {\n inheritedFromIndex = j;\n break;\n }\n }\n\n const inheritedFrom =\n inheritedFromIndex >= 0 ? this.breakpoints[inheritedFromIndex] : undefined;\n\n inputsInheritance[key] = {\n overridden,\n inheritedFrom: breakpoint === inheritedFrom ? undefined : inheritedFrom\n };\n }\n\n // 3) Compute inheritance info for styles\n const stylesInheritance: InheritanceInfo[\"styles\"] = {};\n const keys = new Set([...Object.keys(styles), ...Array.from(overriddenStylesMap.keys())]);\n\n for (const key of keys) {\n const overrideIndices = overriddenStylesMap.get(key) ?? new Set();\n\n let lastOverrideIndex = -1;\n for (const idx of overrideIndices) {\n if (idx <= currentBpIndex && idx > lastOverrideIndex) {\n lastOverrideIndex = idx;\n }\n }\n\n const overridden = lastOverrideIndex === currentBpIndex;\n\n let inheritedFromIndex = 0; // Use `desktop` as fallback.\n for (let j = currentBpIndex - 1; j >= 0; j--) {\n if (overrideIndices.has(j)) {\n inheritedFromIndex = j;\n break;\n }\n }\n\n const inheritedFrom =\n inheritedFromIndex >= 0 ? this.breakpoints[inheritedFromIndex] : undefined;\n\n stylesInheritance[key] = {\n overridden,\n inheritedFrom: breakpoint === inheritedFrom ? undefined : inheritedFrom\n };\n }\n\n return {\n inputs: inputsInheritance,\n styles: stylesInheritance\n };\n }\n\n private normalizeBindingKey(path: string): string {\n return path.replace(/\\[\\d+\\]/g, \"\");\n }\n\n private getResponsiveInputPaths(inputsAst: InputAstNode[]): Set<string> {\n const responsivePaths = new Set<string>();\n\n const traverse = (nodes: InputAstNode[], prefix: string[]) => {\n for (const node of nodes) {\n const currentPath = [...prefix, node.name].join(\"/\");\n if (node.input?.responsive) {\n responsivePaths.add(currentPath);\n }\n if (node.children.length) {\n traverse(node.children, [...prefix, node.name]);\n }\n }\n };\n\n traverse(inputsAst, []);\n return responsivePaths;\n }\n}\n"],"names":["InheritanceProcessor","breakpoints","inputsAst","bindings","breakpoint","overrides","inputs","styles","upTo","Math","currentBpIndex","overriddenInputsMap","Map","overriddenStylesMap","i","bp","override","key","Set","inputsInheritance","Object","normalizedKey","isResponsive","lookupKey","overrideIndices","lastOverrideIndex","idx","overridden","inheritedFromIndex","j","inheritedFrom","undefined","stylesInheritance","keys","Array","path","responsivePaths","traverse","nodes","prefix","node","currentPath"],"mappings":"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"}
|