@repobit/dex-store-elements 1.7.2 → 2.0.0

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 (227) hide show
  1. package/CHANGELOG.md +5 -905
  2. package/README.md +9 -7
  3. package/dist/src/actions/action.adapter.d.ts +36 -0
  4. package/dist/src/actions/action.adapter.js +183 -0
  5. package/dist/src/actions/action.adapter.js.map +1 -0
  6. package/dist/src/actions/action.attributes.d.ts +15 -0
  7. package/dist/src/actions/action.attributes.js +137 -0
  8. package/dist/src/actions/action.attributes.js.map +1 -0
  9. package/dist/src/actions/action.registry.d.ts +4 -0
  10. package/dist/src/actions/action.registry.js +119 -0
  11. package/dist/src/actions/action.registry.js.map +1 -0
  12. package/dist/src/actions/index.d.ts +3 -2
  13. package/dist/src/actions/index.js +3 -80
  14. package/dist/src/actions/index.js.map +1 -1
  15. package/dist/src/compute/compute.expand.d.ts +70 -0
  16. package/dist/src/compute/compute.expand.js +319 -0
  17. package/dist/src/compute/compute.expand.js.map +1 -0
  18. package/dist/src/compute/compute.scan.d.ts +54 -0
  19. package/dist/src/compute/compute.scan.js +160 -0
  20. package/dist/src/compute/compute.scan.js.map +1 -0
  21. package/dist/src/compute/option-resolver.d.ts +31 -0
  22. package/dist/src/compute/option-resolver.js +147 -0
  23. package/dist/src/compute/option-resolver.js.map +1 -0
  24. package/dist/src/contexts/context.compute.d.ts +12 -0
  25. package/dist/src/contexts/context.compute.js +4 -0
  26. package/dist/src/contexts/context.compute.js.map +1 -0
  27. package/dist/src/contexts/context.scope.d.ts +139 -0
  28. package/dist/src/contexts/context.scope.js +48 -0
  29. package/dist/src/contexts/context.scope.js.map +1 -0
  30. package/dist/src/controllers/controller.action-resolve.d.ts +110 -0
  31. package/dist/src/controllers/controller.action-resolve.js +203 -0
  32. package/dist/src/controllers/controller.action-resolve.js.map +1 -0
  33. package/dist/src/controllers/controller.action-topology.d.ts +59 -0
  34. package/dist/src/controllers/controller.action-topology.js +130 -0
  35. package/dist/src/controllers/controller.action-topology.js.map +1 -0
  36. package/dist/src/controllers/controller.compute.d.ts +72 -0
  37. package/dist/src/controllers/controller.compute.js +110 -0
  38. package/dist/src/controllers/controller.compute.js.map +1 -0
  39. package/dist/src/controllers/controller.resolve.d.ts +78 -0
  40. package/dist/src/controllers/controller.resolve.js +205 -0
  41. package/dist/src/controllers/controller.resolve.js.map +1 -0
  42. package/dist/src/core/action-topology.d.ts +62 -0
  43. package/dist/src/core/action-topology.js +67 -0
  44. package/dist/src/core/action-topology.js.map +1 -0
  45. package/dist/src/core/actions.d.ts +64 -0
  46. package/dist/src/core/actions.js +47 -0
  47. package/dist/src/core/actions.js.map +1 -0
  48. package/dist/src/core/node.element.d.ts +179 -0
  49. package/dist/src/core/node.element.js +573 -0
  50. package/dist/src/core/node.element.js.map +1 -0
  51. package/dist/src/core/node.scope.d.ts +374 -0
  52. package/dist/src/core/node.scope.js +558 -0
  53. package/dist/src/core/node.scope.js.map +1 -0
  54. package/dist/src/core/option-update.d.ts +11 -0
  55. package/dist/src/core/option-update.js +59 -0
  56. package/dist/src/core/option-update.js.map +1 -0
  57. package/dist/src/dsl/compilers/array/compiler.js +13 -14
  58. package/dist/src/dsl/compilers/array/compiler.js.map +1 -1
  59. package/dist/src/dsl/compilers/boolean/compiler.d.ts +1 -1
  60. package/dist/src/dsl/compilers/boolean/compiler.js +14 -27
  61. package/dist/src/dsl/compilers/boolean/compiler.js.map +1 -1
  62. package/dist/src/dsl/compilers/enum/compiler.js +7 -10
  63. package/dist/src/dsl/compilers/enum/compiler.js.map +1 -1
  64. package/dist/src/dsl/compilers/index.d.ts +1 -1
  65. package/dist/src/dsl/compilers/index.js +5 -5
  66. package/dist/src/dsl/compilers/index.js.map +1 -1
  67. package/dist/src/dsl/utilty.d.ts +0 -4
  68. package/dist/src/dsl/utilty.js +3 -30
  69. package/dist/src/dsl/utilty.js.map +1 -1
  70. package/dist/src/eta/batch.d.ts +123 -0
  71. package/dist/src/eta/batch.js +162 -0
  72. package/dist/src/eta/batch.js.map +1 -0
  73. package/dist/src/eta/batcher.d.ts +184 -0
  74. package/dist/src/eta/batcher.js +335 -0
  75. package/dist/src/eta/batcher.js.map +1 -0
  76. package/dist/src/eta/cache.d.ts +36 -0
  77. package/dist/src/eta/cache.js +56 -0
  78. package/dist/src/eta/cache.js.map +1 -0
  79. package/dist/src/eta/controller.d.ts +608 -0
  80. package/dist/src/eta/controller.js +1036 -0
  81. package/dist/src/eta/controller.js.map +1 -0
  82. package/dist/src/eta/factory.d.ts +74 -0
  83. package/dist/src/eta/factory.js +121 -0
  84. package/dist/src/eta/factory.js.map +1 -0
  85. package/dist/src/eta/idle.d.ts +39 -0
  86. package/dist/src/eta/idle.js +52 -0
  87. package/dist/src/eta/idle.js.map +1 -0
  88. package/dist/src/eta/index.d.ts +52 -0
  89. package/dist/src/eta/index.js +13 -0
  90. package/dist/src/eta/index.js.map +1 -0
  91. package/dist/src/eta/observer.d.ts +263 -0
  92. package/dist/src/eta/observer.js +263 -0
  93. package/dist/src/eta/observer.js.map +1 -0
  94. package/dist/src/eta/operations.d.ts +41 -0
  95. package/dist/src/eta/operations.js +59 -0
  96. package/dist/src/eta/operations.js.map +1 -0
  97. package/dist/src/eta/source-registry.d.ts +198 -0
  98. package/dist/src/eta/source-registry.js +267 -0
  99. package/dist/src/eta/source-registry.js.map +1 -0
  100. package/dist/src/eta/template-index.d.ts +285 -0
  101. package/dist/src/eta/template-index.js +642 -0
  102. package/dist/src/eta/template-index.js.map +1 -0
  103. package/dist/src/eta/types.d.ts +529 -0
  104. package/dist/src/eta/types.js +2 -0
  105. package/dist/src/eta/types.js.map +1 -0
  106. package/dist/src/index.d.ts +21 -9
  107. package/dist/src/index.js +22 -11
  108. package/dist/src/index.js.map +1 -1
  109. package/dist/src/nodes/node.context.d.ts +5 -3
  110. package/dist/src/nodes/node.context.js +48 -3
  111. package/dist/src/nodes/node.context.js.map +1 -1
  112. package/dist/src/nodes/node.option.d.ts +11 -31
  113. package/dist/src/nodes/node.option.js +158 -222
  114. package/dist/src/nodes/node.option.js.map +1 -1
  115. package/dist/src/nodes/node.product.d.ts +7 -11
  116. package/dist/src/nodes/node.product.js +85 -64
  117. package/dist/src/nodes/node.product.js.map +1 -1
  118. package/dist/src/renders/attributes/buyLink.d.ts +2 -2
  119. package/dist/src/renders/attributes/buyLink.js +14 -11
  120. package/dist/src/renders/attributes/buyLink.js.map +1 -1
  121. package/dist/src/renders/attributes/devices.d.ts +2 -2
  122. package/dist/src/renders/attributes/devices.js +9 -19
  123. package/dist/src/renders/attributes/devices.js.map +1 -1
  124. package/dist/src/renders/attributes/discount.d.ts +2 -2
  125. package/dist/src/renders/attributes/discount.js +56 -44
  126. package/dist/src/renders/attributes/discount.js.map +1 -1
  127. package/dist/src/renders/attributes/hide.d.ts +2 -2
  128. package/dist/src/renders/attributes/hide.js +49 -14
  129. package/dist/src/renders/attributes/hide.js.map +1 -1
  130. package/dist/src/renders/attributes/index.d.ts +3 -3
  131. package/dist/src/renders/attributes/index.js +2 -4
  132. package/dist/src/renders/attributes/index.js.map +1 -1
  133. package/dist/src/renders/attributes/price.d.ts +2 -2
  134. package/dist/src/renders/attributes/price.js +30 -44
  135. package/dist/src/renders/attributes/price.js.map +1 -1
  136. package/dist/src/renders/attributes/subscription.d.ts +2 -2
  137. package/dist/src/renders/attributes/subscription.js +14 -20
  138. package/dist/src/renders/attributes/subscription.js.map +1 -1
  139. package/dist/src/renders/attributes/utilty.d.ts +2 -0
  140. package/dist/src/renders/attributes/utilty.js +17 -4
  141. package/dist/src/renders/attributes/utilty.js.map +1 -1
  142. package/dist/src/renders/context.d.ts +122 -10
  143. package/dist/src/renders/context.js +140 -80
  144. package/dist/src/renders/context.js.map +1 -1
  145. package/dist/src/renders/format.js +2 -2
  146. package/dist/src/renders/format.js.map +1 -1
  147. package/dist/src/renders/index.d.ts +6 -2
  148. package/dist/src/renders/index.js +67 -29
  149. package/dist/src/renders/index.js.map +1 -1
  150. package/dist/src/renders/observe.d.ts +1 -4
  151. package/dist/src/renders/observe.js +10 -24
  152. package/dist/src/renders/observe.js.map +1 -1
  153. package/dist/src/renders/render.wrapper.d.ts +37 -0
  154. package/dist/src/renders/render.wrapper.js +147 -0
  155. package/dist/src/renders/render.wrapper.js.map +1 -0
  156. package/dist/src/templating/eta.js +1 -4
  157. package/dist/src/templating/eta.js.map +1 -1
  158. package/package.json +4 -5
  159. package/dist/src/actions/action.button.d.ts +0 -2
  160. package/dist/src/actions/action.button.js +0 -8
  161. package/dist/src/actions/action.button.js.map +0 -1
  162. package/dist/src/actions/action.input.d.ts +0 -2
  163. package/dist/src/actions/action.input.js +0 -43
  164. package/dist/src/actions/action.input.js.map +0 -1
  165. package/dist/src/actions/action.select.d.ts +0 -2
  166. package/dist/src/actions/action.select.js +0 -14
  167. package/dist/src/actions/action.select.js.map +0 -1
  168. package/dist/src/actions/utilty.d.ts +0 -16
  169. package/dist/src/actions/utilty.js +0 -149
  170. package/dist/src/actions/utilty.js.map +0 -1
  171. package/dist/src/contexts/context.datalayer.d.ts +0 -9
  172. package/dist/src/contexts/context.datalayer.js +0 -3
  173. package/dist/src/contexts/context.datalayer.js.map +0 -1
  174. package/dist/src/contexts/context.derived.d.ts +0 -12
  175. package/dist/src/contexts/context.derived.js +0 -3
  176. package/dist/src/contexts/context.derived.js.map +0 -1
  177. package/dist/src/contexts/context.option.d.ts +0 -5
  178. package/dist/src/contexts/context.option.js +0 -3
  179. package/dist/src/contexts/context.option.js.map +0 -1
  180. package/dist/src/contexts/context.product.d.ts +0 -5
  181. package/dist/src/contexts/context.product.js +0 -3
  182. package/dist/src/contexts/context.product.js.map +0 -1
  183. package/dist/src/contexts/context.state.d.ts +0 -28
  184. package/dist/src/contexts/context.state.js +0 -3
  185. package/dist/src/contexts/context.state.js.map +0 -1
  186. package/dist/src/contexts/context.store.d.ts +0 -5
  187. package/dist/src/contexts/context.store.js +0 -3
  188. package/dist/src/contexts/context.store.js.map +0 -1
  189. package/dist/src/controllers/collect-controller.d.ts +0 -39
  190. package/dist/src/controllers/collect-controller.js +0 -161
  191. package/dist/src/controllers/collect-controller.js.map +0 -1
  192. package/dist/src/controllers/compute-controller.d.ts +0 -55
  193. package/dist/src/controllers/compute-controller.js +0 -350
  194. package/dist/src/controllers/compute-controller.js.map +0 -1
  195. package/dist/src/controllers/eta-renderer/eta-dom-renderer.d.ts +0 -25
  196. package/dist/src/controllers/eta-renderer/eta-dom-renderer.js +0 -192
  197. package/dist/src/controllers/eta-renderer/eta-dom-renderer.js.map +0 -1
  198. package/dist/src/controllers/eta-renderer/eta-mutation-observer.d.ts +0 -28
  199. package/dist/src/controllers/eta-renderer/eta-mutation-observer.js +0 -206
  200. package/dist/src/controllers/eta-renderer/eta-mutation-observer.js.map +0 -1
  201. package/dist/src/controllers/eta-renderer/eta-renderer.d.ts +0 -21
  202. package/dist/src/controllers/eta-renderer/eta-renderer.js +0 -77
  203. package/dist/src/controllers/eta-renderer/eta-renderer.js.map +0 -1
  204. package/dist/src/controllers/eta-renderer/eta-template-cache.d.ts +0 -24
  205. package/dist/src/controllers/eta-renderer/eta-template-cache.js +0 -61
  206. package/dist/src/controllers/eta-renderer/eta-template-cache.js.map +0 -1
  207. package/dist/src/controllers/eta-renderer/eta-types.d.ts +0 -11
  208. package/dist/src/controllers/eta-renderer/eta-types.js +0 -1
  209. package/dist/src/controllers/eta-renderer/eta-types.js.map +0 -1
  210. package/dist/src/controllers/eta-renderer/index.d.ts +0 -2
  211. package/dist/src/controllers/eta-renderer/index.js +0 -2
  212. package/dist/src/controllers/eta-renderer/index.js.map +0 -1
  213. package/dist/src/controllers/event-pipeline-controller.d.ts +0 -28
  214. package/dist/src/controllers/event-pipeline-controller.js +0 -72
  215. package/dist/src/controllers/event-pipeline-controller.js.map +0 -1
  216. package/dist/src/events/events.d.ts +0 -75
  217. package/dist/src/events/events.js +0 -78
  218. package/dist/src/events/events.js.map +0 -1
  219. package/dist/src/nodes/node.root.d.ts +0 -16
  220. package/dist/src/nodes/node.root.js +0 -49
  221. package/dist/src/nodes/node.root.js.map +0 -1
  222. package/dist/src/nodes/node.state.d.ts +0 -88
  223. package/dist/src/nodes/node.state.js +0 -330
  224. package/dist/src/nodes/node.state.js.map +0 -1
  225. package/dist/src/renders/utility.d.ts +0 -32
  226. package/dist/src/renders/utility.js +0 -191
  227. package/dist/src/renders/utility.js.map +0 -1
