@salsita-ai/sdk 0.50.0-develop.42cf9563b0 → 0.50.0-develop.51737d37df

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 (887) hide show
  1. package/README.md +1 -1
  2. package/dist/admin/create-admin-pages-from-spec.d.ts +1 -1
  3. package/dist/application-spec/generate-application/code/common/index.d.ts +1 -0
  4. package/dist/application-spec/generate-application/code/common/index.js +1 -1
  5. package/dist/application-spec/generate-application/code/common/project-module-list.d.ts +8 -0
  6. package/dist/application-spec/generate-application/code/common/project-module-list.js +3 -0
  7. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  8. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  9. package/dist/application-spec/generate-application/code/templates/admin-domain-code.d.ts +1 -2
  10. package/dist/application-spec/generate-application/code/templates/admin-domain-code.js +6 -14
  11. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.d.ts +1 -2
  12. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.js +4 -4
  13. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.d.ts +1 -2
  14. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.js +7 -16
  15. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.d.ts +1 -2
  16. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.js +7 -9
  17. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.d.ts +2 -2
  18. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.js +1 -1
  19. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +36 -36
  20. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +1 -1
  21. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  22. package/dist/application-spec/generate-application/code/templates/domain-spec.js +4 -4
  23. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  24. package/dist/application-spec/generate-application/code/templates/env-example.js +4 -0
  25. package/dist/application-spec/generate-application/code/templates/index.d.ts +1 -0
  26. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  27. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +1 -1
  28. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
  29. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +41 -13
  30. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +1 -1
  31. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +2 -2
  32. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  33. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.d.ts +1 -0
  34. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +6 -0
  35. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +30 -3
  36. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +19 -5
  37. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +9 -4
  38. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -2
  39. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +4 -3
  40. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.js +1 -1
  41. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.d.ts +3 -8
  42. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.js +1 -1
  43. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +9 -43
  44. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  45. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-server-settings.d.ts +2 -2
  46. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant.d.ts +5 -21
  47. package/dist/client/authorized-client.d.ts +3 -1
  48. package/dist/client/authorized-client.js +1 -1
  49. package/dist/client/contract.d.ts +34 -0
  50. package/dist/client/contract.js +1 -1
  51. package/dist/client/index.d.ts +2 -2
  52. package/dist/client/index.js +1 -1
  53. package/dist/client/local-authorized-client.d.ts +3 -1
  54. package/dist/client/local-authorized-client.js +1 -1
  55. package/dist/client/memory-authorized-client.d.ts +3 -1
  56. package/dist/client/memory-authorized-client.js +1 -1
  57. package/dist/client/phoenix-api.d.ts +269 -30
  58. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  59. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +212 -13
  60. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  61. package/dist/configurator/application-runtime/extensions/systems/assistant-system/change-recorder.d.ts +85 -0
  62. package/dist/configurator/application-runtime/extensions/systems/assistant-system/change-recorder.js +1 -0
  63. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +8 -3
  64. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  65. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +4 -0
  66. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  67. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +16 -1
  68. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  69. package/dist/configurator/application-runtime/extensions/systems/graphql-system/side-effects.d.ts +9 -0
  70. package/dist/configurator/application-runtime/extensions/systems/graphql-system/side-effects.js +1 -0
  71. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  72. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -0
  73. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  74. package/dist/configurator/common/frontend-analytics.d.ts +21 -21
  75. package/dist/configurator/index.d.ts +0 -1
  76. package/dist/configurator/index.js +1 -1
  77. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  78. package/dist/configurator/scene/scene-analytics/scene-analytics.d.ts +2 -2
  79. package/dist/configurator/ui/assistant/AssistantChips.d.ts +11 -0
  80. package/dist/configurator/ui/assistant/AssistantChips.js +1 -0
  81. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +7 -0
  82. package/dist/configurator/ui/assistant/AssistantComposer.js +1 -0
  83. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +7 -0
  84. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -0
  85. package/dist/configurator/ui/assistant/AssistantPanel.d.ts +11 -0
  86. package/dist/configurator/ui/assistant/AssistantPanel.js +1 -0
  87. package/dist/configurator/ui/assistant/AssistantThread.d.ts +10 -0
  88. package/dist/configurator/ui/assistant/AssistantThread.js +1 -0
  89. package/dist/configurator/ui/assistant/assistant-failure.d.ts +18 -0
  90. package/dist/configurator/ui/assistant/assistant-failure.js +1 -0
  91. package/dist/configurator/ui/assistant/index.d.ts +2 -0
  92. package/dist/configurator/ui/assistant/index.js +1 -0
  93. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +6 -0
  94. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -0
  95. package/dist/configurator/ui/assistant/theme.d.ts +2 -0
  96. package/dist/configurator/ui/assistant/theme.js +1 -0
  97. package/dist/configurator/ui/assistant/thread-items.d.ts +48 -0
  98. package/dist/configurator/ui/assistant/thread-items.js +1 -0
  99. package/dist/configurator/ui/assistant/tool-chip.d.ts +44 -0
  100. package/dist/configurator/ui/assistant/tool-chip.js +1 -0
  101. package/dist/configurator/ui/assistant/use-follow-stream.d.ts +17 -0
  102. package/dist/configurator/ui/assistant/use-follow-stream.js +1 -0
  103. package/dist/configurator/ui/assistant/use-is-assistant-panel-open.d.ts +5 -0
  104. package/dist/configurator/ui/assistant/use-is-assistant-panel-open.js +1 -0
  105. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -5
  106. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.d.ts +2 -0
  107. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  108. package/dist/configurator/ui/legacy/mobile-controls/MobileControls.d.ts +1 -1
  109. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.d.ts +10 -0
  110. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.js +1 -0
  111. package/dist/configurator/ui/phoenix-layout-elements/index.d.ts +1 -0
  112. package/dist/configurator/ui/phoenix-layout-elements/index.js +1 -1
  113. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +84 -98
  114. package/dist/docs/complex-use-cases/navigation-reset-selection.mdx +18 -12
  115. package/dist/docs/index.json +1 -1
  116. package/dist/docs/layouts/custom-price.mdx +14 -16
  117. package/dist/docs/layouts/sidebar/tabs.mdx +24 -21
  118. package/dist/docs/layouts/toolbar.mdx +6 -0
  119. package/dist/docs/other-features/domain-actions.mdx +1 -1
  120. package/dist/docs/other-features/side-effects.mdx +68 -34
  121. package/dist/docs/other-features/transformers.mdx +1 -1
  122. package/dist/docs/phoenix/admin.mdx +9 -24
  123. package/dist/docs/phoenix/deployments.mdx +1 -1
  124. package/dist/docs/phoenix/expression-context.mdx +11 -3
  125. package/dist/docs/phoenix/localization.mdx +3 -22
  126. package/dist/docs/phoenix/phoenix-cli.mdx +105 -23
  127. package/dist/docs/phoenix/project-structure.mdx +9 -2
  128. package/dist/docs/phoenix/sdk-builder-workflow.mdx +10 -9
  129. package/dist/docs/recipes-and-delete/recipe-hierarchy-selection.mdx +15 -13
  130. package/dist/docs/relations/hierarchy.mdx +13 -2
  131. package/dist/domain/admin-domain/__generated/enhanced-model.d.ts +1 -2
  132. package/dist/domain/admin-domain/__generated/model/versions/v1.d.ts +1 -1
  133. package/dist/domain/admin-domain/__generated/model/versions/v2.d.ts +1 -1
  134. package/dist/domain/admin-domain/__generated/model/versions/v3.d.ts +1 -1
  135. package/dist/domain/admin-domain/__generated/model/versions/v4.d.ts +1 -1
  136. package/dist/domain/admin-domain/__generated/model/versions/v5.d.ts +1 -1
  137. package/dist/domain/admin-domain/__generated/model/versions/v6.d.ts +2 -2
  138. package/dist/domain/admin-domain/__generated/model/versions/v6.js +1 -1
  139. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +10 -13
  140. package/dist/domain/admin-domain/implementation/common-admin-migrations.d.ts +1 -1
  141. package/dist/domain/admin-domain/index.d.ts +9 -5
  142. package/dist/domain/admin-domain/index.js +1 -1
  143. package/dist/domain/application/admin-page-factories.d.ts +1 -2
  144. package/dist/domain/application/application-config.d.ts +24 -94
  145. package/dist/domain/application/assistant/assistant-manifest.d.ts +63 -0
  146. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +95 -0
  147. package/dist/domain/application/assistant/assistant-value-type.d.ts +9 -0
  148. package/dist/domain/application/assistant/assistant-value-type.js +1 -0
  149. package/dist/domain/application/assistant/build-assistant-manifest.d.ts +4 -0
  150. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -0
  151. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  152. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -0
  153. package/dist/domain/application/assistant/index.d.ts +4 -0
  154. package/dist/domain/application/assistant/index.js +1 -0
  155. package/dist/domain/application/assistant-field-options.d.ts +2 -3
  156. package/dist/domain/application/assistant-mutations.d.ts +3 -5
  157. package/dist/domain/application/assistant-mutations.js +1 -1
  158. package/dist/domain/application/assistant-recipe-groups.d.ts +2 -6
  159. package/dist/domain/application/configurator-builder.d.ts +33 -18
  160. package/dist/domain/application/configurator-builder.js +1 -1
  161. package/dist/domain/application/element-registration.d.ts +5 -0
  162. package/dist/domain/application/element-registration.js +1 -1
  163. package/dist/domain/application/handler-registration.d.ts +5 -0
  164. package/dist/domain/application/handler-registration.js +1 -1
  165. package/dist/domain/application/index.d.ts +6 -5
  166. package/dist/domain/application/index.js +1 -1
  167. package/dist/domain/application/published-data/build-legend-data.d.ts +1 -1
  168. package/dist/domain/application/published-data/create-finalize-admin-domain.d.ts +1 -2
  169. package/dist/domain/application/published-data/format-field-type.d.ts +1 -1
  170. package/dist/domain/application/published-data/map-data-to-sheet.d.ts +1 -1
  171. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +2 -2
  172. package/dist/domain/application/published-data/map-published-data.d.ts +1 -2
  173. package/dist/domain/application/published-data/validate-sheet-data.d.ts +1 -1
  174. package/dist/domain/application/resolve-imported-transformers.d.ts +12 -2
  175. package/dist/domain/application/resolve-imported-transformers.js +1 -1
  176. package/dist/domain/available-system-components.js +1 -1
  177. package/dist/domain/core/action/action-factory.d.ts +11 -0
  178. package/dist/domain/core/{action.d.ts → action/action.d.ts} +22 -18
  179. package/dist/domain/core/action/index.d.ts +2 -0
  180. package/dist/domain/core/action/index.js +1 -0
  181. package/dist/domain/{components → core/component}/component-reader-types.d.ts +1 -2
  182. package/dist/domain/{components → core/component}/debug-state-component.d.ts +1 -1
  183. package/dist/domain/core/component/debug-state-component.js +1 -0
  184. package/dist/domain/{components → core/component}/domain-component-optic.d.ts +39 -39
  185. package/dist/domain/core/component/domain-component-optic.js +16 -0
  186. package/dist/domain/{components → core/component}/drag-state-component.d.ts +1 -1
  187. package/dist/domain/core/component/drag-state-component.js +1 -0
  188. package/dist/domain/{components → core/component}/export-state-component.d.ts +1 -1
  189. package/dist/domain/core/component/export-state-component.js +1 -0
  190. package/dist/domain/{components → core/component}/fullscreen-state-component.d.ts +1 -1
  191. package/dist/domain/core/component/fullscreen-state-component.js +1 -0
  192. package/dist/domain/{components → core/component}/group-components-by-entity-id-and-name.d.ts +1 -2
  193. package/dist/domain/core/component/group-components-by-entity-id-and-name.js +1 -0
  194. package/dist/domain/{components → core/component}/hover-state-component.d.ts +1 -1
  195. package/dist/domain/core/component/hover-state-component.js +1 -0
  196. package/dist/domain/core/component/index.d.ts +18 -0
  197. package/dist/domain/core/component/index.js +1 -0
  198. package/dist/domain/{components → core/component}/legacy-filter.d.ts +2 -2
  199. package/dist/domain/{components → core/component}/navigation-state-component.d.ts +1 -1
  200. package/dist/domain/core/component/navigation-state-component.js +1 -0
  201. package/dist/domain/{components → core/component}/selection-state-component.d.ts +1 -1
  202. package/dist/domain/core/component/selection-state-component.js +1 -0
  203. package/dist/domain/{components → core/component}/system-component-builder.d.ts +1 -2
  204. package/dist/domain/core/component/system-component-builder.js +1 -0
  205. package/dist/domain/{components → core/component}/system-component-filter.d.ts +19 -19
  206. package/dist/domain/core/component/system-virtual-entity.js +1 -0
  207. package/dist/domain/{components → core/component}/tool-state-component.d.ts +1 -1
  208. package/dist/domain/core/component/tool-state-component.js +1 -0
  209. package/dist/domain/{components → core/component}/updates.d.ts +17 -2
  210. package/dist/domain/{components → core/component}/view-state-component.d.ts +1 -1
  211. package/dist/domain/core/component/view-state-component.js +1 -0
  212. package/dist/domain/{components → core/component}/viewport-state-component.d.ts +1 -1
  213. package/dist/domain/core/component/viewport-state-component.js +1 -0
  214. package/dist/domain/core/data-schema/data-cell-value.d.ts +4 -0
  215. package/dist/domain/core/data-schema/data-schema-array-field.d.ts +5 -0
  216. package/dist/domain/core/data-schema/data-schema-field-object.d.ts +4 -0
  217. package/dist/domain/core/data-schema/data-schema-field.d.ts +2 -0
  218. package/dist/domain/core/data-schema/data-schema-field.js +1 -0
  219. package/dist/domain/core/data-schema/data-schema-localized-field.d.ts +4 -0
  220. package/dist/domain/core/data-schema/data-schema-localized-field.js +1 -0
  221. package/dist/domain/core/data-schema/data-schema-primitive-field.d.ts +5 -0
  222. package/dist/domain/core/data-schema/data-schema-primitive-field.js +1 -0
  223. package/dist/domain/core/data-schema/data-schema.d.ts +2 -0
  224. package/dist/domain/core/data-schema/data-schema.js +1 -0
  225. package/dist/domain/core/data-schema/index.d.ts +7 -0
  226. package/dist/domain/core/data-schema/index.js +1 -0
  227. package/dist/domain/core/decoder/create-decoder.d.ts +6 -0
  228. package/dist/domain/core/decoder/create-decoder.js +1 -0
  229. package/dist/domain/core/decoder/decoder.d.ts +6 -0
  230. package/dist/domain/core/decoder/decoder.js +1 -0
  231. package/dist/domain/core/decoder/index.d.ts +2 -0
  232. package/dist/domain/core/decoder/index.js +1 -0
  233. package/dist/domain/core/domain-factory.d.ts +4 -5
  234. package/dist/domain/core/domain-factory.js +1 -1
  235. package/dist/domain/core/domain.d.ts +4 -5
  236. package/dist/domain/core/domain.js +1 -1
  237. package/dist/domain/core/expression/aliased-expressions.d.ts +10 -0
  238. package/dist/domain/core/expression/aliased-expressions.js +1 -0
  239. package/dist/domain/{expressions → core/expression}/constant-expressions.d.ts +2 -3
  240. package/dist/domain/core/expression/constant-expressions.js +1 -0
  241. package/dist/domain/{expressions → core/expression}/custom-expression.d.ts +9 -10
  242. package/dist/domain/core/expression/custom-expression.js +1 -0
  243. package/dist/domain/core/{expression.d.ts → expression/expression.d.ts} +17 -20
  244. package/dist/domain/core/expression/expression.js +1 -0
  245. package/dist/domain/core/expression/index.d.ts +4 -0
  246. package/dist/domain/core/expression/index.js +1 -0
  247. package/dist/domain/core/index.d.ts +12 -17
  248. package/dist/domain/core/index.js +1 -1
  249. package/dist/domain/{invariants → core/invariant}/builtin-invariant.d.ts +2 -2
  250. package/dist/domain/{invariants → core/invariant}/custom-invariants.d.ts +7 -8
  251. package/dist/domain/core/invariant/custom-invariants.js +1 -0
  252. package/dist/domain/core/invariant/index.d.ts +5 -0
  253. package/dist/domain/core/invariant/index.js +1 -0
  254. package/dist/domain/{invariants → core/invariant}/invariants.d.ts +14 -6
  255. package/dist/domain/core/invariant/invariants.js +1 -0
  256. package/dist/domain/core/invariant/violation-component.js +1 -0
  257. package/dist/domain/{invariants → core/invariant}/violation.d.ts +2 -2
  258. package/dist/domain/core/{component.d.ts → model/component.d.ts} +1 -1
  259. package/dist/domain/core/model/index.d.ts +6 -0
  260. package/dist/domain/core/model/index.js +1 -0
  261. package/dist/domain/core/{reflection.d.ts → model/reflection.d.ts} +1 -1
  262. package/dist/domain/core/model/reflection.js +1 -0
  263. package/dist/domain/core/recipe/index.d.ts +1 -0
  264. package/dist/domain/core/recipe/index.js +1 -0
  265. package/dist/domain/{domain-context/recipe-system → core/recipe}/recipes.d.ts +1 -3
  266. package/dist/domain/core/recipe/recipes.js +1 -0
  267. package/dist/domain/{relations → core/relation}/all-of-type-relation.d.ts +3 -4
  268. package/dist/domain/core/relation/all-of-type-relation.js +1 -0
  269. package/dist/domain/{relations → core/relation}/component-factories.d.ts +1 -2
  270. package/dist/domain/core/relation/component-factories.js +1 -0
  271. package/dist/domain/{relations → core/relation}/composed-of.d.ts +1 -1
  272. package/dist/domain/core/relation/composed-of.js +1 -0
  273. package/dist/domain/{relations → core/relation}/direct-relation.d.ts +2 -3
  274. package/dist/domain/core/relation/index.d.ts +9 -0
  275. package/dist/domain/core/relation/index.js +1 -0
  276. package/dist/domain/{relations → core/relation}/indirect-relation.d.ts +3 -4
  277. package/dist/domain/core/relation/indirect-relation.js +1 -0
  278. package/dist/domain/{relations → core/relation}/reference-component.d.ts +4 -5
  279. package/dist/domain/core/relation/reference-component.js +1 -0
  280. package/dist/domain/{relations → core/relation}/reference-field.d.ts +1 -1
  281. package/dist/domain/core/relation/reference-field.js +1 -0
  282. package/dist/domain/{relations → core/relation}/relation-factory.d.ts +2 -3
  283. package/dist/domain/{relations → core/relation}/relation-implementation.d.ts +3 -4
  284. package/dist/domain/core/relation/relation-implementation.js +1 -0
  285. package/dist/domain/core/schema/enhanced-json-schema.js +1 -0
  286. package/dist/domain/core/schema/extended-schema-validator.js +1 -0
  287. package/dist/domain/core/schema/index.d.ts +3 -0
  288. package/dist/domain/core/schema/index.js +1 -0
  289. package/dist/domain/core/schema/schema-validator.js +1 -0
  290. package/dist/domain/core/state/id-sequence.d.ts +15 -0
  291. package/dist/domain/core/state/id-sequence.js +1 -0
  292. package/dist/domain/core/state/index.d.ts +3 -0
  293. package/dist/domain/core/state/index.js +1 -0
  294. package/dist/domain/core/{migrations.d.ts → state/migrations.d.ts} +1 -2
  295. package/dist/domain/core/{state.d.ts → state/state.d.ts} +1 -2
  296. package/dist/domain/domain-builder.d.ts +11 -11
  297. package/dist/domain/domain-builder.js +1 -1
  298. package/dist/domain/domain-context/action-system/action-system.d.ts +2 -4
  299. package/dist/domain/domain-context/action-system/action-system.js +1 -1
  300. package/dist/domain/domain-context/create-transformer.d.ts +1 -1
  301. package/dist/domain/domain-context/dimension-system/dimension-state.js +1 -1
  302. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +1 -2
  303. package/dist/domain/domain-context/domain-context-systems.d.ts +1 -3
  304. package/dist/domain/domain-context/index.d.ts +2 -3
  305. package/dist/domain/domain-context/index.js +1 -1
  306. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +3 -5
  307. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  308. package/dist/domain/domain-context/navigation-system/navigation-updates.d.ts +1 -12
  309. package/dist/domain/domain-context/navigation-system/navigation-updates.js +1 -1
  310. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +1 -1
  311. package/dist/domain/domain-context/navigation-system/selection-transformers.js +1 -1
  312. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +1 -3
  313. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  314. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +1 -1
  315. package/dist/domain/domain-context/relation-transformers/cascade-deletes.js +1 -1
  316. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +1 -1
  317. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.js +1 -1
  318. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +1 -1
  319. package/dist/domain/domain-context/relation-transformers/create-entity-refs.js +2 -2
  320. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +1 -1
  321. package/dist/domain/domain-context/relation-transformers/replace-refs.js +1 -1
  322. package/dist/domain/domain-context/store-system/apply-updates.d.ts +1 -3
  323. package/dist/domain/domain-context/store-system/apply-updates.js +1 -1
  324. package/dist/domain/domain-context/store-system/next-domain-entity-id.d.ts +1 -13
  325. package/dist/domain/domain-context/store-system/next-domain-entity-id.js +1 -1
  326. package/dist/domain/domain-context/store-system/reconcile-projected-entities.d.ts +1 -2
  327. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  328. package/dist/domain/domain-context/store-system/store-system.d.ts +1 -5
  329. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  330. package/dist/domain/domain-context/store-system/system-state.d.ts +1 -3
  331. package/dist/domain/domain-context/store-system/system-state.js +1 -1
  332. package/dist/domain/domain-context/transformers/actions-builder.d.ts +1 -2
  333. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  334. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +1 -3
  335. package/dist/domain/domain-context/transformers/chain-builder.d.ts +2 -2
  336. package/dist/domain/domain-context/transformers/context.d.ts +1 -5
  337. package/dist/domain/domain-context/transformers/entity-builder.d.ts +1 -5
  338. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  339. package/dist/domain/domain-context/transformers/then-builder.d.ts +1 -2
  340. package/dist/domain/domain-context/transformers/then-builder.js +1 -1
  341. package/dist/domain/domain-context/transformers/when-builder.d.ts +1 -6
  342. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  343. package/dist/domain/domain-context/undo-system.d.ts +1 -1
  344. package/dist/domain/domain-runtime/domain-context/action-context.d.ts +11 -0
  345. package/dist/domain/domain-runtime/domain-context/action-context.js +1 -0
  346. package/dist/domain/domain-runtime/domain-context/component-reader.d.ts +1 -4
  347. package/dist/domain/domain-runtime/domain-context/component-reader.js +1 -1
  348. package/dist/domain/domain-runtime/domain-context/expression-context.d.ts +8 -0
  349. package/dist/domain/domain-runtime/domain-context/expression-context.js +1 -0
  350. package/dist/domain/domain-runtime/domain-context/index.d.ts +3 -0
  351. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.d.ts +18 -0
  352. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.js +1 -0
  353. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +3 -4
  354. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  355. package/dist/domain/domain-runtime/domain-runtime.d.ts +12 -12
  356. package/dist/domain/domain-runtime/spec/index.d.ts +3 -0
  357. package/dist/domain/domain-runtime/spec/index.js +1 -1
  358. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  359. package/dist/domain/{expressions → domain-runtime/spec}/memoize-expression.d.ts +1 -2
  360. package/dist/domain/{actions → domain-runtime/spec}/prepare-action-implementations.d.ts +1 -1
  361. package/dist/domain/domain-runtime/spec/prepare-action-implementations.js +5 -0
  362. package/dist/domain/{expressions → domain-runtime/spec}/prepare-domain-expressions.d.ts +1 -1
  363. package/dist/domain/domain-runtime/spec/selectors.d.ts +2 -2
  364. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  365. package/dist/domain/domain-runtime/spec/types.d.ts +4 -5
  366. package/dist/domain/{system-components → extensions}/angle-indicator.d.ts +1 -1
  367. package/dist/domain/extensions/angle-indicator.js +1 -0
  368. package/dist/domain/extensions/attribute-switch.js +1 -0
  369. package/dist/domain/{system-components → extensions}/autorotate-camera-component.d.ts +1 -1
  370. package/dist/domain/extensions/autorotate-camera-component.js +1 -0
  371. package/dist/domain/{system-components → extensions}/basic-sidebar-footer.d.ts +1 -1
  372. package/dist/domain/extensions/basic-sidebar-footer.js +1 -0
  373. package/dist/domain/extensions/camera-based-hidden-entity-object.js +1 -0
  374. package/dist/domain/extensions/camera-based-hidden-entity.js +1 -0
  375. package/dist/domain/{system-components → extensions}/canvas-config.d.ts +1 -1
  376. package/dist/domain/extensions/canvas-config.js +1 -0
  377. package/dist/domain/extensions/canvas-custom-environment.js +1 -0
  378. package/dist/domain/{system-components → extensions}/canvas-padding.d.ts +1 -1
  379. package/dist/domain/extensions/canvas-padding.js +1 -0
  380. package/dist/domain/{system-components → extensions}/canvas-preset-environment.d.ts +1 -1
  381. package/dist/domain/extensions/canvas-preset-environment.js +1 -0
  382. package/dist/domain/{system-components → extensions}/child-entity-recipe-hierarchy.d.ts +2 -2
  383. package/dist/domain/extensions/child-entity-recipe-hierarchy.js +1 -0
  384. package/dist/domain/extensions/client-side-image.js +1 -0
  385. package/dist/domain/extensions/color-value.js +1 -0
  386. package/dist/domain/{system-components → extensions}/common/angle-indicator-schema.d.ts +1 -1
  387. package/dist/domain/extensions/common/angle-indicator-schema.js +1 -0
  388. package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.d.ts +1 -1
  389. package/dist/domain/extensions/common/dimension-indicator-schema.js +1 -0
  390. package/dist/domain/extensions/common/index.d.ts +4 -0
  391. package/dist/domain/extensions/common/index.js +1 -0
  392. package/dist/domain/{system-components → extensions}/custom-header.d.ts +2 -2
  393. package/dist/domain/{system-components → extensions}/custom-header.js +1 -1
  394. package/dist/domain/extensions/custom-price-footer.js +1 -0
  395. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.d.ts +2 -2
  396. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.js +1 -1
  397. package/dist/domain/{system-components → extensions}/dimension-indicator.d.ts +1 -1
  398. package/dist/domain/extensions/dimension-indicator.js +1 -0
  399. package/dist/domain/{system-components → extensions}/editable-angle-indicator.d.ts +3 -2
  400. package/dist/domain/extensions/editable-angle-indicator.js +1 -0
  401. package/dist/domain/{system-components → extensions}/editable-distance-dimension-indicator.d.ts +3 -2
  402. package/dist/domain/extensions/editable-distance-dimension-indicator.js +1 -0
  403. package/dist/domain/{system-components → extensions}/editable-offset-indicator.d.ts +3 -2
  404. package/dist/domain/extensions/editable-offset-indicator.js +1 -0
  405. package/dist/domain/{system-components → extensions}/editable-size-indicator.d.ts +3 -2
  406. package/dist/domain/extensions/editable-size-indicator.js +1 -0
  407. package/dist/domain/{system-components → extensions}/entity-header.d.ts +1 -1
  408. package/dist/domain/extensions/entity-header.js +1 -0
  409. package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.d.ts +1 -1
  410. package/dist/domain/extensions/exit-tool-mode-fab.js +1 -0
  411. package/dist/domain/{system-components → extensions}/finalize-action.d.ts +1 -1
  412. package/dist/domain/extensions/finalize-action.js +1 -0
  413. package/dist/domain/extensions/finalize-component.js +1 -0
  414. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -0
  415. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -0
  416. package/dist/domain/{system-components → extensions}/fixed-header.d.ts +1 -1
  417. package/dist/domain/extensions/fixed-header.js +1 -0
  418. package/dist/domain/{system-components → extensions}/floating-header.d.ts +1 -1
  419. package/dist/domain/extensions/floating-header.js +1 -0
  420. package/dist/domain/{system-components → extensions}/hidden-header.d.ts +1 -1
  421. package/dist/domain/extensions/hidden-header.js +1 -0
  422. package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.d.ts +1 -1
  423. package/dist/domain/extensions/hidden-sidebar-footer.js +1 -0
  424. package/dist/domain/{system-components → extensions}/horizontal-tabs.d.ts +1 -1
  425. package/dist/domain/extensions/horizontal-tabs.js +1 -0
  426. package/dist/domain/extensions/index.d.ts +69 -0
  427. package/dist/domain/extensions/index.js +1 -0
  428. package/dist/domain/{system-components → extensions}/list-selector-dimension-indicator.d.ts +3 -2
  429. package/dist/domain/extensions/list-selector-dimension-indicator.js +1 -0
  430. package/dist/domain/extensions/multilingual-text-value.js +1 -0
  431. package/dist/domain/extensions/navigation-steps.js +1 -0
  432. package/dist/domain/{system-components → extensions}/offset-anchors.d.ts +1 -1
  433. package/dist/domain/extensions/offset-anchors.js +1 -0
  434. package/dist/domain/{system-components → extensions}/offset-indicator.d.ts +1 -2
  435. package/dist/domain/extensions/offset-indicator.js +1 -0
  436. package/dist/domain/{system-components → extensions}/offset.d.ts +1 -1
  437. package/dist/domain/extensions/offset.js +1 -0
  438. package/dist/domain/{system-components → extensions}/other-action.d.ts +1 -1
  439. package/dist/domain/extensions/other-action.js +1 -0
  440. package/dist/domain/{system-components → extensions}/property-page.d.ts +2 -2
  441. package/dist/domain/extensions/property-page.js +1 -0
  442. package/dist/domain/{system-components → extensions}/read-sidebar-footer.d.ts +1 -1
  443. package/dist/domain/extensions/read-sidebar-footer.js +1 -0
  444. package/dist/domain/{system-components → extensions}/replace-entity-recipe-hierarchy.d.ts +2 -2
  445. package/dist/domain/extensions/replace-entity-recipe-hierarchy.js +1 -0
  446. package/dist/domain/extensions/rotatable.js +1 -0
  447. package/dist/domain/extensions/rotation-handle.js +1 -0
  448. package/dist/domain/extensions/save-template-thumbnail.js +1 -0
  449. package/dist/domain/{system-components → extensions}/scene-entity-add-fab.d.ts +1 -1
  450. package/dist/domain/extensions/scene-entity-add-fab.js +1 -0
  451. package/dist/domain/extensions/scene-entity-animation.js +1 -0
  452. package/dist/domain/extensions/scene-entity-control.js +1 -0
  453. package/dist/domain/{system-components → extensions}/scene-entity-delete-fab.d.ts +1 -1
  454. package/dist/domain/extensions/scene-entity-delete-fab.js +1 -0
  455. package/dist/domain/extensions/scene-entity-floor-object.js +1 -0
  456. package/dist/domain/{system-components → extensions}/scene-entity-html-hotspot.d.ts +1 -1
  457. package/dist/domain/extensions/scene-entity-html-hotspot.js +1 -0
  458. package/dist/domain/{system-components → extensions}/scene-entity-navigation-hotspot.d.ts +1 -1
  459. package/dist/domain/extensions/scene-entity-navigation-hotspot.js +1 -0
  460. package/dist/domain/{system-components → extensions}/scene-entity-object-html-hotspot.d.ts +1 -1
  461. package/dist/domain/extensions/scene-entity-object-html-hotspot.js +1 -0
  462. package/dist/domain/{system-components → extensions}/scene-entity-select-hotspot.d.ts +1 -1
  463. package/dist/domain/extensions/scene-entity-select-hotspot.js +1 -0
  464. package/dist/domain/extensions/scene-entity-wall-object.js +1 -0
  465. package/dist/domain/extensions/selectable-component.js +1 -0
  466. package/dist/domain/{system-components → extensions}/sidebar-tabs.d.ts +1 -1
  467. package/dist/domain/extensions/sidebar-tabs.js +1 -0
  468. package/dist/domain/extensions/simple-summary.js +1 -0
  469. package/dist/domain/{system-components → extensions}/size.d.ts +1 -1
  470. package/dist/domain/extensions/size.js +1 -0
  471. package/dist/domain/{system-components → extensions}/sketching-draw.d.ts +1 -1
  472. package/dist/domain/extensions/sketching-draw.js +1 -0
  473. package/dist/domain/{system-components → extensions}/sketching-edit.d.ts +2 -2
  474. package/dist/domain/extensions/sketching-edit.js +1 -0
  475. package/dist/domain/extensions/summary-component.js +1 -0
  476. package/dist/domain/extensions/text-value.js +1 -0
  477. package/dist/domain/extensions/tool-controls.js +1 -0
  478. package/dist/domain/{system-components → extensions}/tool-menu-fab.d.ts +2 -2
  479. package/dist/domain/extensions/tool-menu-fab.js +1 -0
  480. package/dist/domain/{system-components → extensions}/toolbar.d.ts +2 -2
  481. package/dist/domain/{system-components → extensions}/toolbar.js +1 -1
  482. package/dist/domain/{system-components → extensions}/universal-sidebar-footer.d.ts +1 -1
  483. package/dist/domain/extensions/universal-sidebar-footer.js +1 -0
  484. package/dist/domain/extensions/view-controls.js +1 -0
  485. package/dist/domain/index.d.ts +3 -32
  486. package/dist/domain/index.js +1 -1
  487. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +3 -3
  488. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  489. package/dist/domain/project-modules/index.d.ts +1 -0
  490. package/dist/domain/project-modules/index.js +1 -0
  491. package/dist/domain/project-modules/project-modules.d.ts +41 -0
  492. package/dist/domain/project-modules/project-modules.js +1 -0
  493. package/dist/domain/projections/blender-projections/blender-projections.d.ts +1 -1
  494. package/dist/domain/projections/blender-projections/blender-projections.js +1 -1
  495. package/dist/domain/projections/composition-projections.js +1 -1
  496. package/dist/domain/projections/projected-entities-projections.d.ts +1 -2
  497. package/dist/domain/projections/snap-matching.d.ts +1 -2
  498. package/dist/domain/projections/snap-utils.d.ts +1 -2
  499. package/dist/domain/projections/validation-projections.d.ts +1 -2
  500. package/dist/domain/projections/validation-projections.js +1 -1
  501. package/dist/domain/system-components/admin-sidebar.d.ts +1 -1
  502. package/dist/domain/system-components/admin-sidebar.js +1 -1
  503. package/dist/domain/system-components/angle-dimension.js +1 -1
  504. package/dist/domain/system-components/application-config.d.ts +1 -1
  505. package/dist/domain/system-components/application-config.js +1 -1
  506. package/dist/domain/system-components/attribute-selection.js +1 -1
  507. package/dist/domain/system-components/bounding-box-component.d.ts +1 -1
  508. package/dist/domain/system-components/bounding-box-component.js +1 -1
  509. package/dist/domain/system-components/bounding-sphere-component.d.ts +1 -1
  510. package/dist/domain/system-components/bounding-sphere-component.js +1 -1
  511. package/dist/domain/system-components/child-entity-recipes.d.ts +1 -1
  512. package/dist/domain/system-components/child-entity-recipes.js +1 -1
  513. package/dist/domain/system-components/child-entity-selection.d.ts +1 -2
  514. package/dist/domain/system-components/child-entity-selection.js +1 -1
  515. package/dist/domain/system-components/collision-box-geometry.d.ts +1 -1
  516. package/dist/domain/system-components/collision-box-geometry.js +1 -1
  517. package/dist/domain/system-components/collision-geometries.d.ts +1 -1
  518. package/dist/domain/system-components/collision-geometry.d.ts +1 -1
  519. package/dist/domain/system-components/collision-geometry.js +1 -1
  520. package/dist/domain/system-components/collision-point-geometry.d.ts +1 -1
  521. package/dist/domain/system-components/collision-point-geometry.js +1 -1
  522. package/dist/domain/system-components/common/index.d.ts +0 -4
  523. package/dist/domain/system-components/common/index.js +1 -1
  524. package/dist/domain/system-components/common/recipes.d.ts +1 -2
  525. package/dist/domain/system-components/constraint.d.ts +1 -1
  526. package/dist/domain/system-components/constraint.js +1 -1
  527. package/dist/domain/system-components/create-blueprint.d.ts +1 -1
  528. package/dist/domain/system-components/custom-scene-entity.d.ts +1 -1
  529. package/dist/domain/system-components/custom-scene-entity.js +1 -1
  530. package/dist/domain/system-components/detail.js +1 -1
  531. package/dist/domain/system-components/distance-dimension-select.d.ts +1 -1
  532. package/dist/domain/system-components/distance-dimension-select.js +1 -1
  533. package/dist/domain/system-components/distance-dimension.d.ts +1 -1
  534. package/dist/domain/system-components/distance-dimension.js +1 -1
  535. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  536. package/dist/domain/system-components/drag-handle.js +1 -1
  537. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  538. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  539. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  540. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  541. package/dist/domain/system-components/generic-dimension.d.ts +1 -1
  542. package/dist/domain/system-components/generic-dimension.js +1 -1
  543. package/dist/domain/system-components/hidden-entity.js +1 -1
  544. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -2
  545. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  546. package/dist/domain/system-components/index.d.ts +0 -68
  547. package/dist/domain/system-components/index.js +1 -1
  548. package/dist/domain/system-components/material-override-property-transition.js +1 -1
  549. package/dist/domain/system-components/material-override-transformer.js +1 -1
  550. package/dist/domain/system-components/material-swatch.js +1 -1
  551. package/dist/domain/system-components/navigation-page.js +1 -1
  552. package/dist/domain/system-components/navigation-panel-list.js +1 -1
  553. package/dist/domain/system-components/phoenix-entity-elements/admin-data-table-sidebar.d.ts +1 -1
  554. package/dist/domain/system-components/phoenix-layout-elements/admin-connected-resource-page.d.ts +1 -1
  555. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-actions.d.ts +1 -1
  556. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-page.d.ts +1 -1
  557. package/dist/domain/system-components/phoenix-layout-elements/assistant-toolbar-button.d.ts +44 -0
  558. package/dist/domain/system-components/phoenix-layout-elements/assistant-toolbar-button.js +1 -0
  559. package/dist/domain/system-components/phoenix-layout-elements/index.d.ts +1 -0
  560. package/dist/domain/system-components/phoenix-layout-elements/index.js +1 -1
  561. package/dist/domain/system-components/phoenix-layout-elements/phoenix-layout-element.d.ts +2 -1
  562. package/dist/domain/system-components/phoenix-layout-elements/phoenix-layout-element.js +1 -1
  563. package/dist/domain/system-components/pivot-point.d.ts +1 -1
  564. package/dist/domain/system-components/pivot-point.js +1 -1
  565. package/dist/domain/system-components/price.js +1 -1
  566. package/dist/domain/system-components/projected-entities.d.ts +1 -1
  567. package/dist/domain/system-components/projected-entities.js +1 -1
  568. package/dist/domain/system-components/replace-entity-recipes.d.ts +1 -1
  569. package/dist/domain/system-components/replace-entity-recipes.js +1 -1
  570. package/dist/domain/system-components/scene-entity-ambient-light.js +1 -1
  571. package/dist/domain/system-components/scene-entity-box-object.js +1 -1
  572. package/dist/domain/system-components/scene-entity-directional-light.js +1 -1
  573. package/dist/domain/system-components/scene-entity-local-material-override.js +1 -1
  574. package/dist/domain/system-components/scene-entity-material-override.js +1 -1
  575. package/dist/domain/system-components/scene-entity-object-clip.js +1 -1
  576. package/dist/domain/system-components/scene-entity-object-decal.js +1 -1
  577. package/dist/domain/system-components/scene-entity-object-group.js +1 -1
  578. package/dist/domain/system-components/scene-entity-object-local-material-override.js +1 -1
  579. package/dist/domain/system-components/scene-entity-object-material-override.js +1 -1
  580. package/dist/domain/system-components/scene-entity-object-properties.js +1 -1
  581. package/dist/domain/system-components/scene-entity-object-remote-material-override.js +1 -1
  582. package/dist/domain/system-components/scene-entity-object-text-decal.js +1 -1
  583. package/dist/domain/system-components/scene-entity-object-transformer.js +1 -1
  584. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.js +1 -1
  585. package/dist/domain/system-components/scene-entity-object.js +1 -1
  586. package/dist/domain/system-components/scene-entity-point-light.js +1 -1
  587. package/dist/domain/system-components/scene-entity-properties.js +1 -1
  588. package/dist/domain/system-components/scene-entity-rect-area-light.js +1 -1
  589. package/dist/domain/system-components/scene-entity-remote-material-override.js +1 -1
  590. package/dist/domain/system-components/scene-entity-remote-object.js +1 -1
  591. package/dist/domain/system-components/scene-entity-spot-light.js +1 -1
  592. package/dist/domain/system-components/scene-entity-transimissive-material-override.js +1 -1
  593. package/dist/domain/system-components/sketching-line.d.ts +1 -1
  594. package/dist/domain/system-components/sketching-line.js +1 -1
  595. package/dist/domain/system-components/sketching-rectangle.d.ts +1 -1
  596. package/dist/domain/system-components/sketching-rectangle.js +1 -1
  597. package/dist/domain/system-components/sketching.d.ts +1 -1
  598. package/dist/domain/system-components/sketching.js +1 -1
  599. package/dist/domain/system-components/snap-axis.d.ts +1 -1
  600. package/dist/domain/system-components/snap-axis.js +1 -1
  601. package/dist/domain/system-components/snap-edge.d.ts +1 -1
  602. package/dist/domain/system-components/snap-edge.js +1 -1
  603. package/dist/domain/system-components/snap-plane.d.ts +1 -1
  604. package/dist/domain/system-components/snap-plane.js +1 -1
  605. package/dist/domain/system-components/snap-point.d.ts +1 -1
  606. package/dist/domain/system-components/snap-point.js +1 -1
  607. package/dist/domain/system-components/static-orthographic-camera-component.d.ts +1 -1
  608. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  609. package/dist/domain/system-components/static-perspective-camera-component.d.ts +1 -1
  610. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  611. package/dist/domain/utils/eval-cache.d.ts +1 -2
  612. package/dist/domain/utils/memo-eval.d.ts +2 -4
  613. package/dist/editor/Editor.js +1 -1
  614. package/dist/editor/domain-editors/use-implementation-files.d.ts +7 -6
  615. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  616. package/dist/editor/graphql/GraphQLPanel.js +1 -1
  617. package/dist/editor/variants/VariantAnswerFooter.d.ts +17 -0
  618. package/dist/editor/variants/VariantAnswerFooter.js +1 -0
  619. package/dist/editor/variants/VariantPreviewHandler.d.ts +6 -0
  620. package/dist/editor/variants/VariantPreviewHandler.js +1 -0
  621. package/dist/editor/variants/variant-preview-styles.d.ts +49 -0
  622. package/dist/editor/variants/variant-preview-styles.js +1 -0
  623. package/dist/i18n/locales/cs/messages.js +1 -1
  624. package/dist/i18n/locales/da/messages.js +1 -1
  625. package/dist/i18n/locales/de/messages.js +1 -1
  626. package/dist/i18n/locales/de-AT/messages.js +1 -1
  627. package/dist/i18n/locales/en/messages.js +1 -1
  628. package/dist/i18n/locales/en-AU/messages.js +1 -1
  629. package/dist/i18n/locales/en-GB/messages.js +1 -1
  630. package/dist/i18n/locales/es/messages.js +1 -1
  631. package/dist/i18n/locales/fr/messages.js +1 -1
  632. package/dist/i18n/locales/hu/messages.js +1 -1
  633. package/dist/i18n/locales/it/messages.js +1 -1
  634. package/dist/i18n/locales/nl/messages.js +1 -1
  635. package/dist/i18n/locales/pl/messages.js +1 -1
  636. package/dist/i18n/locales/pt/messages.js +1 -1
  637. package/dist/i18n/locales/ro/messages.js +1 -1
  638. package/dist/i18n/locales/sk/messages.js +1 -1
  639. package/dist/i18n/locales/tr/messages.js +1 -1
  640. package/dist/legacy/domain-cli/gen/configurator-builder.js +21 -8
  641. package/dist/legacy/domain-cli/gen/implementation.js +5 -5
  642. package/dist/legacy/domain-cli/gen/invariants.js +5 -3
  643. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  644. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  645. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +6 -0
  646. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.d.ts +1 -1
  647. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.js +4 -0
  648. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +18 -19
  649. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +15 -16
  650. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +22 -23
  651. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +15 -16
  652. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.d.ts +7 -2
  653. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.js +8 -12
  654. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.d.ts +1 -1
  655. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.js +1 -1
  656. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/webhook-builders.js +7 -7
  657. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  658. package/dist/phoenix/application-spec/resolve-deployment-data.d.ts +4 -3
  659. package/dist/phoenix/application-spec/resolve-deployment-data.js +2 -2
  660. package/dist/phoenix/cli.js +1 -1
  661. package/dist/phoenix/commands/deploy.js +2 -2
  662. package/dist/phoenix/commands/dev.js +5 -5
  663. package/dist/phoenix/commands/index.d.ts +1 -0
  664. package/dist/phoenix/commands/index.js +1 -1
  665. package/dist/phoenix/commands/prepare-deployment-command.js +2 -2
  666. package/dist/phoenix/commands/prepare-local-environment-command.js +1 -1
  667. package/dist/phoenix/commands/story-dev.js +2 -2
  668. package/dist/phoenix/commands/variants.d.ts +35 -0
  669. package/dist/phoenix/commands/variants.js +1 -0
  670. package/dist/phoenix/editor-server/commands-router.d.ts +68 -1
  671. package/dist/phoenix/editor-server/commands-router.js +1 -1
  672. package/dist/phoenix/editor-server/editor-router.d.ts +65 -0
  673. package/dist/phoenix/editor-server/editor-server.d.ts +3 -3
  674. package/dist/phoenix/editor-server/editor-server.js +1 -1
  675. package/dist/phoenix/editor-server/protocol.d.ts +1 -0
  676. package/dist/phoenix/editor-server/spec-router.js +1 -1
  677. package/dist/phoenix/editor-server/trpc.d.ts +3 -0
  678. package/dist/phoenix/scripts/build-admin.js +1 -1
  679. package/dist/phoenix/services/application-spec-project-watcher.d.ts +13 -2
  680. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  681. package/dist/phoenix/services/index.d.ts +4 -0
  682. package/dist/phoenix/services/index.js +1 -1
  683. package/dist/phoenix/services/phoenix-application.d.ts +21 -0
  684. package/dist/phoenix/services/phoenix-application.js +1 -0
  685. package/dist/phoenix/services/phoenix-store.d.ts +48 -0
  686. package/dist/phoenix/services/phoenix-store.js +1 -0
  687. package/dist/phoenix/services/phx-variant-previews-plugin.d.ts +9 -0
  688. package/dist/phoenix/services/phx-variant-previews-plugin.js +1 -0
  689. package/dist/phoenix/services/prepare-development-environment.js +1 -1
  690. package/dist/phoenix/services/variant-file-session.d.ts +36 -0
  691. package/dist/phoenix/services/variant-file-session.js +1 -0
  692. package/dist/phoenix/services/variant-preview-service.d.ts +80 -0
  693. package/dist/phoenix/services/variant-preview-service.js +1 -0
  694. package/dist/phoenix/services/vite-config.js +1 -1
  695. package/dist/react-sdk/application-runtime/common-services/analytics/analytics-service.d.ts +2 -2
  696. package/dist/react-sdk/application-runtime/common-services/analytics/domain-controls-analytics.d.ts +21 -21
  697. package/dist/react-sdk/application-runtime/hooks/data/use-published-data.d.ts +1 -1
  698. package/dist/react-sdk/application-runtime/hooks/use-domain-application-props.d.ts +5 -2
  699. package/dist/react-sdk/application-runtime/hooks/use-spec.d.ts +1 -1
  700. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.d.ts +1 -1
  701. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  702. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +4 -4
  703. package/dist/ui-sdk/common/use-viewport-size.d.ts +4 -1
  704. package/dist/ui-sdk/common/use-viewport-size.js +1 -1
  705. package/dist/ui-sdk/components/mobile-controls/index.d.ts +1 -1
  706. package/dist/ui-sdk/theme/types.d.ts +4 -0
  707. package/dist/webhook/builders/common.d.ts +8 -0
  708. package/dist/webhook/builders/webhook-builder.d.ts +1 -1
  709. package/dist/webhook/builders/webhook-builder.js +1 -1
  710. package/package.json +5 -8
  711. package/schema/domain-spec.json +24 -0
  712. package/dist/configurator/assistant/index.d.ts +0 -1
  713. package/dist/configurator/assistant/index.js +0 -1
  714. package/dist/configurator/assistant/use-assistant-chat.d.ts +0 -20
  715. package/dist/configurator/assistant/use-assistant-chat.js +0 -1
  716. package/dist/domain/actions/action-factory.d.ts +0 -10
  717. package/dist/domain/actions/prepare-action-implementations.js +0 -5
  718. package/dist/domain/components/debug-state-component.js +0 -1
  719. package/dist/domain/components/domain-component-optic.js +0 -16
  720. package/dist/domain/components/drag-state-component.js +0 -1
  721. package/dist/domain/components/export-state-component.js +0 -1
  722. package/dist/domain/components/fullscreen-state-component.js +0 -1
  723. package/dist/domain/components/group-components-by-entity-id-and-name.js +0 -1
  724. package/dist/domain/components/hover-state-component.js +0 -1
  725. package/dist/domain/components/index.d.ts +0 -2
  726. package/dist/domain/components/index.js +0 -1
  727. package/dist/domain/components/navigation-state-component.js +0 -1
  728. package/dist/domain/components/selection-state-component.js +0 -1
  729. package/dist/domain/components/system-component-builder.js +0 -1
  730. package/dist/domain/components/system-virtual-entity.js +0 -1
  731. package/dist/domain/components/tool-state-component.js +0 -1
  732. package/dist/domain/components/view-state-component.js +0 -1
  733. package/dist/domain/components/viewport-state-component.js +0 -1
  734. package/dist/domain/core/json-schema.js +0 -1
  735. package/dist/domain/core/reflection.js +0 -1
  736. package/dist/domain/domain-context/recipe-system/recipes.js +0 -1
  737. package/dist/domain/expressions/constant-expressions.js +0 -1
  738. package/dist/domain/expressions/custom-expression.js +0 -1
  739. package/dist/domain/expressions/index.d.ts +0 -1
  740. package/dist/domain/expressions/index.js +0 -1
  741. package/dist/domain/invariants/custom-invariants.js +0 -1
  742. package/dist/domain/invariants/invariants.js +0 -1
  743. package/dist/domain/invariants/violation-component.js +0 -1
  744. package/dist/domain/relations/all-of-type-relation.js +0 -1
  745. package/dist/domain/relations/component-factories.js +0 -1
  746. package/dist/domain/relations/composed-of.js +0 -1
  747. package/dist/domain/relations/indirect-relation.js +0 -1
  748. package/dist/domain/relations/reference-component.js +0 -1
  749. package/dist/domain/system-components/angle-indicator.js +0 -1
  750. package/dist/domain/system-components/attribute-switch.js +0 -1
  751. package/dist/domain/system-components/autorotate-camera-component.js +0 -1
  752. package/dist/domain/system-components/basic-sidebar-footer.js +0 -1
  753. package/dist/domain/system-components/camera-based-hidden-entity-object.js +0 -1
  754. package/dist/domain/system-components/camera-based-hidden-entity.js +0 -1
  755. package/dist/domain/system-components/canvas-config.js +0 -1
  756. package/dist/domain/system-components/canvas-custom-environment.js +0 -1
  757. package/dist/domain/system-components/canvas-padding.js +0 -1
  758. package/dist/domain/system-components/canvas-preset-environment.js +0 -1
  759. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +0 -1
  760. package/dist/domain/system-components/client-side-image.js +0 -1
  761. package/dist/domain/system-components/color-value.js +0 -1
  762. package/dist/domain/system-components/common/angle-indicator-schema.js +0 -1
  763. package/dist/domain/system-components/common/dimension-indicator-schema.js +0 -1
  764. package/dist/domain/system-components/custom-price-footer.js +0 -1
  765. package/dist/domain/system-components/dimension-indicator.js +0 -1
  766. package/dist/domain/system-components/editable-angle-indicator.js +0 -1
  767. package/dist/domain/system-components/editable-distance-dimension-indicator.js +0 -1
  768. package/dist/domain/system-components/editable-offset-indicator.js +0 -1
  769. package/dist/domain/system-components/editable-size-indicator.js +0 -1
  770. package/dist/domain/system-components/entity-header.js +0 -1
  771. package/dist/domain/system-components/exit-tool-mode-fab.js +0 -1
  772. package/dist/domain/system-components/finalize-action.js +0 -1
  773. package/dist/domain/system-components/finalize-component.js +0 -1
  774. package/dist/domain/system-components/fit-selection-orthographic-camera-component.js +0 -1
  775. package/dist/domain/system-components/fit-selection-perspective-camera-component.js +0 -1
  776. package/dist/domain/system-components/fixed-header.js +0 -1
  777. package/dist/domain/system-components/floating-header.js +0 -1
  778. package/dist/domain/system-components/hidden-header.js +0 -1
  779. package/dist/domain/system-components/hidden-sidebar-footer.js +0 -1
  780. package/dist/domain/system-components/horizontal-tabs.js +0 -1
  781. package/dist/domain/system-components/list-selector-dimension-indicator.js +0 -1
  782. package/dist/domain/system-components/multilingual-text-value.js +0 -1
  783. package/dist/domain/system-components/navigation-steps.js +0 -1
  784. package/dist/domain/system-components/offset-anchors.js +0 -1
  785. package/dist/domain/system-components/offset-indicator.js +0 -1
  786. package/dist/domain/system-components/offset.js +0 -1
  787. package/dist/domain/system-components/other-action.js +0 -1
  788. package/dist/domain/system-components/property-page.js +0 -1
  789. package/dist/domain/system-components/read-sidebar-footer.js +0 -1
  790. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +0 -1
  791. package/dist/domain/system-components/rotatable.js +0 -1
  792. package/dist/domain/system-components/rotation-handle.js +0 -1
  793. package/dist/domain/system-components/save-template-thumbnail.js +0 -1
  794. package/dist/domain/system-components/scene-entity-add-fab.js +0 -1
  795. package/dist/domain/system-components/scene-entity-animation.js +0 -1
  796. package/dist/domain/system-components/scene-entity-control.js +0 -1
  797. package/dist/domain/system-components/scene-entity-delete-fab.js +0 -1
  798. package/dist/domain/system-components/scene-entity-floor-object.js +0 -1
  799. package/dist/domain/system-components/scene-entity-html-hotspot.js +0 -1
  800. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +0 -1
  801. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +0 -1
  802. package/dist/domain/system-components/scene-entity-select-hotspot.js +0 -1
  803. package/dist/domain/system-components/scene-entity-wall-object.js +0 -1
  804. package/dist/domain/system-components/selectable-component.js +0 -1
  805. package/dist/domain/system-components/sidebar-tabs.js +0 -1
  806. package/dist/domain/system-components/simple-summary.js +0 -1
  807. package/dist/domain/system-components/size.js +0 -1
  808. package/dist/domain/system-components/sketching-draw.js +0 -1
  809. package/dist/domain/system-components/sketching-edit.js +0 -1
  810. package/dist/domain/system-components/summary-component.js +0 -1
  811. package/dist/domain/system-components/text-value.js +0 -1
  812. package/dist/domain/system-components/tool-controls.js +0 -1
  813. package/dist/domain/system-components/tool-menu-fab.js +0 -1
  814. package/dist/domain/system-components/universal-sidebar-footer.js +0 -1
  815. package/dist/domain/system-components/view-controls.js +0 -1
  816. package/dist/extras/assistant/AssistantChat.d.ts +0 -6
  817. package/dist/extras/assistant/AssistantChat.js +0 -1
  818. package/dist/extras/assistant/index.d.ts +0 -1
  819. package/dist/extras/assistant/index.js +0 -1
  820. package/dist/phoenix/application-spec/generate-assistant-prompt.d.ts +0 -12
  821. package/dist/phoenix/application-spec/generate-assistant-prompt.js +0 -1
  822. /package/dist/domain/{components/component-reader-types.js → application/assistant/assistant-manifest.js} +0 -0
  823. /package/dist/domain/{core/action.js → application/assistant/assistant-resolved-manifest.js} +0 -0
  824. /package/dist/domain/{actions → core/action}/action-factory.js +0 -0
  825. /package/dist/domain/core/{enhanced-json-schema.js → action/action.js} +0 -0
  826. /package/dist/domain/core/{expression.js → component/component-reader-types.js} +0 -0
  827. /package/dist/domain/{components → core/component}/legacy-filter.js +0 -0
  828. /package/dist/domain/{components → core/component}/system-component-filter.js +0 -0
  829. /package/dist/domain/{components → core/component}/system-virtual-entity.d.ts +0 -0
  830. /package/dist/domain/{components → core/component}/updates.js +0 -0
  831. /package/dist/domain/core/{schema-validator.js → data-schema/data-cell-value.js} +0 -0
  832. /package/dist/domain/{relations/reference-field.js → core/data-schema/data-schema-array-field.js} +0 -0
  833. /package/dist/domain/{relations/relation-implementation.js → core/data-schema/data-schema-field-object.js} +0 -0
  834. /package/dist/domain/{invariants → core/invariant}/builtin-invariant.js +0 -0
  835. /package/dist/domain/{invariants → core/invariant}/violation-component.d.ts +0 -0
  836. /package/dist/domain/{invariants → core/invariant}/violation.js +0 -0
  837. /package/dist/domain/core/{alias.d.ts → model/alias.d.ts} +0 -0
  838. /package/dist/domain/core/{alias.js → model/alias.js} +0 -0
  839. /package/dist/domain/core/{common-definitions.d.ts → model/common-definitions.d.ts} +0 -0
  840. /package/dist/domain/core/{common-definitions.js → model/common-definitions.js} +0 -0
  841. /package/dist/domain/core/{component.js → model/component.js} +0 -0
  842. /package/dist/domain/core/{model.d.ts → model/model.d.ts} +0 -0
  843. /package/dist/domain/core/{model.js → model/model.js} +0 -0
  844. /package/dist/domain/core/{preset.d.ts → model/preset.d.ts} +0 -0
  845. /package/dist/domain/core/{preset.js → model/preset.js} +0 -0
  846. /package/dist/domain/{relations → core/relation}/direct-relation.js +0 -0
  847. /package/dist/domain/{relations → core/relation}/relation-factory.js +0 -0
  848. /package/dist/domain/core/{schema-validator-ajv.d.ts → schema/create-ajv-schema-validator.d.ts} +0 -0
  849. /package/dist/domain/core/{schema-validator-ajv.js → schema/create-ajv-schema-validator.js} +0 -0
  850. /package/dist/domain/core/{schema-validator-csp.d.ts → schema/create-csp-schema-validator.d.ts} +0 -0
  851. /package/dist/domain/core/{schema-validator-csp.js → schema/create-csp-schema-validator.js} +0 -0
  852. /package/dist/domain/core/{enhanced-json-schema.d.ts → schema/enhanced-json-schema.d.ts} +0 -0
  853. /package/dist/domain/core/{json-schema.d.ts → schema/extended-schema-validator.d.ts} +0 -0
  854. /package/dist/domain/core/{schema-validator.d.ts → schema/schema-validator.d.ts} +0 -0
  855. /package/dist/domain/core/{migrations.js → state/migrations.js} +0 -0
  856. /package/dist/domain/core/{state.js → state/state.js} +0 -0
  857. /package/dist/domain/{expressions → domain-runtime/spec}/memoize-expression.js +0 -0
  858. /package/dist/domain/{expressions → domain-runtime/spec}/prepare-domain-expressions.js +0 -0
  859. /package/dist/domain/{system-components → extensions}/attribute-switch.d.ts +0 -0
  860. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.d.ts +0 -0
  861. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.d.ts +0 -0
  862. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.d.ts +0 -0
  863. /package/dist/domain/{system-components → extensions}/client-side-image.d.ts +0 -0
  864. /package/dist/domain/{system-components → extensions}/color-value.d.ts +0 -0
  865. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.d.ts +0 -0
  866. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.js +0 -0
  867. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.d.ts +0 -0
  868. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.js +0 -0
  869. /package/dist/domain/{system-components → extensions}/custom-price-footer.d.ts +0 -0
  870. /package/dist/domain/{system-components → extensions}/finalize-component.d.ts +0 -0
  871. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.d.ts +0 -0
  872. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.d.ts +0 -0
  873. /package/dist/domain/{system-components → extensions}/multilingual-text-value.d.ts +0 -0
  874. /package/dist/domain/{system-components → extensions}/navigation-steps.d.ts +0 -0
  875. /package/dist/domain/{system-components → extensions}/rotatable.d.ts +0 -0
  876. /package/dist/domain/{system-components → extensions}/rotation-handle.d.ts +0 -0
  877. /package/dist/domain/{system-components → extensions}/save-template-thumbnail.d.ts +0 -0
  878. /package/dist/domain/{system-components → extensions}/scene-entity-animation.d.ts +0 -0
  879. /package/dist/domain/{system-components → extensions}/scene-entity-control.d.ts +0 -0
  880. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.d.ts +0 -0
  881. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.d.ts +0 -0
  882. /package/dist/domain/{system-components → extensions}/selectable-component.d.ts +0 -0
  883. /package/dist/domain/{system-components → extensions}/simple-summary.d.ts +0 -0
  884. /package/dist/domain/{system-components → extensions}/summary-component.d.ts +0 -0
  885. /package/dist/domain/{system-components → extensions}/text-value.d.ts +0 -0
  886. /package/dist/domain/{system-components → extensions}/tool-controls.d.ts +0 -0
  887. /package/dist/domain/{system-components → extensions}/view-controls.d.ts +0 -0
