@repobit/dex-store-elements 1.7.3 → 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 -913
  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 +0,0 @@
1
- {"version":3,"file":"compute-controller.js","sourceRoot":"","sources":["../../../src/controllers/compute-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { MinMax, stateContextType } from \"@/contexts/context.state\";\nimport { storeContextType } from \"@/contexts/context.store\";\nimport { Action, CollectAction, CollectUpdateByDelta, UpdateByDelta } from \"@/events/events\";\nimport { Task } from \"@lit/task\";\nimport { ProductBundleOption, ProductOption } from \"@repobit/dex-store\";\nimport { ReactiveController, ReactiveControllerHost } from \"lit\";\n\ntype Options = Map<symbol | string, Promise<ProductOption[]>>;\ntype Actions = Map<symbol | string, NonNullable<CollectAction[\"action\"]>>;\ntype DeltaUpdate = Map<symbol | string, NonNullable<CollectUpdateByDelta[\"update\"]>>;\ntype OptionMap = Map<string, ProductOption>;\n\ntype ComputeHost = ReactiveControllerHost & {\n storeName : symbol | string;\n _store? : storeContextType;\n _options : Options;\n _actions : Actions;\n _deltaUpdates : DeltaUpdate;\n _partialOptions : Actions;\n _partialBundleOptions: Actions;\n state : stateContextType;\n};\n\nexport class ComputeController implements ReactiveController {\n private host : ComputeHost;\n private _computeTask: Task<unknown[], ProductOption[] | undefined>;\n\n constructor(host: ComputeHost) {\n this.host = host;\n host.addController(this);\n\n this._computeTask = new Task(host, {\n task: async (_, { signal }) => {\n const isActive = () => {\n if (signal.aborted) {\n throw new DOMException(\"Task aborted\", `AbortError ${this.host.storeName.toString()}`);\n }\n };\n\n try {\n const computed = await this._computeState(isActive);\n await this._computeContext(computed, isActive);\n return computed;\n } catch (error: unknown) {\n if (this._isAbortError(error)) {\n return [];\n }\n console.error(error);\n return [];\n }\n },\n args: () => [this.host._store]\n });\n }\n\n get value() {\n return this._computeTask.value;\n }\n\n get taskComplete() {\n return this._computeTask.taskComplete;\n }\n\n run() {\n this._computeTask.run();\n }\n\n abort() {\n this._computeTask.abort();\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 private _isAbortError(error: unknown): boolean {\n return error instanceof DOMException && error.name.includes(\"AbortError\");\n }\n\n private async _computeState(isActive: () => void): Promise<ProductOption[]> {\n const computed: OptionMap = new Map();\n const queue: ProductOption[] = [];\n\n const enqueue = (option: ProductOption | null | undefined) => {\n if (!option) return;\n const key = this._getOptionKey(option);\n if (computed.has(key)) return;\n computed.set(key, option);\n queue.push(option);\n };\n\n await this._seedOptions(enqueue, isActive);\n await this._expandFixedPoint(queue, enqueue, isActive);\n await this._applyBundleCombinations(computed, enqueue, isActive);\n\n return [...computed.values()];\n }\n\n private async _seedOptions(\n enqueue: (option: ProductOption | null | undefined) => void,\n isActive: () => void\n ) {\n for (const optionsPromise of this.host._options.values()) {\n isActive();\n const options = await optionsPromise;\n for (const option of options) {\n isActive();\n enqueue(option);\n const partials = await this._applyPartials(option, isActive);\n for (const partial of partials) {\n enqueue(partial);\n }\n }\n }\n }\n\n private async _expandFixedPoint(\n queue: ProductOption[],\n enqueue: (option: ProductOption | null | undefined) => void,\n isActive: () => void\n ) {\n while (queue.length > 0) {\n isActive();\n const current = queue.shift()!;\n\n const actionResults = await this._applyActions(current, isActive);\n for (const option of actionResults) {\n enqueue(option);\n }\n\n const deltaResults = await this._applyDeltaUpdates(current, isActive);\n for (const option of deltaResults) {\n enqueue(option);\n }\n }\n }\n\n private async _applyBundleCombinations(\n computed: OptionMap,\n enqueue: (option: ProductOption | null | undefined) => void,\n isActive: () => void\n ) {\n const bundles = [...this.host._partialBundleOptions.values()];\n for (const option of [...computed.values()]) {\n isActive();\n const bundleResults = await this._applyBundles(option, bundles);\n for (const bundled of bundleResults) {\n enqueue(bundled);\n }\n }\n }\n\n private _getOptionKey(option: ProductOption): string {\n const product = option.getProduct();\n const bundle = option.getBundle()\n .map(({ option: bundled }) => this._getOptionKey(bundled))\n .sort()\n .join(\"|\");\n return [\n product.getId(),\n product.getCampaign() || \"\",\n option.getDevices(),\n option.getSubscription(),\n bundle\n ].join(\"::\");\n }\n\n private async _applyPartials(\n baseOpt: ProductOption,\n isActive: () => void\n ): Promise<ProductOption[]> {\n const results: ProductOption[] = [];\n for (const partial of this.host._partialOptions.values()) {\n isActive();\n if (!partial.id) {\n continue;\n }\n const newProduct = await baseOpt.switchProduct({ id: partial.id, campaign: partial.campaign });\n const newOpt = await newProduct?.getOption({\n devices : partial.devices ?? baseOpt.getDevices(),\n subscription: partial.subscription ?? baseOpt.getSubscription()\n });\n if (newOpt) results.push(newOpt);\n }\n return results;\n }\n\n private async _applyActions(\n baseOpt: ProductOption,\n isActive: () => void\n ): Promise<ProductOption[]> {\n const results: ProductOption[] = [];\n for (const action of this.host._actions.values()) {\n isActive();\n const targetDevices = action.devices ?? baseOpt.getDevices();\n const targetSubscription = action.subscription ?? baseOpt.getSubscription();\n // Skip no-op actions that don't change anything\n if (targetDevices === baseOpt.getDevices() && targetSubscription === baseOpt.getSubscription()) {\n continue;\n }\n const newOpt = await baseOpt.getOption({\n devices : targetDevices,\n subscription: targetSubscription\n });\n if (newOpt) results.push(newOpt);\n }\n return results;\n }\n\n private async _applyDeltaUpdates(\n baseOpt: ProductOption,\n isActive: () => void\n ): Promise<ProductOption[]> {\n const results: ProductOption[] = [];\n\n for (const action of this.host._deltaUpdates.values()) {\n isActive();\n const updates = action.useAsValue\n ? await this._applyAbsoluteDelta(baseOpt, action, isActive)\n : await this._applySteppedDelta(baseOpt, action, isActive);\n\n for (const option of updates) {\n results.push(option);\n }\n }\n\n return results;\n }\n\n private async _applyAbsoluteDelta(\n baseOpt: ProductOption,\n action: UpdateByDelta,\n isActive: () => void\n ): Promise<ProductOption[]> {\n const values = this._getDimensionValues(baseOpt, action.type);\n const results: ProductOption[] = [];\n const bounds = this._getAbsoluteBounds(action, action.delta);\n\n for (const value of values) {\n isActive();\n if (value < bounds.min || value > bounds.max) continue;\n const option = await this._getOptionByDimension(baseOpt, action.type, value);\n if (option) results.push(option);\n }\n\n return results;\n }\n\n private async _applySteppedDelta(\n baseOpt: ProductOption,\n action: UpdateByDelta,\n isActive: () => void\n ): Promise<ProductOption[]> {\n const results: ProductOption[] = [];\n const values = this._getDimensionValues(baseOpt, action.type);\n let current = action.type === \"devices\"\n ? baseOpt.getDevices()\n : baseOpt.getSubscription();\n\n while (true) {\n isActive();\n const next = this._computeDelta(values, current, action);\n if (next === null) break;\n\n current = next;\n const option = await this._getOptionByDimension(baseOpt, action.type, current);\n if (option) {\n results.push(option);\n }\n }\n\n return results;\n }\n\n private _getDimensionValues(\n option: ProductOption,\n type: UpdateByDelta[\"type\"]\n ): number[] {\n const product = option.getProduct();\n return type === \"devices\"\n ? product.getDevices().values\n : product.getSubscriptions().values;\n }\n\n private _getAbsoluteBounds(\n action: UpdateByDelta,\n fallback: UpdateByDelta[\"delta\"]\n ): { min: number; max: number } {\n const fallbackValue =\n typeof fallback === \"number\" && !Number.isNaN(fallback)\n ? fallback\n : Number.MIN_SAFE_INTEGER;\n const min = action.min ?? fallbackValue;\n const max = action.max ?? fallbackValue;\n return min <= max ? { min, max } : { min: max, max: min };\n }\n\n /**\n * Returns the next delta value for this action, or null when expansion is done.\n */\n private _computeDelta(\n values: number[],\n current: number,\n action: UpdateByDelta\n ): number | null {\n const min = action.min ?? Number.MIN_SAFE_INTEGER;\n const max = action.max ?? Number.MAX_SAFE_INTEGER;\n const lower = Math.min(min, max);\n const upper = Math.max(min, max);\n\n if (action.delta === \"next\" || action.delta === \"prev\") {\n const idx = values.findIndex(v => v === current);\n const step = action.delta === \"next\" ? 1 : -1;\n const candidate = values.at(idx + step);\n if (candidate === undefined) return null;\n if (candidate < lower || candidate > upper) return null;\n return candidate === current ? null : candidate;\n }\n\n if (Number.isNaN(action.delta) || action.delta === 0) {\n return null;\n }\n\n const candidate = current + action.delta;\n if (candidate < lower || candidate > upper) return null;\n return candidate === current ? null : candidate;\n }\n\n private async _computeContext(options: ProductOption[], isActive: () => void) {\n const nextState = this._createInitialState();\n\n for (const option of options) {\n isActive();\n\n this._updateMinMax(\n nextState.price,\n option.getPrice({ currency: false }),\n option.getPrice()\n );\n\n this._updateMinMax(\n nextState.price.monthly,\n option.getPrice({ monthly: true, currency: false }),\n option.getPrice({ monthly: true })\n );\n\n this._updateMinMax(\n nextState.discountedPrice,\n option.getDiscountedPrice({ currency: false }),\n option.getDiscountedPrice()\n );\n\n this._updateMinMax(\n nextState.discountedPrice.monthly,\n option.getDiscountedPrice({ monthly: true, currency: false }),\n option.getDiscountedPrice({ monthly: true })\n );\n\n this._updateMinMax(\n nextState.discount,\n option.getDiscount({ symbol: false }),\n option.getDiscount()\n );\n\n this._updateMinMax(\n nextState.discount.monthly,\n option.getDiscount({ monthly: true, symbol: false }),\n option.getDiscount({ monthly: true })\n );\n\n this._updateMinMax(\n nextState.discount.percentage,\n option.getDiscount({ percentage: true, symbol: false }),\n option.getDiscount({ percentage: true })\n );\n\n this._updateMinMax(\n nextState.discount.percentage.monthly,\n option.getDiscount({ monthly: true, percentage: true, symbol: false }),\n option.getDiscount({ monthly: true, percentage: true })\n );\n }\n\n this.host.state = nextState;\n }\n\n private _updateMinMax(range: MinMax, value: number, formatted: string) {\n if (value < range.min.value) {\n range.min.value = value;\n range.min.fmt = formatted;\n }\n if (value > range.max.value) {\n range.max.value = value;\n range.max.fmt = formatted;\n }\n }\n\n private _createInitialState(): stateContextType {\n const createRange = (): MinMax => ({\n min: { value: Number.MAX_SAFE_INTEGER, fmt: \"\" },\n max: { value: Number.MIN_SAFE_INTEGER, fmt: \"\" }\n });\n\n return {\n price: {\n ...createRange(),\n monthly: createRange()\n },\n discountedPrice: {\n ...createRange(),\n monthly: createRange()\n },\n discount: {\n ...createRange(),\n monthly : createRange(),\n percentage: {\n ...createRange(),\n monthly: createRange()\n }\n }\n };\n }\n\n private async _getOptionByDimension(\n baseOpt: ProductOption,\n type: UpdateByDelta[\"type\"],\n value: number\n ) {\n const devices = type === \"devices\" ? value : baseOpt.getDevices();\n const subscription = type === \"subscription\" ? value : baseOpt.getSubscription();\n return baseOpt.getOption({ devices, subscription });\n }\n\n private async _getOption({ id, campaign, devices, subscription }: Partial<Action>, bundle: ProductBundleOption[] = []) {\n if (id && devices !== undefined && subscription !== undefined) {\n const product = await this.host._store?.getProduct({ id, campaign });\n return await product?.getOption({ devices, subscription, bundle });\n }\n\n return null;\n }\n\n private async _applyBundles(baseOpt: ProductOption, bundles: Partial<Action>[]) {\n if (bundles.length === 0) {\n return [];\n }\n const result: ProductBundleOption[][] = [];\n\n const recurse = async (prefix: ProductBundleOption[], start: number) => {\n for (let i = start; i < bundles.length; i++) {\n const action = bundles[i];\n const bundleOption = await this._getOption({\n id : action.id,\n campaign : action.campaign,\n devices : action.devices ?? baseOpt.getDevices(),\n subscription: action.subscription ?? baseOpt.getSubscription()\n });\n\n if (!bundleOption) {\n continue;\n }\n\n const next = prefix.concat({\n devicesFixed : action.devices !== undefined,\n subscriptionFixed: action.subscription !== undefined,\n option : bundleOption\n });\n\n result.push(next);\n await recurse(next, i + 1);\n }\n };\n\n const bundleOption = async (option: ProductOption, bundlesToApply: ProductBundleOption[] = []) => {\n for (const bundle of bundlesToApply) {\n const newOpt = await option.toogleBundle(bundle);\n if (newOpt) {\n option = newOpt;\n } else {\n return null;\n }\n }\n return option;\n };\n\n await recurse([], 0);\n\n return Promise.all(result.map(bundlesToApply => bundleOption(baseOpt, bundlesToApply)));\n }\n}\n"]}
@@ -1,25 +0,0 @@
1
- import { EtaTemplateCache } from "../../controllers/eta-renderer/eta-template-cache.js";
2
- import { EtaRenderHost, ObserveShadowRoot } from "../../controllers/eta-renderer/eta-types.js";
3
- type RenderOptions = {
4
- fromMutation: boolean;
5
- dirtyRoots?: Set<HTMLElement> | null;
6
- };
7
- export declare class EtaDomRenderer {
8
- private host;
9
- private cache;
10
- private observeShadowRoot?;
11
- constructor(host: EtaRenderHost, cache: EtaTemplateCache, observeShadowRoot?: ObserveShadowRoot);
12
- render(context: object, { fromMutation, dirtyRoots }: RenderOptions): Promise<void>;
13
- private _visit;
14
- private _waitForCustomUpdate;
15
- private _safeEtaRender;
16
- private _renderEtaAttributes;
17
- private _hasRenderNodes;
18
- private _hasNestedStateNode;
19
- private _reconcileTemplateClasses;
20
- /** Recursively remove from template elements any literal (non-template) classes
21
- * that have been stripped from the corresponding live-DOM elements externally. */
22
- private _patchRemovedClasses;
23
- private _morphElementFromHTML;
24
- }
25
- export {};
@@ -1,192 +0,0 @@
1
- import eta from "../../templating/eta.js";
2
- import morph from "nanomorph";
3
- export class EtaDomRenderer {
4
- constructor(host, cache, observeShadowRoot) {
5
- this.host = host;
6
- this.cache = cache;
7
- this.observeShadowRoot = observeShadowRoot;
8
- }
9
- async render(context, { fromMutation, dirtyRoots }) {
10
- const roots = dirtyRoots && dirtyRoots.size ? Array.from(dirtyRoots) : [this.host];
11
- const visitWithShadow = async (root) => {
12
- await this._visit(root, context, fromMutation);
13
- if (root.hasAttribute("shadow") && root.shadowRoot) {
14
- await this._visit(root.shadowRoot, context, fromMutation);
15
- }
16
- };
17
- for (const r of roots) {
18
- if (!r)
19
- continue;
20
- await visitWithShadow(r);
21
- }
22
- }
23
- async _visit(root, context, fromMutation) {
24
- let processed = 0;
25
- for (const child of Array.from(root.children)) {
26
- if (!(child instanceof HTMLElement))
27
- continue;
28
- await this._waitForCustomUpdate(child);
29
- const shadowRoot = child.hasAttribute("shadow") ? child.shadowRoot : null;
30
- const traverseShadow = async () => {
31
- if (shadowRoot) {
32
- await this._visit(shadowRoot, context, fromMutation);
33
- }
34
- };
35
- if (shadowRoot && this.observeShadowRoot) {
36
- this.observeShadowRoot(shadowRoot, child);
37
- }
38
- const currentSrc = child.innerHTML ?? "";
39
- await this._renderEtaAttributes(child, context, fromMutation);
40
- if (this.host.isStateNodeElement(child) && child !== this.host) {
41
- continue; // nested provider; let it handle its subtree
42
- }
43
- const hasNestedStateNode = this._hasNestedStateNode(child);
44
- if (hasNestedStateNode) {
45
- await this._visit(child, context, fromMutation);
46
- await traverseShadow();
47
- continue;
48
- }
49
- if (this._hasRenderNodes(child)) {
50
- await this._visit(child, context, fromMutation);
51
- await traverseShadow();
52
- continue;
53
- }
54
- if (child.hasAttribute("data-store-render")) {
55
- continue;
56
- }
57
- const hadTemplate = this.cache.hasTemplate(child);
58
- const noAttrs = this.cache.hasNoEtaAttrs(child);
59
- if (!currentSrc.includes("{{") && noAttrs && !hadTemplate && !hasNestedStateNode) {
60
- await traverseShadow();
61
- continue;
62
- }
63
- const entry = this.cache.updateElementEntry(child, currentSrc, { allowMutationRefresh: fromMutation });
64
- if (!fromMutation) {
65
- const lastRendered = this.cache.getLastRendered(child);
66
- if (lastRendered !== undefined &&
67
- currentSrc !== lastRendered &&
68
- !currentSrc.includes("{{")) {
69
- this._reconcileTemplateClasses(entry, currentSrc);
70
- }
71
- const out = this._safeEtaRender(entry, context, { onErrorReturnInput: true });
72
- await this._morphElementFromHTML(child, out);
73
- this.cache.setLastRendered(child, out);
74
- }
75
- await traverseShadow();
76
- if ((++processed % 50) === 0) {
77
- await Promise.resolve();
78
- }
79
- }
80
- }
81
- async _waitForCustomUpdate(el) {
82
- const maybe = el.updateComplete;
83
- if (maybe && typeof maybe.then === "function") {
84
- try {
85
- await maybe;
86
- }
87
- catch { /* ignore */ }
88
- }
89
- }
90
- _safeEtaRender(entry, data, { onErrorReturnInput = false } = {}) {
91
- try {
92
- if (!entry.fn) {
93
- entry.fn = eta.compile(entry.src);
94
- }
95
- const out = eta.render(entry.fn, data);
96
- return typeof out === "string" ? out : String(out ?? "");
97
- }
98
- catch (err) {
99
- console.error("Eta render error:", err);
100
- return onErrorReturnInput ? entry.src : "";
101
- }
102
- }
103
- async _renderEtaAttributes(el, data, fromMutation) {
104
- const names = el.getAttributeNames();
105
- const cache = this.cache.getOrCreateAttrCache(el);
106
- if (this.cache.hasNoEtaAttrs(el))
107
- return;
108
- let foundTemplateAttr = false;
109
- for (const a of names) {
110
- const raw = el.getAttribute(a);
111
- if (!raw || !raw.includes("{{"))
112
- continue;
113
- foundTemplateAttr = true;
114
- const key = `imp:${a}`;
115
- let entry = cache.get(key);
116
- if (!entry || entry.src !== raw) {
117
- entry = { src: raw };
118
- cache.set(key, entry);
119
- }
120
- if (!fromMutation) {
121
- const rendered = this._safeEtaRender(entry, data, { onErrorReturnInput: true });
122
- if (rendered !== raw) {
123
- try {
124
- el.setAttribute(a, rendered);
125
- }
126
- catch { /* ignore */ }
127
- }
128
- }
129
- }
130
- if (!foundTemplateAttr) {
131
- this.cache.markNoEtaAttrs(el);
132
- }
133
- }
134
- _hasRenderNodes(el) {
135
- const h = el;
136
- if (!h)
137
- return false;
138
- if (h.hasAttribute && h.hasAttribute("data-store-render"))
139
- return true;
140
- const html = h.innerHTML;
141
- return typeof html === "string" && html.includes("data-store-render");
142
- }
143
- _hasNestedStateNode(el) {
144
- return !!el.querySelector?.("bd-state,bd-product,bd-option,bd-context");
145
- }
146
- _reconcileTemplateClasses(entry, currentDomSrc) {
147
- const templateWrapper = document.createElement("div");
148
- templateWrapper.innerHTML = entry.src;
149
- const domWrapper = document.createElement("div");
150
- domWrapper.innerHTML = currentDomSrc;
151
- this._patchRemovedClasses(templateWrapper, domWrapper);
152
- const patched = templateWrapper.innerHTML;
153
- if (patched !== entry.src) {
154
- entry.src = patched;
155
- delete entry.fn;
156
- }
157
- }
158
- /** Recursively remove from template elements any literal (non-template) classes
159
- * that have been stripped from the corresponding live-DOM elements externally. */
160
- _patchRemovedClasses(templateEl, domEl) {
161
- const templateChildren = Array.from(templateEl.children);
162
- const domChildren = Array.from(domEl.children);
163
- for (let i = 0; i < Math.min(templateChildren.length, domChildren.length); i++) {
164
- const tc = templateChildren[i];
165
- const dc = domChildren[i];
166
- if (tc.tagName !== dc.tagName)
167
- continue;
168
- for (const cls of [...tc.classList]) {
169
- // Skip template expressions embedded inside class tokens (e.g. "{{it.cls}}")
170
- if (cls.includes("{{"))
171
- continue;
172
- if (!dc.classList.contains(cls)) {
173
- tc.classList.remove(cls);
174
- }
175
- }
176
- this._patchRemovedClasses(tc, dc);
177
- }
178
- }
179
- async _morphElementFromHTML(el, html) {
180
- if (el.innerHTML === html)
181
- return;
182
- try {
183
- const wrapper = el.cloneNode(false);
184
- wrapper.innerHTML = html;
185
- morph(el, wrapper);
186
- }
187
- catch {
188
- el.innerHTML = html;
189
- }
190
- }
191
- }
192
- //# sourceMappingURL=eta-dom-renderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eta-dom-renderer.js","sourceRoot":"","sources":["../../../../src/controllers/eta-renderer/eta-dom-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["import { EtaTemplateCache } from \"@/controllers/eta-renderer/eta-template-cache\";\nimport { EtaRenderHost, ObserveShadowRoot } from \"@/controllers/eta-renderer/eta-types\";\nimport eta from \"@/templating/eta\";\nimport morph from \"nanomorph\";\n\ntype RenderOptions = {\n fromMutation: boolean;\n dirtyRoots? : Set<HTMLElement> | null;\n};\n\ntype TemplateEntry = { src: string; fn?: ReturnType<typeof eta.compile> };\n\nexport class EtaDomRenderer {\n private host : EtaRenderHost;\n private cache : EtaTemplateCache;\n private observeShadowRoot?: ObserveShadowRoot;\n\n constructor(host: EtaRenderHost, cache: EtaTemplateCache, observeShadowRoot?: ObserveShadowRoot) {\n this.host = host;\n this.cache = cache;\n this.observeShadowRoot = observeShadowRoot;\n }\n\n async render(context: object, { fromMutation, dirtyRoots }: RenderOptions) {\n const roots = dirtyRoots && dirtyRoots.size ? Array.from(dirtyRoots) : [this.host as unknown as HTMLElement];\n\n const visitWithShadow = async (root: Element) => {\n await this._visit(root, context, fromMutation);\n if (root.hasAttribute(\"shadow\") && (root as HTMLElement).shadowRoot) {\n await this._visit((root as HTMLElement).shadowRoot as ShadowRoot, context, fromMutation);\n }\n };\n\n for (const r of roots) {\n if (!r) continue;\n await visitWithShadow(r);\n }\n }\n\n private async _visit(root: Element | ShadowRoot, context: object, fromMutation: boolean) {\n let processed = 0;\n for (const child of Array.from(root.children)) {\n if (!(child instanceof HTMLElement)) continue;\n\n await this._waitForCustomUpdate(child);\n\n const shadowRoot = child.hasAttribute(\"shadow\") ? child.shadowRoot : null;\n const traverseShadow = async () => {\n if (shadowRoot) {\n await this._visit(shadowRoot, context, fromMutation);\n }\n };\n if (shadowRoot && this.observeShadowRoot) {\n this.observeShadowRoot(shadowRoot, child);\n }\n\n const currentSrc = child.innerHTML ?? \"\";\n\n await this._renderEtaAttributes(child, context, fromMutation);\n\n if (this.host.isStateNodeElement(child) && child !== this.host) {\n continue; // nested provider; let it handle its subtree\n }\n\n const hasNestedStateNode = this._hasNestedStateNode(child);\n if (hasNestedStateNode) {\n await this._visit(child, context, fromMutation);\n await traverseShadow();\n continue;\n }\n\n if (this._hasRenderNodes(child)) {\n await this._visit(child, context, fromMutation);\n await traverseShadow();\n continue;\n }\n\n if (child.hasAttribute(\"data-store-render\")) {\n continue;\n }\n\n const hadTemplate = this.cache.hasTemplate(child);\n const noAttrs = this.cache.hasNoEtaAttrs(child);\n if (!currentSrc.includes(\"{{\") && noAttrs && !hadTemplate && !hasNestedStateNode) {\n await traverseShadow();\n continue;\n }\n\n const entry = this.cache.updateElementEntry(child, currentSrc, { allowMutationRefresh: fromMutation });\n\n if (!fromMutation) {\n const lastRendered = this.cache.getLastRendered(child);\n if (\n lastRendered !== undefined &&\n currentSrc !== lastRendered &&\n !currentSrc.includes(\"{{\")\n ) {\n this._reconcileTemplateClasses(entry, currentSrc);\n }\n const out = this._safeEtaRender(entry, context, { onErrorReturnInput: true });\n await this._morphElementFromHTML(child, out);\n this.cache.setLastRendered(child, out);\n }\n await traverseShadow();\n\n if ((++processed % 50) === 0) {\n await Promise.resolve();\n }\n }\n }\n\n private async _waitForCustomUpdate(el: HTMLElement) {\n const maybe = (el as unknown as { updateComplete?: Promise<unknown> }).updateComplete;\n if (maybe && typeof (maybe as Promise<unknown>).then === \"function\") {\n try {\n await maybe;\n } catch { /* ignore */ }\n }\n }\n\n private _safeEtaRender(entry: TemplateEntry, data: object, { onErrorReturnInput = false }: { onErrorReturnInput?: boolean } = {}) {\n try {\n if (!entry.fn) {\n entry.fn = eta.compile(entry.src);\n }\n const out = eta.render(entry.fn, data);\n return typeof out === \"string\" ? out : String(out ?? \"\");\n } catch (err) {\n console.error(\"Eta render error:\", err);\n return onErrorReturnInput ? entry.src : \"\";\n }\n }\n\n private async _renderEtaAttributes(el: HTMLElement, data: object, fromMutation: boolean) {\n const names = el.getAttributeNames();\n const cache = this.cache.getOrCreateAttrCache(el);\n\n if (this.cache.hasNoEtaAttrs(el)) return;\n\n let foundTemplateAttr = false;\n for (const a of names) {\n const raw = el.getAttribute(a);\n if (!raw || !raw.includes(\"{{\")) continue;\n foundTemplateAttr = true;\n const key = `imp:${a}`;\n let entry = cache.get(key);\n if (!entry || entry.src !== raw) {\n entry = { src: raw };\n cache.set(key, entry);\n }\n if (!fromMutation) {\n const rendered = this._safeEtaRender(entry, data, { onErrorReturnInput: true });\n if (rendered !== raw) {\n try { el.setAttribute(a, rendered); } catch { /* ignore */ }\n }\n }\n }\n\n if (!foundTemplateAttr) {\n this.cache.markNoEtaAttrs(el);\n }\n }\n\n private _hasRenderNodes(el: Element): boolean {\n const h = el as HTMLElement;\n if (!h) return false;\n if (h.hasAttribute && h.hasAttribute(\"data-store-render\")) return true;\n const html = h.innerHTML;\n return typeof html === \"string\" && html.includes(\"data-store-render\");\n }\n\n private _hasNestedStateNode(el: Element): boolean {\n return !!(el as Element).querySelector?.(\"bd-state,bd-product,bd-option,bd-context\");\n }\n\n private _reconcileTemplateClasses(entry: TemplateEntry, currentDomSrc: string) {\n const templateWrapper = document.createElement(\"div\");\n templateWrapper.innerHTML = entry.src;\n\n const domWrapper = document.createElement(\"div\");\n domWrapper.innerHTML = currentDomSrc;\n\n this._patchRemovedClasses(templateWrapper, domWrapper);\n\n const patched = templateWrapper.innerHTML;\n if (patched !== entry.src) {\n entry.src = patched;\n delete entry.fn;\n }\n }\n\n /** Recursively remove from template elements any literal (non-template) classes\n * that have been stripped from the corresponding live-DOM elements externally. */\n private _patchRemovedClasses(templateEl: Element, domEl: Element) {\n const templateChildren = Array.from(templateEl.children);\n const domChildren = Array.from(domEl.children);\n\n for (let i = 0; i < Math.min(templateChildren.length, domChildren.length); i++) {\n const tc = templateChildren[i] as HTMLElement;\n const dc = domChildren[i] as HTMLElement;\n if (tc.tagName !== dc.tagName) continue;\n\n for (const cls of [...tc.classList]) {\n // Skip template expressions embedded inside class tokens (e.g. \"{{it.cls}}\")\n if (cls.includes(\"{{\")) continue;\n if (!dc.classList.contains(cls)) {\n tc.classList.remove(cls);\n }\n }\n\n this._patchRemovedClasses(tc, dc);\n }\n }\n\n private async _morphElementFromHTML(el: HTMLElement, html: string) {\n if (el.innerHTML === html) return;\n try {\n const wrapper = el.cloneNode(false) as HTMLElement;\n wrapper.innerHTML = html;\n morph(el, wrapper);\n } catch {\n el.innerHTML = html;\n }\n }\n}\n"]}
@@ -1,28 +0,0 @@
1
- import { EtaTemplateCache } from "../../controllers/eta-renderer/eta-template-cache.js";
2
- import { EtaRenderHost } from "../../controllers/eta-renderer/eta-types.js";
3
- type ScheduleFn = () => void;
4
- type Suspendable<T> = () => Promise<T> | T;
5
- export declare class EtaMutationObserver {
6
- private host;
7
- private cache;
8
- private schedule;
9
- private slotMo?;
10
- private shadowMos?;
11
- private dirtyRoots;
12
- private debounce?;
13
- private coalesceDelay?;
14
- private suspended;
15
- private sawMutationWhileSuspended;
16
- constructor(host: EtaRenderHost, cache: EtaTemplateCache, schedule: ScheduleFn);
17
- connect(): void;
18
- disconnect(): void;
19
- isIdle(): boolean;
20
- consumeDirtyRoots(): Set<HTMLElement> | undefined;
21
- suspend<T>(fn: Suspendable<T>): Promise<T>;
22
- ensureShadowRootObserved(sr: ShadowRoot, host?: HTMLElement): void;
23
- private _schedule;
24
- private _handleMutations;
25
- private _cleanupShadowRoot;
26
- private _findEligibleRoot;
27
- }
28
- export {};
@@ -1,206 +0,0 @@
1
- export class EtaMutationObserver {
2
- constructor(host, cache, schedule) {
3
- this.dirtyRoots = new Set();
4
- this.suspended = false;
5
- this.sawMutationWhileSuspended = false;
6
- this.host = host;
7
- this.cache = cache;
8
- this.schedule = schedule;
9
- }
10
- connect() {
11
- if (!this.host.shouldObserveEtaMutations())
12
- return;
13
- if (this.slotMo)
14
- return;
15
- this.slotMo = new MutationObserver((muts) => this._handleMutations(muts));
16
- this.slotMo.observe(this.host, {
17
- childList: true,
18
- subtree: true,
19
- characterData: true,
20
- attributes: true
21
- });
22
- this.host.querySelectorAll("[shadow]").forEach(host => {
23
- if (host.shadowRoot)
24
- this.ensureShadowRootObserved(host.shadowRoot, host);
25
- });
26
- }
27
- disconnect() {
28
- if (this.debounce) {
29
- clearTimeout(this.debounce);
30
- this.debounce = undefined;
31
- }
32
- this.slotMo?.disconnect();
33
- this.slotMo = undefined;
34
- if (this.shadowMos) {
35
- for (const [sr, mo] of this.shadowMos.entries()) {
36
- try {
37
- mo.disconnect();
38
- }
39
- catch { /* ignore */ }
40
- try {
41
- this._cleanupShadowRoot(sr);
42
- }
43
- catch { /* ignore */ }
44
- }
45
- this.shadowMos.clear();
46
- this.shadowMos = undefined;
47
- }
48
- }
49
- isIdle() {
50
- return !this.debounce;
51
- }
52
- consumeDirtyRoots() {
53
- if (this.dirtyRoots.size === 0)
54
- return undefined;
55
- const roots = new Set(this.dirtyRoots);
56
- this.dirtyRoots.clear();
57
- return roots;
58
- }
59
- async suspend(fn) {
60
- this.suspended = true;
61
- try {
62
- return await fn();
63
- }
64
- finally {
65
- this.suspended = false;
66
- if (this.sawMutationWhileSuspended) {
67
- this.sawMutationWhileSuspended = false;
68
- this._schedule();
69
- }
70
- }
71
- }
72
- ensureShadowRootObserved(sr, host) {
73
- if (!this.host.shouldObserveEtaMutations())
74
- return;
75
- const rootHost = host ?? (sr.host instanceof HTMLElement ? sr.host : null);
76
- if (rootHost) {
77
- const eligible = this._findEligibleRoot(rootHost);
78
- if (!eligible)
79
- return;
80
- }
81
- if (!this.shadowMos)
82
- this.shadowMos = new Map();
83
- if (this.shadowMos.has(sr))
84
- return;
85
- const mo = new MutationObserver((muts) => this._handleMutations(muts));
86
- mo.observe(sr, {
87
- childList: true,
88
- subtree: true,
89
- characterData: true,
90
- attributes: true
91
- });
92
- this.shadowMos.set(sr, mo);
93
- sr.querySelectorAll("[shadow]").forEach(host => {
94
- if (host.shadowRoot)
95
- this.ensureShadowRootObserved(host.shadowRoot, host);
96
- });
97
- }
98
- _schedule() {
99
- if (!this.host.shouldObserveEtaMutations())
100
- return;
101
- const base = Math.max(0, Number(this.host.etaMutationDelay) || 0);
102
- const max = Math.max(base, Number(this.host.etaMutationDelayMax) || 0);
103
- let delay = base;
104
- if (this.debounce) {
105
- clearTimeout(this.debounce);
106
- const prev = this.coalesceDelay ?? base;
107
- delay = Math.min(prev > 0 ? prev * 2 : base, max);
108
- }
109
- this.coalesceDelay = delay;
110
- this.debounce = window.setTimeout(() => {
111
- this.debounce = undefined;
112
- this.coalesceDelay = base;
113
- this.schedule();
114
- }, delay);
115
- }
116
- _handleMutations(muts) {
117
- if (this.suspended) {
118
- this.sawMutationWhileSuspended = true;
119
- return;
120
- }
121
- for (const m of muts) {
122
- if (m.type === "attributes") {
123
- const attr = m.attributeName?.toLowerCase();
124
- if (attr === "class" || attr === "style")
125
- continue;
126
- }
127
- const targets = [];
128
- if (m.type === "characterData" || m.type === "attributes") {
129
- targets.push(m.target);
130
- if (m.type === "attributes" && m.target instanceof HTMLElement) {
131
- this.cache.clearNoEtaAttrs(m.target);
132
- }
133
- }
134
- else {
135
- targets.push(...Array.from(m.addedNodes));
136
- for (const removed of Array.from(m.removedNodes)) {
137
- if (!(removed instanceof HTMLElement))
138
- continue;
139
- if (removed.hasAttribute("shadow") && removed.shadowRoot) {
140
- this._cleanupShadowRoot(removed.shadowRoot);
141
- }
142
- removed
143
- .querySelectorAll("[shadow]")
144
- .forEach(host => host.shadowRoot && this._cleanupShadowRoot(host.shadowRoot));
145
- }
146
- }
147
- const eligibles = [];
148
- for (const t of targets) {
149
- if (t instanceof HTMLElement && t.hasAttribute("shadow") && t.shadowRoot) {
150
- this.ensureShadowRootObserved(t.shadowRoot, t);
151
- }
152
- if (t instanceof HTMLElement) {
153
- t.querySelectorAll("[shadow]").forEach(host => {
154
- if (host.shadowRoot)
155
- this.ensureShadowRootObserved(host.shadowRoot, host);
156
- });
157
- }
158
- const root = this._findEligibleRoot(t);
159
- if (root)
160
- eligibles.push(root);
161
- }
162
- if (!eligibles.length)
163
- continue;
164
- eligibles.forEach(r => this.dirtyRoots.add(r));
165
- this._schedule();
166
- break;
167
- }
168
- }
169
- _cleanupShadowRoot(sr) {
170
- if (this.shadowMos && this.shadowMos.has(sr)) {
171
- const mo = this.shadowMos.get(sr);
172
- try {
173
- mo?.disconnect();
174
- }
175
- catch { /* ignore */ }
176
- this.shadowMos.delete(sr);
177
- }
178
- sr.querySelectorAll("[shadow]").forEach(host => {
179
- if (host.shadowRoot)
180
- this._cleanupShadowRoot(host.shadowRoot);
181
- });
182
- }
183
- _findEligibleRoot(n) {
184
- let cur = n;
185
- while (cur && cur !== this.host) {
186
- if (cur instanceof ShadowRoot) {
187
- cur = cur.host;
188
- continue;
189
- }
190
- if (!(cur instanceof HTMLElement)) {
191
- cur = cur.parentNode;
192
- continue;
193
- }
194
- if (this.host.isStateNodeElement(cur) && cur !== this.host)
195
- return null;
196
- if (cur.hasAttribute("data-store-render"))
197
- return null;
198
- const parentProvider = cur.parentElement?.closest("bd-state,bd-product,bd-option,bd-context");
199
- if (parentProvider === this.host || cur.parentElement === this.host)
200
- return cur;
201
- cur = cur.parentNode;
202
- }
203
- return this.host;
204
- }
205
- }
206
- //# sourceMappingURL=eta-mutation-observer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eta-mutation-observer.js","sourceRoot":"","sources":["../../../../src/controllers/eta-renderer/eta-mutation-observer.ts"],"names":[],"mappings":"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","sourcesContent":["import { EtaTemplateCache } from \"@/controllers/eta-renderer/eta-template-cache\";\nimport { EtaRenderHost } from \"@/controllers/eta-renderer/eta-types\";\n\ntype ScheduleFn = () => void;\n\ntype Suspendable<T> = () => Promise<T> | T;\n\nexport class EtaMutationObserver {\n private host : EtaRenderHost;\n private cache : EtaTemplateCache;\n private schedule: ScheduleFn;\n\n private slotMo? : MutationObserver;\n private shadowMos?: Map<ShadowRoot, MutationObserver>;\n private dirtyRoots = new Set<HTMLElement>();\n\n private debounce? : number;\n private coalesceDelay?: number;\n\n private suspended = false;\n private sawMutationWhileSuspended = false;\n\n constructor(host: EtaRenderHost, cache: EtaTemplateCache, schedule: ScheduleFn) {\n this.host = host;\n this.cache = cache;\n this.schedule = schedule;\n }\n\n connect() {\n if (!this.host.shouldObserveEtaMutations()) return;\n if (this.slotMo) return;\n this.slotMo = new MutationObserver((muts) => this._handleMutations(muts));\n this.slotMo.observe(this.host, {\n childList : true,\n subtree : true,\n characterData: true,\n attributes : true\n });\n this.host.querySelectorAll<HTMLElement>(\"[shadow]\").forEach(host => {\n if (host.shadowRoot) this.ensureShadowRootObserved(host.shadowRoot, host);\n });\n }\n\n disconnect() {\n if (this.debounce) {\n clearTimeout(this.debounce);\n this.debounce = undefined;\n }\n this.slotMo?.disconnect();\n this.slotMo = undefined;\n if (this.shadowMos) {\n for (const [sr, mo] of this.shadowMos.entries()) {\n try { mo.disconnect(); } catch { /* ignore */ }\n try { this._cleanupShadowRoot(sr); } catch { /* ignore */ }\n }\n this.shadowMos.clear();\n this.shadowMos = undefined;\n }\n }\n\n isIdle(): boolean {\n return !this.debounce;\n }\n\n consumeDirtyRoots(): Set<HTMLElement> | undefined {\n if (this.dirtyRoots.size === 0) return undefined;\n const roots = new Set(this.dirtyRoots);\n this.dirtyRoots.clear();\n return roots;\n }\n\n async suspend<T>(fn: Suspendable<T>): Promise<T> {\n this.suspended = true;\n try {\n return await fn();\n } finally {\n this.suspended = false;\n if (this.sawMutationWhileSuspended) {\n this.sawMutationWhileSuspended = false;\n this._schedule();\n }\n }\n }\n\n ensureShadowRootObserved(sr: ShadowRoot, host?: HTMLElement) {\n if (!this.host.shouldObserveEtaMutations()) return;\n const rootHost = host ?? (sr.host instanceof HTMLElement ? sr.host : null);\n if (rootHost) {\n const eligible = this._findEligibleRoot(rootHost);\n if (!eligible) return;\n }\n if (!this.shadowMos) this.shadowMos = new Map();\n if (this.shadowMos.has(sr)) return;\n const mo = new MutationObserver((muts) => this._handleMutations(muts));\n mo.observe(sr, {\n childList : true,\n subtree : true,\n characterData: true,\n attributes : true\n });\n this.shadowMos.set(sr, mo);\n sr.querySelectorAll<HTMLElement>(\"[shadow]\").forEach(host => {\n if (host.shadowRoot) this.ensureShadowRootObserved(host.shadowRoot, host);\n });\n }\n\n private _schedule() {\n if (!this.host.shouldObserveEtaMutations()) return;\n\n const base = Math.max(0, Number(this.host.etaMutationDelay) || 0);\n const max = Math.max(base, Number(this.host.etaMutationDelayMax) || 0);\n let delay = base;\n if (this.debounce) {\n clearTimeout(this.debounce);\n const prev = this.coalesceDelay ?? base;\n delay = Math.min(prev > 0 ? prev * 2 : base, max);\n }\n this.coalesceDelay = delay;\n this.debounce = window.setTimeout(() => {\n this.debounce = undefined;\n this.coalesceDelay = base;\n this.schedule();\n }, delay);\n }\n\n private _handleMutations(muts: MutationRecord[]) {\n if (this.suspended) {\n this.sawMutationWhileSuspended = true;\n return;\n }\n for (const m of muts) {\n if (m.type === \"attributes\") {\n const attr = m.attributeName?.toLowerCase();\n if (attr === \"class\" || attr === \"style\") continue;\n }\n\n const targets: Node[] = [];\n if (m.type === \"characterData\" || m.type === \"attributes\") {\n targets.push(m.target);\n if (m.type === \"attributes\" && m.target instanceof HTMLElement) {\n this.cache.clearNoEtaAttrs(m.target);\n }\n } else {\n targets.push(...Array.from(m.addedNodes));\n for (const removed of Array.from(m.removedNodes)) {\n if (!(removed instanceof HTMLElement)) continue;\n if (removed.hasAttribute(\"shadow\") && removed.shadowRoot) {\n this._cleanupShadowRoot(removed.shadowRoot);\n }\n removed\n .querySelectorAll<HTMLElement>(\"[shadow]\")\n .forEach(host => host.shadowRoot && this._cleanupShadowRoot(host.shadowRoot));\n }\n }\n\n const eligibles: HTMLElement[] = [];\n for (const t of targets) {\n if (t instanceof HTMLElement && t.hasAttribute(\"shadow\") && t.shadowRoot) {\n this.ensureShadowRootObserved(t.shadowRoot, t);\n }\n if (t instanceof HTMLElement) {\n t.querySelectorAll<HTMLElement>(\"[shadow]\").forEach(host => {\n if (host.shadowRoot) this.ensureShadowRootObserved(host.shadowRoot, host);\n });\n }\n const root = this._findEligibleRoot(t);\n if (root) eligibles.push(root);\n }\n if (!eligibles.length) continue;\n\n eligibles.forEach(r => this.dirtyRoots.add(r));\n this._schedule();\n break;\n }\n }\n\n private _cleanupShadowRoot(sr: ShadowRoot) {\n if (this.shadowMos && this.shadowMos.has(sr)) {\n const mo = this.shadowMos.get(sr);\n try { mo?.disconnect(); } catch { /* ignore */ }\n this.shadowMos.delete(sr);\n }\n sr.querySelectorAll<HTMLElement>(\"[shadow]\").forEach(host => {\n if (host.shadowRoot) this._cleanupShadowRoot(host.shadowRoot);\n });\n }\n\n private _findEligibleRoot(n: Node | null): HTMLElement | null {\n let cur: Node | null = n;\n while (cur && cur !== this.host) {\n if (cur instanceof ShadowRoot) {\n cur = cur.host;\n continue;\n }\n if (!(cur instanceof HTMLElement)) { cur = (cur as Node).parentNode; continue; }\n if (this.host.isStateNodeElement(cur) && cur !== this.host) return null;\n if (cur.hasAttribute(\"data-store-render\")) return null;\n const parentProvider = cur.parentElement?.closest(\"bd-state,bd-product,bd-option,bd-context\");\n if (parentProvider === this.host || cur.parentElement === this.host) return cur;\n cur = (cur as Node).parentNode;\n }\n return this.host as unknown as HTMLElement;\n }\n}\n"]}
@@ -1,21 +0,0 @@
1
- import { EtaRenderHost } from "../../controllers/eta-renderer/eta-types.js";
2
- import { ReactiveController } from "lit";
3
- export type { EtaRenderHost } from "../../controllers/eta-renderer/eta-types.js";
4
- export declare class EtaRenderController implements ReactiveController {
5
- private host;
6
- private _etaRenderTask;
7
- private _cache;
8
- private _observer;
9
- private _renderer;
10
- private _renderInProgress;
11
- private _etaIdleWaiters;
12
- private _mutationRequested;
13
- constructor(host: EtaRenderHost);
14
- get taskComplete(): Promise<unknown>;
15
- waitForIdle(): Promise<void>;
16
- hostConnected(): void;
17
- hostDisconnected(): void;
18
- private _scheduleMutationRender;
19
- private _isEtaIdle;
20
- private _notifyEtaIdle;
21
- }