@@ -1,77 +0,0 @@
1
- import { EtaDomRenderer } from "../../controllers/eta-renderer/eta-dom-renderer.js";
2
- import { EtaMutationObserver } from "../../controllers/eta-renderer/eta-mutation-observer.js";
3
- import { EtaTemplateCache } from "../../controllers/eta-renderer/eta-template-cache.js";
4
- import { Task } from "@lit/task";
5
- export class EtaRenderController {
6
- constructor(host) {
7
- this._cache = new EtaTemplateCache();
8
- this._renderInProgress = false;
9
- this._etaIdleWaiters = [];
10
- this._mutationRequested = false;
11
- this.host = host;
12
- this._observer = new EtaMutationObserver(host, this._cache, () => this._scheduleMutationRender());
13
- this._renderer = new EtaDomRenderer(host, this._cache, (sr, h) => this._observer.ensureShadowRootObserved(sr, h));
14
- host.addController(this);
15
- this._etaRenderTask = new Task(host, {
16
- task: async () => {
17
- try {
18
- if (!this.host.shouldRunEtaStateRender())
19
- return;
20
- const fromMutation = this._mutationRequested;
21
- const ctx = await this.host.buildEtaContext();
22
- if (!ctx)
23
- return;
24
- if (fromMutation)
25
- this._mutationRequested = false;
26
- const dirtyRoots = fromMutation ? this._observer.consumeDirtyRoots() : undefined;
27
- this._renderInProgress = true;
28
- try {
29
- await this._observer.suspend(async () => {
30
- await this._renderer.render(ctx, { fromMutation, dirtyRoots });
31
- });
32
- }
33
- finally {
34
- this._renderInProgress = false;
35
- }
36
- }
37
- finally {
38
- this._notifyEtaIdle();
39
- }
40
- },
41
- args: () => this.host.getEtaArgs()
42
- });
43
- }
44
- get taskComplete() {
45
- return this._etaRenderTask.taskComplete;
46
- }
47
- waitForIdle() {
48
- if (this._isEtaIdle())
49
- return Promise.resolve();
50
- return new Promise((resolve) => {
51
- this._etaIdleWaiters.push(resolve);
52
- });
53
- }
54
- hostConnected() {
55
- this._observer.connect();
56
- }
57
- hostDisconnected() {
58
- this._observer.disconnect();
59
- }
60
- _scheduleMutationRender() {
61
- this._mutationRequested = true;
62
- this._etaRenderTask.run();
63
- }
64
- _isEtaIdle() {
65
- return !this._renderInProgress && this._observer.isIdle();
66
- }
67
- _notifyEtaIdle() {
68
- if (!this._isEtaIdle())
69
- return;
70
- if (this._etaIdleWaiters.length === 0)
71
- return;
72
- const waiters = this._etaIdleWaiters.splice(0);
73
- for (const w of waiters)
74
- w();
75
- }
76
- }
77
- //# sourceMappingURL=eta-renderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eta-renderer.js","sourceRoot":"","sources":["../../../../src/controllers/eta-renderer/eta-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["import { EtaDomRenderer } from \"@/controllers/eta-renderer/eta-dom-renderer\";\nimport { EtaMutationObserver } from \"@/controllers/eta-renderer/eta-mutation-observer\";\nimport { EtaTemplateCache } from \"@/controllers/eta-renderer/eta-template-cache\";\nimport { EtaRenderHost } from \"@/controllers/eta-renderer/eta-types\";\nimport { Task } from \"@lit/task\";\nimport { ReactiveController } from \"lit\";\n\nexport type { EtaRenderHost } from \"@/controllers/eta-renderer/eta-types\";\n\nexport class EtaRenderController implements ReactiveController {\n private host : EtaRenderHost;\n private _etaRenderTask: Task<unknown[], unknown>;\n\n private _cache = new EtaTemplateCache();\n private _observer: EtaMutationObserver;\n private _renderer: EtaDomRenderer;\n\n private _renderInProgress = false;\n private _etaIdleWaiters: Array<() => void> = [];\n private _mutationRequested = false;\n\n constructor(host: EtaRenderHost) {\n this.host = host;\n\n this._observer = new EtaMutationObserver(host, this._cache, () => this._scheduleMutationRender());\n this._renderer = new EtaDomRenderer(host, this._cache, (sr, h) => this._observer.ensureShadowRootObserved(sr, h));\n\n host.addController(this);\n\n this._etaRenderTask = new Task(host, {\n task: async () => {\n try {\n if (!this.host.shouldRunEtaStateRender()) return;\n const fromMutation = this._mutationRequested;\n\n const ctx = await this.host.buildEtaContext();\n if (!ctx) return;\n\n if (fromMutation) this._mutationRequested = false;\n\n const dirtyRoots = fromMutation ? this._observer.consumeDirtyRoots() : undefined;\n\n this._renderInProgress = true;\n try {\n await this._observer.suspend(async () => {\n await this._renderer.render(ctx, { fromMutation, dirtyRoots });\n });\n } finally {\n this._renderInProgress = false;\n }\n } finally {\n this._notifyEtaIdle();\n }\n },\n args: () => this.host.getEtaArgs()\n });\n }\n\n get taskComplete() {\n return this._etaRenderTask.taskComplete;\n }\n\n waitForIdle(): Promise<void> {\n if (this._isEtaIdle()) return Promise.resolve();\n return new Promise<void>((resolve) => {\n this._etaIdleWaiters.push(resolve);\n });\n }\n\n hostConnected() {\n this._observer.connect();\n }\n\n hostDisconnected() {\n this._observer.disconnect();\n }\n\n private _scheduleMutationRender() {\n this._mutationRequested = true;\n this._etaRenderTask.run();\n }\n\n private _isEtaIdle(): boolean {\n return !this._renderInProgress && this._observer.isIdle();\n }\n\n private _notifyEtaIdle() {\n if (!this._isEtaIdle()) return;\n if (this._etaIdleWaiters.length === 0) return;\n const waiters = this._etaIdleWaiters.splice(0);\n for (const w of waiters) w();\n }\n}\n"]}
@@ -1,24 +0,0 @@
1
- import eta from "../../templating/eta.js";
2
- type TemplateEntry = {
3
- src: string;
4
- fn?: ReturnType<typeof eta.compile>;
5
- lastRendered?: string;
6
- };
7
- type UpdateOptions = {
8
- allowMutationRefresh: boolean;
9
- };
10
- export declare class EtaTemplateCache {
11
- private _elementTemplates;
12
- private _attrTemplates;
13
- private _noEtaAttrs?;
14
- getElementEntry(el: HTMLElement): TemplateEntry | undefined;
15
- hasTemplate(el: HTMLElement): boolean;
16
- getOrCreateAttrCache(el: HTMLElement): Map<string, TemplateEntry>;
17
- hasNoEtaAttrs(el: HTMLElement): boolean;
18
- markNoEtaAttrs(el: HTMLElement): void;
19
- clearNoEtaAttrs(el: HTMLElement): void;
20
- updateElementEntry(el: HTMLElement, currentSrc: string, { allowMutationRefresh }: UpdateOptions): TemplateEntry;
21
- getLastRendered(el: HTMLElement): string | undefined;
22
- setLastRendered(el: HTMLElement, rendered: string): void;
23
- }
24
- export {};
@@ -1,61 +0,0 @@
1
- export class EtaTemplateCache {
2
- constructor() {
3
- this._elementTemplates = new WeakMap();
4
- this._attrTemplates = new WeakMap();
5
- }
6
- getElementEntry(el) {
7
- return this._elementTemplates.get(el);
8
- }
9
- hasTemplate(el) {
10
- const entry = this._elementTemplates.get(el);
11
- return Boolean(entry && entry.src && entry.src.includes("{{"));
12
- }
13
- getOrCreateAttrCache(el) {
14
- let cache = this._attrTemplates.get(el);
15
- if (!cache) {
16
- cache = new Map();
17
- this._attrTemplates.set(el, cache);
18
- }
19
- return cache;
20
- }
21
- hasNoEtaAttrs(el) {
22
- return this._noEtaAttrs?.has(el) ?? false;
23
- }
24
- markNoEtaAttrs(el) {
25
- if (!this._noEtaAttrs)
26
- this._noEtaAttrs = new WeakSet();
27
- this._noEtaAttrs.add(el);
28
- }
29
- clearNoEtaAttrs(el) {
30
- this._noEtaAttrs?.delete(el);
31
- }
32
- updateElementEntry(el, currentSrc, { allowMutationRefresh }) {
33
- let entry = this._elementTemplates.get(el);
34
- const hadTemplate = Boolean(entry && entry.src && entry.src.includes("{{"));
35
- if (!entry) {
36
- entry = { src: currentSrc };
37
- this._elementTemplates.set(el, entry);
38
- return entry;
39
- }
40
- if (entry.src !== currentSrc) {
41
- const isTemplateLike = currentSrc.includes("{{");
42
- // Accept SPA-authored changes (even without templates) only when mutation-triggered
43
- // and the element did not previously cache a template.
44
- if (isTemplateLike || (allowMutationRefresh && !hadTemplate)) {
45
- entry.src = currentSrc;
46
- delete entry.fn;
47
- delete entry.lastRendered;
48
- }
49
- }
50
- return entry;
51
- }
52
- getLastRendered(el) {
53
- return this._elementTemplates.get(el)?.lastRendered;
54
- }
55
- setLastRendered(el, rendered) {
56
- const entry = this._elementTemplates.get(el);
57
- if (entry)
58
- entry.lastRendered = rendered;
59
- }
60
- }
61
- //# sourceMappingURL=eta-template-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eta-template-cache.js","sourceRoot":"","sources":["../../../../src/controllers/eta-renderer/eta-template-cache.ts"],"names":[],"mappings":"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","sourcesContent":["import eta from \"@/templating/eta\";\n\ntype TemplateEntry = { src: string; fn?: ReturnType<typeof eta.compile>; lastRendered?: string };\n\ntype UpdateOptions = {\n allowMutationRefresh: boolean;\n};\n\nexport class EtaTemplateCache {\n private _elementTemplates = new WeakMap<HTMLElement, TemplateEntry>();\n private _attrTemplates = new WeakMap<HTMLElement, Map<string, TemplateEntry>>();\n private _noEtaAttrs?: WeakSet<HTMLElement>;\n\n getElementEntry(el: HTMLElement): TemplateEntry | undefined {\n return this._elementTemplates.get(el);\n }\n\n hasTemplate(el: HTMLElement): boolean {\n const entry = this._elementTemplates.get(el);\n return Boolean(entry && entry.src && entry.src.includes(\"{{\"));\n }\n\n getOrCreateAttrCache(el: HTMLElement): Map<string, TemplateEntry> {\n let cache = this._attrTemplates.get(el);\n if (!cache) {\n cache = new Map();\n this._attrTemplates.set(el, cache);\n }\n return cache;\n }\n\n hasNoEtaAttrs(el: HTMLElement): boolean {\n return this._noEtaAttrs?.has(el) ?? false;\n }\n\n markNoEtaAttrs(el: HTMLElement) {\n if (!this._noEtaAttrs) this._noEtaAttrs = new WeakSet<HTMLElement>();\n this._noEtaAttrs.add(el);\n }\n\n clearNoEtaAttrs(el: HTMLElement) {\n this._noEtaAttrs?.delete(el);\n }\n\n updateElementEntry(el: HTMLElement, currentSrc: string, { allowMutationRefresh }: UpdateOptions): TemplateEntry {\n let entry = this._elementTemplates.get(el);\n const hadTemplate = Boolean(entry && entry.src && entry.src.includes(\"{{\"));\n\n if (!entry) {\n entry = { src: currentSrc };\n this._elementTemplates.set(el, entry);\n return entry;\n }\n\n if (entry.src !== currentSrc) {\n const isTemplateLike = currentSrc.includes(\"{{\");\n // Accept SPA-authored changes (even without templates) only when mutation-triggered\n // and the element did not previously cache a template.\n if (isTemplateLike || (allowMutationRefresh && !hadTemplate)) {\n entry.src = currentSrc;\n delete entry.fn;\n delete entry.lastRendered;\n }\n }\n\n return entry;\n }\n\n getLastRendered(el: HTMLElement): string | undefined {\n return this._elementTemplates.get(el)?.lastRendered;\n }\n\n setLastRendered(el: HTMLElement, rendered: string) {\n const entry = this._elementTemplates.get(el);\n if (entry) entry.lastRendered = rendered;\n }\n}\n"]}
@@ -1,11 +0,0 @@
1
- import { ReactiveControllerHost } from "lit";
2
- export type EtaRenderHost = ReactiveControllerHost & HTMLElement & {
3
- etaMutationDelay: number;
4
- etaMutationDelayMax: number;
5
- shouldRunEtaStateRender(): boolean;
6
- shouldObserveEtaMutations(): boolean;
7
- getEtaArgs(): unknown[];
8
- buildEtaContext(): Promise<object | undefined>;
9
- isStateNodeElement(el: Element): boolean;
10
- };
11
- export type ObserveShadowRoot = (shadowRoot: ShadowRoot, host?: HTMLElement) => void;
@@ -1 +0,0 @@
1
- //# sourceMappingURL=eta-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eta-types.js","sourceRoot":"","sources":["../../../../src/controllers/eta-renderer/eta-types.ts"],"names":[],"mappings":"","sourcesContent":["import { ReactiveControllerHost } from \"lit\";\n\nexport type EtaRenderHost = ReactiveControllerHost & HTMLElement & {\n etaMutationDelay : number;\n etaMutationDelayMax: number;\n shouldRunEtaStateRender(): boolean;\n shouldObserveEtaMutations(): boolean;\n getEtaArgs(): unknown[];\n buildEtaContext(): Promise<object | undefined>;\n isStateNodeElement(el: Element): boolean;\n};\n\nexport type ObserveShadowRoot = (shadowRoot: ShadowRoot, host?: HTMLElement) => void;\n"]}
@@ -1,2 +0,0 @@
1
- export { EtaRenderController } from "./eta-renderer.js";
2
- export type { EtaRenderHost, ObserveShadowRoot } from "./eta-types.js";
@@ -1,2 +0,0 @@
1
- export { EtaRenderController } from "./eta-renderer.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/controllers/eta-renderer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["export { EtaRenderController } from \"./eta-renderer\";\nexport type { EtaRenderHost, ObserveShadowRoot } from \"./eta-types\";\n\n"]}
@@ -1,28 +0,0 @@
1
- import type { EventType } from "../events/events.js";
2
- import { ReactiveController, ReactiveControllerHost } from "lit";
3
- type NodeEvent = EventType | undefined;
4
- type EventPipelineHost = ReactiveControllerHost & EventTarget & {
5
- _eventParent?: NodeEvent;
6
- _eventDom?: NodeEvent;
7
- _event?: NodeEvent;
8
- ignoreEventsParent: boolean;
9
- autoForward: boolean;
10
- };
11
- export declare class EventPipelineController implements ReactiveController {
12
- private host;
13
- private _prevDomEventRef?;
14
- private _prevParentEventRef?;
15
- private _prevIgnoreParent?;
16
- private _syncTask;
17
- private _forwardTask;
18
- private _forwardEvent;
19
- private _notifyParent;
20
- constructor(host: EventPipelineHost, forwardEvent: (e?: NodeEvent) => void, notifyParent: () => void);
21
- get syncComplete(): Promise<void>;
22
- get forwardComplete(): Promise<void>;
23
- hostConnected(): void;
24
- hostDisconnected(): void;
25
- hostUpdate(): void;
26
- hostUpdated(): void;
27
- }
28
- export {};
@@ -1,72 +0,0 @@
1
- import { Task } from "@lit/task";
2
- export class EventPipelineController {
3
- constructor(host, forwardEvent, notifyParent) {
4
- this.host = host;
5
- this._forwardEvent = forwardEvent;
6
- this._notifyParent = notifyParent;
7
- host.addController(this);
8
- this._syncTask = new Task(host, {
9
- task: async ([fromParent, fromDom, ignoreParent]) => {
10
- const dom = fromDom;
11
- const parent = fromParent;
12
- const domChanged = !!dom && dom !== this._prevDomEventRef;
13
- const parentChanged = !!parent && parent !== this._prevParentEventRef;
14
- const ignoreChanged = ignoreParent !== this._prevIgnoreParent;
15
- if (!domChanged && !parentChanged && !ignoreChanged)
16
- return;
17
- this._prevIgnoreParent = ignoreParent;
18
- if (domChanged)
19
- this._prevDomEventRef = dom;
20
- if (parentChanged)
21
- this._prevParentEventRef = parent;
22
- if (ignoreParent) {
23
- if (domChanged) {
24
- this.host._event = dom;
25
- }
26
- return;
27
- }
28
- if (domChanged) {
29
- this.host._event = dom;
30
- return;
31
- }
32
- if (parentChanged) {
33
- this.host._event = parent;
34
- return;
35
- }
36
- // If only the ignore flag changed, adopt parent event (if any).
37
- if (!ignoreParent && parent) {
38
- this.host._event = parent;
39
- }
40
- },
41
- args: () => [this.host._eventParent, this.host._eventDom, this.host.ignoreEventsParent]
42
- });
43
- this._forwardTask = new Task(host, {
44
- task: async ([evt, auto]) => {
45
- if (!evt || !auto)
46
- return;
47
- this._forwardEvent(evt);
48
- this._notifyParent();
49
- },
50
- args: () => [this.host._event, this.host.autoForward]
51
- });
52
- }
53
- get syncComplete() {
54
- return this._syncTask.taskComplete;
55
- }
56
- get forwardComplete() {
57
- return this._forwardTask.taskComplete;
58
- }
59
- hostConnected() {
60
- // no-op
61
- }
62
- hostDisconnected() {
63
- // no-op
64
- }
65
- hostUpdate() {
66
- // no-op
67
- }
68
- hostUpdated() {
69
- // no-op
70
- }
71
- }
72
- //# sourceMappingURL=event-pipeline-controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-pipeline-controller.js","sourceRoot":"","sources":["../../../src/controllers/event-pipeline-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EventType } from \"@/events/events\";\nimport { Task } from \"@lit/task\";\nimport { ReactiveController, ReactiveControllerHost } from \"lit\";\n\ntype NodeEvent = EventType | undefined;\n\ntype EventPipelineHost = ReactiveControllerHost & EventTarget & {\n _eventParent? : NodeEvent;\n _eventDom? : NodeEvent;\n _event? : NodeEvent;\n ignoreEventsParent: boolean;\n autoForward : boolean;\n};\n\nexport class EventPipelineController implements ReactiveController {\n private host: EventPipelineHost;\n\n private _prevDomEventRef? : NodeEvent;\n private _prevParentEventRef?: NodeEvent;\n private _prevIgnoreParent? : boolean;\n\n private _syncTask : Task<unknown[], void>;\n private _forwardTask : Task<unknown[], void>;\n private _forwardEvent: (e?: NodeEvent) => void;\n private _notifyParent: () => void;\n\n constructor(host: EventPipelineHost, forwardEvent: (e?: NodeEvent) => void, notifyParent: () => void) {\n this.host = host;\n this._forwardEvent = forwardEvent;\n this._notifyParent = notifyParent;\n host.addController(this);\n\n this._syncTask = new Task(host, {\n task: async ([fromParent, fromDom, ignoreParent]) => {\n const dom = fromDom as NodeEvent;\n const parent = fromParent as NodeEvent;\n\n const domChanged = !!dom && dom !== this._prevDomEventRef;\n const parentChanged = !!parent && parent !== this._prevParentEventRef;\n const ignoreChanged = ignoreParent !== this._prevIgnoreParent;\n\n if (!domChanged && !parentChanged && !ignoreChanged) return;\n\n this._prevIgnoreParent = ignoreParent;\n if (domChanged) this._prevDomEventRef = dom;\n if (parentChanged) this._prevParentEventRef = parent;\n\n if (ignoreParent) {\n if (domChanged) {\n this.host._event = dom;\n }\n return;\n }\n\n if (domChanged) {\n this.host._event = dom;\n return;\n }\n\n if (parentChanged) {\n this.host._event = parent;\n return;\n }\n\n // If only the ignore flag changed, adopt parent event (if any).\n if (!ignoreParent && parent) {\n this.host._event = parent;\n }\n },\n args: () => [this.host._eventParent, this.host._eventDom, this.host.ignoreEventsParent]\n });\n\n this._forwardTask = new Task(host, {\n task: async ([evt, auto]) => {\n if (!evt || !auto) return;\n this._forwardEvent(evt as NodeEvent);\n this._notifyParent();\n },\n args: () => [this.host._event, this.host.autoForward]\n });\n }\n\n get syncComplete() {\n return this._syncTask.taskComplete;\n }\n\n get forwardComplete() {\n return this._forwardTask.taskComplete;\n }\n\n hostConnected() {\n // no-op\n }\n\n hostDisconnected() {\n // no-op\n }\n\n hostUpdate() {\n // no-op\n }\n\n hostUpdated() {\n // no-op\n }\n}\n"]}
@@ -1,75 +0,0 @@
1
- import { ProductOption } from "@repobit/dex-store";
2
- export type UpdateByDelta = {
3
- type: "devices" | "subscription";
4
- delta: number | "next" | "prev";
5
- min?: number;
6
- max?: number;
7
- /**
8
- * If true, treat `delta` as the new absolute value
9
- * instead of adding/subtracting it.
10
- */
11
- useAsValue?: boolean;
12
- /**
13
- * Optional identifier of the action source element (data-store-id)
14
- */
15
- storeId?: string;
16
- };
17
- export type Action = {
18
- id?: string;
19
- campaign?: string;
20
- bundle?: boolean;
21
- devices?: number;
22
- subscription?: number;
23
- /**
24
- * Optional identifier of the action source element (data-store-id)
25
- */
26
- storeId?: string;
27
- };
28
- export type CollectUpdateByDelta = {
29
- name: symbol | string;
30
- update: UpdateByDelta | null;
31
- };
32
- export type CollectAction = {
33
- name: symbol | string;
34
- action: Action | null;
35
- };
36
- export type CollectOption = {
37
- name: symbol | string;
38
- options: Promise<ProductOption[]> | null;
39
- };
40
- export declare class UpdateByDeltaEvent extends CustomEvent<UpdateByDelta> {
41
- static readonly eventName = "store-update-delta";
42
- constructor(detail: UpdateByDelta);
43
- }
44
- export declare class ActionEvent extends CustomEvent<Action> {
45
- static readonly eventName = "store-set-action";
46
- constructor(detail: Action);
47
- }
48
- export declare class CollectActionEvent extends CustomEvent<CollectAction> {
49
- static readonly eventName = "store-collect-action";
50
- constructor(detail: CollectAction);
51
- }
52
- export declare class CollectUpdateByDeltaEvent extends CustomEvent<CollectUpdateByDelta> {
53
- static readonly eventName = "store-collect-update-by-delta";
54
- constructor(detail: CollectUpdateByDelta);
55
- }
56
- export declare class CollectOptionEvent extends CustomEvent<CollectOption> {
57
- static readonly eventName = "store-collect-option";
58
- constructor(detail: CollectOption);
59
- }
60
- /**
61
- * Contextual child registration for updateComplete coordination.
62
- * Children dispatch these to their nearest StateNode-like parent.
63
- */
64
- export type CollectChild = {
65
- child: HTMLElement;
66
- };
67
- export declare class CollectChildEvent extends CustomEvent<CollectChild> {
68
- static readonly eventName = "store-collect-child";
69
- constructor(detail: CollectChild);
70
- }
71
- export declare class CollectChildRemovedEvent extends CustomEvent<CollectChild> {
72
- static readonly eventName = "store-collect-child-removed";
73
- constructor(detail: CollectChild);
74
- }
75
- export type EventType = UpdateByDeltaEvent | ActionEvent;
@@ -1,78 +0,0 @@
1
- export class UpdateByDeltaEvent extends CustomEvent {
2
- static { this.eventName = "store-update-delta"; }
3
- constructor(detail) {
4
- super(UpdateByDeltaEvent.eventName, {
5
- detail,
6
- bubbles: true,
7
- composed: true,
8
- cancelable: true
9
- });
10
- }
11
- }
12
- export class ActionEvent extends CustomEvent {
13
- static { this.eventName = "store-set-action"; }
14
- constructor(detail) {
15
- super(ActionEvent.eventName, {
16
- detail,
17
- bubbles: true,
18
- composed: true,
19
- cancelable: true
20
- });
21
- }
22
- }
23
- export class CollectActionEvent extends CustomEvent {
24
- static { this.eventName = "store-collect-action"; }
25
- constructor(detail) {
26
- super(CollectActionEvent.eventName, {
27
- detail,
28
- bubbles: true,
29
- composed: true,
30
- cancelable: true
31
- });
32
- }
33
- }
34
- export class CollectUpdateByDeltaEvent extends CustomEvent {
35
- static { this.eventName = "store-collect-update-by-delta"; }
36
- constructor(detail) {
37
- super(CollectUpdateByDeltaEvent.eventName, {
38
- detail,
39
- bubbles: true,
40
- composed: true,
41
- cancelable: true
42
- });
43
- }
44
- }
45
- export class CollectOptionEvent extends CustomEvent {
46
- static { this.eventName = "store-collect-option"; }
47
- constructor(detail) {
48
- super(CollectOptionEvent.eventName, {
49
- detail,
50
- bubbles: true,
51
- composed: true,
52
- cancelable: true
53
- });
54
- }
55
- }
56
- export class CollectChildEvent extends CustomEvent {
57
- static { this.eventName = "store-collect-child"; }
58
- constructor(detail) {
59
- super(CollectChildEvent.eventName, {
60
- detail,
61
- bubbles: true,
62
- composed: true,
63
- cancelable: true
64
- });
65
- }
66
- }
67
- export class CollectChildRemovedEvent extends CustomEvent {
68
- static { this.eventName = "store-collect-child-removed"; }
69
- constructor(detail) {
70
- super(CollectChildRemovedEvent.eventName, {
71
- detail,
72
- bubbles: true,
73
- composed: true,
74
- cancelable: true
75
- });
76
- }
77
- }
78
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/events/events.ts"],"names":[],"mappings":"AA6CA,MAAM,OAAO,kBAAmB,SAAQ,WAA0B;aAChD,cAAS,GAAG,oBAAoB,CAAC;IAEjD,YAAY,MAAqB;QAC/B,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE;YAClC,MAAM;YACN,OAAO,EAAK,IAAI;YAChB,QAAQ,EAAI,IAAI;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;;AAGH,MAAM,OAAO,WAAY,SAAQ,WAAmB;aAClC,cAAS,GAAG,kBAAkB,CAAC;IAE/C,YAAY,MAAc;QACxB,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE;YAC3B,MAAM;YACN,OAAO,EAAK,IAAI;YAChB,QAAQ,EAAI,IAAI;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;;AAGH,MAAM,OAAO,kBAAmB,SAAQ,WAA0B;aAChD,cAAS,GAAG,sBAAsB,CAAC;IAEnD,YAAY,MAAqB;QAC/B,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE;YAClC,MAAM;YACN,OAAO,EAAK,IAAI;YAChB,QAAQ,EAAI,IAAI;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;;AAGH,MAAM,OAAO,yBAA0B,SAAQ,WAAiC;aAC9D,cAAS,GAAG,+BAA+B,CAAC;IAE5D,YAAY,MAA4B;QACtC,KAAK,CAAC,yBAAyB,CAAC,SAAS,EAAE;YACzC,MAAM;YACN,OAAO,EAAK,IAAI;YAChB,QAAQ,EAAI,IAAI;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;;AAGH,MAAM,OAAO,kBAAmB,SAAQ,WAA0B;aAChD,cAAS,GAAG,sBAAsB,CAAC;IAEnD,YAAY,MAAqB;QAC/B,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE;YAClC,MAAM;YACN,OAAO,EAAK,IAAI;YAChB,QAAQ,EAAI,IAAI;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;;AAWH,MAAM,OAAO,iBAAkB,SAAQ,WAAyB;aAC9C,cAAS,GAAG,qBAAqB,CAAC;IAElD,YAAY,MAAoB;QAC9B,KAAK,CAAC,iBAAiB,CAAC,SAAS,EAAE;YACjC,MAAM;YACN,OAAO,EAAK,IAAI;YAChB,QAAQ,EAAI,IAAI;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;;AAGH,MAAM,OAAO,wBAAyB,SAAQ,WAAyB;aACrD,cAAS,GAAG,6BAA6B,CAAC;IAE1D,YAAY,MAAoB;QAC9B,KAAK,CAAC,wBAAwB,CAAC,SAAS,EAAE;YACxC,MAAM;YACN,OAAO,EAAK,IAAI;YAChB,QAAQ,EAAI,IAAI;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC","sourcesContent":["import { ProductOption } from \"@repobit/dex-store\";\n\nexport type UpdateByDelta = {\n type : \"devices\" | \"subscription\";\n delta : number | \"next\" | \"prev\";\n min? : number;\n max? : number;\n /**\n * If true, treat `delta` as the new absolute value\n * instead of adding/subtracting it.\n */\n useAsValue?: boolean;\n /**\n * Optional identifier of the action source element (data-store-id)\n */\n storeId? : string;\n}\n\nexport type Action = {\n id? : string;\n campaign? : string;\n bundle? : boolean;\n devices? : number;\n subscription?: number;\n /**\n * Optional identifier of the action source element (data-store-id)\n */\n storeId? : string;\n}\n\nexport type CollectUpdateByDelta = {\n name : symbol | string,\n update: UpdateByDelta | null\n};\n\nexport type CollectAction = {\n name : symbol | string,\n action: Action | null\n};\n\nexport type CollectOption = {\n name : symbol | string,\n options: Promise<ProductOption[]> | null,\n};\n\nexport class UpdateByDeltaEvent extends CustomEvent<UpdateByDelta> {\n static readonly eventName = \"store-update-delta\";\n\n constructor(detail: UpdateByDelta) {\n super(UpdateByDeltaEvent.eventName, {\n detail,\n bubbles : true,\n composed : true,\n cancelable: true\n });\n }\n}\n\nexport class ActionEvent extends CustomEvent<Action> {\n static readonly eventName = \"store-set-action\";\n\n constructor(detail: Action) {\n super(ActionEvent.eventName, {\n detail,\n bubbles : true,\n composed : true,\n cancelable: true\n });\n }\n}\n\nexport class CollectActionEvent extends CustomEvent<CollectAction> {\n static readonly eventName = \"store-collect-action\";\n\n constructor(detail: CollectAction) {\n super(CollectActionEvent.eventName, {\n detail,\n bubbles : true,\n composed : true,\n cancelable: true\n });\n }\n}\n\nexport class CollectUpdateByDeltaEvent extends CustomEvent<CollectUpdateByDelta> {\n static readonly eventName = \"store-collect-update-by-delta\";\n\n constructor(detail: CollectUpdateByDelta) {\n super(CollectUpdateByDeltaEvent.eventName, {\n detail,\n bubbles : true,\n composed : true,\n cancelable: true\n });\n }\n}\n\nexport class CollectOptionEvent extends CustomEvent<CollectOption> {\n static readonly eventName = \"store-collect-option\";\n\n constructor(detail: CollectOption) {\n super(CollectOptionEvent.eventName, {\n detail,\n bubbles : true,\n composed : true,\n cancelable: true\n });\n }\n}\n\n/**\n * Contextual child registration for updateComplete coordination.\n * Children dispatch these to their nearest StateNode-like parent.\n */\nexport type CollectChild = {\n child: HTMLElement;\n};\n\nexport class CollectChildEvent extends CustomEvent<CollectChild> {\n static readonly eventName = \"store-collect-child\";\n\n constructor(detail: CollectChild) {\n super(CollectChildEvent.eventName, {\n detail,\n bubbles : true,\n composed : true,\n cancelable: true\n });\n }\n}\n\nexport class CollectChildRemovedEvent extends CustomEvent<CollectChild> {\n static readonly eventName = \"store-collect-child-removed\";\n\n constructor(detail: CollectChild) {\n super(CollectChildRemovedEvent.eventName, {\n detail,\n bubbles : true,\n composed : true,\n cancelable: true\n });\n }\n}\n\nexport type EventType =\n UpdateByDeltaEvent |\n ActionEvent;\n"]}
@@ -1,16 +0,0 @@
1
- import { dataLayerContextType } from "../contexts/context.datalayer.js";
2
- import { derivedContextType } from "../contexts/context.derived.js";
3
- import { optionContextType } from "../contexts/context.option.js";
4
- import { productContextType } from "../contexts/context.product.js";
5
- import { storeContextType } from "../contexts/context.store.js";
6
- import { StateNode } from "./node.state.js";
7
- export declare class RootNode extends StateNode {
8
- /**
9
- * Consumes store provided by root node
10
- */
11
- store?: storeContextType;
12
- dataLayer?: dataLayerContextType;
13
- _optionContextDefault?: optionContextType;
14
- _productContextDefault?: productContextType;
15
- derived?: derivedContextType | null;
16
- }
@@ -1,49 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { dataLayerContext } from "../contexts/context.datalayer.js";
8
- import { derivedContext } from "../contexts/context.derived.js";
9
- import { optionContext } from "../contexts/context.option.js";
10
- import { productContext } from "../contexts/context.product.js";
11
- import { storeContext } from "../contexts/context.store.js";
12
- import { provide } from "@lit/context";
13
- import { property } from "lit/decorators.js";
14
- import { StateNode } from "./node.state.js";
15
- export class RootNode extends StateNode {
16
- constructor() {
17
- super(...arguments);
18
- // Provide a default answer for optionContext at the root so
19
- // consumers always receive a value (Promise<null>) even when
20
- // not inside a <bd-option> subtree. A closer provider overrides it.
21
- this._optionContextDefault = Promise.resolve(null);
22
- // Provide a default product context so binders receive a value
23
- // even outside a <bd-product> subtree (overridden by closer provider).
24
- this._productContextDefault = null;
25
- // Provide user-defined derived variables/functions for Eta + DSL
26
- this.derived = null;
27
- }
28
- }
29
- __decorate([
30
- provide({ context: storeContext }),
31
- property({ attribute: false })
32
- ], RootNode.prototype, "store", void 0);
33
- __decorate([
34
- provide({ context: dataLayerContext }),
35
- property({ attribute: false })
36
- ], RootNode.prototype, "dataLayer", void 0);
37
- __decorate([
38
- provide({ context: optionContext }),
39
- property({ attribute: false })
40
- ], RootNode.prototype, "_optionContextDefault", void 0);
41
- __decorate([
42
- provide({ context: productContext }),
43
- property({ attribute: false })
44
- ], RootNode.prototype, "_productContextDefault", void 0);
45
- __decorate([
46
- provide({ context: derivedContext }),
47
- property({ attribute: false })
48
- ], RootNode.prototype, "derived", void 0);
49
- //# sourceMappingURL=node.root.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.root.js","sourceRoot":"","sources":["../../../src/nodes/node.root.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAwB,MAAM,8BAA8B,CAAC;AACtF,OAAO,EAAE,cAAc,EAAsB,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAqB,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAsB,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAoB,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,OAAO,QAAS,SAAQ,SAAS;IAAvC;;QAYE,4DAA4D;QAC5D,6DAA6D;QAC7D,oEAAoE;QAGpE,0BAAqB,GAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAElE,+DAA+D;QAC/D,uEAAuE;QAGvE,2BAAsB,GAAwB,IAAI,CAAC;QAEnD,iEAAiE;QAGjE,YAAO,GAA+B,IAAI,CAAC;IAC7C,CAAC;CAAA;AAvBC;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,EAAG,CAAC;IACnC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;uCACN;AAIzB;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;2CACE;AAOjC;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;uDACmC;AAMlE;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;wDACoB;AAKnD;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;yCACY","sourcesContent":["import { dataLayerContext, dataLayerContextType } from \"@/contexts/context.datalayer\";\nimport { derivedContext, derivedContextType } from \"@/contexts/context.derived\";\nimport { optionContext, optionContextType } from \"@/contexts/context.option\";\nimport { productContext, productContextType } from \"@/contexts/context.product\";\nimport { storeContext, storeContextType } from \"@/contexts/context.store\";\nimport { provide } from \"@lit/context\";\nimport { property } from \"lit/decorators.js\";\nimport { StateNode } from \"./node.state\";\n\nexport class RootNode extends StateNode {\n /**\n * Consumes store provided by root node\n */\n @provide({ context: storeContext })\n @property({ attribute: false })\n store?: storeContextType;\n\n @provide({ context: dataLayerContext })\n @property({ attribute: false })\n dataLayer?: dataLayerContextType;\n\n // Provide a default answer for optionContext at the root so\n // consumers always receive a value (Promise<null>) even when\n // not inside a <bd-option> subtree. A closer provider overrides it.\n @provide({ context: optionContext })\n @property({ attribute: false })\n _optionContextDefault?: optionContextType = Promise.resolve(null);\n\n // Provide a default product context so binders receive a value\n // even outside a <bd-product> subtree (overridden by closer provider).\n @provide({ context: productContext })\n @property({ attribute: false })\n _productContextDefault?: productContextType = null;\n\n // Provide user-defined derived variables/functions for Eta + DSL\n @provide({ context: derivedContext })\n @property({ attribute: false })\n derived?: derivedContextType | null = null;\n}\n"]}