@@ -1 +1 @@
1
- import{expandAlias as t}from"./core/alias.js";import{DomainFactory as i}from"./core/index.js";import{MigrateFunctionBuilder as e}from"./core/migrations.js";import{withProfilerLabel as s}from"./utils/profiler-label.js";export class DomainBuilder{entities;aliasMap;$entityReflections;allowedRootEntityTypes;implemented;modelVersion;publishedData;sessionData;frontendData;backendData;migrate;isAdminDomain;actions;actionImplementations;constructor(t,i,e,s,a,n,o,h,l,m,r,d,p,c){this.entities=t,this.aliasMap=i,this.$entityReflections=e,this.allowedRootEntityTypes=s,this.implemented=a,this.modelVersion=n,this.publishedData=o,this.sessionData=h,this.frontendData=l,this.backendData=m,this.migrate=r,this.isAdminDomain=d,this.actions=p,this.actionImplementations=c}static from(t,i,s,a,n,o,h,l,m,r){let d=e.fromVersions({1:t}).to(1).using({}).build();return new DomainBuilder(t,i,s,a,{},n,o,h,l,m,d,r,{},{})}withMigrate(t){return new DomainBuilder(this.entities,this.aliasMap,this.$entityReflections,this.allowedRootEntityTypes,this.implemented,this.modelVersion,this.publishedData,this.sessionData,this.frontendData,this.backendData,t,this.isAdminDomain,this.actions,this.actionImplementations)}withExpressions(i){let e={...this.implemented};return Object.entries(i).forEach(([i,a])=>{t(this.aliasMap,i).forEach(t=>{let n={...e[t]};e[t]=n,Object.entries(a).forEach(([e,a])=>{let o=n[e];if(o)throw Error(`Duplicate expression ${t}.${e}: The expression is defined on both ${i} and ${o.origin.typeOrAlias}, which would lead to ambiguous usage. Please ensure that expressions are only defined once.`);n[e]={...a,evaluate:s(`${t}_${e}`,a.evaluate),origin:{name:e,typeOrAlias:i}}})})}),new DomainBuilder(this.entities,this.aliasMap,this.$entityReflections,this.allowedRootEntityTypes,e,this.modelVersion,this.publishedData,this.sessionData,this.frontendData,this.backendData,this.migrate,this.isAdminDomain,this.actions,this.actionImplementations)}withActions(t){return new DomainBuilder(this.entities,this.aliasMap,this.$entityReflections,this.allowedRootEntityTypes,this.implemented,this.modelVersion,this.publishedData,this.sessionData,this.frontendData,this.backendData,this.migrate,this.isAdminDomain,Object.fromEntries(t.map(t=>[t.name,t])),this.actionImplementations)}withActionImplementations(t){return new DomainBuilder(this.entities,this.aliasMap,this.$entityReflections,this.allowedRootEntityTypes,this.implemented,this.modelVersion,this.publishedData,this.sessionData,this.frontendData,this.backendData,this.migrate,this.isAdminDomain,this.actions,{...this.actionImplementations,...t})}build=()=>{let t=this.implemented,s=this.migrate??e.fromVersions({1:this.entities}).to(1).using({}).build();return new i({aliasMap:this.aliasMap,entityReflections:this.entities,$entityReflections:this.$entityReflections,expressions:t,allowedRootEntityTypes:this.allowedRootEntityTypes,modelVersion:this.modelVersion,migrate:s,publishedData:this.publishedData,sessionData:this.sessionData,frontendData:this.frontendData,backendData:this.backendData,isAdminDomain:this.isAdminDomain,actions:this.actions,actionImplementations:this.actionImplementations})}}
1
+ import{DomainFactory as t,MigrateFunctionBuilder as i,expandAlias as e}from"./core/index.js";import{resolveActionModules as s,resolveExpressionModules as n}from"./project-modules/index.js";import{withProfilerLabel as a}from"./utils/profiler-label.js";export class DomainBuilder{entities;aliasMap;$entityReflections;allowedRootEntityTypes;implemented;modelVersion;publishedData;sessionData;frontendData;backendData;migrate;isAdminDomain;actions;actionImplementations;constructor(t,i,e,s,n,a,o,h,l,r,m,d,p,c){this.entities=t,this.aliasMap=i,this.$entityReflections=e,this.allowedRootEntityTypes=s,this.implemented=n,this.modelVersion=a,this.publishedData=o,this.sessionData=h,this.frontendData=l,this.backendData=r,this.migrate=m,this.isAdminDomain=d,this.actions=p,this.actionImplementations=c}static from(t,e,s,n,a,o,h,l,r,m){let d=i.fromVersions({1:t}).to(1).using({}).build();return new DomainBuilder(t,e,s,n,{},a,o,h,l,r,d,m,{},{})}withMigrate(t){return new DomainBuilder(this.entities,this.aliasMap,this.$entityReflections,this.allowedRootEntityTypes,this.implemented,this.modelVersion,this.publishedData,this.sessionData,this.frontendData,this.backendData,t,this.isAdminDomain,this.actions,this.actionImplementations)}withExpressions(t){let i={...this.implemented};return Object.entries(t).forEach(([t,s])=>{e(this.aliasMap,t).forEach(e=>{let n={...i[e]};i[e]=n,Object.entries(s).forEach(([i,s])=>{let o=n[i];if(o)throw Error(`Duplicate expression ${e}.${i}: The expression is defined on both ${t} and ${o.origin.typeOrAlias}, which would lead to ambiguous usage. Please ensure that expressions are only defined once.`);n[i]={...s,evaluate:a(`${e}_${i}`,s.evaluate),origin:{name:i,typeOrAlias:t}}})})}),new DomainBuilder(this.entities,this.aliasMap,this.$entityReflections,this.allowedRootEntityTypes,i,this.modelVersion,this.publishedData,this.sessionData,this.frontendData,this.backendData,this.migrate,this.isAdminDomain,this.actions,this.actionImplementations)}withExpressionModules(t){return n(t,this.aliasMap).reduce((t,i)=>t.withExpressions(i.expressions),this)}withActions(t){return new DomainBuilder(this.entities,this.aliasMap,this.$entityReflections,this.allowedRootEntityTypes,this.implemented,this.modelVersion,this.publishedData,this.sessionData,this.frontendData,this.backendData,this.migrate,this.isAdminDomain,Object.fromEntries(t.map(t=>[t.name,t])),this.actionImplementations)}withActionModules(t){return this.withActionImplementations(s(t))}withActionImplementations(t){return new DomainBuilder(this.entities,this.aliasMap,this.$entityReflections,this.allowedRootEntityTypes,this.implemented,this.modelVersion,this.publishedData,this.sessionData,this.frontendData,this.backendData,this.migrate,this.isAdminDomain,this.actions,{...this.actionImplementations,...t})}build=()=>{let e=this.implemented,s=this.migrate??i.fromVersions({1:this.entities}).to(1).using({}).build();return new t({aliasMap:this.aliasMap,entityReflections:this.entities,$entityReflections:this.$entityReflections,expressions:e,allowedRootEntityTypes:this.allowedRootEntityTypes,modelVersion:this.modelVersion,migrate:s,publishedData:this.publishedData,sessionData:this.sessionData,frontendData:this.frontendData,backendData:this.backendData,isAdminDomain:this.isAdminDomain,actions:this.actions,actionImplementations:this.actionImplementations})}}
@@ -1,7 +1,5 @@
1
- import type { ActionContext, ActionTypes, PreparedAction } from '../../core/action.js';
2
- import type { $DomainEntity, DomainEntity } from '../../core/model.js';
3
- import type { DomainState } from '../../core/state.js';
4
- import type { DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
1
+ import { type $DomainEntity, type ActionTypes, type DomainEntity, type DomainState, type PreparedAction } from '../../core/index.js';
2
+ import type { ActionContext, DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
5
3
  export interface ActionSystemContext {
6
4
  /**
7
5
  * The action system's window into the runtime registry: the declared actions and their
@@ -1 +1 @@
1
- import{createSelector as t}from"@salsita-ai/common/utils";import{createUpdateFactory as e}from"../../components/updates.js";import{extendedSchemaValidator as s}from"../../core/json-schema.js";import{getIdSequence as o}from"../store-system/next-domain-entity-id.js";export class ActionSystem{_context;_selectValidators=t([t.leaf(t=>t)],t=>new Map(Object.values(t).map(t=>[t.name,s.compile(t.params)])));_updates=e();constructor(t){this._context=t}createContext=t=>({expressionContext:this._context.selectors.getExpressionContext(),systems:this._context.selectors.getDomainSystems(),getIdSequence:()=>o(t.entities,[]),updates:this._updates});prepareAction=(t,e,o)=>{let n=this._context.selectors.getActionDefinitions(),i=Object.values(n).find(e=>e.name===t);if(!i){let e=Object.values(n).map(t=>`"${t.name}"`);throw Error(`Unknown action "${t}". ${e.length>0?`The application declares these actions: ${e.join(", ")}.`:"The application declares no actions."} Declare it under "actions" in a spec file and implement it in src/actions/.`)}let a=this._selectValidators(n).get(i.name);if(a&&!a(e))throw Error(`The arguments of action "${t}" do not fit its params: ${s.errorsText(a.errors)}. Nothing was changed. Send arguments that fit the params the action declares.`);return(Object.entries(this._context.selectors.getActionImplementations()).find(([e])=>e===t)?.[1])(e,o,this.createContext(o))}}
1
+ import{createSelector as t}from"@salsita-ai/common/utils";import{createUpdateFactory as e,extendedSchemaValidator as s}from"../../core/index.js";import{getIdSequence as n}from"../store-system/next-domain-entity-id.js";export class ActionSystem{_context;_selectValidators=t([t.leaf(t=>t)],t=>new Map(Object.values(t).map(t=>[t.name,s.compile(t.params)])));_updates=e();constructor(t){this._context=t}createContext=t=>({expressionContext:this._context.selectors.getExpressionContext(),systems:this._context.selectors.getDomainSystems(),getIdSequence:()=>n(t.entities,[]),updates:this._updates});prepareAction=(t,e,n)=>{let o=this._context.selectors.getActionDefinitions(),i=Object.values(o).find(e=>e.name===t);if(!i){let e=Object.values(o).map(t=>`"${t.name}"`);throw Error(`Unknown action "${t}". ${e.length>0?`The application declares these actions: ${e.join(", ")}.`:"The application declares no actions."} Declare it under "actions" in a spec file and implement it in src/actions/.`)}let a=this._selectValidators(o).get(i.name);if(a&&!a(e))throw Error(`The arguments of action "${t}" do not fit its params: ${s.errorsText(a.errors)}. Nothing was changed. Send arguments that fit the params the action declares.`);return(Object.entries(this._context.selectors.getActionImplementations()).find(([e])=>e===t)?.[1])(e,n,this.createContext(n))}}
@@ -1,4 +1,4 @@
1
- import type { $DomainEntity, DomainEntity } from '../core/model.js';
1
+ import type { $DomainEntity, DomainEntity } from '../core/index.js';
2
2
  import type { DomainContextSystems } from './domain-context-systems.js';
3
3
  import type { UpdateTransformer } from './store-system/store-system.js';
4
4
  export declare const createTransformer: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string>(transformer: (ctx: DomainContextSystems<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES>) => UpdateTransformer<ENTITIES>) => (ctx: DomainContextSystems<ENTITIES, ALLOWED_ROOT_ENTITIES, $MAP, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES>) => UpdateTransformer<ENTITIES>;
@@ -1 +1 @@
1
- import{SystemComponentBuilder as t}from"../../components/index.js";import{DimensionUnitSchema as e}from"../../dimensions/index.js";export const dimensionStateComponent=t.component("dimensionStateComponent").withState({type:"object",properties:{unit:e},required:["unit"],additionalProperties:!1}).withWritableKeys(["unit"]).build();
1
+ import{SystemComponentBuilder as t}from"../../core/index.js";import{DimensionUnitSchema as e}from"../../dimensions/index.js";export const dimensionStateComponent=t.component("dimensionStateComponent").withState({type:"object",properties:{unit:e},required:["unit"],additionalProperties:!1}).withWritableKeys(["unit"]).build();
@@ -1,7 +1,6 @@
1
- import type { DomainEntity, DomainState } from '../../core/index.js';
1
+ import type { DomainEntity, DomainState, EntityViolation } from '../../core/index.js';
2
2
  import { DimensionUnit, type UnitsConfig } from '../../dimensions/index.js';
3
3
  import type { DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
4
- import type { EntityViolation } from '../../invariants/violation.js';
5
4
  import { SystemState } from '../store-system/system-state.js';
6
5
  import { type DimensionStateComponent } from './dimension-state.js';
7
6
  export type DistanceDimensionViolation = `${string}.distanceDimension.tooLarge` | `${string}.distanceDimension.tooSmall`;
@@ -1,6 +1,4 @@
1
- import type { ActionTypes } from '../core/action.js';
2
- import type { Domain } from '../core/domain.js';
3
- import type { $DomainEntity, DomainEntity } from '../core/model.js';
1
+ import type { $DomainEntity, ActionTypes, Domain, DomainEntity } from '../core/index.js';
4
2
  import type { ComponentReader, DomainContextSelectors } from '../domain-runtime/domain-context/index.js';
5
3
  import type { BlenderProjections, CollisionProjections, CompositionProjections, ConstraintProjections, PositionProjections, ProjectedEntitiesProjections, SnappingProjections, ValidationProjections } from '../projections/index.js';
6
4
  import type { SketchingProjections } from '../sketching/sketching-projections.js';
@@ -1,10 +1,10 @@
1
1
  export { type AnalyticsSystem, NoopAnalyticsSystem } from './analytics-system/analytics-system.js';
2
- export { type AnalyticsEvent, AnalyticsEventFactory, AnalyticsEventType, } from './analytics-system/analytics-contracts.js';
2
+ export { type AnalyticsEvent, AnalyticsEventFactory, AnalyticsEventType, type DataLoadedEvent, type InitEvent, type NavigationEvent, type SessionAuthenticatedEvent, type SystemEvent, type UserActionEvent, } from './analytics-system/analytics-contracts.js';
3
3
  export { NavigationUpdateTag, isInitialNavigationUpdate, isNavigationUpdate, isInitialViewUpdate, isViewUpdate, isInitialSelectionUpdate, isSelectUpdate, isDeselectUpdate, isInitialFullscreenUpdate, isToggleFullscreenUpdate, isInitialDebugUpdate, isInitialViewportUpdate, isSetViewportUpdate, isInitialDragUpdate, isDragStartUpdate, isDragEndUpdate, isInitialToolUpdate, isToolUpdate, isExportUpdate, } from './navigation-system/navigation-updates.js';
4
4
  export { createAutoSelectionTransformer, NavigationSystem, type NavigationSystemContext, } from './navigation-system/navigation-system.js';
5
5
  export { createResetSelectionOnNavigationTransformer, createNavigationOnSelectionTransformer, createNavigationOnDeselectTransformer, createSelectParentOnDeselectionTransformer, createNavigationOnSelectionChangeTransformer, } from './navigation-system/selection-transformers.js';
6
6
  export { StoreSystem, type TransformerRegistration, type StateEmission, type UpdateTransformer, type TransformerLogFunction, type Transformers, type StateSliceName, type StateUpdateEmission, type StateEmissionKind, type CommitPreparedOutcome, } from './store-system/store-system.js';
7
- export { nextDomainEntityId, getIdSequence, type IdSequence } from './store-system/next-domain-entity-id.js';
7
+ export { nextDomainEntityId, getIdSequence } from './store-system/next-domain-entity-id.js';
8
8
  export { applyUpdates } from './store-system/apply-updates.js';
9
9
  export { SystemState, SystemStateInitialUpdateTag, SystemStateUpdateTag, type SystemStateContext, } from './store-system/system-state.js';
10
10
  export { createRefReplaceTransformer } from './relation-transformers/replace-refs.js';
@@ -14,7 +14,6 @@ export { createCreateEntityRefsTransformer } from './relation-transformers/creat
14
14
  export { type CanBeUndonePredicate, type CanBeUndoneContext, type UndoCapabilities, UndoSystem, UNDO_REDO_RESET_TAG, isUndoRedoReset, } from './undo-system.js';
15
15
  export { DimensionSystem, type AnyDimensionSystem, type DimensionSystemContext, type AngleDimensionViolation, type DistanceDimensionViolation, type GenericDimensionViolation, } from './dimension-system/dimension-system.js';
16
16
  export { ActionSystem, type AnyActionSystem, type ActionSystemContext } from './action-system/action-system.js';
17
- export { RecipeFactoryBuilder, type EntityRecipe } from './recipe-system/recipes.js';
18
17
  export { RecipeCookerSystem, type AnyRecipeCookerSystem, type RecipeCookerSystemContext, ReplaceRecipeUpdateTag, isReplaceEntityUpdate, type IsReplaceRecipeUpdate, CreateRecipeUpdateTag, isCreateEntityUpdate, type IsCreateRecipeUpdate, } from './recipe-system/recipe-cooker-system.js';
19
18
  export { type DomainContextSystems, type AnyDomainContextSystems } from './domain-context-systems.js';
20
19
  export { createTransformer, type TransformerFactory } from './create-transformer.js';
@@ -1 +1 @@
1
- export{NoopAnalyticsSystem}from"./analytics-system/analytics-system.js";export{AnalyticsEventFactory,AnalyticsEventType}from"./analytics-system/analytics-contracts.js";export{NavigationUpdateTag,isInitialNavigationUpdate,isNavigationUpdate,isInitialViewUpdate,isViewUpdate,isInitialSelectionUpdate,isSelectUpdate,isDeselectUpdate,isInitialFullscreenUpdate,isToggleFullscreenUpdate,isInitialDebugUpdate,isInitialViewportUpdate,isSetViewportUpdate,isInitialDragUpdate,isDragStartUpdate,isDragEndUpdate,isInitialToolUpdate,isToolUpdate,isExportUpdate}from"./navigation-system/navigation-updates.js";export{createAutoSelectionTransformer,NavigationSystem}from"./navigation-system/navigation-system.js";export{createResetSelectionOnNavigationTransformer,createNavigationOnSelectionTransformer,createNavigationOnDeselectTransformer,createSelectParentOnDeselectionTransformer,createNavigationOnSelectionChangeTransformer}from"./navigation-system/selection-transformers.js";export{StoreSystem}from"./store-system/store-system.js";export{nextDomainEntityId,getIdSequence}from"./store-system/next-domain-entity-id.js";export{applyUpdates}from"./store-system/apply-updates.js";export{SystemState,SystemStateInitialUpdateTag,SystemStateUpdateTag}from"./store-system/system-state.js";export{createRefReplaceTransformer}from"./relation-transformers/replace-refs.js";export{createCascadeDeletesTransformer}from"./relation-transformers/cascade-deletes.js";export{createCascadeRefPruningTransformer}from"./relation-transformers/cascade-ref-pruning.js";export{createCreateEntityRefsTransformer}from"./relation-transformers/create-entity-refs.js";export{UndoSystem,UNDO_REDO_RESET_TAG,isUndoRedoReset}from"./undo-system.js";export{DimensionSystem}from"./dimension-system/dimension-system.js";export{ActionSystem}from"./action-system/action-system.js";export{RecipeFactoryBuilder}from"./recipe-system/recipes.js";export{RecipeCookerSystem,ReplaceRecipeUpdateTag,isReplaceEntityUpdate,CreateRecipeUpdateTag,isCreateEntityUpdate}from"./recipe-system/recipe-cooker-system.js";export{createTransformer}from"./create-transformer.js";export*from"./transformers/index.js";
1
+ export{NoopAnalyticsSystem}from"./analytics-system/analytics-system.js";export{AnalyticsEventFactory,AnalyticsEventType}from"./analytics-system/analytics-contracts.js";export{NavigationUpdateTag,isInitialNavigationUpdate,isNavigationUpdate,isInitialViewUpdate,isViewUpdate,isInitialSelectionUpdate,isSelectUpdate,isDeselectUpdate,isInitialFullscreenUpdate,isToggleFullscreenUpdate,isInitialDebugUpdate,isInitialViewportUpdate,isSetViewportUpdate,isInitialDragUpdate,isDragStartUpdate,isDragEndUpdate,isInitialToolUpdate,isToolUpdate,isExportUpdate}from"./navigation-system/navigation-updates.js";export{createAutoSelectionTransformer,NavigationSystem}from"./navigation-system/navigation-system.js";export{createResetSelectionOnNavigationTransformer,createNavigationOnSelectionTransformer,createNavigationOnDeselectTransformer,createSelectParentOnDeselectionTransformer,createNavigationOnSelectionChangeTransformer}from"./navigation-system/selection-transformers.js";export{StoreSystem}from"./store-system/store-system.js";export{nextDomainEntityId,getIdSequence}from"./store-system/next-domain-entity-id.js";export{applyUpdates}from"./store-system/apply-updates.js";export{SystemState,SystemStateInitialUpdateTag,SystemStateUpdateTag}from"./store-system/system-state.js";export{createRefReplaceTransformer}from"./relation-transformers/replace-refs.js";export{createCascadeDeletesTransformer}from"./relation-transformers/cascade-deletes.js";export{createCascadeRefPruningTransformer}from"./relation-transformers/cascade-ref-pruning.js";export{createCreateEntityRefsTransformer}from"./relation-transformers/create-entity-refs.js";export{UndoSystem,UNDO_REDO_RESET_TAG,isUndoRedoReset}from"./undo-system.js";export{DimensionSystem}from"./dimension-system/dimension-system.js";export{ActionSystem}from"./action-system/action-system.js";export{RecipeCookerSystem,ReplaceRecipeUpdateTag,isReplaceEntityUpdate,CreateRecipeUpdateTag,isCreateEntityUpdate}from"./recipe-system/recipe-cooker-system.js";export{createTransformer}from"./create-transformer.js";export*from"./transformers/index.js";
@@ -1,6 +1,4 @@
1
- import { type Viewport } from '../../components/viewport-state-component.js';
2
- import type { DomainEntity } from '../../core/model.js';
3
- import type { DomainState } from '../../core/state.js';
1
+ import { type DomainEntity, type DomainState, type Viewport } from '../../core/index.js';
4
2
  import type { DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
5
3
  import type { DomainServicesSelectors } from '../../domain-runtime/domain-services/index.js';
6
4
  import type { UpdateTransformer } from '../store-system/store-system.js';
@@ -37,7 +35,7 @@ export declare class NavigationSystem<ENTITIES extends DomainEntity<string>, NAV
37
35
  private get _initialExportState();
38
36
  constructor(_context: NavigationSystemContext);
39
37
  initialize: () => void;
40
- getInitialUpdates: () => (import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"debugState", import("../../index.js").DebugStateComponentState, "enabled">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"dragState", import("../../index.js").DragStateComponentState, "draggedEntityId">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"exportState", import("../../components/export-state-component.js").ExportStateComponentState, "activeState" | "exportedEntityId">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"fullscreenState", import("../../index.js").FullscreenStateComponentState, "enabled">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"hoverState", import("../../index.js").HoverStateComponentState, "hoveredEntityId">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"navigationState", import("../../index.js").NavigationStateComponentState, "activeState" | "historyStack">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"selectionState", import("../../index.js").SelectionStateComponentState, "selectedEntityId">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"toolState", import("../../index.js").ToolStateComponentState, "activeState">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"viewState", import("../../index.js").ViewStateComponentState, "activeState">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"viewportState", import("../../index.js").ViewportStateComponentState, "active">>)[];
38
+ getInitialUpdates: () => (import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"debugState", import("../../index.js").DebugStateComponentState, "enabled">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"dragState", import("../../index.js").DragStateComponentState, "draggedEntityId">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"exportState", import("../../index.js").ExportStateComponentState, "activeState" | "exportedEntityId">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"fullscreenState", import("../../index.js").FullscreenStateComponentState, "enabled">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"hoverState", import("../../index.js").HoverStateComponentState, "hoveredEntityId">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"navigationState", import("../../index.js").NavigationStateComponentState, "activeState" | "historyStack">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"selectionState", import("../../index.js").SelectionStateComponentState, "selectedEntityId">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"toolState", import("../../index.js").ToolStateComponentState, "activeState">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"viewState", import("../../index.js").ViewStateComponentState, "activeState">> | import("../../index.js").EphemeralRecordCreation<import("../../index.js").SystemComponentType<"viewportState", import("../../index.js").ViewportStateComponentState, "active">>)[];
41
39
  /**
42
40
  * Get the current navigation state from the provided system state. This method should be only used in transformers or other imperative contexts, for
43
41
  * other use cases, use the observables provided by the NavigationSystem.
@@ -102,7 +100,7 @@ export declare class NavigationSystem<ENTITIES extends DomainEntity<string>, NAV
102
100
  getPopNavigationUpdate: (state: DomainState<ENTITIES>) => import("../../index.js").EphemeralRecordModification<import("../../index.js").SystemComponentType<"navigationState", import("../../index.js").NavigationStateComponentState, "activeState" | "historyStack">> | null;
103
101
  getViewUpdate: (activeState: VIEW_STATES) => import("../../index.js").EphemeralRecordModification<import("../../index.js").SystemComponentType<"viewState", import("../../index.js").ViewStateComponentState, "activeState">>;
104
102
  getToolUpdate: (activeState: TOOL_STATES) => import("../../index.js").EphemeralRecordModification<import("../../index.js").SystemComponentType<"toolState", import("../../index.js").ToolStateComponentState, "activeState">>;
105
- getExportUpdate: (activeState: EXPORT_STATES, exportedEntityId: ENTITIES['id']) => import("../../index.js").EphemeralRecordModification<import("../../index.js").SystemComponentType<"exportState", import("../../components/export-state-component.js").ExportStateComponentState, "activeState" | "exportedEntityId">>;
103
+ getExportUpdate: (activeState: EXPORT_STATES, exportedEntityId: ENTITIES['id']) => import("../../index.js").EphemeralRecordModification<import("../../index.js").SystemComponentType<"exportState", import("../../index.js").ExportStateComponentState, "activeState" | "exportedEntityId">>;
106
104
  getSelectUpdate: (selectedEntityId: ENTITIES['id']) => import("../../index.js").EphemeralRecordModification<import("../../index.js").SystemComponentType<"selectionState", import("../../index.js").SelectionStateComponentState, "selectedEntityId">>;
107
105
  getDeselectUpdate: () => import("../../index.js").EphemeralRecordModification<import("../../index.js").SystemComponentType<"selectionState", import("../../index.js").SelectionStateComponentState, "selectedEntityId">>;
108
106
  getHoverInUpdate: (hoveredEntityId: ENTITIES['id']) => import("../../index.js").EphemeralRecordModification<import("../../index.js").SystemComponentType<"hoverState", import("../../index.js").HoverStateComponentState, "hoveredEntityId">>;
@@ -1 +1 @@
1
- import{Subject as t,debounceTime as e,distinctUntilChanged as n,map as o}from"rxjs";import{match as i}from"ts-pattern";import{isNonNullish as a}from"@salsita-ai/common/utils";import{debugStateComponent as r}from"../../components/debug-state-component.js";import{dragStateComponent as c}from"../../components/drag-state-component.js";import{exportStateComponent as s}from"../../components/export-state-component.js";import{fullscreenStateComponent as p}from"../../components/fullscreen-state-component.js";import{hoverStateComponent as l}from"../../components/hover-state-component.js";import{navigationStateComponent as d}from"../../components/navigation-state-component.js";import{selectionStateComponent as m}from"../../components/selection-state-component.js";import{getComponentSystemFilterState as g}from"../../components/system-component-filter.js";import{systemVirtualEntityId as S}from"../../components/system-virtual-entity.js";import{toolStateComponent as y}from"../../components/tool-state-component.js";import{systemUpdateFactory as u}from"../../components/updates.js";import{viewStateComponent as h}from"../../components/view-state-component.js";import{viewportStateComponent as I}from"../../components/viewport-state-component.js";import{AnalyticsEventFactory as v}from"../analytics-system/analytics-contracts.js";import{NavigationUpdateTag as T}from"./navigation-updates.js";export const createAutoSelectionTransformer=t=>(e,n)=>{let o=t.getActiveSelectionState(n),i=e.find(t=>"createDomainEntity"===t.kind);if(null!=i)return[...e,t.getSelectUpdate(i.entityId)];let a=e.find(t=>"replaceDomainEntity"===t.kind&&o===t.entityId);return null!=a?[...e,t.getSelectUpdate(a.replacementEntity.id)]:null!=e.find(t=>"deleteEntity"===t.kind&&o===t.entityId)?[...e,t.getDeselectUpdate()]:e};export class NavigationSystem{_context;_generation=null;_hoverSubject=new t;get _initialNavigationState(){return this._context.selectors.getNavigationStates()[0]}get _initialViewState(){return this._context.selectors.getViewStates()[0]}get _initialToolState(){return this._context.selectors.getToolStates()[0]}get _initialExportState(){return this._context.selectors.getExportStates()[0]}constructor(t){this._context=t,this._context.selectors.getStoreSystem().stateSlices.committed.pipe(o(t=>this.getActiveNavigationState(t.state)),n()).subscribe(t=>{this._context.domainServicesSelectors.getAnalyticsService().push(v.NavigationEvent({navigationState:t})),this._context.domainServicesSelectors.getLogger().appendToGlobalContext({navigationState:t})}),this._context.selectors.getStoreSystem().registerTransformer(100,createAutoSelectionTransformer(this),"AutoSelectionTransformer"),this._hoverSubject.pipe(e(20)).subscribe(({hoveredEntityId:t,generation:e})=>{if(e?.active===!0){if(t){if(this.getActiveHoverState(this._context.selectors.getStoreSystem().stateSlices.rendered.value.state)!==t){let e=this._context.selectors.getStoreSystem().prepareStateEmission([this.getHoverInUpdate(t)],this._context.selectors.getStoreSystem().stateSlices.rendered.value.state,"staged");this._context.selectors.getStoreSystem().emit(e)}}else if(this.getActiveHoverState(this._context.selectors.getStoreSystem().stateSlices.rendered.value.state)){let t=this._context.selectors.getStoreSystem().prepareStateEmission([this.getHoverOutUpdate()],this._context.selectors.getStoreSystem().stateSlices.rendered.value.state,"staged");this._context.selectors.getStoreSystem().emit(t)}}})}initialize=()=>{null!==this._generation&&(this._generation.active=!1),this._generation={active:!0},this._context.selectors.getStoreSystem().stageAndCommit(this.getInitialUpdates())};getInitialUpdates=()=>[this._initialNavigationState?u.EphemeralRecordCreation({componentInstance:{entityId:S,componentType:d},updateTag:T.Initial,initialState:{activeState:this._initialNavigationState,historyStack:[]}}):null,u.EphemeralRecordCreation({componentInstance:{entityId:S,componentType:m},updateTag:T.Initial,initialState:{selectedEntityId:this._context.selectors.getStoreSystem().stateSlices.committed.value.state.rootEntityId}}),u.EphemeralRecordCreation({componentInstance:{entityId:S,componentType:l},updateTag:T.Initial,initialState:{hoveredEntityId:null}}),u.EphemeralRecordCreation({componentInstance:{entityId:S,componentType:r},updateTag:T.Initial,initialState:{enabled:!1}}),this._initialViewState?u.EphemeralRecordCreation({componentInstance:{entityId:S,componentType:h},updateTag:T.Initial,initialState:{activeState:this._initialViewState}}):null,this._initialToolState?u.EphemeralRecordCreation({componentInstance:{entityId:S,componentType:y},updateTag:T.Initial,initialState:{activeState:this._initialToolState}}):null,this._initialExportState?u.EphemeralRecordCreation({componentInstance:{entityId:S,componentType:s},updateTag:T.Initial,initialState:{activeState:this._initialExportState,exportedEntityId:this._context.selectors.getStoreSystem().stateSlices.committed.value.state.rootEntityId}}):null,u.EphemeralRecordCreation({componentInstance:{entityId:S,componentType:p},updateTag:T.Initial,initialState:{enabled:!1}}),u.EphemeralRecordCreation({componentInstance:{entityId:S,componentType:c},updateTag:T.Initial,initialState:{draggedEntityId:null}}),u.EphemeralRecordCreation({componentInstance:{entityId:S,componentType:I},updateTag:T.Initial,initialState:{active:null}})].filter(a);getActiveNavigationState(t){return g(t).navigationState??this._initialNavigationState}getActiveSelectionState(t){return g(t).selectedEntityId??t.rootEntityId}getActiveHoverState(t){return g(t).hoveredEntityId??null}getActiveViewState(t){return g(t).viewState??this._initialViewState}getActiveToolState(t){return g(t).toolState??""}getActiveExportState(t){let e=g(t);return{activeState:e.exportState??this._initialExportState??"",exportedEntityId:e.exportedEntityId??t.rootEntityId}}getActiveFullscreenState(t){let e=this._context.selectors.getComponentReader().readOneComponent({entityId:S,componentType:p},t);return e?.state.enabled??!1}getActiveDragState(t){return g(t).draggedEntityId??null}getActiveViewportState(t){return g(t).viewports??null}getNavigationUpdate=t=>u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:d},updateTag:T.ReplaceNavigation,writableState:{activeState:t,historyStack:[]}});getPushNavigationUpdate=(t,e,n={})=>{let o=this.getActiveNavigationState(e),a=[...this.getHistoryStack(e),o],r=i(n.canStackOnto).with(void 0,()=>a).otherwise(t=>{let e;for(let n=a.length-1;n>=0;n--)if(t.includes(a[n])){e=n;break}return void 0===e?[]:a.slice(0,e+1)});return u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:d},updateTag:T.PushNavigation,writableState:{activeState:t,historyStack:r}})};getIsRootSelected=t=>this.getActiveSelectionState(t)===t.rootEntityId;getHistoryStack=t=>{let e=this._context.selectors.getComponentReader().readOneComponent({entityId:S,componentType:d},t);return e?.state.historyStack??[]};getHasStackToPop=t=>this.getHistoryStack(t).length>0;getPopNavigationUpdate=t=>{let e=this.getHistoryStack(t),n=e.at(-1);if(!n)return null;let o=e.slice(0,-1);return u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:d},updateTag:T.PopNavigation,writableState:{activeState:n,historyStack:o}})};getViewUpdate=t=>u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:h},updateTag:T.ActiveateView,writableState:{activeState:t}});getToolUpdate=t=>u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:y},updateTag:T.ActivateTool,writableState:{activeState:t}});getExportUpdate=(t,e)=>u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:s},updateTag:T.SetExportState,writableState:{activeState:t,exportedEntityId:e}});getSelectUpdate=t=>u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:m},updateTag:T.SelectEntity,writableState:{selectedEntityId:t}});getDeselectUpdate=()=>u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:m},updateTag:T.Deselect,writableState:{selectedEntityId:this._context.selectors.getStoreSystem().stateSlices.committed.value.state.rootEntityId}});getHoverInUpdate=t=>u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:l},updateTag:T.HoverIn,writableState:{hoveredEntityId:t}});getHoverOutUpdate=()=>u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:l},updateTag:T.HoverOut,writableState:{hoveredEntityId:null}});getFullscreenUpdate=t=>u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:p},updateTag:T.ToggleFullscreen,writableState:{enabled:t}});getDragStartUpdate=t=>u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:c},updateTag:T.DragStart,writableState:{draggedEntityId:t}});getDragEndUpdate=()=>u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:c},updateTag:T.DragEnd,writableState:{draggedEntityId:null}});getViewportUpdate=t=>u.EphemeralRecordModification({componentInstance:{entityId:S,componentType:I},updateTag:T.SetViewport,writableState:{active:t}});getToggleFullscreenUpdate=(t=this._context.selectors.getStoreSystem().stateSlices.committed.value.state)=>{let e=this.getActiveFullscreenState(t);return this.getFullscreenUpdate(!e)};debouncedToggleHover=t=>{this._hoverSubject.next({hoveredEntityId:t,generation:this._generation})};resetApplicationStates(){}}
1
+ import{Subject as t,debounceTime as e,distinctUntilChanged as i,map as n}from"rxjs";import{match as a}from"ts-pattern";import{isNonNullish as o}from"@salsita-ai/common/utils";import{debugStateComponent as r,dragStateComponent as c,exportStateComponent as s,fullscreenStateComponent as l,getComponentSystemFilterState as p,hoverStateComponent as d,navigationStateComponent as S,selectionStateComponent as g,systemUpdateFactory as m,systemVirtualEntityId as y,toolStateComponent as h,viewStateComponent as u,viewportStateComponent as I}from"../../core/index.js";import{AnalyticsEventFactory as v}from"../analytics-system/analytics-contracts.js";import{NavigationUpdateTag as T}from"./navigation-updates.js";export const createAutoSelectionTransformer=t=>(e,i)=>{let n=t.getActiveSelectionState(i),a=e.find(t=>"createDomainEntity"===t.kind);if(null!=a)return[...e,t.getSelectUpdate(a.entityId)];let o=e.find(t=>"replaceDomainEntity"===t.kind&&n===t.entityId);return null!=o?[...e,t.getSelectUpdate(o.replacementEntity.id)]:null!=e.find(t=>"deleteEntity"===t.kind&&n===t.entityId)?[...e,t.getDeselectUpdate()]:e};export class NavigationSystem{_context;_generation=null;_hoverSubject=new t;get _initialNavigationState(){return this._context.selectors.getNavigationStates()[0]}get _initialViewState(){return this._context.selectors.getViewStates()[0]}get _initialToolState(){return this._context.selectors.getToolStates()[0]}get _initialExportState(){return this._context.selectors.getExportStates()[0]}constructor(t){this._context=t,this._context.selectors.getStoreSystem().stateSlices.committed.pipe(n(t=>this.getActiveNavigationState(t.state)),i()).subscribe(t=>{this._context.domainServicesSelectors.getAnalyticsService().push(v.NavigationEvent({navigationState:t})),this._context.domainServicesSelectors.getLogger().appendToGlobalContext({navigationState:t})}),this._context.selectors.getStoreSystem().registerTransformer(100,createAutoSelectionTransformer(this),"AutoSelectionTransformer"),this._hoverSubject.pipe(e(20)).subscribe(({hoveredEntityId:t,generation:e})=>{if(e?.active===!0){if(t){if(this.getActiveHoverState(this._context.selectors.getStoreSystem().stateSlices.rendered.value.state)!==t){let e=this._context.selectors.getStoreSystem().prepareStateEmission([this.getHoverInUpdate(t)],this._context.selectors.getStoreSystem().stateSlices.rendered.value.state,"staged");this._context.selectors.getStoreSystem().emit(e)}}else if(this.getActiveHoverState(this._context.selectors.getStoreSystem().stateSlices.rendered.value.state)){let t=this._context.selectors.getStoreSystem().prepareStateEmission([this.getHoverOutUpdate()],this._context.selectors.getStoreSystem().stateSlices.rendered.value.state,"staged");this._context.selectors.getStoreSystem().emit(t)}}})}initialize=()=>{null!==this._generation&&(this._generation.active=!1),this._generation={active:!0},this._context.selectors.getStoreSystem().stageAndCommit(this.getInitialUpdates())};getInitialUpdates=()=>[this._initialNavigationState?m.EphemeralRecordCreation({componentInstance:{entityId:y,componentType:S},updateTag:T.Initial,initialState:{activeState:this._initialNavigationState,historyStack:[]}}):null,m.EphemeralRecordCreation({componentInstance:{entityId:y,componentType:g},updateTag:T.Initial,initialState:{selectedEntityId:this._context.selectors.getStoreSystem().stateSlices.committed.value.state.rootEntityId}}),m.EphemeralRecordCreation({componentInstance:{entityId:y,componentType:d},updateTag:T.Initial,initialState:{hoveredEntityId:null}}),m.EphemeralRecordCreation({componentInstance:{entityId:y,componentType:r},updateTag:T.Initial,initialState:{enabled:!1}}),this._initialViewState?m.EphemeralRecordCreation({componentInstance:{entityId:y,componentType:u},updateTag:T.Initial,initialState:{activeState:this._initialViewState}}):null,this._initialToolState?m.EphemeralRecordCreation({componentInstance:{entityId:y,componentType:h},updateTag:T.Initial,initialState:{activeState:this._initialToolState}}):null,this._initialExportState?m.EphemeralRecordCreation({componentInstance:{entityId:y,componentType:s},updateTag:T.Initial,initialState:{activeState:this._initialExportState,exportedEntityId:this._context.selectors.getStoreSystem().stateSlices.committed.value.state.rootEntityId}}):null,m.EphemeralRecordCreation({componentInstance:{entityId:y,componentType:l},updateTag:T.Initial,initialState:{enabled:!1}}),m.EphemeralRecordCreation({componentInstance:{entityId:y,componentType:c},updateTag:T.Initial,initialState:{draggedEntityId:null}}),m.EphemeralRecordCreation({componentInstance:{entityId:y,componentType:I},updateTag:T.Initial,initialState:{active:null}})].filter(o);getActiveNavigationState(t){return p(t).navigationState??this._initialNavigationState}getActiveSelectionState(t){return p(t).selectedEntityId??t.rootEntityId}getActiveHoverState(t){return p(t).hoveredEntityId??null}getActiveViewState(t){return p(t).viewState??this._initialViewState}getActiveToolState(t){return p(t).toolState??""}getActiveExportState(t){let e=p(t);return{activeState:e.exportState??this._initialExportState??"",exportedEntityId:e.exportedEntityId??t.rootEntityId}}getActiveFullscreenState(t){let e=this._context.selectors.getComponentReader().readOneComponent({entityId:y,componentType:l},t);return e?.state.enabled??!1}getActiveDragState(t){return p(t).draggedEntityId??null}getActiveViewportState(t){return p(t).viewports??null}getNavigationUpdate=t=>m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:S},updateTag:T.ReplaceNavigation,writableState:{activeState:t,historyStack:[]}});getPushNavigationUpdate=(t,e,i={})=>{let n=this.getActiveNavigationState(e),o=[...this.getHistoryStack(e),n],r=a(i.canStackOnto).with(void 0,()=>o).otherwise(t=>{let e;for(let i=o.length-1;i>=0;i--)if(t.includes(o[i])){e=i;break}return void 0===e?[]:o.slice(0,e+1)});return m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:S},updateTag:T.PushNavigation,writableState:{activeState:t,historyStack:r}})};getIsRootSelected=t=>this.getActiveSelectionState(t)===t.rootEntityId;getHistoryStack=t=>{let e=this._context.selectors.getComponentReader().readOneComponent({entityId:y,componentType:S},t);return e?.state.historyStack??[]};getHasStackToPop=t=>this.getHistoryStack(t).length>0;getPopNavigationUpdate=t=>{let e=this.getHistoryStack(t),i=e.at(-1);if(!i)return null;let n=e.slice(0,-1);return m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:S},updateTag:T.PopNavigation,writableState:{activeState:i,historyStack:n}})};getViewUpdate=t=>m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:u},updateTag:T.ActiveateView,writableState:{activeState:t}});getToolUpdate=t=>m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:h},updateTag:T.ActivateTool,writableState:{activeState:t}});getExportUpdate=(t,e)=>m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:s},updateTag:T.SetExportState,writableState:{activeState:t,exportedEntityId:e}});getSelectUpdate=t=>m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:g},updateTag:T.SelectEntity,writableState:{selectedEntityId:t}});getDeselectUpdate=()=>m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:g},updateTag:T.Deselect,writableState:{selectedEntityId:this._context.selectors.getStoreSystem().stateSlices.committed.value.state.rootEntityId}});getHoverInUpdate=t=>m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:d},updateTag:T.HoverIn,writableState:{hoveredEntityId:t}});getHoverOutUpdate=()=>m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:d},updateTag:T.HoverOut,writableState:{hoveredEntityId:null}});getFullscreenUpdate=t=>m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:l},updateTag:T.ToggleFullscreen,writableState:{enabled:t}});getDragStartUpdate=t=>m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:c},updateTag:T.DragStart,writableState:{draggedEntityId:t}});getDragEndUpdate=()=>m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:c},updateTag:T.DragEnd,writableState:{draggedEntityId:null}});getViewportUpdate=t=>m.EphemeralRecordModification({componentInstance:{entityId:y,componentType:I},updateTag:T.SetViewport,writableState:{active:t}});getToggleFullscreenUpdate=(t=this._context.selectors.getStoreSystem().stateSlices.committed.value.state)=>{let e=this.getActiveFullscreenState(t);return this.getFullscreenUpdate(!e)};debouncedToggleHover=t=>{this._hoverSubject.next({hoveredEntityId:t,generation:this._generation})};resetApplicationStates(){}}
@@ -1,16 +1,5 @@
1
1
  import type { ValueOf } from '@salsita-ai/common/utils';
2
- import { debugStateComponent } from '../../components/debug-state-component.js';
3
- import { dragStateComponent } from '../../components/drag-state-component.js';
4
- import { exportStateComponent } from '../../components/export-state-component.js';
5
- import { fullscreenStateComponent } from '../../components/fullscreen-state-component.js';
6
- import { hoverStateComponent } from '../../components/hover-state-component.js';
7
- import { navigationStateComponent } from '../../components/navigation-state-component.js';
8
- import { selectionStateComponent } from '../../components/selection-state-component.js';
9
- import { toolStateComponent } from '../../components/tool-state-component.js';
10
- import type { EphemeralRecordCreation, EphemeralRecordModification, StateUpdate } from '../../components/updates.js';
11
- import { viewStateComponent } from '../../components/view-state-component.js';
12
- import { viewportStateComponent } from '../../components/viewport-state-component.js';
13
- import type { DomainEntity } from '../../core/model.js';
2
+ import { type DomainEntity, type EphemeralRecordCreation, type EphemeralRecordModification, type StateUpdate, debugStateComponent, dragStateComponent, exportStateComponent, fullscreenStateComponent, hoverStateComponent, navigationStateComponent, selectionStateComponent, toolStateComponent, viewStateComponent, viewportStateComponent } from '../../core/index.js';
14
3
  /**
15
4
  * All updates performed by the navigation system.
16
5
  */
@@ -1 +1 @@
1
- import{debugStateComponent as e}from"../../components/debug-state-component.js";import{dragStateComponent as t}from"../../components/drag-state-component.js";import{exportStateComponent as a}from"../../components/export-state-component.js";import{fullscreenStateComponent as o}from"../../components/fullscreen-state-component.js";import{hoverStateComponent as n}from"../../components/hover-state-component.js";import{navigationStateComponent as i}from"../../components/navigation-state-component.js";import{selectionStateComponent as p}from"../../components/selection-state-component.js";import{toolStateComponent as c}from"../../components/tool-state-component.js";import{viewStateComponent as r}from"../../components/view-state-component.js";import{viewportStateComponent as d}from"../../components/viewport-state-component.js";export const NavigationUpdateTag={Initial:"navigation.initial",ReplaceNavigation:"navigation.replaceNavigation",PushNavigation:"navigation.pushNavigation",PopNavigation:"navigation.popNavigation",ActiveateView:"navigation.activateView",ActivateTool:"navigation.activateTool",SetExportState:"navigation.setExportState",SelectEntity:"navigation.selectEntity",Deselect:"navigation.deselect",ToggleFullscreen:"navigation.toggleFullscreen",SetViewport:"navigation.setViewport",HoverIn:"navigation.hoverIn",HoverOut:"navigation.hoverOut",DragStart:"navigation.dragStart",DragEnd:"navigation.dragEnd"};export const isInitialNavigationUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===i;export const isNavigationUpdate=e=>(e.updateTag===NavigationUpdateTag.ReplaceNavigation||e.updateTag===NavigationUpdateTag.PushNavigation||e.updateTag===NavigationUpdateTag.PopNavigation)&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===i;export const isInitialViewUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===r;export const isInitialToolUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===c;export const isViewUpdate=e=>e.updateTag===NavigationUpdateTag.ActiveateView&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===r;export const isToolUpdate=e=>e.updateTag===NavigationUpdateTag.ActivateTool&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===c;export const isExportUpdate=e=>e.updateTag===NavigationUpdateTag.SetExportState&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===a;export const isInitialSelectionUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===p;export const isSelectUpdate=e=>e.updateTag===NavigationUpdateTag.SelectEntity&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===p;export const isDeselectUpdate=e=>e.updateTag===NavigationUpdateTag.Deselect&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===p;export const isHoverInUpdate=e=>e.updateTag===NavigationUpdateTag.HoverIn&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===n;export const isHoverOutUpdate=e=>e.updateTag===NavigationUpdateTag.HoverOut&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===n;export const isInitialFullscreenUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===o;export const isToggleFullscreenUpdate=e=>e.updateTag===NavigationUpdateTag.ToggleFullscreen&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===o;export const isInitialDebugUpdate=t=>t.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===t.kind&&t.componentInstance.componentType===e;export const isInitialViewportUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===d;export const isSetViewportUpdate=e=>e.updateTag===NavigationUpdateTag.SetViewport&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===d;export const isInitialDragUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===t;export const isDragStartUpdate=e=>e.updateTag===NavigationUpdateTag.DragStart&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===t;export const isDragEndUpdate=e=>e.updateTag===NavigationUpdateTag.DragEnd&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===t;
1
+ import{debugStateComponent as e,dragStateComponent as t,exportStateComponent as a,fullscreenStateComponent as n,hoverStateComponent as o,navigationStateComponent as i,selectionStateComponent as p,toolStateComponent as c,viewStateComponent as d,viewportStateComponent as g}from"../../core/index.js";export const NavigationUpdateTag={Initial:"navigation.initial",ReplaceNavigation:"navigation.replaceNavigation",PushNavigation:"navigation.pushNavigation",PopNavigation:"navigation.popNavigation",ActiveateView:"navigation.activateView",ActivateTool:"navigation.activateTool",SetExportState:"navigation.setExportState",SelectEntity:"navigation.selectEntity",Deselect:"navigation.deselect",ToggleFullscreen:"navigation.toggleFullscreen",SetViewport:"navigation.setViewport",HoverIn:"navigation.hoverIn",HoverOut:"navigation.hoverOut",DragStart:"navigation.dragStart",DragEnd:"navigation.dragEnd"};export const isInitialNavigationUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===i;export const isNavigationUpdate=e=>(e.updateTag===NavigationUpdateTag.ReplaceNavigation||e.updateTag===NavigationUpdateTag.PushNavigation||e.updateTag===NavigationUpdateTag.PopNavigation)&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===i;export const isInitialViewUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===d;export const isInitialToolUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===c;export const isViewUpdate=e=>e.updateTag===NavigationUpdateTag.ActiveateView&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===d;export const isToolUpdate=e=>e.updateTag===NavigationUpdateTag.ActivateTool&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===c;export const isExportUpdate=e=>e.updateTag===NavigationUpdateTag.SetExportState&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===a;export const isInitialSelectionUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===p;export const isSelectUpdate=e=>e.updateTag===NavigationUpdateTag.SelectEntity&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===p;export const isDeselectUpdate=e=>e.updateTag===NavigationUpdateTag.Deselect&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===p;export const isHoverInUpdate=e=>e.updateTag===NavigationUpdateTag.HoverIn&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===o;export const isHoverOutUpdate=e=>e.updateTag===NavigationUpdateTag.HoverOut&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===o;export const isInitialFullscreenUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===n;export const isToggleFullscreenUpdate=e=>e.updateTag===NavigationUpdateTag.ToggleFullscreen&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===n;export const isInitialDebugUpdate=t=>t.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===t.kind&&t.componentInstance.componentType===e;export const isInitialViewportUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===g;export const isSetViewportUpdate=e=>e.updateTag===NavigationUpdateTag.SetViewport&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===g;export const isInitialDragUpdate=e=>e.updateTag===NavigationUpdateTag.Initial&&"createEphemeralRecord"===e.kind&&e.componentInstance.componentType===t;export const isDragStartUpdate=e=>e.updateTag===NavigationUpdateTag.DragStart&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===t;export const isDragEndUpdate=e=>e.updateTag===NavigationUpdateTag.DragEnd&&"modifyEphemeralRecord"===e.kind&&e.componentInstance.componentType===t;
@@ -1,4 +1,4 @@
1
- import { type $DomainEntity, type DomainEntity } from '../../core/model.js';
1
+ import { type $DomainEntity, type DomainEntity } from '../../core/index.js';
2
2
  import type { DomainContextSystems } from '../domain-context-systems.js';
3
3
  import type { UpdateTransformer } from '../store-system/store-system.js';
4
4
  /**
@@ -1 +1 @@
1
- import{domainEntityTypeFromId as t,isDomainEntityId as e}from"../../core/model.js";import{isDeselectUpdate as a,isNavigationUpdate as n,isSelectUpdate as i}from"./navigation-updates.js";export const createResetSelectionOnNavigationTransformer=(t,e)=>a=>a.flatMap(a=>n(a)&&t.includes(a.writableState.activeState)?[a,e.navigationSystem.getDeselectUpdate()]:[a]);export const createNavigationOnSelectionTransformer=(e,a,n)=>o=>o.flatMap(o=>i(o)&&t(o.writableState.selectedEntityId)===e?[o,n.navigationSystem.getNavigationUpdate(a)]:[o]);export const createNavigationOnSelectionChangeTransformer=(e,a,n,o)=>(r,s)=>r.flatMap(r=>{if(!i(r))return[r];let c=t(o.navigationSystem.getActiveSelectionState(s)),l=t(r.writableState.selectedEntityId);return c===e&&l===a?[r,o.navigationSystem.getNavigationUpdate(n)]:[r]});export const createNavigationOnDeselectTransformer=(t,e)=>n=>n.flatMap(n=>a(n)?[n,e.navigationSystem.getNavigationUpdate(t)]:[n]);export const createSelectParentOnDeselectionTransformer=t=>(n,i)=>{let o=t.navigationSystem.getActiveSelectionState(i);return n.flatMap(n=>{if(a(n)&&e(o)){let e=t.compositionProjections.getTree(i).map.get(o);if(!e)throw Error(`Can not fallback to parent selected entity, entity with id ${o} not found in the composition tree. The state is invalid!`);return e.parent?[n,t.navigationSystem.getSelectUpdate(e.parent.id)]:[n]}return[n]})};
1
+ import{domainEntityTypeFromId as t,isDomainEntityId as e}from"../../core/index.js";import{isDeselectUpdate as a,isNavigationUpdate as n,isSelectUpdate as i}from"./navigation-updates.js";export const createResetSelectionOnNavigationTransformer=(t,e)=>a=>a.flatMap(a=>n(a)&&t.includes(a.writableState.activeState)?[a,e.navigationSystem.getDeselectUpdate()]:[a]);export const createNavigationOnSelectionTransformer=(e,a,n)=>o=>o.flatMap(o=>i(o)&&t(o.writableState.selectedEntityId)===e?[o,n.navigationSystem.getNavigationUpdate(a)]:[o]);export const createNavigationOnSelectionChangeTransformer=(e,a,n,o)=>(r,s)=>r.flatMap(r=>{if(!i(r))return[r];let c=t(o.navigationSystem.getActiveSelectionState(s)),l=t(r.writableState.selectedEntityId);return c===e&&l===a?[r,o.navigationSystem.getNavigationUpdate(n)]:[r]});export const createNavigationOnDeselectTransformer=(t,e)=>n=>n.flatMap(n=>a(n)?[n,e.navigationSystem.getNavigationUpdate(t)]:[n]);export const createSelectParentOnDeselectionTransformer=t=>(n,i)=>{let o=t.navigationSystem.getActiveSelectionState(i);return n.flatMap(n=>{if(a(n)&&e(o)){let e=t.compositionProjections.getTree(i).map.get(o);if(!e)throw Error(`Can not fallback to parent selected entity, entity with id ${o} not found in the composition tree. The state is invalid!`);return e.parent?[n,t.navigationSystem.getSelectUpdate(e.parent.id)]:[n]}return[n]})};
@@ -1,7 +1,5 @@
1
- import { type DomainEntityCreation, type DomainEntityReplacement, type StateUpdate } from '../../components/updates.js';
2
- import { type DomainEntity, type DomainEntityId, type DomainState } from '../../core/index.js';
1
+ import { type DomainEntity, type DomainEntityCreation, type DomainEntityId, type DomainEntityReplacement, type DomainState, type EntityRecipe, type StateUpdate } from '../../core/index.js';
3
2
  import type { DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
4
- import type { EntityRecipe } from './recipes.js';
5
3
  export declare const CreateRecipeUpdateTag = "createRecipe";
6
4
  export type IsCreateRecipeUpdate<ENTITIES extends DomainEntity<string>> = <TYPE extends ENTITIES['type']>(update: StateUpdate<ENTITIES, ENTITIES>, types: readonly TYPE[]) => update is DomainEntityCreation<Extract<ENTITIES, {
7
5
  type: TYPE;
@@ -1 +1 @@
1
- import{systemUpdateFactory as e}from"../../components/updates.js";import{domainEntityTypeFromId as t,isDomainEntityId as n}from"../../core/index.js";import{composedOfComponent as i}from"../../relations/composed-of.js";import{referenceComponent as o}from"../../relations/reference-component.js";import{getIdSequence as a}from"../store-system/next-domain-entity-id.js";export const CreateRecipeUpdateTag="createRecipe";export const isCreateEntityUpdate=(e,n)=>"createDomainEntity"===e.kind&&e.updateTag===CreateRecipeUpdateTag&&n.includes(t(e.entityId));export const ReplaceRecipeUpdateTag="replaceRecipe";export const isReplaceEntityUpdate=(e,i)=>"replaceDomainEntity"===e.kind&&e.updateTag===ReplaceRecipeUpdateTag&&n(e.entityId)&&i.includes(t(e.entityId));export class RecipeCookerSystem{_context;constructor(e){this._context=e}_getFragmentComponents=(e,t)=>this._context.selectors.getComponentReader().readManyComponents({componentTypes:[t]},{rootEntityId:"Root-1",rootEntityType:"Root",entities:e,ephemeralRecords:[]});cookRecipes=(e,n)=>{let p=new Map,r=a(n.entities,[]);for(let t of e){let e=r.nextId(t.type);p.set(t.id,e)}let c=this._getFragmentComponents(e,o),s=e.map(e=>{let n={...e,id:p.get(e.id)};return c.filter(t=>t.componentInstance.entityId===e.id).reduce((n,i)=>{let o=this._context.selectors.getComponentReaderIndexes().opticMap.get(t(e.id))?.get(i.componentInstance.componentType)?.get(i.componentInstance.instanceName);if(o?.kind!=="simple")throw Error("References can only be simple optics!");return{...n,...o?.write({referencedEntityIds:i.state.referencedEntityIds.map(t=>t===e.id?t:p.get(t)??t)})}},n)}),d=this._getFragmentComponents(s,i);return s.map(e=>{let t=d.find(t=>t.state.childEntityIds.includes(e.id));return{entity:e,parentId:t?.componentInstance.entityId}})};prepareCreateUpdates=(t,n,i,o)=>this.cookRecipes(t,n).map(t=>t.parentId?e.DomainEntityCreation({entity:t.entity,collection:void 0,updateTag:CreateRecipeUpdateTag,parentId:t.parentId}):e.DomainEntityCreation({entity:t.entity,collection:o,updateTag:CreateRecipeUpdateTag,parentId:i}));prepareReplaceUpdates=(t,n,i,o)=>{let a=this.cookRecipes(t,n),p=a.filter(e=>!e.parentId);if(!p[0]||p.length>1)throw Error("Can not prepare ReplaceEntityRecipes, root entity not found in the cooked recipes. Please, make sure that defined recipes have always a single root entity.");return a.map(t=>t.parentId?e.DomainEntityCreation({entity:t.entity,collection:void 0,updateTag:ReplaceRecipeUpdateTag,parentId:t.parentId}):e.DomainEntityReplacement({entityId:i,replacementEntity:t.entity,updateTag:ReplaceRecipeUpdateTag,keepChildren:o??!1}))}}
1
+ import{composedOfComponent as e,domainEntityTypeFromId as t,isDomainEntityId as n,referenceComponent as i,systemUpdateFactory as a}from"../../core/index.js";import{getIdSequence as o}from"../store-system/next-domain-entity-id.js";export const CreateRecipeUpdateTag="createRecipe";export const isCreateEntityUpdate=(e,n)=>"createDomainEntity"===e.kind&&e.updateTag===CreateRecipeUpdateTag&&n.includes(t(e.entityId));export const ReplaceRecipeUpdateTag="replaceRecipe";export const isReplaceEntityUpdate=(e,i)=>"replaceDomainEntity"===e.kind&&e.updateTag===ReplaceRecipeUpdateTag&&n(e.entityId)&&i.includes(t(e.entityId));export class RecipeCookerSystem{_context;constructor(e){this._context=e}_getFragmentComponents=(e,t)=>this._context.selectors.getComponentReader().readManyComponents({componentTypes:[t]},{rootEntityId:"Root-1",rootEntityType:"Root",entities:e,ephemeralRecords:[]});cookRecipes=(n,a)=>{let p=new Map,r=o(a.entities,[]);for(let e of n){let t=r.nextId(e.type);p.set(e.id,t)}let c=this._getFragmentComponents(n,i),d=n.map(e=>{let n={...e,id:p.get(e.id)};return c.filter(t=>t.componentInstance.entityId===e.id).reduce((n,i)=>{let a=this._context.selectors.getComponentReaderIndexes().opticMap.get(t(e.id))?.get(i.componentInstance.componentType)?.get(i.componentInstance.instanceName);if(a?.kind!=="simple")throw Error("References can only be simple optics!");return{...n,...a?.write({referencedEntityIds:i.state.referencedEntityIds.map(t=>t===e.id?t:p.get(t)??t)})}},n)}),s=this._getFragmentComponents(d,e);return d.map(e=>{let t=s.find(t=>t.state.childEntityIds.includes(e.id));return{entity:e,parentId:t?.componentInstance.entityId}})};prepareCreateUpdates=(e,t,n,i)=>this.cookRecipes(e,t).map(e=>e.parentId?a.DomainEntityCreation({entity:e.entity,collection:void 0,updateTag:CreateRecipeUpdateTag,parentId:e.parentId}):a.DomainEntityCreation({entity:e.entity,collection:i,updateTag:CreateRecipeUpdateTag,parentId:n}));prepareReplaceUpdates=(e,t,n,i)=>{let o=this.cookRecipes(e,t),p=o.filter(e=>!e.parentId);if(!p[0]||p.length>1)throw Error("Can not prepare ReplaceEntityRecipes, root entity not found in the cooked recipes. Please, make sure that defined recipes have always a single root entity.");return o.map(e=>e.parentId?a.DomainEntityCreation({entity:e.entity,collection:void 0,updateTag:ReplaceRecipeUpdateTag,parentId:e.parentId}):a.DomainEntityReplacement({entityId:n,replacementEntity:e.entity,updateTag:ReplaceRecipeUpdateTag,keepChildren:i??!1}))}}
@@ -1,4 +1,4 @@
1
- import { type DomainEntity } from '../../core/model.js';
1
+ import { type DomainEntity } from '../../core/index.js';
2
2
  import type { CompositionProjections } from '../../projections/composition-projections.js';
3
3
  import type { IncrementalUpdateTransformer } from '../store-system/store-system.js';
4
4
  /**
@@ -1 +1 @@
1
- import{systemUpdateFactory as e}from"../../components/updates.js";import{isVirtualEntityId as t}from"../../core/model.js";let n=e=>"deleteEntity"===e.kind||"replaceDomainEntity"===e.kind&&!e.keepChildren;export const createCascadeDeletesTransformer=i=>(o,r,d,l,a=[])=>{let s=o.filter(n);if(0===s.length)return o;let{map:f}=i.getTree(r),p=[],c=new Set([...s,...a.filter(n)].map(e=>e.entityId));for(let n of s){if(t(n.entityId))continue;let i=f.get(n.entityId);if(i)for(let t of i.descendants())c.has(t.id)||(p.push(e.EntityDeletion({entityId:t.id,updateTag:"composition.cascadeDelete"})),c.add(t.id))}return p.length>0?[...o,...p]:o};
1
+ import{isVirtualEntityId as e,systemUpdateFactory as t}from"../../core/index.js";let i=e=>"deleteEntity"===e.kind||"replaceDomainEntity"===e.kind&&!e.keepChildren;export const createCascadeDeletesTransformer=n=>(d,r,l,o,a=[])=>{let f=d.filter(i);if(0===f.length)return d;let{map:s}=n.getTree(r),c=[],p=new Set([...f,...a.filter(i)].map(e=>e.entityId));for(let i of f){if(e(i.entityId))continue;let n=s.get(i.entityId);if(n)for(let e of n.descendants())p.has(e.id)||(c.push(t.EntityDeletion({entityId:e.id,updateTag:"composition.cascadeDelete"})),p.add(e.id))}return c.length>0?[...d,...c]:d};
@@ -1,4 +1,4 @@
1
- import type { DomainEntity } from '../../core/model.js';
1
+ import { type DomainEntity } from '../../core/index.js';
2
2
  import type { ComponentReader } from '../../domain-runtime/domain-context/index.js';
3
3
  import type { IncrementalUpdateTransformer } from '../store-system/store-system.js';
4
4
  /**
@@ -1 +1 @@
1
- import{isNonNullish as e}from"@salsita-ai/common/utils";import{systemUpdateFactory as t}from"../../components/updates.js";import{referenceComponent as n}from"../../relations/reference-component.js";export const createCascadeRefPruningTransformer=r=>(i,o,a,s,c=[])=>{let m=new Set([...i,...c].filter(e=>"deleteEntity"===e.kind).map(e=>e.entityId));if(0===m.size)return i;let d=new Set([...i,...c].filter(e=>"deleteEntity"===e.kind||"replaceDomainEntity"===e.kind).map(e=>e.entityId)),p=r.readManyComponents({componentTypes:[n]},o).map(e=>{if(d.has(e.componentInstance.entityId))return;let n=e.state.referencedEntityIds.filter(e=>!m.has(e));if(n.length<e.state.referencedEntityIds.length)return t.ComponentModification({componentInstance:e.componentInstance,updateTag:"refs.cascadePruning",writableState:{referencedEntityIds:n}})}).filter(e);return p.length>0?[...i,...p]:i};
1
+ import{isNonNullish as e}from"@salsita-ai/common/utils";import{referenceComponent as t,systemUpdateFactory as n}from"../../core/index.js";export const createCascadeRefPruningTransformer=r=>(i,a,o,s,d=[])=>{let c=new Set([...i,...d].filter(e=>"deleteEntity"===e.kind).map(e=>e.entityId));if(0===c.size)return i;let m=new Set([...i,...d].filter(e=>"deleteEntity"===e.kind||"replaceDomainEntity"===e.kind).map(e=>e.entityId)),f=r.readManyComponents({componentTypes:[t]},a).map(e=>{if(m.has(e.componentInstance.entityId))return;let t=e.state.referencedEntityIds.filter(e=>!c.has(e));if(t.length<e.state.referencedEntityIds.length)return n.ComponentModification({componentInstance:e.componentInstance,updateTag:"refs.cascadePruning",writableState:{referencedEntityIds:t}})}).filter(e);return f.length>0?[...i,...f]:i};
@@ -1,4 +1,4 @@
1
- import type { DomainEntity } from '../../core/model.js';
1
+ import { type DomainEntity } from '../../core/index.js';
2
2
  import type { ComponentReader } from '../../domain-runtime/domain-context/index.js';
3
3
  import type { IncrementalUpdateTransformer } from '../store-system/store-system.js';
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{systemUpdateFactory as e}from"../../components/updates.js";import{referenceComponent as t}from"../../relations/reference-component.js";export const createCreateEntityRefsTransformer=n=>(o,r)=>{let i=o.filter(e=>"createDomainEntity"===e.kind);if(0===i.length)return o;let a=i.flatMap(o=>{if(void 0===o.collection)return[];let i=n.readManyComponents({componentTypes:[t],entityIds:[o.parentId],instanceNames:[o.collection]},r);if(0===i.length)throw Error(`Newly created entity ${o.entityId} should be added to collection ${o.collection} on parent entity ${o.parentId}, but no such collection can be found.
2
- Check whether the collection name is correctly specified in the createDomainEntity update.`);return i.map(t=>e.ComponentModification({componentInstance:t.componentInstance,updateTag:"refs.update",writableState:{referencedEntityIds:t.state.referencedEntityIds.concat(o.entityId)}}))}).reduce((t,n)=>{let o=t[n.entityId.toString()];if(o){let r=e.ComponentModification({componentInstance:o.componentInstance,updateTag:o.updateTag,writableState:{referencedEntityIds:Array.from(new Set([...o.writableState.referencedEntityIds,...n.writableState.referencedEntityIds]))}});t[n.entityId.toString()]=r}else t[n.entityId.toString()]=n;return t},{});return o.concat(Object.values(a))};
1
+ import{referenceComponent as e,systemUpdateFactory as t}from"../../core/index.js";export const createCreateEntityRefsTransformer=n=>(r,o)=>{let i=r.filter(e=>"createDomainEntity"===e.kind);if(0===i.length)return r;let a=i.flatMap(r=>{if(void 0===r.collection)return[];let i=n.readManyComponents({componentTypes:[e],entityIds:[r.parentId],instanceNames:[r.collection]},o);if(0===i.length)throw Error(`Newly created entity ${r.entityId} should be added to collection ${r.collection} on parent entity ${r.parentId}, but no such collection can be found.
2
+ Check whether the collection name is correctly specified in the createDomainEntity update.`);return i.map(e=>t.ComponentModification({componentInstance:e.componentInstance,updateTag:"refs.update",writableState:{referencedEntityIds:e.state.referencedEntityIds.concat(r.entityId)}}))}).reduce((e,n)=>{let r=e[n.entityId.toString()];if(r){let o=t.ComponentModification({componentInstance:r.componentInstance,updateTag:r.updateTag,writableState:{referencedEntityIds:Array.from(new Set([...r.writableState.referencedEntityIds,...n.writableState.referencedEntityIds]))}});e[n.entityId.toString()]=o}else e[n.entityId.toString()]=n;return e},{});return r.concat(Object.values(a))};
@@ -1,4 +1,4 @@
1
- import type { DomainEntity } from '../../core/model.js';
1
+ import { type DomainEntity } from '../../core/index.js';
2
2
  import type { ComponentReader } from '../../domain-runtime/domain-context/index.js';
3
3
  import type { IncrementalUpdateTransformer } from '../store-system/store-system.js';
4
4
  /**
@@ -1 +1 @@
1
- import{isNonNullish as e}from"@salsita-ai/common/utils";import{systemUpdateFactory as t}from"../../components/updates.js";import{referenceComponent as n}from"../../relations/reference-component.js";export const createRefReplaceTransformer=o=>(i,r,a,p,c=[])=>{let m=new Map(i.filter(e=>"replaceDomainEntity"===e.kind).map(e=>[e.entityId,e.replacementEntity.id]));if(0===m.size)return i;let s=new Set([...i,...c].filter(e=>"deleteEntity"===e.kind||"replaceDomainEntity"===e.kind).map(e=>e.entityId)),d=o.readManyComponents({componentTypes:[n]},r).map(e=>{if(s.has(e.componentInstance.entityId)&&!m.has(e.componentInstance.entityId))return;let n=!1,o=e.state.referencedEntityIds.map(e=>{let t=m.get(e);return void 0!==t?(n=!0,t):e});if(n)return t.ComponentModification({componentInstance:{...e.componentInstance,entityId:m.get(e.componentInstance.entityId)??e.componentInstance.entityId},updateTag:"refs.replace",writableState:{referencedEntityIds:o}})}).filter(e);return d.length>0?[...i,...d]:i};
1
+ import{isNonNullish as e}from"@salsita-ai/common/utils";import{referenceComponent as t,systemUpdateFactory as n}from"../../core/index.js";export const createRefReplaceTransformer=i=>(r,a,o,c,p=[])=>{let m=new Map(r.filter(e=>"replaceDomainEntity"===e.kind).map(e=>[e.entityId,e.replacementEntity.id]));if(0===m.size)return r;let d=new Set([...r,...p].filter(e=>"deleteEntity"===e.kind||"replaceDomainEntity"===e.kind).map(e=>e.entityId)),s=i.readManyComponents({componentTypes:[t]},a).map(e=>{if(d.has(e.componentInstance.entityId)&&!m.has(e.componentInstance.entityId))return;let t=!1,i=e.state.referencedEntityIds.map(e=>{let n=m.get(e);return void 0!==n?(t=!0,n):e});if(t)return n.ComponentModification({componentInstance:{...e.componentInstance,entityId:m.get(e.componentInstance.entityId)??e.componentInstance.entityId},updateTag:"refs.replace",writableState:{referencedEntityIds:i}})}).filter(e);return s.length>0?[...r,...s]:r};
@@ -1,4 +1,2 @@
1
- import type { DataUpdate } from '../../components/updates.js';
2
- import type { DomainEntity } from '../../core/model.js';
3
- import type { DomainState } from '../../core/state.js';
1
+ import { type DataUpdate, type DomainEntity, type DomainState } from '../../core/index.js';
4
2
  export declare const applyUpdates: <ENTITIES extends DomainEntity<string>>(updates: ReadonlyArray<DataUpdate<ENTITIES, ENTITIES>>, state: DomainState<ENTITIES>) => DomainState<ENTITIES>;
@@ -1 +1 @@
1
- import{match as e}from"ts-pattern";import{isEqualComponentInstance as t}from"../../core/component.js";import{isVirtualEntityId as n}from"../../core/model.js";export const applyUpdates=(o,i)=>o.reduce((o,r)=>e(r).with({kind:"createDomainEntity"},e=>({...o,entities:[...o.entities,e.entity]})).with({kind:"deleteEntity"},e=>{let t=o.entities;if(!n(e.entityId)&&(t=o.entities.filter(t=>t.id!==e.entityId)).length===o.entities.length)throw Error(`No-op: Cannot remove domain entity #${String(e.entityId)}, because it does not exist`);let i=o.ephemeralRecords.filter(t=>t.componentInstance.entityId!==e.entityId);if(n(e.entityId)&&i.length===o.ephemeralRecords.length)throw Error(`No-op: Cannot remove virtual entity #${e.entityId}, because it does not exist`);return{...o,entities:t,ephemeralRecords:i}}).with({kind:"modifyDomainEntity"},e=>{let t=!1,n=o.entities.map(n=>n.id===e.entityId?(t=!0,{...n,...e.stateDelta}):n);if(!t)throw Error(`No-op: Cannot modify domain entity #${String(e.entityId)}, because it does not exist`);return{...o,entities:n}}).with({kind:"replaceDomainEntity"},e=>{let t=!1,n=o.entities.map(n=>n.id===e.entityId?(t=!0,e.replacementEntity):n);if(!t)throw Error(`No-op: Cannot replace entity #${String(e.entityId)} as it was not found in the domain state`);let r=o.ephemeralRecords.filter(t=>t.componentInstance.entityId!==e.entityId),a=e.entityId===i.rootEntityId?{rootEntityId:e.replacementEntity.id,rootEntityType:e.replacementEntity.type}:void 0;return{...o,...a,ephemeralRecords:r,entities:n}}).with({kind:"modifyEphemeralRecord"},e=>{let n=!1,i=o.ephemeralRecords.map(o=>t(o.componentInstance,e.componentInstance)?(n=!0,{...o,state:{...o.state,...e.writableState}}):o);if(!n)throw Error(`No-op: Cannot modify ephemeral record #${e.entityId} for component ${e.componentInstance.componentType.name}#${e.componentInstance.instanceName}, because it does not exist`);return{...o,ephemeralRecords:i}}).with({kind:"createEphemeralRecord"},e=>{if(o.ephemeralRecords.find(n=>t(n.componentInstance,e.componentInstance)))throw Error(`No-op: Cannot create ephemeral record #${e.entityId} for component ${e.componentInstance.componentType.name}#${e.componentInstance.instanceName}, because it already exists`);let n=[...o.ephemeralRecords,{entityId:e.entityId,updateTag:e.updateTag,state:e.initialState,componentInstance:e.componentInstance}];return{...o,ephemeralRecords:n}}).with({kind:"deleteEphemeralRecord"},e=>{let n=o.ephemeralRecords.filter(n=>!t(n.componentInstance,e.componentInstance));if(n.length===o.ephemeralRecords.length)throw Error(`No-op: Cannot delete ephemeral record #${e.entityId} for component ${e.componentInstance.componentType.name}#${e.componentInstance.instanceName}, because it does not exist`);return{...o,ephemeralRecords:n}}).exhaustive(),i);
1
+ import{match as e}from"ts-pattern";import{isEqualComponentInstance as t,isVirtualEntityId as n}from"../../core/index.js";export const applyUpdates=(o,i)=>o.reduce((o,r)=>e(r).with({kind:"createDomainEntity"},e=>({...o,entities:[...o.entities,e.entity]})).with({kind:"deleteEntity"},e=>{let t=o.entities;if(!n(e.entityId)&&(t=o.entities.filter(t=>t.id!==e.entityId)).length===o.entities.length)throw Error(`No-op: Cannot remove domain entity #${String(e.entityId)}, because it does not exist`);let i=o.ephemeralRecords.filter(t=>t.componentInstance.entityId!==e.entityId);if(n(e.entityId)&&i.length===o.ephemeralRecords.length)throw Error(`No-op: Cannot remove virtual entity #${e.entityId}, because it does not exist`);return{...o,entities:t,ephemeralRecords:i}}).with({kind:"modifyDomainEntity"},e=>{let t=!1,n=o.entities.map(n=>n.id===e.entityId?(t=!0,{...n,...e.stateDelta}):n);if(!t)throw Error(`No-op: Cannot modify domain entity #${String(e.entityId)}, because it does not exist`);return{...o,entities:n}}).with({kind:"replaceDomainEntity"},e=>{let t=!1,n=o.entities.map(n=>n.id===e.entityId?(t=!0,e.replacementEntity):n);if(!t)throw Error(`No-op: Cannot replace entity #${String(e.entityId)} as it was not found in the domain state`);let r=o.ephemeralRecords.filter(t=>t.componentInstance.entityId!==e.entityId),a=e.entityId===i.rootEntityId?{rootEntityId:e.replacementEntity.id,rootEntityType:e.replacementEntity.type}:void 0;return{...o,...a,ephemeralRecords:r,entities:n}}).with({kind:"modifyEphemeralRecord"},e=>{let n=!1,i=o.ephemeralRecords.map(o=>t(o.componentInstance,e.componentInstance)?(n=!0,{...o,state:{...o.state,...e.writableState}}):o);if(!n)throw Error(`No-op: Cannot modify ephemeral record #${e.entityId} for component ${e.componentInstance.componentType.name}#${e.componentInstance.instanceName}, because it does not exist`);return{...o,ephemeralRecords:i}}).with({kind:"createEphemeralRecord"},e=>{if(o.ephemeralRecords.find(n=>t(n.componentInstance,e.componentInstance)))throw Error(`No-op: Cannot create ephemeral record #${e.entityId} for component ${e.componentInstance.componentType.name}#${e.componentInstance.instanceName}, because it already exists`);let n=[...o.ephemeralRecords,{entityId:e.entityId,updateTag:e.updateTag,state:e.initialState,componentInstance:e.componentInstance}];return{...o,ephemeralRecords:n}}).with({kind:"deleteEphemeralRecord"},e=>{let n=o.ephemeralRecords.filter(n=>!t(n.componentInstance,e.componentInstance));if(n.length===o.ephemeralRecords.length)throw Error(`No-op: Cannot delete ephemeral record #${e.entityId} for component ${e.componentInstance.componentType.name}#${e.componentInstance.instanceName}, because it does not exist`);return{...o,ephemeralRecords:n}}).exhaustive(),i);
@@ -1,6 +1,4 @@
1
- import type { StateUpdate } from '../../components/updates.js';
2
- import { type DomainEntity, type DomainEntityId } from '../../core/model.js';
3
- import type { DomainState } from '../../core/state.js';
1
+ import { type DomainEntity, type DomainEntityId, type DomainState, type IdSequence, type StateUpdate } from '../../core/index.js';
4
2
  /**
5
3
  * Returns the next available entity id for the given entity type.
6
4
  *
@@ -15,16 +13,6 @@ import type { DomainState } from '../../core/state.js';
15
13
  * @deprecated Use `getIdSequence` instead
16
14
  */
17
15
  export declare const nextDomainEntityId: <ENTITIES extends DomainEntity<string>, TYPE extends ENTITIES['type']>(domainState: DomainState<ENTITIES>, type: TYPE, pendingUpdates: ReadonlyArray<StateUpdate<ENTITIES, ENTITIES>>) => DomainEntityId<TYPE>;
18
- export type IdSequence<ENTITIES extends DomainEntity<string>> = {
19
- /**
20
- * Returns the next available entity ID for the given type.
21
- * This automatically increments the sequence number for the given type, so that the next call will return a new ID.
22
- *
23
- * @param type the entity type
24
- * @returns a new domain entity ID for the given type
25
- */
26
- nextId: <TYPE extends ENTITIES['type']>(type: TYPE) => DomainEntityId<TYPE>;
27
- };
28
16
  /**
29
17
  * Returns an object that manages ID sequences for each entity type.
30
18
  *
@@ -1 +1 @@
1
- import{_unsafeBuildDomainEntityId as e,parseDomainEntityId as t}from"../../core/model.js";export const nextDomainEntityId=(n,i,r)=>{let o=0;for(let e of n.entities){let n=t(e.id);n.type===i&&n.sequenceNumber>o&&(o=n.sequenceNumber)}for(let e of r){let n;if("createDomainEntity"===e.kind&&e.entity.type===i?n=e.entity.id:"replaceDomainEntity"===e.kind&&e.replacementEntity.type===i&&(n=e.replacementEntity.id),void 0!==n){let e=t(n);e.sequenceNumber>o&&(o=e.sequenceNumber)}}return e(i,o+1)};export function getIdSequence(n,i){let r=new Map;return n.forEach(e=>{let n=t(e.id),i=r.get(n.type)??0;r.set(e.type,Math.max(i,n.sequenceNumber))}),i.forEach(e=>{let n;if("createDomainEntity"===e.kind?n=e.entity.id:"replaceDomainEntity"===e.kind&&(n=e.replacementEntity.id),void 0!==n){let e=t(n),i=r.get(e.type)??0;r.set(e.type,Math.max(i,e.sequenceNumber))}}),{nextId:t=>{let n=(r.get(t)??0)+1;return r.set(t,n),e(t,n)}}}
1
+ import{_unsafeBuildDomainEntityId as e,parseDomainEntityId as t}from"../../core/index.js";export const nextDomainEntityId=(n,i,r)=>{let o=0;for(let e of n.entities){let n=t(e.id);n.type===i&&n.sequenceNumber>o&&(o=n.sequenceNumber)}for(let e of r){let n;if("createDomainEntity"===e.kind&&e.entity.type===i?n=e.entity.id:"replaceDomainEntity"===e.kind&&e.replacementEntity.type===i&&(n=e.replacementEntity.id),void 0!==n){let e=t(n);e.sequenceNumber>o&&(o=e.sequenceNumber)}}return e(i,o+1)};export function getIdSequence(n,i){let r=new Map;return n.forEach(e=>{let n=t(e.id),i=r.get(n.type)??0;r.set(e.type,Math.max(i,n.sequenceNumber))}),i.forEach(e=>{let n;if("createDomainEntity"===e.kind?n=e.entity.id:"replaceDomainEntity"===e.kind&&(n=e.replacementEntity.id),void 0!==n){let e=t(n),i=r.get(e.type)??0;r.set(e.type,Math.max(i,e.sequenceNumber))}}),{nextId:t=>{let n=(r.get(t)??0)+1;return r.set(t,n),e(t,n)}}}
@@ -1,5 +1,4 @@
1
- import { type DomainEntityCreation, type EntityDeletion, type StateUpdate } from '../../components/updates.js';
2
- import type { DomainEntity } from '../../core/model.js';
1
+ import { type DomainEntity, type DomainEntityCreation, type EntityDeletion, type StateUpdate } from '../../core/index.js';
3
2
  import { type ProjectedEntitiesComponentSnapshot } from '../../system-components/index.js';
4
3
  export interface ReconciliationUpdate<ENTITY extends DomainEntity<string>, PARENT extends DomainEntity<string>> {
5
4
  readonly dataUpdate: DomainEntityCreation<ENTITY, PARENT> | EntityDeletion<ENTITY>;
@@ -1 +1 @@
1
- import{systemUpdateFactory as e}from"../../components/updates.js";import{getIdSequence as t}from"../store-system/next-domain-entity-id.js";let n=e=>"string"==typeof e.parentId&&"string"==typeof e.instanceName&&"string"==typeof e.key,o=(e,t,n,o)=>`${e}|${t}|${n}|${o}`;export const reconcileProjectedEntities=(a,p,i)=>{let s=new Map;for(let e of p){let t=String(e.componentInstance.entityId),n=e.componentInstance.instanceName;for(let a of e.state.blueprints){let e=o(t,n,a.key,a.type);s.set(e,{type:a.type,defaults:a.defaults,parentId:t,instanceName:n,key:a.key})}}let d=new Map;for(let e of a)if(n(e)){let t=o(e.parentId,e.instanceName,e.key,e.type);d.set(t,e)}let r=[],l=t(a,i);for(let[t,n]of s)if(!d.has(t)){let o=l.nextId(n.type),a={...n.defaults,id:o,type:n.type,parentId:n.parentId,instanceName:n.instanceName,key:n.key};r.push({dataUpdate:e.DomainEntityCreation({entity:a,parentId:n.parentId,updateTag:"projectedEntities.reconcile"}),compoundKey:t})}for(let[t,n]of d)s.has(t)||r.push({dataUpdate:e.EntityDeletion({entityId:n.id,updateTag:"projectedEntities.reconcile"}),compoundKey:t});return r};export const mergeReconciliationsUpdates=(e,t)=>{let n=new Map;for(let t of e)n.set(t.compoundKey,t);for(let e of t){let t=n.get(e.compoundKey);t&&t.dataUpdate.kind!==e.dataUpdate.kind?n.delete(e.compoundKey):n.set(e.compoundKey,e)}return[...n.values()]};
1
+ import{systemUpdateFactory as e}from"../../core/index.js";import{getIdSequence as t}from"../store-system/next-domain-entity-id.js";let n=e=>"string"==typeof e.parentId&&"string"==typeof e.instanceName&&"string"==typeof e.key,o=(e,t,n,o)=>`${e}|${t}|${n}|${o}`;export const reconcileProjectedEntities=(a,p,i)=>{let r=new Map;for(let e of p){let t=String(e.componentInstance.entityId),n=e.componentInstance.instanceName;for(let a of e.state.blueprints){let e=o(t,n,a.key,a.type);r.set(e,{type:a.type,defaults:a.defaults,parentId:t,instanceName:n,key:a.key})}}let d=new Map;for(let e of a)if(n(e)){let t=o(e.parentId,e.instanceName,e.key,e.type);d.set(t,e)}let s=[],l=t(a,i);for(let[t,n]of r)if(!d.has(t)){let o=l.nextId(n.type),a={...n.defaults,id:o,type:n.type,parentId:n.parentId,instanceName:n.instanceName,key:n.key};s.push({dataUpdate:e.DomainEntityCreation({entity:a,parentId:n.parentId,updateTag:"projectedEntities.reconcile"}),compoundKey:t})}for(let[t,n]of d)r.has(t)||s.push({dataUpdate:e.EntityDeletion({entityId:n.id,updateTag:"projectedEntities.reconcile"}),compoundKey:t});return s};export const mergeReconciliationsUpdates=(e,t)=>{let n=new Map;for(let t of e)n.set(t.compoundKey,t);for(let e of t){let t=n.get(e.compoundKey);t&&t.dataUpdate.kind!==e.dataUpdate.kind?n.delete(e.compoundKey):n.set(e.compoundKey,e)}return[...n.values()]};
@@ -1,12 +1,8 @@
1
1
  import { type ObservableWithLastValue } from '@salsita-ai/common/utils';
2
- import { type ComponentModification, type DataUpdate, type DomainEntityModification, type EphemeralRecordModification, type StateUpdate } from '../../components/updates.js';
3
- import { type SystemComponentTypeConstraint } from '../../core/component.js';
4
- import { type $DomainEntity, type DomainEntity } from '../../core/model.js';
5
- import type { DomainState } from '../../core/state.js';
2
+ import { type $DomainEntity, type ComponentModification, type DataUpdate, type DomainEntity, type DomainEntityModification, type DomainState, type EphemeralRecordModification, type StateUpdate, type SystemComponentTypeConstraint, type ViolationTypesOf$Entity } from '../../core/index.js';
6
3
  import type { DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
7
4
  import type { DomainServicesSelectors } from '../../domain-runtime/domain-services/index.js';
8
5
  import type { EnvironmentSelectors } from '../../domain-runtime/environment/index.js';
9
- import type { ViolationTypesOf$Entity } from '../../invariants/violation.js';
10
6
  import type { StateValidationResult } from '../../projections/validation-projections.js';
11
7
  import type { DomainContextSystems } from '../domain-context-systems.js';
12
8
  export type Unregister = () => void;
@@ -1,2 +1,2 @@
1
- import{CompositeKeyMap as e,assertExistence as t,isEqualArray as i}from"@salsita-ai/common/utils";import{dragStateComponent as o}from"../../components/drag-state-component.js";import{hoverStateComponent as r}from"../../components/hover-state-component.js";import{selectionStateComponent as s}from"../../components/selection-state-component.js";import{getComponentSystemFilterState as n}from"../../components/system-component-filter.js";import{systemVirtualEntityId as a}from"../../components/system-virtual-entity.js";import{systemUpdateFactory as d}from"../../components/updates.js";import{isSystemViewportStateComponentSnapshot as m}from"../../components/viewport-state-component.js";import{isEqualComponentInstance as l}from"../../core/component.js";import{domainEntityTypeFromId as c,isVirtualEntityId as p}from"../../core/model.js";import{projectedEntitiesComponent as h}from"../../system-components/index.js";import{cloneEvalCache as f,createEvalCacheToken as v,getEvalCache as g,setEvalCache as u}from"../../utils/eval-cache.js";import{createCascadeDeletesTransformer as y}from"../relation-transformers/cascade-deletes.js";import{createCascadeRefPruningTransformer as S}from"../relation-transformers/cascade-ref-pruning.js";import{applyUpdates as I}from"./apply-updates.js";import{LifecycleStateSlice as _}from"./lifecycle-state-slice.js";import{mergeReconciliationsUpdates as x,reconcileProjectedEntities as T}from"./reconcile-projected-entities.js";let E={uninitializedError:"StoreSystem is not initialized."},k=v({clone:e=>e}),w=class InvalidInitialStateError extends Error{emission;childError;constructor(e,t,i){let o="";"uncaught"===e.validity.severity&&(o=`: ${e.validity.error.message}`),("fatal"===e.validity.severity||"fixable"===e.validity.severity)&&(o=`: ${e.validity.entityViolations.map(e=>{let i=e.violation.message;return null!=i?t(i):e.violation.type}).join(", ")}`),super(`Initial state is not valid! Severity: ${e.validity.severity}, Cause: ${o}`),this.emission=e,this.childError=i,this.name="InvalidInitialStateError"}},b=(e,t)=>{try{return e()}catch(e){throw t(e),e}};export class StoreSystem{_context;stateSlices;get isInitialized(){return this.committed.isInitialized}_onBeforeCommitHooks=[];committed=new _(E);potentiallyInvalid=new _(E);rendered=new _(E);stagedUpdates=void 0;transformToDataUpdates=(e,t)=>{let i=!1,o=e.map(e=>"modifyComponent"===e.kind?(i=!0,this.componentModificationToDataUpdate(e,t)):e);return i?o:e};createInitialTransformPipe=()=>[{transformer:this.transformToDataUpdates,priority:1/0,registrationToken:{},name:"TransformToDataUpdates"}];transformPipe=this.createInitialTransformPipe();_cascadeDeletesTransformer=(...e)=>(this._cascadeDeletesTransformerMemo??=y(this._context.selectors.getCompositionProjections()))(...e);_cascadeDeletesTransformerMemo;_refPruningTransformer=(...e)=>(this._refPruningTransformerMemo??=S(this._context.selectors.getComponentReader()))(...e);_refPruningTransformerMemo;_deselectOnDeleteTransformer=(e,t)=>{let i=new Set(e.filter(e=>"deleteEntity"===e.kind).map(e=>e.entityId));if(0===i.size)return e;let o=n(t).selectedEntityId;return o&&i.has(o)?[...e,d.EphemeralRecordModification({componentInstance:{entityId:a,componentType:s},updateTag:"AutoDeselectRemovedProjectedEntity",writableState:{selectedEntityId:t.rootEntityId}})]:e};constructor(e){this._context=e,this.stateSlices={committed:this.committed.observable,rendered:this.rendered.observable,potentiallyInvalid:this.potentiallyInvalid.observable}}_validateState=e=>this._context.selectors.getValidationProjections().validateState(e);initialize=()=>{let e=this._context.selectors.getInitialDomainState();this.stagedUpdates=void 0;let t=this._validateState(e),i={kind:"reset",state:e,validity:t,tag:void 0,transformationLog:void 0},o=i;if(!o.validity.valid&&"fatal"===o.validity.severity||"fixable"===o.validity.severity){this._context.domainServicesSelectors.getLogger().debug("Trying to fix initial emission:",o);let e=o.state,{transformedUpdates:t,transformationLog:i}=this.applyTransformers([],e,"committed"),r=I(this.transformToDataUpdates(t,e),e);f(e,r),o={kind:"reset",state:r,validity:this._validateState(r),tag:"fixed",transformationLog:i}}if(!o.validity.valid){if(this._context.domainServicesSelectors.getLogger().error("Invalid initial emission:",{initialEmission:i,fixedEmission:o}),"uncaught"===o.validity.severity)throw new w(o,this._context.domainServicesSelectors.getResolveLocalizable(),o.validity.error??void 0);throw new w(o,this._context.domainServicesSelectors.getResolveLocalizable())}this.committed.next(o),this.rendered.next(o),this.potentiallyInvalid.next(o)};registerTransformer(e,i,o){let r={};return((e,i,o)=>{let r=0;for(;r<e.length&&0>=o(t(e[r]),i);)r++;e.splice(r,0,i)})(this.transformPipe,{registrationToken:r,transformer:i,priority:e,name:o},(e,t)=>e.priority===t.priority?0:e.priority<t.priority?-1:1),()=>{let e=this.transformPipe.findIndex(e=>e.registrationToken===r);-1!==e&&this.transformPipe.splice(e,1)}}onBeforeCommit(e){return this._onBeforeCommitHooks.push(e),()=>{this._onBeforeCommitHooks=this._onBeforeCommitHooks.filter(t=>t!==e)}}componentModificationToDataUpdate=(e,t)=>{let i=e.entityId;if(!p(i)){let t=this._context.selectors.getComponentReaderIndexes().opticMap.get(c(i))?.get(e.componentInstance.componentType)?.get(e.componentInstance.instanceName);if(t?.kind==="simple"){let o=t.write(e.writableState);return{kind:"modifyDomainEntity",entityId:i,updateTag:e.updateTag,stateDelta:o,hint:e.hint,origin:e}}}let o=t.ephemeralRecords.find(t=>l(t.componentInstance,e.componentInstance));if(o)return{kind:"modifyEphemeralRecord",entityId:e.entityId,updateTag:e.updateTag,componentInstance:o.componentInstance,writableState:e.writableState,hint:e.hint};throw Error(`Component ${e.componentInstance.componentType.name} is not attached on entity #${e.entityId}`)};getNewState=(e,t)=>{let i=I(this.transformToDataUpdates(e,t),t);return f(this.rendered.isInitialized?this.rendered.value.state:t,i),i};applyTransformers(e,t,i){let o=this._context.environmentSelectors.getEnvironmentIsDev()?[]:void 0;return{transformedUpdates:this.transformPipe.reduce((e,{transformer:r,name:s})=>{let n,a=o?[]:void 0,d=a?(e,t,i)=>{n=e,a.push({phase:e,message:t,data:i})}:void 0,m=b(()=>r(e,t,i,d),r=>{this._context.domainServicesSelectors.getLogger().error("Error while applying transformer!",{name:s,updates:e,previousState:t,kind:i,transformationLog:o},r instanceof Error?r:Error(String(r)))});return a&&o&&o.push({name:s,status:n??(m===e?"no-event":"apply"),entries:a,updatesIn:e,updatesOut:m}),m},e),transformationLog:o}}_updateProjectedEntities(e,t,o){if(!e.validity.valid)return e;let r=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[h]},e.state),s=g(e.previousState,k);if(s&&i(s,r))return e;let n=0,a=e,d=[];for(;a.validity.valid;){n++;let i=T(a.state.entities,r,t);if(0===i.length)break;if(n>10)throw Error(`Maximum number of reconciliation rounds reached: 10. Projected entities seem to be recursively depending on themselves.
2
- If expressions populating 'projectedEntities' components rely on other projected entities, make sure that the dependencies do not have cycles.`);let s=(d=x(d,i)).map(e=>e.dataUpdate),m=this._cascadeDeletesTransformer(s,e.previousState,o,void 0,t),l=this._refPruningTransformer(m,e.previousState,o,void 0,t),c=this._deselectOnDeleteTransformer(l,e.previousState,o,void 0,t);if(!(a=this.prepareStateEmissionWithoutTransformation([...t,...c],e.previousState,o)).validity.valid)return this._context.domainServicesSelectors.getLogger().error("Reconciliation of projected entities led to an invalid state! Reconciliation skipped.",{emission:a}),e;r=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[h]},a.state)}return u(a.state,k,r),a}prepareStateEmission(e,t,i){let{transformedUpdates:o,transformationLog:r}=this.applyTransformers(e,t,i),s=this.prepareStateEmissionWithoutTransformation(o,t,i);return{...this._updateProjectedEntities(s,o,i),transformationLog:r}}emissionCache=new e([Map,WeakMap,WeakMap,WeakMap,WeakMap]);getEmissionCacheKey=(e,t,i)=>[e,t,i,this._context.selectors.getStoreRuntimeDependencies(),this._context.selectors.getExpressionContext()];prepareStateEmissionWithoutTransformation=(e,t,i)=>{let o=this.getEmissionCacheKey(i,t,e),r=this.emissionCache.get(o);if(r)return r;let s=b(()=>this.transformToDataUpdates(e,t),o=>{this._context.domainServicesSelectors.getLogger().error("Error while transforming updates to data updates!",{updates:e,previousState:t,kind:i},o instanceof Error?o:Error(String(o)))}),n=b(()=>I(s,t),o=>{this._context.domainServicesSelectors.getLogger().error("Error while applying updates!",{updates:e,previousState:t,kind:i,dataUpdates:s},o instanceof Error?o:Error(String(o)))});f(this.rendered.isInitialized?this.rendered.value.state:t,n);let a=this._validateState(n);"uncaught"===a.severity&&this._context.domainServicesSelectors.getLogger().error("There was an uncaught validation error:",{updates:e,dataUpdates:s,previousState:t,newState:n,kind:i},a.error);let d={kind:i,previousState:t,state:n,updates:s,validity:a,transformationLog:void 0};return this.emissionCache.set(o,d),d};stage(e,t=!0){this.stagedUpdates=e;let i=this.prepareStateEmission(e,this.committed.value.state,"staged");return t&&this.emit(i),i}emit(e){"staged"===e.kind?e.validity.valid&&this.rendered.nextIfDifferent(e):(e.validity.valid?(this.committed.nextIfDifferent(e),this.rendered.nextIfDifferent(e)):this.rendered.nextIfDifferent(this.committed.value),this.potentiallyInvalid.nextIfDifferent(e))}commit=()=>{if(void 0===this.stagedUpdates)return;let e=this.prepareStateEmission(this.stagedUpdates,this.committed.value.state,"committed"),t=()=>{if(this._onBeforeCommitHooks.some(i=>!1===i(e,t))){this._context.domainServicesSelectors.getLogger().debug("Commit was canceled by one of the onBeforeCommit hooks! Resetting rendered state.",e),this.rollback();return}this.stagedUpdates=void 0,this._context.domainServicesSelectors.getLogger().debug("commit",e),this.emit(e)};t()};commitPrepared=e=>{if("committed"!==e.kind||!e.validity.valid)throw Error(`commitPrepared received a ${e.validity.valid?e.kind:"invalid"} emission, but only a valid committed emission can become the committed state. Prepare the emission with kind "committed" and check its validity before committing it.`);let t=()=>e.previousState===this.committed.value.state;if(!t())return"conflict";let i=()=>{t()?o():this._context.domainServicesSelectors.getLogger().warn("A held commit was dropped, because the committed state changed since it was prepared.",e)},o=()=>this._onBeforeCommitHooks.some(t=>!1===t(e,i))?(this._context.domainServicesSelectors.getLogger().debug("A prepared commit was held by one of the onBeforeCommit hooks.",e),!1):(this._context.domainServicesSelectors.getLogger().debug("commitPrepared",e),this.stagedUpdates=void 0,this.emit(e),!0);return o()?"committed":"held"};rollback=()=>{void 0!==this.stagedUpdates&&(this.stagedUpdates=void 0,this.emit(this.committed.value))};_resetInteractionState(e){return e.ephemeralRecords.some(e=>{let t;return(t=e.componentInstance.componentType)===r||t===o})?{...e,ephemeralRecords:e.ephemeralRecords.map(e=>e.componentInstance.componentType===r?{...e,state:{hoveredEntityId:null}}:e.componentInstance.componentType===o?{...e,state:{draggedEntityId:null}}:e)}:e}_preserveViewportState(e,t){let i=t.ephemeralRecords.find(m),o=e.ephemeralRecords.filter(e=>!m(e));return{...e,ephemeralRecords:i?[...o,i]:o}}reset(e,t){let i=this.committed.value.state,o=this._preserveViewportState(e,i),r=this._resetInteractionState(o),s=this._validateState(r);if(!s.valid)throw Error("Cannot reset to an invalid state");this.stagedUpdates=void 0,this.emit({kind:"reset",state:r,validity:s,tag:t,transformationLog:void 0})}stageAndCommit(e){if(0!==e.length){this.stagedUpdates=e;try{this.commit()}finally{this.stagedUpdates=void 0}}}}
1
+ import{CompositeKeyMap as e,assertExistence as t,isEqualArray as i}from"@salsita-ai/common/utils";import{domainEntityTypeFromId as r,dragStateComponent as o,getComponentSystemFilterState as s,hoverStateComponent as n,isEqualComponentInstance as a,isSystemViewportStateComponentSnapshot as d,isVirtualEntityId as m,selectionStateComponent as l,systemUpdateFactory as c,systemVirtualEntityId as p}from"../../core/index.js";import{projectedEntitiesComponent as h}from"../../system-components/index.js";import{cloneEvalCache as f,createEvalCacheToken as v,getEvalCache as g,setEvalCache as u}from"../../utils/eval-cache.js";import{createCascadeDeletesTransformer as y}from"../relation-transformers/cascade-deletes.js";import{createCascadeRefPruningTransformer as S}from"../relation-transformers/cascade-ref-pruning.js";import{applyUpdates as I}from"./apply-updates.js";import{LifecycleStateSlice as _}from"./lifecycle-state-slice.js";import{mergeReconciliationsUpdates as x,reconcileProjectedEntities as T}from"./reconcile-projected-entities.js";let E={uninitializedError:"StoreSystem is not initialized."},k=v({clone:e=>e}),w=class InvalidInitialStateError extends Error{emission;childError;constructor(e,t,i){let r="";"uncaught"===e.validity.severity&&(r=`: ${e.validity.error.message}`),("fatal"===e.validity.severity||"fixable"===e.validity.severity)&&(r=`: ${e.validity.entityViolations.map(e=>{let i=e.violation.message;return null!=i?t(i):e.violation.type}).join(", ")}`),super(`Initial state is not valid! Severity: ${e.validity.severity}, Cause: ${r}`),this.emission=e,this.childError=i,this.name="InvalidInitialStateError"}},b=(e,t)=>{try{return e()}catch(e){throw t(e),e}};export class StoreSystem{_context;stateSlices;get isInitialized(){return this.committed.isInitialized}_onBeforeCommitHooks=[];committed=new _(E);potentiallyInvalid=new _(E);rendered=new _(E);stagedUpdates=void 0;transformToDataUpdates=(e,t)=>{let i=!1,r=e.map(e=>"modifyComponent"===e.kind?(i=!0,this.componentModificationToDataUpdate(e,t)):e);return i?r:e};createInitialTransformPipe=()=>[{transformer:this.transformToDataUpdates,priority:1/0,registrationToken:{},name:"TransformToDataUpdates"}];transformPipe=this.createInitialTransformPipe();_cascadeDeletesTransformer=(...e)=>(this._cascadeDeletesTransformerMemo??=y(this._context.selectors.getCompositionProjections()))(...e);_cascadeDeletesTransformerMemo;_refPruningTransformer=(...e)=>(this._refPruningTransformerMemo??=S(this._context.selectors.getComponentReader()))(...e);_refPruningTransformerMemo;_deselectOnDeleteTransformer=(e,t)=>{let i=new Set(e.filter(e=>"deleteEntity"===e.kind).map(e=>e.entityId));if(0===i.size)return e;let r=s(t).selectedEntityId;return r&&i.has(r)?[...e,c.EphemeralRecordModification({componentInstance:{entityId:p,componentType:l},updateTag:"AutoDeselectRemovedProjectedEntity",writableState:{selectedEntityId:t.rootEntityId}})]:e};constructor(e){this._context=e,this.stateSlices={committed:this.committed.observable,rendered:this.rendered.observable,potentiallyInvalid:this.potentiallyInvalid.observable}}_validateState=e=>this._context.selectors.getValidationProjections().validateState(e);initialize=()=>{let e=this._context.selectors.getInitialDomainState();this.stagedUpdates=void 0;let t=this._validateState(e),i={kind:"reset",state:e,validity:t,tag:void 0,transformationLog:void 0},r=i;if(!r.validity.valid&&"fatal"===r.validity.severity||"fixable"===r.validity.severity){this._context.domainServicesSelectors.getLogger().debug("Trying to fix initial emission:",r);let e=r.state,{transformedUpdates:t,transformationLog:i}=this.applyTransformers([],e,"committed"),o=I(this.transformToDataUpdates(t,e),e);f(e,o),r={kind:"reset",state:o,validity:this._validateState(o),tag:"fixed",transformationLog:i}}if(!r.validity.valid){if(this._context.domainServicesSelectors.getLogger().error("Invalid initial emission:",{initialEmission:i,fixedEmission:r}),"uncaught"===r.validity.severity)throw new w(r,this._context.domainServicesSelectors.getResolveLocalizable(),r.validity.error??void 0);throw new w(r,this._context.domainServicesSelectors.getResolveLocalizable())}this.committed.next(r),this.rendered.next(r),this.potentiallyInvalid.next(r)};registerTransformer(e,i,r){let o={};return((e,i,r)=>{let o=0;for(;o<e.length&&0>=r(t(e[o]),i);)o++;e.splice(o,0,i)})(this.transformPipe,{registrationToken:o,transformer:i,priority:e,name:r},(e,t)=>e.priority===t.priority?0:e.priority<t.priority?-1:1),()=>{let e=this.transformPipe.findIndex(e=>e.registrationToken===o);-1!==e&&this.transformPipe.splice(e,1)}}onBeforeCommit(e){return this._onBeforeCommitHooks.push(e),()=>{this._onBeforeCommitHooks=this._onBeforeCommitHooks.filter(t=>t!==e)}}componentModificationToDataUpdate=(e,t)=>{let i=e.entityId;if(!m(i)){let t=this._context.selectors.getComponentReaderIndexes().opticMap.get(r(i))?.get(e.componentInstance.componentType)?.get(e.componentInstance.instanceName);if(t?.kind==="simple"){let r=t.write(e.writableState);return{kind:"modifyDomainEntity",entityId:i,updateTag:e.updateTag,stateDelta:r,hint:e.hint,agentHint:e.agentHint,origin:e}}}let o=t.ephemeralRecords.find(t=>a(t.componentInstance,e.componentInstance));if(o)return{kind:"modifyEphemeralRecord",entityId:e.entityId,updateTag:e.updateTag,componentInstance:o.componentInstance,writableState:e.writableState,hint:e.hint,agentHint:e.agentHint};throw Error(`Component ${e.componentInstance.componentType.name} is not attached on entity #${e.entityId}`)};getNewState=(e,t)=>{let i=I(this.transformToDataUpdates(e,t),t);return f(this.rendered.isInitialized?this.rendered.value.state:t,i),i};applyTransformers(e,t,i){let r=this._context.environmentSelectors.getEnvironmentIsDev()?[]:void 0;return{transformedUpdates:this.transformPipe.reduce((e,{transformer:o,name:s})=>{let n,a=r?[]:void 0,d=a?(e,t,i)=>{n=e,a.push({phase:e,message:t,data:i})}:void 0,m=b(()=>o(e,t,i,d),o=>{this._context.domainServicesSelectors.getLogger().error("Error while applying transformer!",{name:s,updates:e,previousState:t,kind:i,transformationLog:r},o instanceof Error?o:Error(String(o)))});return a&&r&&r.push({name:s,status:n??(m===e?"no-event":"apply"),entries:a,updatesIn:e,updatesOut:m}),m},e),transformationLog:r}}_updateProjectedEntities(e,t,r){if(!e.validity.valid)return e;let o=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[h]},e.state),s=g(e.previousState,k);if(s&&i(s,o))return e;let n=0,a=e,d=[];for(;a.validity.valid;){n++;let i=T(a.state.entities,o,t);if(0===i.length)break;if(n>10)throw Error(`Maximum number of reconciliation rounds reached: 10. Projected entities seem to be recursively depending on themselves.
2
+ If expressions populating 'projectedEntities' components rely on other projected entities, make sure that the dependencies do not have cycles.`);let s=(d=x(d,i)).map(e=>e.dataUpdate),m=this._cascadeDeletesTransformer(s,e.previousState,r,void 0,t),l=this._refPruningTransformer(m,e.previousState,r,void 0,t),c=this._deselectOnDeleteTransformer(l,e.previousState,r,void 0,t);if(!(a=this.prepareStateEmissionWithoutTransformation([...t,...c],e.previousState,r)).validity.valid)return this._context.domainServicesSelectors.getLogger().error("Reconciliation of projected entities led to an invalid state! Reconciliation skipped.",{emission:a}),e;o=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[h]},a.state)}return u(a.state,k,o),a}prepareStateEmission(e,t,i){let{transformedUpdates:r,transformationLog:o}=this.applyTransformers(e,t,i),s=this.prepareStateEmissionWithoutTransformation(r,t,i);return{...this._updateProjectedEntities(s,r,i),transformationLog:o}}emissionCache=new e([Map,WeakMap,WeakMap,WeakMap,WeakMap]);getEmissionCacheKey=(e,t,i)=>[e,t,i,this._context.selectors.getStoreRuntimeDependencies(),this._context.selectors.getExpressionContext()];prepareStateEmissionWithoutTransformation=(e,t,i)=>{let r=this.getEmissionCacheKey(i,t,e),o=this.emissionCache.get(r);if(o)return o;let s=b(()=>this.transformToDataUpdates(e,t),r=>{this._context.domainServicesSelectors.getLogger().error("Error while transforming updates to data updates!",{updates:e,previousState:t,kind:i},r instanceof Error?r:Error(String(r)))}),n=b(()=>I(s,t),r=>{this._context.domainServicesSelectors.getLogger().error("Error while applying updates!",{updates:e,previousState:t,kind:i,dataUpdates:s},r instanceof Error?r:Error(String(r)))});f(this.rendered.isInitialized?this.rendered.value.state:t,n);let a=this._validateState(n);"uncaught"===a.severity&&this._context.domainServicesSelectors.getLogger().error("There was an uncaught validation error:",{updates:e,dataUpdates:s,previousState:t,newState:n,kind:i},a.error);let d={kind:i,previousState:t,state:n,updates:s,validity:a,transformationLog:void 0};return this.emissionCache.set(r,d),d};stage(e,t=!0){this.stagedUpdates=e;let i=this.prepareStateEmission(e,this.committed.value.state,"staged");return t&&this.emit(i),i}emit(e){"staged"===e.kind?e.validity.valid&&this.rendered.nextIfDifferent(e):(e.validity.valid?(this.committed.nextIfDifferent(e),this.rendered.nextIfDifferent(e)):this.rendered.nextIfDifferent(this.committed.value),this.potentiallyInvalid.nextIfDifferent(e))}commit=()=>{if(void 0===this.stagedUpdates)return;let e=this.prepareStateEmission(this.stagedUpdates,this.committed.value.state,"committed"),t=()=>{if(this._onBeforeCommitHooks.some(i=>!1===i(e,t))){this._context.domainServicesSelectors.getLogger().debug("Commit was canceled by one of the onBeforeCommit hooks! Resetting rendered state.",e),this.rollback();return}this.stagedUpdates=void 0,this._context.domainServicesSelectors.getLogger().debug("commit",e),this.emit(e)};t()};commitPrepared=e=>{if("committed"!==e.kind||!e.validity.valid)throw Error(`commitPrepared received a ${e.validity.valid?e.kind:"invalid"} emission, but only a valid committed emission can become the committed state. Prepare the emission with kind "committed" and check its validity before committing it.`);let t=()=>e.previousState===this.committed.value.state;if(!t())return"conflict";let i=()=>{t()?r():this._context.domainServicesSelectors.getLogger().warn("A held commit was dropped, because the committed state changed since it was prepared.",e)},r=()=>this._onBeforeCommitHooks.some(t=>!1===t(e,i))?(this._context.domainServicesSelectors.getLogger().debug("A prepared commit was held by one of the onBeforeCommit hooks.",e),!1):(this._context.domainServicesSelectors.getLogger().debug("commitPrepared",e),this.stagedUpdates=void 0,this.emit(e),!0);return r()?"committed":"held"};rollback=()=>{void 0!==this.stagedUpdates&&(this.stagedUpdates=void 0,this.emit(this.committed.value))};_resetInteractionState(e){return e.ephemeralRecords.some(e=>{let t;return(t=e.componentInstance.componentType)===n||t===o})?{...e,ephemeralRecords:e.ephemeralRecords.map(e=>e.componentInstance.componentType===n?{...e,state:{hoveredEntityId:null}}:e.componentInstance.componentType===o?{...e,state:{draggedEntityId:null}}:e)}:e}_preserveViewportState(e,t){let i=t.ephemeralRecords.find(d),r=e.ephemeralRecords.filter(e=>!d(e));return{...e,ephemeralRecords:i?[...r,i]:r}}reset(e,t){let i=this.committed.value.state,r=this._preserveViewportState(e,i),o=this._resetInteractionState(r),s=this._validateState(o);if(!s.valid)throw Error("Cannot reset to an invalid state");this.stagedUpdates=void 0,this.emit({kind:"reset",state:o,validity:s,tag:t,transformationLog:void 0})}stageAndCommit(e){if(0!==e.length){this.stagedUpdates=e;try{this.commit()}finally{this.stagedUpdates=void 0}}}}
@@ -1,6 +1,4 @@
1
- import type { StateOfComponent, SystemComponentTypeConstraint, WritableStateOfComponent } from '../../core/component.js';
2
- import type { DomainEntity } from '../../core/model.js';
3
- import type { DomainState } from '../../core/state.js';
1
+ import { type DomainEntity, type DomainState, type StateOfComponent, type SystemComponentTypeConstraint, type WritableStateOfComponent } from '../../core/index.js';
4
2
  import type { DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
5
3
  export declare const SystemStateInitialUpdateTag = "system.state.initial";
6
4
  export declare const SystemStateUpdateTag = "system.state";
@@ -1 +1 @@
1
- import{systemVirtualEntityId as t}from"../../components/system-virtual-entity.js";import{systemUpdateFactory as e}from"../../components/updates.js";export const SystemStateInitialUpdateTag="system.state.initial";export const SystemStateUpdateTag="system.state";export class SystemState{_context;constructor(t){this._context=t}initialize=()=>{let t=this._context.selectors.getStoreSystem(),e=t.stateSlices.committed.value.state;t.stageAndCommit(this.getInitialUpdates(e))};getInitialUpdates=n=>{let o=this._context.getInitialState(n);return[e.EphemeralRecordCreation({componentInstance:{entityId:t,componentType:this._context.componentType,instanceName:"singleton"},updateTag:"system.state.initial",initialState:o})]};get=e=>{let n=this._context.selectors.getComponentReader().readOneComponent({entityId:t,componentType:this._context.componentType,instanceName:"singleton"},e);return n?n.state:this._context.getInitialState(e)};getUpdates=(n,o)=>{let s=this.get(o),i="function"==typeof n?n(s):n;return i?[e.ComponentModification({componentInstance:{entityId:t,componentType:this._context.componentType,instanceName:"singleton"},updateTag:"system.state",writableState:i})]:[]}}
1
+ import{systemUpdateFactory as t,systemVirtualEntityId as e}from"../../core/index.js";export const SystemStateInitialUpdateTag="system.state.initial";export const SystemStateUpdateTag="system.state";export class SystemState{_context;constructor(t){this._context=t}initialize=()=>{let t=this._context.selectors.getStoreSystem(),e=t.stateSlices.committed.value.state;t.stageAndCommit(this.getInitialUpdates(e))};getInitialUpdates=n=>{let o=this._context.getInitialState(n);return[t.EphemeralRecordCreation({componentInstance:{entityId:e,componentType:this._context.componentType,instanceName:"singleton"},updateTag:"system.state.initial",initialState:o})]};get=t=>{let n=this._context.selectors.getComponentReader().readOneComponent({entityId:e,componentType:this._context.componentType,instanceName:"singleton"},t);return n?n.state:this._context.getInitialState(t)};getUpdates=(n,o)=>{let s=this.get(o),i="function"==typeof n?n(s):n;return i?[t.ComponentModification({componentInstance:{entityId:e,componentType:this._context.componentType,instanceName:"singleton"},updateTag:"system.state",writableState:i})]:[]}}
@@ -1,5 +1,4 @@
1
- import type { StateUpdate } from '../../components/updates.js';
2
- import { type $DomainEntity, type DomainEntity } from '../../core/model.js';
1
+ import { type $DomainEntity, type DomainEntity, type StateUpdate } from '../../core/index.js';
3
2
  import type { ChainBuilder } from './chain-builder.js';
4
3
  import type { BaseTransformerBuilderContext, ContextFactory, ContextWithEntityId } from './context.js';
5
4
  export type SelectAction<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, CTX> = CTX extends ContextWithEntityId<ENTITIES, $MAP, ALLOWED_ROOT_ENTITIES, NAVIGATION_STATES, VIEW_STATES, TOOL_STATES, EXPORT_STATES> ? {