@salsita-ai/sdk 0.50.0-develop.71209819cd → 0.50.0-develop.780177b115

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 (1244) hide show
  1. package/README.md +19 -14
  2. package/dist/admin/default-admin-elements.d.ts +9 -0
  3. package/dist/admin/default-admin-elements.js +1 -0
  4. package/dist/admin/default-elements/built-in-entity-element.d.ts +10 -0
  5. package/dist/admin/default-elements/built-in-entity-element.js +1 -0
  6. package/dist/admin/default-elements/built-in-layout-element.d.ts +10 -0
  7. package/dist/admin/default-elements/built-in-layout-element.js +1 -0
  8. package/dist/admin/default-elements/index.d.ts +2 -0
  9. package/dist/admin/default-elements/index.js +1 -0
  10. package/dist/admin/index.d.ts +1 -0
  11. package/dist/admin/index.js +1 -1
  12. package/dist/application-spec/caching/content-diff.js +1 -1
  13. package/dist/application-spec/core/application-file.d.ts +0 -2
  14. package/dist/application-spec/core/application-file.js +1 -1
  15. package/dist/application-spec/core/components/component-filter.d.ts +53 -0
  16. package/dist/application-spec/core/components/component-filter.js +1 -0
  17. package/dist/application-spec/core/components/index.d.ts +2 -0
  18. package/dist/application-spec/core/components/index.js +1 -0
  19. package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
  20. package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
  21. package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
  22. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  23. package/dist/application-spec/core/expressions/index.d.ts +2 -0
  24. package/dist/application-spec/core/expressions/index.js +1 -0
  25. package/dist/application-spec/core/expressions/relation-expression-params.d.ts +11 -0
  26. package/dist/application-spec/core/expressions/sdk-expression-implementation.d.ts +24 -0
  27. package/dist/application-spec/core/expressions/sdk-expression-implementation.js +1 -0
  28. package/dist/application-spec/core/index.d.ts +2 -0
  29. package/dist/application-spec/core/index.js +1 -1
  30. package/dist/application-spec/core/json-value.d.ts +1 -1
  31. package/dist/application-spec/{core → enhanced-json}/eval-to-constant.d.ts +1 -1
  32. package/dist/application-spec/enhanced-json/index.d.ts +4 -0
  33. package/dist/application-spec/enhanced-json/index.js +1 -0
  34. package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
  35. package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
  36. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
  37. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
  38. package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
  39. package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
  40. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
  41. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
  42. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
  43. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
  44. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
  45. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
  46. package/dist/application-spec/errors/diagnostic-codes.d.ts +23 -0
  47. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  48. package/dist/application-spec/errors/diagnostic-messages.d.ts +27 -1
  49. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  50. package/dist/application-spec/generate-application/code/common/code-imports.js +1 -1
  51. package/dist/application-spec/generate-application/code/common/env-reader.js +2 -2
  52. package/dist/application-spec/generate-application/code/common/index.d.ts +1 -0
  53. package/dist/application-spec/generate-application/code/common/index.js +1 -1
  54. package/dist/application-spec/generate-application/code/common/single-quoted-string.d.ts +6 -0
  55. package/dist/application-spec/generate-application/code/common/single-quoted-string.js +1 -0
  56. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  57. package/dist/application-spec/generate-application/code/generate-application-code.d.ts +3 -2
  58. package/dist/application-spec/generate-application/code/generate-application-code.js +1 -1
  59. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +22 -14
  60. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  61. package/dist/application-spec/generate-application/code/standalone-app-files.d.ts +2 -2
  62. package/dist/application-spec/generate-application/code/standalone-app-files.js +1 -1
  63. package/dist/application-spec/generate-application/code/story-files.js +1 -1
  64. package/dist/application-spec/generate-application/code/templates/admin-config.js +3 -0
  65. package/dist/application-spec/generate-application/code/templates/application-types.js +6 -6
  66. package/dist/application-spec/generate-application/code/templates/common/doc-comment.d.ts +2 -0
  67. package/dist/application-spec/generate-application/code/templates/common/doc-comment.js +1 -0
  68. package/dist/application-spec/generate-application/code/templates/common/format-property-key.d.ts +7 -0
  69. package/dist/application-spec/generate-application/code/templates/common/format-property-key.js +1 -0
  70. package/dist/application-spec/generate-application/code/templates/common/schema-to-type-string.js +3 -3
  71. package/dist/application-spec/generate-application/code/templates/configurator-config.js +6 -4
  72. package/dist/application-spec/generate-application/code/templates/configurator-globals.d.ts +2 -1
  73. package/dist/application-spec/generate-application/code/templates/configurator-globals.js +19 -6
  74. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/domain-factory-types.d.ts +35 -0
  75. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/domain-factory-types.js +5 -0
  76. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/index.d.ts +1 -0
  77. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/index.js +1 -0
  78. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.d.ts +1 -1
  79. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +7 -7
  80. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  81. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  82. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +69 -73
  83. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +8 -0
  84. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  85. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  86. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-presets.js +1 -1
  87. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  88. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  89. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +21 -21
  90. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-states.d.ts +1 -1
  91. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-states.js +2 -2
  92. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +3 -2
  93. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  94. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  95. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  96. package/dist/application-spec/generate-application/code/templates/eslint-config.d.ts +5 -0
  97. package/dist/application-spec/generate-application/code/templates/eslint-config.js +4 -5
  98. package/dist/application-spec/generate-application/code/templates/frontend-config.js +3 -5
  99. package/dist/application-spec/generate-application/code/templates/gitignore.js +0 -3
  100. package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.js +7 -7
  101. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.d.ts +12 -0
  102. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.js +7 -0
  103. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.d.ts +43 -0
  104. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.js +33 -0
  105. package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +2 -0
  106. package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
  107. package/dist/application-spec/generate-application/code/templates/globals.js +24 -43
  108. package/dist/application-spec/generate-application/code/templates/index.d.ts +3 -10
  109. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  110. package/dist/application-spec/generate-application/code/templates/lingui-rc.d.ts +5 -0
  111. package/dist/application-spec/generate-application/code/templates/lingui-rc.js +4 -4
  112. package/dist/application-spec/generate-application/code/templates/prettier-config.d.ts +5 -0
  113. package/dist/application-spec/generate-application/code/templates/prettier-config.js +4 -5
  114. package/dist/application-spec/generate-application/code/templates/root-tsconfig.d.ts +6 -0
  115. package/dist/application-spec/generate-application/code/templates/root-tsconfig.js +2 -0
  116. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
  117. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +1 -1
  118. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +5 -5
  119. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +9 -3
  120. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  121. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +2 -2
  122. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +32 -14
  123. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -4
  124. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.d.ts +58 -0
  125. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.js +1 -0
  126. package/dist/application-spec/generate-application/code/templates/spec-code/index.d.ts +2 -0
  127. package/dist/application-spec/generate-application/code/templates/spec-code/index.js +1 -0
  128. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.d.ts +18 -0
  129. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.js +41 -0
  130. package/dist/application-spec/generate-application/code/templates/spec-messages/index.d.ts +1 -0
  131. package/dist/application-spec/generate-application/code/templates/spec-messages/index.js +1 -0
  132. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.d.ts +20 -0
  133. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.js +6 -0
  134. package/dist/application-spec/generate-application/code/templates/story/phx-module.d.ts +8 -2
  135. package/dist/application-spec/generate-application/code/templates/story/phx-module.js +15 -3
  136. package/dist/application-spec/generate-application/code/templates/story/wrapper.d.ts +3 -0
  137. package/dist/application-spec/generate-application/code/templates/story/wrapper.js +2 -1
  138. package/dist/application-spec/generate-application/code/templates/tsconfig.d.ts +5 -0
  139. package/dist/application-spec/generate-application/code/templates/tsconfig.js +1 -1
  140. package/dist/application-spec/generate-application/code/templates/webhook-index.d.ts +6 -1
  141. package/dist/application-spec/generate-application/code/templates/webhook-index.js +10 -1
  142. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -3
  143. package/dist/application-spec/generate-application/index.d.ts +2 -0
  144. package/dist/application-spec/generate-application/index.js +1 -1
  145. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.d.ts +6 -4
  146. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.js +1 -1
  147. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +8 -3
  148. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
  149. package/dist/application-spec/generate-application/runtime/admin-runtime/states-runtime.d.ts +2 -2
  150. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +19 -7
  151. package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
  152. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.d.ts +6 -4
  153. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.js +1 -1
  154. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +7 -4
  155. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  156. package/dist/application-spec/generate-application/runtime/configurator-runtime/states-runtime.d.ts +2 -2
  157. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.d.ts +43 -0
  158. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.js +1 -0
  159. package/dist/application-spec/generate-application/runtime/factory-data/index.d.ts +3 -0
  160. package/dist/application-spec/generate-application/runtime/factory-data/index.js +1 -0
  161. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.d.ts +13 -0
  162. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.js +1 -0
  163. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.d.ts +16 -0
  164. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.js +1 -0
  165. package/dist/application-spec/generate-application/runtime/migrations/index.d.ts +1 -0
  166. package/dist/application-spec/generate-application/runtime/migrations/index.js +1 -0
  167. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.d.ts +53 -0
  168. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.js +1 -0
  169. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +2 -2
  170. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +3 -2
  171. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  172. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.d.ts +2 -1
  173. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.js +1 -1
  174. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +5 -1
  175. package/dist/application-spec/generate-application/runtime/sections/component-optic.js +1 -1
  176. package/dist/application-spec/generate-application/runtime/sections/data-runtime.d.ts +4 -4
  177. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.d.ts +7 -4
  178. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  179. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.d.ts +9 -5
  180. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.js +1 -1
  181. package/dist/application-spec/generate-application/runtime/sections/reflection-constants-runtime.d.ts +3 -1
  182. package/dist/application-spec/generate-application/runtime/sections/reflection-constants-runtime.js +1 -1
  183. package/dist/application-spec/generate-application/runtime/sections/theme-runtime.d.ts +2 -2
  184. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +4 -6
  185. package/dist/application-spec/generate-application/runtime/spec-code/index.d.ts +2 -0
  186. package/dist/application-spec/generate-application/runtime/spec-code/index.js +1 -0
  187. package/dist/application-spec/generate-application/runtime/spec-code/resolve-spec-code.d.ts +18 -0
  188. package/dist/application-spec/generate-application/runtime/spec-code/resolve-spec-code.js +1 -0
  189. package/dist/application-spec/generate-application/runtime/spec-code/spec-code-module.d.ts +17 -0
  190. package/dist/application-spec/generate-application/runtime/spec-code/spec-code-module.js +1 -0
  191. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.d.ts +9 -0
  192. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.js +1 -0
  193. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.d.ts +8 -0
  194. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.js +1 -0
  195. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.d.ts +27 -0
  196. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.js +1 -0
  197. package/dist/application-spec/generate-application/runtime-spec/index.d.ts +5 -0
  198. package/dist/application-spec/generate-application/runtime-spec/index.js +1 -0
  199. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.d.ts +68 -0
  200. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.js +1 -0
  201. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.d.ts +40 -0
  202. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.js +1 -0
  203. package/dist/application-spec/index.d.ts +1 -0
  204. package/dist/application-spec/index.js +1 -1
  205. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +34 -0
  206. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  207. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.d.ts +16 -0
  208. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.js +9 -0
  209. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.d.ts +9 -0
  210. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.js +1 -0
  211. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  212. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  213. package/dist/application-spec/parse-application-files/raw-spec/parse-yaml-spec-file.js +1 -1
  214. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +47 -4
  215. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  216. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  217. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  218. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  219. package/dist/application-spec/parse-application-files/spec/common/index.d.ts +1 -0
  220. package/dist/application-spec/parse-application-files/spec/common/index.js +1 -1
  221. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.d.ts +3 -0
  222. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.js +1 -0
  223. package/dist/application-spec/parse-application-files/spec/common/value-type/index.d.ts +5 -0
  224. package/dist/application-spec/parse-application-files/spec/common/value-type/index.js +1 -0
  225. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.d.ts +6 -0
  226. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.js +1 -0
  227. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.d.ts +8 -0
  228. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.js +1 -0
  229. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.d.ts +10 -0
  230. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.js +1 -0
  231. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.d.ts +98 -0
  232. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.js +1 -0
  233. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.d.ts +13 -0
  234. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.js +1 -0
  235. package/dist/application-spec/parse-application-files/spec/components/bindings/index.d.ts +2 -0
  236. package/dist/application-spec/parse-application-files/spec/components/bindings/index.js +1 -1
  237. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.d.ts +24 -0
  238. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.js +1 -0
  239. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
  240. package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
  241. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
  242. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  243. package/dist/application-spec/parse-application-files/spec/components/component-state-type.d.ts +8 -0
  244. package/dist/application-spec/parse-application-files/spec/components/component-state-type.js +1 -0
  245. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.d.ts +13 -0
  246. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.js +1 -0
  247. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
  248. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  249. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.d.ts +14 -0
  250. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.js +1 -0
  251. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.d.ts +6 -0
  252. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.js +1 -1
  253. package/dist/application-spec/parse-application-files/spec/components/user-components.d.ts +7 -4
  254. package/dist/application-spec/parse-application-files/spec/components/user-components.js +1 -1
  255. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.d.ts +24 -0
  256. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.js +1 -0
  257. package/dist/application-spec/parse-application-files/spec/expressions/expression-read.d.ts +13 -0
  258. package/dist/application-spec/parse-application-files/spec/expressions/expression-read.js +1 -0
  259. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.d.ts +9 -0
  260. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.js +1 -0
  261. package/dist/application-spec/parse-application-files/spec/expressions/expression.d.ts +1 -28
  262. package/dist/application-spec/parse-application-files/spec/expressions/expression.js +1 -1
  263. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +7 -3
  264. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  265. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
  266. package/dist/application-spec/parse-application-files/spec/expressions/index.js +1 -1
  267. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  268. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.d.ts +3 -1
  269. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  270. package/dist/application-spec/parse-application-files/spec/invariants/invariants.d.ts +2 -2
  271. package/dist/application-spec/parse-application-files/spec/invariants/invariants.js +1 -1
  272. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +7 -2
  273. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  274. package/dist/application-spec/parse-application-files/spec/model/index.d.ts +1 -0
  275. package/dist/application-spec/parse-application-files/spec/model/index.js +1 -1
  276. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.d.ts +10 -0
  277. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.js +1 -0
  278. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  279. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  280. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  281. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  282. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  283. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  284. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.d.ts +9 -0
  285. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.js +1 -0
  286. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +4 -1
  287. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  288. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  289. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  290. package/dist/client/phoenix-api.d.ts +463 -0
  291. package/dist/configurator/ConfiguratorApp.js +1 -1
  292. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.d.ts +2 -0
  293. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.js +5 -0
  294. package/dist/configurator/app-loader-content/app-loader-content-name.d.ts +5 -0
  295. package/dist/configurator/app-loader-content/app-loader-content-name.js +1 -0
  296. package/dist/configurator/app-loader-content/index.d.ts +2 -0
  297. package/dist/configurator/app-loader-content/index.js +1 -0
  298. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  299. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  300. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  301. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +38 -1
  302. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  303. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +19 -3
  304. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  305. package/dist/configurator/application-runtime/extensions/systems/camera-control-system/camera-control-system.d.ts +1 -1
  306. package/dist/configurator/application-runtime/extensions/systems/canvas-system.d.ts +8 -0
  307. package/dist/configurator/application-runtime/extensions/systems/canvas-system.js +1 -1
  308. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  309. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.d.ts +8 -0
  310. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.js +1 -0
  311. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.d.ts +23 -1
  312. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.js +1 -1
  313. package/dist/configurator/application-runtime/extensions/systems/graphql-system/close-unclosed-braces.d.ts +12 -0
  314. package/dist/configurator/application-runtime/extensions/systems/graphql-system/close-unclosed-braces.js +1 -0
  315. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +14 -1
  316. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  317. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +64 -7
  318. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  319. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  320. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  321. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.d.ts +14 -5
  322. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.js +1 -1
  323. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  324. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -2
  325. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  326. package/dist/configurator/common/configurator-interface.d.ts +141 -4
  327. package/dist/configurator/common/configurator-interface.js +1 -1
  328. package/dist/configurator/common/index.d.ts +3 -1
  329. package/dist/configurator/common/index.js +1 -1
  330. package/dist/configurator/common/use-reset-camera.d.ts +6 -0
  331. package/dist/configurator/common/use-reset-camera.js +1 -0
  332. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.d.ts +12 -0
  333. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.js +1 -0
  334. package/dist/configurator/configuration-not-found-page/create-configuration-not-found-page.d.ts +9 -0
  335. package/dist/configurator/configuration-not-found-page/create-configuration-not-found-page.js +1 -0
  336. package/dist/configurator/configuration-not-found-page/index.d.ts +2 -0
  337. package/dist/configurator/configuration-not-found-page/index.js +1 -0
  338. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.d.ts +12 -0
  339. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.js +1 -0
  340. package/dist/configurator/configurator-context/PresetSelectionProvider.js +1 -1
  341. package/dist/configurator/configurator-context/PreviewContextProvider.js +1 -1
  342. package/dist/configurator/configurator-context/ViewportStateSync.d.ts +2 -2
  343. package/dist/configurator/configurator-context/ViewportStateSync.js +1 -1
  344. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +11 -1
  345. package/dist/configurator/configurator-context/configurator-routing/ConfiguratorRoutingProvider.js +1 -1
  346. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.d.ts +6 -0
  347. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.js +1 -0
  348. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.d.ts +12 -0
  349. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.js +1 -0
  350. package/dist/configurator/configurator-error-page/create-configurator-error-page.d.ts +9 -0
  351. package/dist/configurator/configurator-error-page/create-configurator-error-page.js +1 -0
  352. package/dist/configurator/configurator-error-page/index.d.ts +3 -0
  353. package/dist/configurator/configurator-error-page/index.js +1 -0
  354. package/dist/configurator/index.d.ts +3 -0
  355. package/dist/configurator/index.js +1 -1
  356. package/dist/configurator/pages/ConfiguratorErrorPage.d.ts +0 -1
  357. package/dist/configurator/pages/ConfiguratorErrorPage.js +1 -1
  358. package/dist/configurator/pages/ConfiguratorNotFoundPage.js +1 -1
  359. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +7 -0
  360. package/dist/configurator/pages/DefaultConfiguratorLayout.js +1 -0
  361. package/dist/configurator/pages/DefaultNotAuthenticatedPage.d.ts +8 -0
  362. package/dist/configurator/pages/DefaultNotAuthenticatedPage.js +1 -0
  363. package/dist/configurator/pages/DefaultPresetUi.d.ts +7 -0
  364. package/dist/configurator/pages/DefaultPresetUi.js +1 -0
  365. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  366. package/dist/configurator/pages/NewConfiguratorPage.js +1 -1
  367. package/dist/configurator/pages/PresetCreationErrorPage.d.ts +1 -1
  368. package/dist/configurator/pages/PresetCreationErrorPage.js +1 -1
  369. package/dist/configurator/pages/RootPage.js +1 -1
  370. package/dist/configurator/pages/configurator-layout-name.d.ts +2 -0
  371. package/dist/configurator/pages/configurator-layout-name.js +1 -0
  372. package/dist/configurator/pages/default-configurator-elements.d.ts +13 -0
  373. package/dist/configurator/pages/default-configurator-elements.js +1 -0
  374. package/dist/configurator/pages/default-elements/built-in-entity-element.d.ts +10 -0
  375. package/dist/configurator/pages/default-elements/built-in-entity-element.js +1 -0
  376. package/dist/configurator/pages/default-elements/built-in-layout-element.d.ts +10 -0
  377. package/dist/configurator/pages/default-elements/built-in-layout-element.js +1 -0
  378. package/dist/configurator/pages/default-elements/domain-control-elements.d.ts +6 -0
  379. package/dist/configurator/pages/default-elements/domain-control-elements.js +1 -0
  380. package/dist/configurator/pages/default-elements/index.d.ts +5 -0
  381. package/dist/configurator/pages/default-elements/index.js +1 -0
  382. package/dist/configurator/pages/default-elements/recipe-panel-elements.d.ts +3 -0
  383. package/dist/configurator/pages/default-elements/recipe-panel-elements.js +1 -0
  384. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.d.ts +3 -0
  385. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.js +1 -0
  386. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.d.ts +3 -0
  387. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.js +1 -0
  388. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.d.ts +3 -0
  389. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.js +1 -0
  390. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.d.ts +3 -0
  391. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.js +1 -0
  392. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.d.ts +3 -0
  393. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.js +1 -0
  394. package/dist/configurator/pages/default-elements/scene-controls/index.d.ts +6 -0
  395. package/dist/configurator/pages/default-elements/scene-controls/index.js +1 -0
  396. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.d.ts +6 -0
  397. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.js +1 -0
  398. package/dist/configurator/pages/default-elements/sidebar-footer-elements.d.ts +7 -0
  399. package/dist/configurator/pages/default-elements/sidebar-footer-elements.js +1 -0
  400. package/dist/configurator/pages/default-elements/toolbar-elements.d.ts +7 -0
  401. package/dist/configurator/pages/default-elements/toolbar-elements.js +1 -0
  402. package/dist/configurator/pages/error-boundaries/GeneralErrorBoundary.js +1 -1
  403. package/dist/configurator/pages/index.d.ts +1 -0
  404. package/dist/configurator/pages/index.js +1 -1
  405. package/dist/configurator/preset-screen-elements/PresetDeviceNotSupportedElement.d.ts +4 -0
  406. package/dist/configurator/preset-screen-elements/PresetDeviceNotSupportedElement.js +1 -0
  407. package/dist/configurator/preset-screen-elements/PresetPageActionElement.d.ts +4 -0
  408. package/dist/configurator/preset-screen-elements/PresetPageActionElement.js +1 -0
  409. package/dist/configurator/preset-screen-elements/index.d.ts +2 -0
  410. package/dist/configurator/preset-screen-elements/index.js +1 -0
  411. package/dist/configurator/scene/index.d.ts +1 -0
  412. package/dist/configurator/scene/index.js +1 -1
  413. package/dist/configurator/scene/scene-controls/DeleteEntityFab.js +1 -1
  414. package/dist/configurator/scene/scene-controls/SelectionHotspot.js +1 -1
  415. package/dist/configurator/scene/scene-controls/ToolFab.d.ts +4 -0
  416. package/dist/configurator/scene/scene-controls/ToolFab.js +1 -1
  417. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  418. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  419. package/dist/configurator/scene/scene-controls/use-scene-control-tooltip.d.ts +2 -1
  420. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  421. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  422. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  423. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  424. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  425. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  426. package/dist/configurator/scene/scene-entity/scene-controls/SceneEntityHtmlHotspots.js +1 -1
  427. package/dist/configurator/toolbar-actions/index.d.ts +3 -0
  428. package/dist/configurator/toolbar-actions/index.js +1 -0
  429. package/dist/configurator/toolbar-actions/use-assistant-panel.d.ts +18 -0
  430. package/dist/configurator/toolbar-actions/use-assistant-panel.js +1 -0
  431. package/dist/configurator/toolbar-actions/use-measurements.d.ts +35 -0
  432. package/dist/configurator/toolbar-actions/use-measurements.js +1 -0
  433. package/dist/configurator/toolbar-actions/use-toolbar-actions.d.ts +100 -0
  434. package/dist/configurator/toolbar-actions/use-toolbar-actions.js +1 -0
  435. package/dist/configurator/toolbar-actions/use-toolbar-help.d.ts +7 -0
  436. package/dist/configurator/toolbar-actions/use-toolbar-help.js +1 -0
  437. package/dist/configurator/ui/assistant/AssistantChips.d.ts +10 -3
  438. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  439. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +7 -2
  440. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  441. package/dist/configurator/ui/assistant/AssistantPanel.js +1 -1
  442. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  443. package/dist/configurator/ui/assistant/alert/AssistantAlert.d.ts +8 -0
  444. package/dist/configurator/ui/assistant/alert/AssistantAlert.js +1 -0
  445. package/dist/configurator/ui/assistant/alert/index.d.ts +2 -0
  446. package/dist/configurator/ui/assistant/alert/index.js +1 -0
  447. package/dist/configurator/ui/assistant/alert/remark-alerts.d.ts +10 -0
  448. package/dist/configurator/ui/assistant/alert/remark-alerts.js +1 -0
  449. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  450. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  451. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  452. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  453. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  454. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  455. package/dist/configurator/ui/assistant/entity-link/index.d.ts +2 -0
  456. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  457. package/dist/configurator/ui/assistant/form/AssistantForm.d.ts +19 -0
  458. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -0
  459. package/dist/configurator/ui/assistant/form/compose-answer.d.ts +11 -0
  460. package/dist/configurator/ui/assistant/form/compose-answer.js +1 -0
  461. package/dist/configurator/ui/assistant/form/describe-build-errors.d.ts +6 -0
  462. package/dist/configurator/ui/assistant/form/describe-build-errors.js +1 -0
  463. package/dist/configurator/ui/assistant/form/form-model.d.ts +37 -0
  464. package/dist/configurator/ui/assistant/form/form-model.js +1 -0
  465. package/dist/configurator/ui/assistant/form/form-state.d.ts +4 -0
  466. package/dist/configurator/ui/assistant/form/form-state.js +1 -0
  467. package/dist/configurator/ui/assistant/form/index.d.ts +4 -0
  468. package/dist/configurator/ui/assistant/form/index.js +1 -0
  469. package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +10 -0
  470. package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -0
  471. package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +13 -0
  472. package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -0
  473. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.d.ts +3 -0
  474. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.js +1 -0
  475. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.d.ts +31 -0
  476. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.js +1 -0
  477. package/dist/configurator/ui/assistant/form/registry/form-element-definition.d.ts +16 -0
  478. package/dist/configurator/ui/assistant/form/registry/form-element-definition.js +1 -0
  479. package/dist/configurator/ui/assistant/form/registry/form-registry.d.ts +31 -0
  480. package/dist/configurator/ui/assistant/form/registry/form-registry.js +1 -0
  481. package/dist/configurator/ui/assistant/form/registry/index.d.ts +6 -0
  482. package/dist/configurator/ui/assistant/form/registry/index.js +1 -0
  483. package/dist/configurator/ui/assistant/form/registry/use-form-registry.d.ts +8 -0
  484. package/dist/configurator/ui/assistant/form/registry/use-form-registry.js +1 -0
  485. package/dist/configurator/ui/assistant/form-elements/FormCard.d.ts +9 -0
  486. package/dist/configurator/ui/assistant/form-elements/FormCard.js +1 -0
  487. package/dist/configurator/ui/assistant/form-elements/FormConfirm.d.ts +9 -0
  488. package/dist/configurator/ui/assistant/form-elements/FormConfirm.js +1 -0
  489. package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +6 -0
  490. package/dist/configurator/ui/assistant/form-elements/FormGroup.js +1 -0
  491. package/dist/configurator/ui/assistant/form-elements/FormNumber.d.ts +9 -0
  492. package/dist/configurator/ui/assistant/form-elements/FormNumber.js +1 -0
  493. package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +6 -0
  494. package/dist/configurator/ui/assistant/form-elements/FormOptions.js +1 -0
  495. package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +6 -0
  496. package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -0
  497. package/dist/configurator/ui/assistant/form-elements/FormSwatch.d.ts +10 -0
  498. package/dist/configurator/ui/assistant/form-elements/FormSwatch.js +1 -0
  499. package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +6 -0
  500. package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -0
  501. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.d.ts +10 -0
  502. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.js +1 -0
  503. package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +38 -0
  504. package/dist/configurator/ui/assistant/form-elements/form-element-props.js +1 -0
  505. package/dist/configurator/ui/assistant/form-elements/index.d.ts +9 -0
  506. package/dist/configurator/ui/assistant/form-elements/index.js +1 -0
  507. package/dist/configurator/ui/assistant/index.d.ts +3 -0
  508. package/dist/configurator/ui/assistant/index.js +1 -1
  509. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.d.ts +16 -0
  510. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.js +1 -0
  511. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.d.ts +34 -0
  512. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.js +1 -0
  513. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.d.ts +25 -0
  514. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.js +1 -0
  515. package/dist/configurator/ui/assistant/reference-link/index.d.ts +3 -0
  516. package/dist/configurator/ui/assistant/reference-link/index.js +1 -0
  517. package/dist/configurator/ui/assistant/reference-link/reference-styles.d.ts +12 -0
  518. package/dist/configurator/ui/assistant/reference-link/reference-styles.js +1 -0
  519. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.d.ts +8 -0
  520. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.js +1 -0
  521. package/dist/configurator/ui/assistant/resource-image/AssistantImage.d.ts +9 -0
  522. package/dist/configurator/ui/assistant/resource-image/AssistantImage.js +1 -0
  523. package/dist/configurator/ui/assistant/resource-image/index.d.ts +3 -0
  524. package/dist/configurator/ui/assistant/resource-image/index.js +1 -0
  525. package/dist/configurator/ui/assistant/resource-image/resource-path.d.ts +2 -0
  526. package/dist/configurator/ui/assistant/resource-image/resource-path.js +1 -0
  527. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.d.ts +5 -0
  528. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.js +1 -0
  529. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.d.ts +9 -0
  530. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.js +1 -0
  531. package/dist/configurator/ui/assistant/screenshots/index.d.ts +2 -0
  532. package/dist/configurator/ui/assistant/screenshots/index.js +1 -0
  533. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.d.ts +14 -0
  534. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.js +1 -0
  535. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +4 -2
  536. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
  537. package/dist/configurator/ui/assistant/thread-items.d.ts +8 -1
  538. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  539. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  540. package/dist/configurator/ui/assistant/use-follow-stream.js +1 -1
  541. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  542. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  543. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  544. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  545. package/dist/configurator/ui/configurator-layout/slots/canvas/LayoutCanvas.js +1 -1
  546. package/dist/configurator/ui/configurator-layout/slots/canvas/SharedCanvas.js +1 -1
  547. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.d.ts +101 -0
  548. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  549. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  550. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  551. package/dist/configurator/ui/configurator-layout/slots/mobile-tabs/use-mobile-tabs.d.ts +1 -1
  552. package/dist/configurator/ui/configurator-layout/slots/mobile-tabs/use-mobile-tabs.js +1 -1
  553. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.d.ts +4 -4
  554. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  555. package/dist/configurator/ui/configurator-layout/slots/services/Services.js +1 -1
  556. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.d.ts +3 -6
  557. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.js +1 -1
  558. package/dist/configurator/ui/configurator-layout/slots/sidebar-tabs/use-sidebar-tabs.d.ts +1 -1
  559. package/dist/configurator/ui/configurator-layout/slots/sidebar-tabs/use-sidebar-tabs.js +1 -1
  560. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  561. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  562. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +0 -74
  563. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  564. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  565. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.d.ts +5 -0
  566. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.js +1 -0
  567. package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
  568. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  569. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  570. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  571. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  572. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  573. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  574. package/dist/configurator/ui/index.d.ts +1 -0
  575. package/dist/configurator/ui/index.js +1 -1
  576. package/dist/configurator/ui/legacy/layout/common/CommonFinalizeButton.js +1 -1
  577. package/dist/configurator/ui/legacy/layout/common/CommonSummaryButton.js +1 -1
  578. package/dist/configurator/ui/legacy/layout/common/CommonTopNavigation.js +1 -1
  579. package/dist/configurator/ui/legacy/layout/common/ReactiveInterfaceLayout.js +1 -1
  580. package/dist/configurator/ui/legacy/layout/common/ResponsiveFinalizeButton.js +1 -1
  581. package/dist/configurator/ui/legacy/layout/common/SummaryReadLayout.js +1 -1
  582. package/dist/configurator/ui/legacy/layout/simple/SimpleOwnerLayout.js +1 -1
  583. package/dist/configurator/ui/legacy/layout/simple/SimpleTopNavigation.js +1 -1
  584. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  585. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.js +1 -1
  586. package/dist/configurator/ui/legacy/layout/steps/StepsOwnerLayout.js +1 -1
  587. package/dist/configurator/ui/legacy/layout/steps/StepsSidebarFooter.js +1 -1
  588. package/dist/configurator/ui/legacy/layout/tabs/TabsOwnerLayout.js +1 -1
  589. package/dist/configurator/ui/legacy/toolbar/common/DimensionUnitSelector.js +1 -1
  590. package/dist/configurator/ui/legacy/toolbar/common/MeasurementsIndicatorsSwitch.js +1 -1
  591. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/FullscreenToolbarAction.js +1 -1
  592. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/HelpToolbarAction.js +1 -1
  593. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/MeasurementsToolbarAction.js +1 -1
  594. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/UndoRedoToolbarGroup.js +1 -1
  595. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.js +2 -6
  596. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.js +1 -1
  597. package/dist/configurator/ui/phoenix-layout-elements/EnterFullscreenToolbarButton.js +1 -1
  598. package/dist/configurator/ui/phoenix-layout-elements/ExitFullscreenToolbarButton.js +1 -1
  599. package/dist/configurator/ui/phoenix-layout-elements/HelpToolbarButton.js +1 -1
  600. package/dist/configurator/ui/phoenix-layout-elements/LanguageMenuAction.js +1 -1
  601. package/dist/configurator/ui/phoenix-layout-elements/LanguageToolbarButton.js +1 -1
  602. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.d.ts +1 -0
  603. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.js +1 -1
  604. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.d.ts +1 -0
  605. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.js +1 -1
  606. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsMenuAction.js +1 -1
  607. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsToolbarButton.js +1 -1
  608. package/dist/configurator/ui/phoenix-layout-elements/RedoToolbarButton.js +1 -1
  609. package/dist/configurator/ui/phoenix-layout-elements/ShareToolbarButton.js +1 -1
  610. package/dist/configurator/ui/phoenix-layout-elements/UndoToolbarButton.js +1 -1
  611. package/dist/configurator/ui/phoenix-layout-elements/header/common/back-button/use-go-back-action.js +1 -1
  612. package/dist/configurator/ui/phoenix-layout-elements/header/common/horizontal-tabs/DesktopHorizontalTabs.js +1 -1
  613. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.d.ts +1 -1
  614. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.js +1 -1
  615. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -8
  616. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.js +1 -1
  617. package/dist/configurator/ui/phoenix-layout-elements/measurements/DimensionUnitSelector.js +1 -1
  618. package/dist/configurator/ui/phoenix-layout-elements/measurements/MeasurementsIndicatorsSwitch.js +1 -1
  619. package/dist/configurator/ui/phoenix-layout-elements/share/ShareModal.js +1 -1
  620. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.d.ts +7 -8
  621. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.js +1 -1
  622. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/basic/BasicFinalizeButton.js +1 -1
  623. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/CustomFinalizeButton.js +1 -1
  624. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/EnterSummaryButton.js +1 -1
  625. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/FinalizeActions.js +1 -1
  626. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/NextStepButton.js +1 -1
  627. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/PreviousStepButton.js +1 -1
  628. package/dist/configurator/ui/preset-layout/CategoryPresetUi.js +1 -1
  629. package/dist/configurator/ui/preset-layout/PresetUi.d.ts +4 -0
  630. package/dist/configurator/ui/preset-layout/PresetUi.js +1 -1
  631. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.d.ts +10 -0
  632. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.js +1 -0
  633. package/dist/configurator/ui/save-message-snackbars/index.d.ts +1 -0
  634. package/dist/configurator/ui/save-message-snackbars/index.js +1 -0
  635. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +16 -19
  636. package/dist/docs/complex-use-cases/focus-mode.mdx +2 -0
  637. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  638. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  639. package/dist/docs/controls/select-child-entity/cardselect.mdx +1 -0
  640. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  641. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  642. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  643. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  644. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  645. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  646. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  647. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  648. package/dist/docs/fabs/basic.mdx +6 -2
  649. package/dist/docs/index.json +59 -1
  650. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  651. package/dist/docs/layouts/custom-layout.mdx +2437 -0
  652. package/dist/docs/layouts/gallery/kestrel-kettle.mdx +1858 -0
  653. package/dist/docs/layouts/header/fixed.mdx +2 -2
  654. package/dist/docs/layouts/header/floating.mdx +2 -2
  655. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  656. package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
  657. package/dist/docs/other-features/client-side-rendering/declarative.mdx +2 -2
  658. package/dist/docs/other-features/error-5xx.mdx +1 -1
  659. package/dist/docs/other-features/navigation-hotspot.mdx +2 -0
  660. package/dist/docs/other-features/not-found-404.mdx +1 -1
  661. package/dist/docs/other-features/side-effects.mdx +8 -11
  662. package/dist/docs/other-features/transformers.mdx +4 -0
  663. package/dist/docs/other-features/violation-messages.mdx +52 -56
  664. package/dist/docs/phoenix/application-states.mdx +9 -7
  665. package/dist/docs/phoenix/clerk-sign-in.mdx +1 -1
  666. package/dist/docs/phoenix/components.mdx +6 -0
  667. package/dist/docs/phoenix/configurator-interface.mdx +400 -81
  668. package/dist/docs/phoenix/deployments.mdx +2 -6
  669. package/dist/docs/phoenix/domain-model.mdx +6 -0
  670. package/dist/docs/phoenix/finalization.mdx +1 -1
  671. package/dist/docs/phoenix/getting-started.mdx +7 -4
  672. package/dist/docs/phoenix/layout-slots.mdx +116 -0
  673. package/dist/docs/phoenix/localization.mdx +10 -6
  674. package/dist/docs/phoenix/migration-guide.mdx +24 -11
  675. package/dist/docs/phoenix/phoenix-cli.mdx +88 -44
  676. package/dist/docs/phoenix/project-structure.mdx +80 -36
  677. package/dist/docs/phoenix/quickstart.mdx +9 -9
  678. package/dist/docs/phoenix/sdk-builder-workflow.mdx +9 -9
  679. package/dist/docs/phoenix/testing.mdx +148 -0
  680. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  681. package/dist/docs/phoenix/webhooks.mdx +23 -6
  682. package/dist/docs/selection-and-highlight/hotspots.mdx +2 -0
  683. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -11
  684. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  685. package/dist/domain/admin-domain/index.js +1 -1
  686. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +2 -2
  687. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  688. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  689. package/dist/domain/application/application-config.d.ts +8 -5
  690. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  691. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  692. package/dist/domain/application/assistant/assistant-manifest.d.ts +25 -2
  693. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +46 -3
  694. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  695. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  696. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  697. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  698. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  699. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  700. package/dist/domain/application/assistant/form/assistant-form-element-name.d.ts +11 -0
  701. package/dist/domain/application/assistant/form/assistant-form-element-name.js +8 -0
  702. package/dist/domain/application/assistant/form/assistant-form-elements.d.ts +174 -0
  703. package/dist/domain/application/assistant/form/assistant-form-elements.js +1 -0
  704. package/dist/domain/application/assistant/form/assistant-resource-path.d.ts +10 -0
  705. package/dist/domain/application/assistant/form/assistant-resource-path.js +1 -0
  706. package/dist/domain/application/assistant/form/index.d.ts +4 -0
  707. package/dist/domain/application/assistant/form/index.js +1 -0
  708. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  709. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  710. package/dist/domain/application/assistant/index.d.ts +8 -2
  711. package/dist/domain/application/assistant/index.js +1 -1
  712. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  713. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  714. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  715. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  716. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +50 -0
  717. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  718. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  719. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  720. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  721. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  722. package/dist/domain/application/assistant-recipe-groups.d.ts +4 -2
  723. package/dist/domain/application/configurator-builder.d.ts +5 -2
  724. package/dist/domain/application/configurator-builder.js +1 -1
  725. package/dist/domain/application/create-initial-published-data.d.ts +6 -7
  726. package/dist/domain/application/index.d.ts +0 -4
  727. package/dist/domain/application/index.js +1 -1
  728. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  729. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  730. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  731. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  732. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  733. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +1 -1
  734. package/dist/domain/application/published-data/map-published-data.d.ts +7 -3
  735. package/dist/domain/available-system-components.d.ts +1 -1
  736. package/dist/domain/available-system-components.js +1 -1
  737. package/dist/domain/core/component/domain-component-optic.d.ts +11 -19
  738. package/dist/domain/core/component/domain-component-optic.js +2 -2
  739. package/dist/domain/core/component/legacy-filter.d.ts +2 -17
  740. package/dist/domain/core/component/system-component-filter.d.ts +36 -18
  741. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  742. package/dist/domain/core/expression/constant-expressions.js +1 -1
  743. package/dist/domain/core/expression/custom-expression.d.ts +17 -4
  744. package/dist/domain/core/expression/custom-expression.js +1 -1
  745. package/dist/domain/core/expression/expression.d.ts +1 -2
  746. package/dist/domain/core/invariant/custom-invariants.d.ts +6 -14
  747. package/dist/domain/core/invariant/invariants.d.ts +1 -4
  748. package/dist/domain/core/invariant/violation.d.ts +50 -2
  749. package/dist/domain/core/invariant/violation.js +1 -1
  750. package/dist/domain/core/model/model.d.ts +1 -1
  751. package/dist/domain/core/recipe/recipes.d.ts +18 -50
  752. package/dist/domain/core/recipe/recipes.js +1 -1
  753. package/dist/domain/core/relation/all-of-type-relation.d.ts +8 -21
  754. package/dist/domain/core/relation/all-of-type-relation.js +1 -1
  755. package/dist/domain/core/relation/direct-relation.d.ts +13 -24
  756. package/dist/domain/core/relation/index.d.ts +0 -1
  757. package/dist/domain/core/relation/indirect-relation.d.ts +12 -67
  758. package/dist/domain/core/relation/indirect-relation.js +1 -1
  759. package/dist/domain/core/relation/relation-factory.d.ts +19 -15
  760. package/dist/domain/core/relation/relation-factory.js +1 -1
  761. package/dist/domain/core/schema/extended-schema-validator.js +1 -1
  762. package/dist/domain/core/state/migrations.d.ts +14 -45
  763. package/dist/domain/core/state/migrations.js +1 -1
  764. package/dist/domain/core/state/state.d.ts +1 -1
  765. package/dist/domain/domain-builder.d.ts +1 -1
  766. package/dist/domain/domain-builder.js +1 -1
  767. package/dist/domain/domain-context/action-system/action-system.d.ts +1 -1
  768. package/dist/domain/domain-context/action-system/action-system.js +1 -1
  769. package/dist/domain/domain-context/action-system/index.d.ts +1 -0
  770. package/dist/domain/domain-context/action-system/index.js +1 -0
  771. package/dist/domain/domain-context/analytics-system/index.d.ts +2 -0
  772. package/dist/domain/domain-context/analytics-system/index.js +1 -0
  773. package/dist/domain/domain-context/create-transformer.d.ts +1 -1
  774. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +2 -2
  775. package/dist/domain/domain-context/dimension-system/dimension-system.js +1 -1
  776. package/dist/domain/domain-context/dimension-system/index.d.ts +1 -0
  777. package/dist/domain/domain-context/dimension-system/index.js +1 -0
  778. package/dist/domain/domain-context/domain-context-systems.d.ts +7 -7
  779. package/dist/domain/domain-context/index.d.ts +8 -17
  780. package/dist/domain/domain-context/index.js +1 -1
  781. package/dist/domain/domain-context/navigation-system/index.d.ts +3 -0
  782. package/dist/domain/domain-context/navigation-system/index.js +1 -0
  783. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +2 -3
  784. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  785. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +1 -1
  786. package/dist/domain/domain-context/recipe-system/index.d.ts +1 -0
  787. package/dist/domain/domain-context/recipe-system/index.js +1 -0
  788. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +1 -1
  789. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  790. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +2 -2
  791. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +2 -2
  792. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +2 -2
  793. package/dist/domain/domain-context/relation-transformers/index.d.ts +4 -0
  794. package/dist/domain/domain-context/relation-transformers/index.js +1 -0
  795. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +2 -2
  796. package/dist/domain/domain-context/store-system/index.d.ts +4 -0
  797. package/dist/domain/domain-context/store-system/index.js +1 -0
  798. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  799. package/dist/domain/domain-context/store-system/store-system.d.ts +6 -3
  800. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  801. package/dist/domain/domain-context/store-system/system-state.d.ts +1 -1
  802. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  803. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +5 -7
  804. package/dist/domain/domain-context/transformers/auto-snap-transformer.js +1 -1
  805. package/dist/domain/domain-context/transformers/chain-builder.d.ts +1 -1
  806. package/dist/domain/domain-context/transformers/context.d.ts +1 -1
  807. package/dist/domain/domain-context/transformers/context.js +1 -1
  808. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  809. package/dist/domain/domain-context/transformers/index.d.ts +1 -1
  810. package/dist/domain/domain-context/transformers/index.js +1 -1
  811. package/dist/domain/domain-context/transformers/when-builder.d.ts +2 -3
  812. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  813. package/dist/domain/domain-context/undo-system.d.ts +29 -2
  814. package/dist/domain/domain-context/undo-system.js +1 -1
  815. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  816. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  817. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  818. package/dist/domain/domain-runtime/access/types.js +1 -1
  819. package/dist/domain/domain-runtime/domain-context/domain-context.js +1 -1
  820. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +17 -22
  821. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  822. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  823. package/dist/domain/domain-runtime/domain-runtime.d.ts +80 -60
  824. package/dist/domain/domain-runtime/environment/types.d.ts +1 -1
  825. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  826. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  827. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  828. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  829. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  830. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  831. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  832. package/dist/domain/domain-runtime/errors/index.js +1 -0
  833. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  834. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  835. package/dist/domain/domain-runtime/index.d.ts +1 -0
  836. package/dist/domain/domain-runtime/index.js +1 -1
  837. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  838. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  839. package/dist/domain/domain-runtime/spec/index.d.ts +2 -5
  840. package/dist/domain/domain-runtime/spec/index.js +1 -1
  841. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  842. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  843. package/dist/domain/{application → domain-runtime/spec/module-checks}/element-registration.d.ts +29 -14
  844. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -0
  845. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.d.ts +12 -0
  846. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.js +1 -0
  847. package/dist/domain/{application → domain-runtime/spec/module-checks}/handler-registration.d.ts +1 -1
  848. package/dist/domain/domain-runtime/spec/module-checks/handler-registration.js +1 -0
  849. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +9 -0
  850. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -0
  851. package/dist/domain/{project-modules → domain-runtime/spec/module-checks}/project-modules.d.ts +8 -1
  852. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -0
  853. package/dist/domain/domain-runtime/spec/{resolve-action-modules.d.ts → module-checks/resolve-action-modules.d.ts} +2 -2
  854. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -0
  855. package/dist/domain/domain-runtime/spec/{resolve-component-optic-modules.d.ts → module-checks/resolve-component-optic-modules.d.ts} +2 -2
  856. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.js +1 -0
  857. package/dist/domain/domain-runtime/spec/{resolve-expression-modules.d.ts → module-checks/resolve-expression-modules.d.ts} +2 -2
  858. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -0
  859. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +22 -0
  860. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -0
  861. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +6 -0
  862. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -0
  863. package/dist/domain/domain-runtime/spec/selectors.d.ts +8 -7
  864. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  865. package/dist/domain/domain-runtime/spec/types.d.ts +5 -2
  866. package/dist/domain/extensions/attribute-switch.d.ts +1 -1
  867. package/dist/domain/extensions/attribute-switch.js +1 -1
  868. package/dist/domain/extensions/canvas-config.d.ts +1 -1
  869. package/dist/domain/extensions/common/angle-indicator-schema.d.ts +2 -2
  870. package/dist/domain/extensions/common/dimension-indicator-schema.d.ts +2 -2
  871. package/dist/domain/extensions/editable-angle-indicator.d.ts +1 -1
  872. package/dist/domain/extensions/editable-distance-dimension-indicator.d.ts +1 -1
  873. package/dist/domain/extensions/editable-offset-indicator.d.ts +1 -1
  874. package/dist/domain/extensions/editable-offset-indicator.js +1 -1
  875. package/dist/domain/extensions/export-images/agent-screenshot.d.ts +24 -0
  876. package/dist/domain/extensions/export-images/agent-screenshot.js +1 -0
  877. package/dist/domain/extensions/export-images/client-side-image.d.ts +14 -0
  878. package/dist/domain/extensions/export-images/client-side-image.js +1 -0
  879. package/dist/domain/extensions/export-images/index.d.ts +3 -0
  880. package/dist/domain/extensions/export-images/index.js +1 -0
  881. package/dist/domain/extensions/{save-template-thumbnail.d.ts → export-images/save-template-thumbnail.d.ts} +4 -4
  882. package/dist/domain/extensions/export-images/save-template-thumbnail.js +1 -0
  883. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -1
  884. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -1
  885. package/dist/domain/extensions/horizontal-tabs.d.ts +2 -2
  886. package/dist/domain/extensions/index.d.ts +1 -2
  887. package/dist/domain/extensions/index.js +1 -1
  888. package/dist/domain/extensions/list-selector-dimension-indicator.d.ts +1 -1
  889. package/dist/domain/extensions/navigation-steps.d.ts +2 -2
  890. package/dist/domain/extensions/offset-indicator.js +1 -1
  891. package/dist/domain/extensions/rotation-handle.d.ts +2 -2
  892. package/dist/domain/extensions/scene-entity-animation.js +1 -1
  893. package/dist/domain/index.d.ts +0 -1
  894. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  895. package/dist/domain/mocks/create-mock-domain-runtime-services.d.ts +1 -1
  896. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +30 -19
  897. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  898. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  899. package/dist/domain/mocks/create-mock-domain.js +1 -1
  900. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  901. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  902. package/dist/domain/mocks/create-test-application-config.js +1 -0
  903. package/dist/domain/mocks/index.d.ts +1 -0
  904. package/dist/domain/mocks/index.js +1 -1
  905. package/dist/domain/projections/blender-projections/blender-projections.d.ts +1 -2
  906. package/dist/domain/projections/blender-projections/camera.d.ts +2 -2
  907. package/dist/domain/projections/collision-projections.d.ts +1 -1
  908. package/dist/domain/projections/composition-projections.d.ts +1 -1
  909. package/dist/domain/projections/constraint-projections.d.ts +1 -1
  910. package/dist/domain/projections/position-projections.d.ts +1 -1
  911. package/dist/domain/projections/projected-entities-projections.d.ts +1 -1
  912. package/dist/domain/projections/snapping-projections.d.ts +1 -1
  913. package/dist/domain/projections/validation-projections.d.ts +2 -2
  914. package/dist/domain/sketching/sketching-projections.d.ts +1 -1
  915. package/dist/domain/system-components/application-config.d.ts +2 -2
  916. package/dist/domain/system-components/child-entity-selection.js +1 -1
  917. package/dist/domain/system-components/collision-box-geometry.d.ts +4 -2
  918. package/dist/domain/system-components/collision-geometry.d.ts +4 -2
  919. package/dist/domain/system-components/collision-point-geometry.d.ts +4 -2
  920. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  921. package/dist/domain/system-components/common/recipes.d.ts +21 -3
  922. package/dist/domain/system-components/common/recipes.js +1 -1
  923. package/dist/domain/system-components/common/scene-entity-control-schema.d.ts +3 -0
  924. package/dist/domain/system-components/common/scene-entity-control-schema.js +1 -1
  925. package/dist/domain/system-components/constraint.d.ts +10 -23
  926. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  927. package/dist/domain/system-components/drag-handle.js +1 -1
  928. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  929. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  930. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  931. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  932. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -1
  933. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  934. package/dist/domain/system-components/material-swatch.js +1 -1
  935. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  936. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  937. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  938. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  939. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  940. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  941. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  942. package/dist/domain/utils/eval-cache.d.ts +1 -1
  943. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  944. package/dist/editor/Editor.d.ts +7 -0
  945. package/dist/editor/Editor.js +1 -1
  946. package/dist/editor/domain-editors/DomainSpecContext.js +1 -1
  947. package/dist/editor/domain-editors/apply-spec-update.d.ts +8 -1
  948. package/dist/editor/domain-editors/apply-spec-update.js +1 -1
  949. package/dist/editor/domain-editors/use-implementation-files.d.ts +1 -2
  950. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  951. package/dist/editor/mocks/CreateMockYaml.js +2 -2
  952. package/dist/editor/mocks/EditorMockContext.d.ts +2 -0
  953. package/dist/editor/mocks/EditorMockContext.js +1 -1
  954. package/dist/editor/screenshot/ScreenshotHandler.js +1 -1
  955. package/dist/globals/index.d.ts +2 -0
  956. package/dist/i18n/locales/cs/messages.js +1 -1
  957. package/dist/i18n/locales/da/messages.js +1 -1
  958. package/dist/i18n/locales/de/messages.js +1 -1
  959. package/dist/i18n/locales/de-AT/messages.js +1 -1
  960. package/dist/i18n/locales/en/messages.js +1 -1
  961. package/dist/i18n/locales/en-AU/messages.js +1 -1
  962. package/dist/i18n/locales/en-GB/messages.js +1 -1
  963. package/dist/i18n/locales/es/messages.js +1 -1
  964. package/dist/i18n/locales/fr/messages.js +1 -1
  965. package/dist/i18n/locales/hu/messages.js +1 -1
  966. package/dist/i18n/locales/it/messages.js +1 -1
  967. package/dist/i18n/locales/nl/messages.js +1 -1
  968. package/dist/i18n/locales/pl/messages.js +1 -1
  969. package/dist/i18n/locales/pt/messages.js +1 -1
  970. package/dist/i18n/locales/ro/messages.js +1 -1
  971. package/dist/i18n/locales/sk/messages.js +1 -1
  972. package/dist/i18n/locales/tr/messages.js +1 -1
  973. package/dist/legacy/domain-cli/gen/configurator-builder.js +13 -12
  974. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -3
  975. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  976. package/dist/legacy/domain-cli/gen/implementation.js +7 -11
  977. package/dist/legacy/domain-cli/gen/invariants.js +3 -4
  978. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  979. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  980. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  981. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +176 -148
  982. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  983. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  984. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  985. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +7 -0
  986. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +17 -15
  987. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +15 -14
  988. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +14 -12
  989. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +14 -13
  990. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +13 -11
  991. package/dist/phoenix/application-spec/application-spec-builder.d.ts +0 -2
  992. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  993. package/dist/phoenix/application-spec/generate-application-spec-project.d.ts +0 -2
  994. package/dist/phoenix/application-spec/generate-application-spec-project.js +2 -2
  995. package/dist/phoenix/application-spec/generate-application-spec-story.js +2 -2
  996. package/dist/phoenix/application-spec/generate-project-files.d.ts +0 -2
  997. package/dist/phoenix/application-spec/project-files.js +1 -1
  998. package/dist/phoenix/bin.d.ts +2 -0
  999. package/dist/phoenix/bin.js +2 -0
  1000. package/dist/phoenix/check-configs/built-in-eslint-config.d.ts +9 -0
  1001. package/dist/phoenix/check-configs/built-in-eslint-config.js +1 -0
  1002. package/dist/phoenix/check-configs/eslint-config.d.ts +10 -0
  1003. package/dist/phoenix/check-configs/eslint-config.js +1 -0
  1004. package/dist/phoenix/check-configs/index.d.ts +8 -0
  1005. package/dist/phoenix/check-configs/index.js +1 -0
  1006. package/dist/phoenix/check-configs/typescript-project.d.ts +5 -0
  1007. package/dist/phoenix/check-configs/typescript-project.js +1 -0
  1008. package/dist/phoenix/cli.d.ts +0 -1
  1009. package/dist/phoenix/cli.js +1 -2
  1010. package/dist/phoenix/commands/build.js +1 -1
  1011. package/dist/phoenix/commands/check.js +1 -1
  1012. package/dist/phoenix/commands/clean.js +1 -1
  1013. package/dist/phoenix/commands/deploy.js +2 -2
  1014. package/dist/phoenix/commands/deps/deps.d.ts +73 -0
  1015. package/dist/phoenix/commands/deps/deps.js +3 -0
  1016. package/dist/phoenix/commands/deps/index.d.ts +1 -0
  1017. package/dist/phoenix/commands/deps/index.js +1 -0
  1018. package/dist/phoenix/commands/deps/sdk-manifest.d.ts +12 -0
  1019. package/dist/phoenix/commands/deps/sdk-manifest.js +1 -0
  1020. package/dist/phoenix/commands/dev.js +5 -5
  1021. package/dist/phoenix/commands/fix.js +1 -1
  1022. package/dist/phoenix/commands/index.d.ts +1 -0
  1023. package/dist/phoenix/commands/index.js +1 -1
  1024. package/dist/phoenix/commands/init.d.ts +17 -5
  1025. package/dist/phoenix/commands/init.js +1 -1
  1026. package/dist/phoenix/commands/link.js +1 -1
  1027. package/dist/phoenix/commands/prettier.js +1 -1
  1028. package/dist/phoenix/commands/sync.js +1 -1
  1029. package/dist/phoenix/commands/unlink.js +1 -1
  1030. package/dist/phoenix/services/application-spec-project-watcher.d.ts +2 -2
  1031. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  1032. package/dist/phoenix/services/lingui.d.ts +8 -0
  1033. package/dist/phoenix/services/lingui.js +1 -1
  1034. package/dist/phoenix/services/source-archive.d.ts +1 -0
  1035. package/dist/phoenix/services/source-archive.js +1 -1
  1036. package/dist/phoenix/services/swc.js +1 -1
  1037. package/dist/phoenix/services/vite-config.js +1 -1
  1038. package/dist/phoenix/utils/git/index.d.ts +1 -0
  1039. package/dist/phoenix/utils/git/index.js +1 -0
  1040. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  1041. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  1042. package/dist/phoenix/utils/index.d.ts +5 -2
  1043. package/dist/phoenix/utils/index.js +1 -1
  1044. package/dist/phoenix/utils/node-version/index.d.ts +1 -0
  1045. package/dist/phoenix/utils/node-version/index.js +1 -0
  1046. package/dist/phoenix/utils/node-version/supported-node-version.d.ts +12 -0
  1047. package/dist/phoenix/utils/node-version/supported-node-version.js +4 -0
  1048. package/dist/phoenix/utils/package-info.d.ts +0 -9
  1049. package/dist/phoenix/utils/package-info.js +1 -1
  1050. package/dist/phoenix/utils/package-manager/index.d.ts +2 -0
  1051. package/dist/phoenix/utils/package-manager/index.js +1 -0
  1052. package/dist/phoenix/utils/package-manager/package-manager-commands.d.ts +19 -0
  1053. package/dist/phoenix/utils/package-manager/package-manager-commands.js +1 -0
  1054. package/dist/phoenix/utils/package-manager/pnpm-project.d.ts +9 -0
  1055. package/dist/phoenix/utils/package-manager/pnpm-project.js +1 -0
  1056. package/dist/phoenix/utils/run-command.d.ts +11 -0
  1057. package/dist/phoenix/utils/run-command.js +1 -1
  1058. package/dist/phoenix/utils/sdk-tool/index.d.ts +1 -0
  1059. package/dist/phoenix/utils/sdk-tool/index.js +1 -0
  1060. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.d.ts +15 -0
  1061. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.js +1 -0
  1062. package/dist/{configurator/common → react-sdk/application-runtime/common-services/analytics}/frontend-analytics.d.ts +6 -0
  1063. package/dist/react-sdk/application-runtime/common-services/analytics/frontend-analytics.js +1 -0
  1064. package/dist/react-sdk/application-runtime/common-services/analytics/index.d.ts +1 -0
  1065. package/dist/react-sdk/application-runtime/common-services/analytics/index.js +1 -1
  1066. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  1067. package/dist/react-sdk/application-runtime/hooks/use-phoenix-element-slots.d.ts +2 -1
  1068. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  1069. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  1070. package/dist/react-sdk/application-runtime/routing/routing-service.d.ts +34 -2
  1071. package/dist/react-sdk/application-runtime/routing/routing-service.js +1 -1
  1072. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +57 -36
  1073. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  1074. package/dist/react-sdk/domain-application-context/DomainLifecycleBoundary.js +1 -1
  1075. package/dist/react-sdk/domain-context/common-hooks/index.d.ts +8 -0
  1076. package/dist/react-sdk/domain-context/common-hooks/index.js +1 -0
  1077. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +41 -0
  1078. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -0
  1079. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +9 -9
  1080. package/dist/react-sdk/domain-context/component-hooks/index.d.ts +1 -0
  1081. package/dist/react-sdk/domain-context/component-hooks/index.js +1 -0
  1082. package/dist/react-sdk/domain-context/component-hooks/use-component.js +1 -1
  1083. package/dist/react-sdk/domain-context/entity-hooks/use-domain-entity-state.js +1 -1
  1084. package/dist/react-sdk/domain-context/entity-hooks/use-entity-price.js +1 -1
  1085. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-id.js +1 -1
  1086. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-state.js +1 -1
  1087. package/dist/react-sdk/domain-context/index.d.ts +8 -1
  1088. package/dist/react-sdk/domain-context/index.js +1 -1
  1089. package/dist/react-sdk/domain-context/system-hooks/composition-hooks.js +1 -1
  1090. package/dist/react-sdk/domain-context/system-hooks/dimension-hooks.js +1 -1
  1091. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.d.ts +8 -0
  1092. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.js +1 -0
  1093. package/dist/react-sdk/domain-context/system-hooks/hover-hooks.js +1 -1
  1094. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.d.ts +24 -0
  1095. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.js +1 -0
  1096. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +11 -0
  1097. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  1098. package/dist/react-sdk/domain-context/system-hooks/selection-hooks.js +1 -1
  1099. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.d.ts +32 -0
  1100. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.js +1 -0
  1101. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.d.ts +57 -0
  1102. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.js +1 -0
  1103. package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.d.ts +61 -0
  1104. package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.js +1 -0
  1105. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.d.ts +20 -0
  1106. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.js +1 -0
  1107. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  1108. package/dist/react-sdk/elements/configurator-error-page-props.d.ts +20 -0
  1109. package/dist/react-sdk/elements/configurator-error-page-props.js +1 -0
  1110. package/dist/react-sdk/elements/index.d.ts +1 -0
  1111. package/dist/react-sdk/handlers/FinalizeActionRunner.d.ts +13 -0
  1112. package/dist/react-sdk/handlers/FinalizeActionRunner.js +1 -0
  1113. package/dist/react-sdk/handlers/FinalizeActionsHost.d.ts +10 -0
  1114. package/dist/react-sdk/handlers/FinalizeActionsHost.js +1 -0
  1115. package/dist/react-sdk/handlers/FinalizeActionsProvider.d.ts +11 -0
  1116. package/dist/react-sdk/handlers/FinalizeActionsProvider.js +1 -0
  1117. package/dist/react-sdk/handlers/finalize-actions-context.d.ts +6 -0
  1118. package/dist/react-sdk/handlers/finalize-actions-context.js +1 -0
  1119. package/dist/react-sdk/handlers/finalize-actions-store.d.ts +23 -0
  1120. package/dist/react-sdk/handlers/finalize-actions-store.js +1 -0
  1121. package/dist/react-sdk/handlers/index.d.ts +6 -0
  1122. package/dist/react-sdk/handlers/index.js +1 -1
  1123. package/dist/react-sdk/handlers/use-finalize-action.d.ts +32 -0
  1124. package/dist/react-sdk/handlers/use-finalize-action.js +1 -0
  1125. package/dist/react-sdk/handlers/use-finalize-actions.d.ts +53 -0
  1126. package/dist/react-sdk/handlers/use-finalize-actions.js +1 -0
  1127. package/dist/react-sdk/index.d.ts +2 -0
  1128. package/dist/react-sdk/index.js +1 -1
  1129. package/dist/react-sdk/loading-state/loading-state-manager.d.ts +5 -0
  1130. package/dist/react-sdk/loading-state/loading-state-manager.js +1 -1
  1131. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.d.ts +25 -0
  1132. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.js +1 -0
  1133. package/dist/react-sdk/responsive-state/canvas-padding.d.ts +14 -0
  1134. package/dist/react-sdk/responsive-state/canvas-padding.js +1 -0
  1135. package/dist/react-sdk/responsive-state/index.d.ts +5 -0
  1136. package/dist/react-sdk/responsive-state/index.js +1 -0
  1137. package/dist/react-sdk/responsive-state/responsive-state-manager.d.ts +111 -0
  1138. package/dist/react-sdk/responsive-state/responsive-state-manager.js +1 -0
  1139. package/dist/react-sdk/responsive-state/use-responsive-state-manager.d.ts +10 -0
  1140. package/dist/react-sdk/responsive-state/use-responsive-state-manager.js +1 -0
  1141. package/dist/react-sdk/responsive-state/use-responsive-state.d.ts +11 -0
  1142. package/dist/react-sdk/responsive-state/use-responsive-state.js +1 -0
  1143. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.d.ts +36 -0
  1144. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.js +1 -0
  1145. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.d.ts +44 -0
  1146. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.js +1 -0
  1147. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.d.ts +38 -0
  1148. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.js +1 -0
  1149. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.d.ts +30 -0
  1150. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.js +1 -0
  1151. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.d.ts +30 -0
  1152. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.js +1 -0
  1153. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.d.ts +9 -0
  1154. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.js +1 -0
  1155. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.d.ts +9 -0
  1156. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.js +1 -0
  1157. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.d.ts +10 -0
  1158. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.js +1 -0
  1159. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.d.ts +9 -0
  1160. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.js +1 -0
  1161. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.d.ts +9 -0
  1162. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.js +1 -0
  1163. package/dist/react-sdk/scene-control-elements/index.d.ts +11 -0
  1164. package/dist/react-sdk/scene-control-elements/index.js +1 -0
  1165. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.d.ts +5 -0
  1166. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.js +1 -0
  1167. package/dist/react-sdk/session/NotAuthenticatedPage.d.ts +4 -0
  1168. package/dist/react-sdk/session/NotAuthenticatedPage.js +1 -1
  1169. package/dist/react-sdk/web-component/create-web-component.js +1 -1
  1170. package/dist/react-sdk/web-component/god-mode/god-mode-registry.d.ts +30 -0
  1171. package/dist/react-sdk/web-component/god-mode/god-mode-registry.js +1 -0
  1172. package/dist/react-sdk/web-component/god-mode/index.d.ts +1 -0
  1173. package/dist/react-sdk/web-component/god-mode/index.js +1 -0
  1174. package/dist/ui-sdk/icons/__generated/Lightbulb.d.ts +3 -0
  1175. package/dist/ui-sdk/icons/__generated/Lightbulb.js +1 -0
  1176. package/dist/ui-sdk/icons/__generated/XCircle.d.ts +3 -0
  1177. package/dist/ui-sdk/icons/__generated/XCircle.js +1 -0
  1178. package/dist/ui-sdk/icons/__generated/index.d.ts +4 -0
  1179. package/dist/ui-sdk/icons/__generated/index.js +1 -1
  1180. package/dist/ui-sdk/icons/icons-registry.js +1 -1
  1181. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.d.ts +9 -0
  1182. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.js +1 -1
  1183. package/dist/ui-sdk/responsive-application/index.d.ts +1 -0
  1184. package/dist/ui-sdk/responsive-application/responsive-state-store.d.ts +57 -0
  1185. package/dist/ui-sdk/responsive-application/responsive-state-store.js +1 -0
  1186. package/dist/ui-sdk/responsive-application/use-store-responsive-info.d.ts +7 -0
  1187. package/dist/ui-sdk/responsive-application/use-store-responsive-info.js +1 -0
  1188. package/dist/ui-sdk/theme/types.d.ts +5 -1
  1189. package/dist/webhook/builders/webhook-builder.js +1 -1
  1190. package/package.json +48 -36
  1191. package/schema/domain-spec.json +1341 -217
  1192. package/dist/application-spec/generate-application/code/templates/env-ci.d.ts +0 -1
  1193. package/dist/application-spec/generate-application/code/templates/env-ci.js +0 -25
  1194. package/dist/application-spec/generate-application/code/templates/env-example.d.ts +0 -1
  1195. package/dist/application-spec/generate-application/code/templates/env-example.js +0 -94
  1196. package/dist/application-spec/generate-application/code/templates/nvmrc.d.ts +0 -1
  1197. package/dist/application-spec/generate-application/code/templates/nvmrc.js +0 -2
  1198. package/dist/application-spec/generate-application/code/templates/package-json.d.ts +0 -10
  1199. package/dist/application-spec/generate-application/code/templates/package-json.js +0 -1
  1200. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  1201. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  1202. package/dist/application-spec/generate-application/code/templates/private-assets-readme.d.ts +0 -1
  1203. package/dist/application-spec/generate-application/code/templates/private-assets-readme.js +0 -24
  1204. package/dist/application-spec/generate-application/code/templates/public-assets-readme.d.ts +0 -1
  1205. package/dist/application-spec/generate-application/code/templates/public-assets-readme.js +0 -24
  1206. package/dist/application-spec/generate-application/code/templates/readme.d.ts +0 -1
  1207. package/dist/application-spec/generate-application/code/templates/readme.js +0 -23
  1208. package/dist/application-spec/generate-application/code/templates/skills/agents-md.d.ts +0 -1
  1209. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +0 -2
  1210. package/dist/application-spec/generate-application/code/templates/webhook-implementation.d.ts +0 -1
  1211. package/dist/application-spec/generate-application/code/templates/webhook-implementation.js +0 -7
  1212. package/dist/configurator/common/frontend-analytics.js +0 -1
  1213. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.d.ts +0 -4
  1214. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.js +0 -1
  1215. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.d.ts +0 -4
  1216. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.js +0 -1
  1217. package/dist/domain/application/element-registration.js +0 -1
  1218. package/dist/domain/application/handler-registration.js +0 -1
  1219. package/dist/domain/application/resolve-imported-transformers.d.ts +0 -23
  1220. package/dist/domain/application/resolve-imported-transformers.js +0 -1
  1221. package/dist/domain/application/resource-builder.d.ts +0 -13
  1222. package/dist/domain/application/resource-builder.js +0 -1
  1223. package/dist/domain/core/relation/relation-implementation.d.ts +0 -7
  1224. package/dist/domain/domain-runtime/spec/invariant-builder.d.ts +0 -61
  1225. package/dist/domain/domain-runtime/spec/invariant-builder.js +0 -1
  1226. package/dist/domain/domain-runtime/spec/resolve-action-modules.js +0 -1
  1227. package/dist/domain/domain-runtime/spec/resolve-component-optic-modules.js +0 -1
  1228. package/dist/domain/domain-runtime/spec/resolve-expression-modules.js +0 -1
  1229. package/dist/domain/domain-runtime/spec/resolve-invariant-modules.d.ts +0 -6
  1230. package/dist/domain/domain-runtime/spec/resolve-invariant-modules.js +0 -1
  1231. package/dist/domain/extensions/client-side-image.d.ts +0 -14
  1232. package/dist/domain/extensions/client-side-image.js +0 -1
  1233. package/dist/domain/extensions/save-template-thumbnail.js +0 -1
  1234. package/dist/domain/project-modules/index.d.ts +0 -1
  1235. package/dist/domain/project-modules/index.js +0 -1
  1236. package/dist/domain/project-modules/project-modules.js +0 -1
  1237. package/dist/phoenix/commands/generate-project-files.d.ts +0 -6
  1238. package/dist/phoenix/commands/generate-project-files.js +0 -1
  1239. package/dist/react-sdk/application-runtime/runtime/god-mode.d.ts +0 -19
  1240. package/dist/react-sdk/application-runtime/runtime/god-mode.js +0 -1
  1241. /package/dist/{domain/core/relation/relation-implementation.js → application-spec/core/expressions/relation-expression-params.js} +0 -0
  1242. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  1243. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  1244. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
@@ -1 +1 @@
1
- import e from"lodash-es/pick.js";export class StateMigrationError extends Error{constructor(e){super(e),this.name="StateMigrationError"}}export const isStateMigrationError=e=>e instanceof StateMigrationError;let t=(t,r,i,o)=>t.map(t=>{let n=r[t.type];if(!n)throw new StateMigrationError(`Unknown entity type "${t.type}". The state contains an entity whose type is not registered in the domain model for this version. Fix: register the entity type in the domain spec, or remove/migrate the stale entity from the preset or configuration data.`);if(n._meta.validator(t))return t;if(i){let r=e(t,Object.keys(n._meta.schema.properties));if(n._meta.validator(t))return o?.error(`Entity ${t.type}#${t.id} had extra fields that had to be trimmed: ${Object.keys(r)}`),r}throw new StateMigrationError(`Entity "${t.type}#${t.id}" does not match its schema in the current domain model. Validation errors: ${JSON.stringify(n._meta.validator.errors)}. Fix: update the entity data to match the schema, add a migration that transforms older data into the current shape, or re-register the schema if it changed.`)});export const MigrateFunctionBuilder={fromVersions:e=>({to:r=>({using:i=>({build:()=>(o,{logger:n,trimExtraProperties:a})=>{let s=e[o.version];if(!s)throw new StateMigrationError(`Unknown model version ${o.version}. The state declares a version that has no registered reflections. Fix: register the version in MigrateFunctionBuilder.fromVersions({ ... }), or correct the version stored on the state.`);let d=t(o.state,s,a,n);o.version===r?n?.debug(`State is already in the latest version ${r}`):n?.debug(`Migrating state from version ${o.version} to ${r}`);for(let s=o.version;s<r;s++){n?.debug(`Applying intermediate migration to version ${s+1}`);let h=e[s+1];if(!h)throw new StateMigrationError(`Unknown model version ${s+1} while migrating from ${o.version} to ${r}. An intermediate version has no registered reflections. Fix: register version ${s+1} in MigrateFunctionBuilder.fromVersions({ ... }).`);let g=i[s+1];if(!g)throw new StateMigrationError(`Missing migration from version ${s} to ${s+1}. No migration is registered for this step while migrating to ${r}. Fix: add the migration in MigrateFunctionBuilder.using({ ${s+1}: ... }).`);d=t(g(d),h,a,n)}if(!e[o.version])throw new StateMigrationError(`Unknown model version ${o.version}. The state declares a version that has no registered reflections. Fix: register the version in MigrateFunctionBuilder.fromVersions({ ... }), or correct the version stored on the state.`);return d}})})})};
1
+ import t from"lodash-es/pick.js";export class StateMigrationError extends Error{constructor(t){super(t),this.name="StateMigrationError"}}export const isStateMigrationError=t=>t instanceof StateMigrationError;let e=(e,r,i,o)=>e.map(e=>{let n=r[e.type];if(!n)throw new StateMigrationError(`Unknown entity type "${e.type}". The state contains an entity whose type is not registered in the domain model for this version. Fix: register the entity type in the domain spec, or remove/migrate the stale entity from the preset or configuration data.`);if(n._meta.validator(e))return e;if(i){let r=t(e,Object.keys(n._meta.schema.properties));if(n._meta.validator(e))return o?.error(`Entity ${e.type}#${e.id} had extra fields that had to be trimmed: ${Object.keys(r)}`),r}throw new StateMigrationError(`Entity "${e.type}#${e.id}" does not match its schema in the current domain model. Validation errors: ${JSON.stringify(n._meta.validator.errors)}. Fix: update the entity data to match the schema, add a migration that transforms older data into the current shape, or re-register the schema if it changed.`)});export const createMigrateFunction=(t,r,i)=>(o,{logger:n,trimExtraProperties:a})=>{let s=t[o.version];if(!s)throw new StateMigrationError(`Unknown model version ${o.version}. The state declares a version that has no registered reflections. Fix: register the version in the model versions passed to createMigrateFunction, or correct the version stored on the state.`);let d=e(o.state,s,a,n);o.version===r?n?.debug(`State is already in the latest version ${r}`):n?.debug(`Migrating state from version ${o.version} to ${r}`);for(let s=o.version;s<r;s++){n?.debug(`Applying intermediate migration to version ${s+1}`);let h=t[s+1];if(!h)throw new StateMigrationError(`Unknown model version ${s+1} while migrating from ${o.version} to ${r}. An intermediate version has no registered reflections. Fix: register version ${s+1} in the model versions passed to createMigrateFunction.`);let g=i[s+1];if(!g)throw new StateMigrationError(`Missing migration from version ${s} to ${s+1}. No migration is registered for this step while migrating to ${r}. Fix: add the migration under key ${s+1} in the migrations passed to createMigrateFunction.`);d=e(g(d),h,a,n)}return d};
@@ -6,4 +6,4 @@ export interface DomainState<ENTITIES extends DomainEntity<string>> {
6
6
  readonly ephemeralRecords: ReadonlyArray<ComponentSnapshot<SystemComponentTypeConstraint>>;
7
7
  }
8
8
  export type DomainStateFactory<ENTITIES extends DomainEntity<string>> = (entities: readonly ENTITIES[], ephemeralRecords: ReadonlyArray<ComponentSnapshot<SystemComponentTypeConstraint>>, rootEntityType: ENTITIES['type']) => DomainState<ENTITIES>;
9
- export declare const createInitialDomainState: <ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES>(entities: readonly ENTITIES[], rootEntityType: ALLOWED_ROOT_ENTITIES['type']) => DomainState<ENTITIES>;
9
+ export declare const createInitialDomainState: <ENTITIES extends DomainEntity<string>>(entities: readonly ENTITIES[], rootEntityType: ENTITIES['type']) => DomainState<ENTITIES>;
@@ -1,6 +1,6 @@
1
1
  import { type ExtendedJsonSchema } from '@salsita-ai/common/utils';
2
2
  import { type $DomainEntity, type $DomainEntityReflection, type ActionDefinition, type AliasMap, type AliasedExpressions, type AnyActionImplementations, type DomainEntity, DomainFactory, type EntityByType, type EntityReflections, type MigrateFunction, type SchemaOfObject } from './core/index.js';
3
- import type { ProjectModule } from './project-modules/index.js';
3
+ import { type ProjectModule } from './domain-runtime/index.js';
4
4
  type $EntityReflections<ENTITIES extends DomainEntity<string>> = {
5
5
  [TYPE in ENTITIES['type']]: $DomainEntityReflection<$DomainEntity<EntityByType<ENTITIES, TYPE>>>;
6
6
  };
@@ -1 +1 @@
1
- import{DomainFactory as t,MigrateFunctionBuilder as i,expandAlias as e}from"./core/index.js";import{resolveActionModules as s,resolveExpressionModules as n}from"./domain-runtime/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
+ import{DomainFactory as t,createMigrateFunction as i,expandAlias as e}from"./core/index.js";import{resolveActionModules as s,resolveExpressionModules as n}from"./domain-runtime/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,m,r,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=m,this.migrate=r,this.isAdminDomain=d,this.actions=p,this.actionImplementations=c}static from(t,e,s,n,a,o,h,l,m,r){let d=i({1:t},1,{});return new DomainBuilder(t,e,s,n,{},a,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(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({1:this.entities},1,{});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,5 +1,5 @@
1
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';
2
+ import type { ActionContext, DomainContextSelectors } from '../../domain-runtime/index.js';
3
3
  export interface ActionSystemContext {
4
4
  /**
5
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,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
+ 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/index.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))}}
@@ -0,0 +1 @@
1
+ export { ActionSystem, type ActionSystemContext, type AnyActionSystem } from './action-system.js';
@@ -0,0 +1 @@
1
+ export{ActionSystem}from"./action-system.js";
@@ -0,0 +1,2 @@
1
+ export { type AnalyticsEvent, AnalyticsEventFactory, AnalyticsEventType, type DataLoadedEvent, type InitEvent, type NavigationEvent, type SessionAuthenticatedEvent, type SystemEvent, type UserActionEvent, } from './analytics-contracts.js';
2
+ export { type AnalyticsSystem, NoopAnalyticsSystem } from './analytics-system.js';
@@ -0,0 +1 @@
1
+ export{AnalyticsEventFactory,AnalyticsEventType}from"./analytics-contracts.js";export{NoopAnalyticsSystem}from"./analytics-system.js";
@@ -1,5 +1,5 @@
1
1
  import type { $DomainEntity, DomainEntity } from '../core/index.js';
2
2
  import type { DomainContextSystems } from './domain-context-systems.js';
3
- import type { UpdateTransformer } from './store-system/store-system.js';
3
+ import type { UpdateTransformer } from './store-system/index.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>;
5
5
  export type TransformerFactory<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,7 +1,7 @@
1
1
  import type { DomainEntity, DomainState, EntityViolation } from '../../core/index.js';
2
2
  import { DimensionUnit, type UnitsConfig } from '../../dimensions/index.js';
3
- import type { DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
4
- import { SystemState } from '../store-system/system-state.js';
3
+ import type { DomainContextSelectors } from '../../domain-runtime/index.js';
4
+ import { SystemState } from '../store-system/index.js';
5
5
  import { type DimensionStateComponent } from './dimension-state.js';
6
6
  export type DistanceDimensionViolation = `${string}.distanceDimension.tooLarge` | `${string}.distanceDimension.tooSmall`;
7
7
  export type GenericDimensionViolation = `${string}.genericDimension.tooLarge` | `${string}.genericDimension.tooSmall`;
@@ -1 +1 @@
1
- import{AngleUnit as t,DEFAULT_DECIMAL_PLACES as e,DimensionUnit as i,defaultAngleToUnit as n,formatDistanceValue as a,isDimensionGreaterThanMax as o,isDimensionLowerThanMin as s}from"../../dimensions/index.js";import{angleDimensionComponent as l,applicationConfigComponent as m,distanceDimensionComponent as r,genericDimensionComponent as c}from"../../system-components/index.js";import{SystemState as u}from"../store-system/system-state.js";import{dimensionStateComponent as g}from"./dimension-state.js";let d={[t.degree]:"\xb0",[t.radian]:"rad"},p={mm:{strategy:"decimal",decimalPlaces:0},cm:{strategy:"decimal",decimalPlaces:1},m:{strategy:"decimal",decimalPlaces:2},inch:{strategy:"fraction",fractionBasis:[3,4]},feet:{strategy:"fraction-inch",fractionBasis:[3,4]}},h=["mm","cm","m","inch","feet"];function f(t,e){let i={sourceUnit:t.sourceUnit,displayUnit:t.displayUnit,unitDisplayConfig:t.unitDisplayConfig,locale:t.locale,omitLeadingZeroUnits:!0},n=a(t.limitValue,i),o=a(t.currentValue,i);return"tooLarge"===e?{id:"sdk.distanceDimension.hintMessageTooLarge",message:"Current value is {0}, which is larger than allowed maximum of {1}.",values:{0:o.valueWithUnit,1:n.valueWithUnit}}:{id:"sdk.distanceDimension.hintMessageTooSmall",message:"Current value is {0}, which is smaller than allowed minimum of {1}.",values:{0:o.valueWithUnit,1:n.valueWithUnit}}}function y(t,e){let i=`${t.currentValue.toFixed(t.decimalPlaces)}\u00A0${t.unit}`,n=`${t.limitValue}\u00A0${t.unit}`;return"tooLarge"===e?{id:"sdk.genericDimension.hintMessageTooLarge",message:"Current value is {currentWithUnit}, which is larger than allowed maximum of {limitWithUnit}.",values:{currentWithUnit:i,limitWithUnit:n}}:{id:"sdk.genericDimension.hintMessageTooSmall",message:"Current value is {currentWithUnit}, which is smaller than allowed minimum of {limitWithUnit}.",values:{currentWithUnit:i,limitWithUnit:n}}}function v(t,e){let i=`${n(t.currentValue,t.unit).toFixed(t.decimalPlaces)}\u00A0${t.unitLabel}`,a=`${n(t.limitValue,t.unit).toFixed(t.decimalPlaces)}\u00A0${t.unitLabel}`;return"tooLarge"===e?{id:"sdk.angleDimension.hintMessageTooLarge",message:"Current value is {currentWithUnit}, which is larger than allowed maximum of {limitWithUnit}.",values:{currentWithUnit:i,limitWithUnit:a}}:{id:"sdk.angleDimension.hintMessageTooSmall",message:"Current value is {currentWithUnit}, which is smaller than allowed minimum of {limitWithUnit}.",values:{currentWithUnit:i,limitWithUnit:a}}}export class DimensionSystem{_context;state;constructor(t){this._context=t,this.state=new u({selectors:this._context.selectors,componentType:g,getInitialState:t=>{let e=this._context.selectors.getComponentReader().readFirstRootComponent({componentTypes:[m]},t);return{unit:e?.state.initialGlobalUnit??e?.state.distanceDataUnit??i.mm}}})}initialize=t=>this.state.getInitialUpdates(t);getDimensionConfig=t=>{let e=this._context.selectors.getComponentReader().readFirstRootComponent({componentTypes:[m]},t);return{distanceDataUnit:e?.state.distanceDataUnit??i.mm,unitDisplayConfig:e?.state.unitDisplayConfig??p,availableDimensions:e?.state.availableDimensions??h}};getDataDistanceUnit=t=>this.getDimensionConfig(t).distanceDataUnit;getGlobalUnit=t=>this.state.get(t).unit;getSetGlobalUnitUpdates=(t,e)=>this.state.getUpdates(e=>({...e,unit:t}),e);_getDistanceComponentViolations=t=>{let e=this.getDimensionConfig(t),i=this.state.get(t),n=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[r]},t),a=[];for(let t of n){let n=t.state.displayUnit??i.unit,l=t.state.unitDisplayConfig?.[n]??e.unitDisplayConfig[n];if(!l)throw Error(`Unit config for ${n} not found!`);let m=t.state.max;if(void 0!==m&&o(t.state.value,m)){let i={currentValue:t.state.value,limitValue:m,sourceUnit:e.distanceDataUnit,displayUnit:n,unitDisplayConfig:l};a.push({entityId:t.componentInstance.entityId,violation:{type:`${t.componentInstance.instanceName}.distanceDimension.tooLarge`,severity:"fatal",message:f({...i,locale:"en-US"},"tooLarge"),formatControlViolationMessage:(t,e)=>f({...i,locale:e.i18n.locale},"tooLarge")}})}let r=t.state.min;if(void 0!==r&&s(t.state.value,r)){let i={currentValue:t.state.value,limitValue:r,sourceUnit:e.distanceDataUnit,displayUnit:n,unitDisplayConfig:l};a.push({entityId:t.componentInstance.entityId,violation:{type:`${t.componentInstance.instanceName}.distanceDimension.tooSmall`,severity:"fatal",message:f({...i,locale:"en-US"},"tooSmall"),formatControlViolationMessage:(t,e)=>f({...i,locale:e.i18n.locale},"tooSmall")}})}}return a};_getGenericComponentViolations=t=>{let i=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[c]},t),n=[];for(let t of i){if(void 0!==t.state.max&&o(t.state.value,t.state.max)){let i={currentValue:t.state.value,limitValue:t.state.max,decimalPlaces:t.state.decimalPlaces??e,unit:t.state.unit};n.push({entityId:t.componentInstance.entityId,violation:{type:`${t.componentInstance.instanceName}.genericDimension.tooLarge`,severity:"fatal",message:y(i,"tooLarge"),formatControlViolationMessage:()=>y(i,"tooLarge")}})}if(void 0!==t.state.min&&s(t.state.value,t.state.min)){let i={currentValue:t.state.value,limitValue:t.state.min,decimalPlaces:t.state.decimalPlaces??e,unit:t.state.unit};n.push({entityId:t.componentInstance.entityId,violation:{type:`${t.componentInstance.instanceName}.genericDimension.tooSmall`,severity:"fatal",message:y(i,"tooSmall"),formatControlViolationMessage:()=>y(i,"tooSmall")}})}}return n};_getAngleComponentViolations=t=>{let i=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[l]},t),n=[];for(let t of i){let i=t.state.unit??"degree",a=d[i],l=t.state.decimalPlaces??e;if(void 0!==t.state.max&&o(t.state.value,t.state.max)){let e={currentValue:t.state.value,limitValue:t.state.max,unit:i,unitLabel:a,decimalPlaces:l};n.push({entityId:t.componentInstance.entityId,violation:{type:`${t.componentInstance.instanceName}.angleDimension.tooLarge`,severity:"fatal",message:v(e,"tooLarge"),formatControlViolationMessage:()=>v(e,"tooLarge")}})}if(void 0!==t.state.min&&s(t.state.value,t.state.min)){let e={currentValue:t.state.value,limitValue:t.state.min,unit:i,unitLabel:a,decimalPlaces:l};n.push({entityId:t.componentInstance.entityId,violation:{type:`${t.componentInstance.instanceName}.angleDimension.tooSmall`,severity:"fatal",message:v(e,"tooSmall"),formatControlViolationMessage:()=>v(e,"tooSmall")}})}}return n};validateState=t=>[...this._getDistanceComponentViolations(t),...this._getGenericComponentViolations(t),...this._getAngleComponentViolations(t)]}
1
+ import{AngleUnit as t,DEFAULT_DECIMAL_PLACES as e,DimensionUnit as i,defaultAngleToUnit as n,formatDistanceValue as a,isDimensionGreaterThanMax as o,isDimensionLowerThanMin as s}from"../../dimensions/index.js";import{angleDimensionComponent as l,applicationConfigComponent as m,distanceDimensionComponent as r,genericDimensionComponent as c}from"../../system-components/index.js";import{SystemState as u}from"../store-system/index.js";import{dimensionStateComponent as g}from"./dimension-state.js";let d={[t.degree]:"\xb0",[t.radian]:"rad"},p={mm:{strategy:"decimal",decimalPlaces:0},cm:{strategy:"decimal",decimalPlaces:1},m:{strategy:"decimal",decimalPlaces:2},inch:{strategy:"fraction",fractionBasis:[3,4]},feet:{strategy:"fraction-inch",fractionBasis:[3,4]}},h=["mm","cm","m","inch","feet"];function f(t,e){let i={sourceUnit:t.sourceUnit,displayUnit:t.displayUnit,unitDisplayConfig:t.unitDisplayConfig,locale:t.locale,omitLeadingZeroUnits:!0},n=a(t.limitValue,i),o=a(t.currentValue,i);return"tooLarge"===e?{id:"sdk.distanceDimension.hintMessageTooLarge",message:"Current value is {0}, which is larger than allowed maximum of {1}.",values:{0:o.valueWithUnit,1:n.valueWithUnit}}:{id:"sdk.distanceDimension.hintMessageTooSmall",message:"Current value is {0}, which is smaller than allowed minimum of {1}.",values:{0:o.valueWithUnit,1:n.valueWithUnit}}}function y(t,e){let i=`${t.currentValue.toFixed(t.decimalPlaces)}\u00A0${t.unit}`,n=`${t.limitValue}\u00A0${t.unit}`;return"tooLarge"===e?{id:"sdk.genericDimension.hintMessageTooLarge",message:"Current value is {currentWithUnit}, which is larger than allowed maximum of {limitWithUnit}.",values:{currentWithUnit:i,limitWithUnit:n}}:{id:"sdk.genericDimension.hintMessageTooSmall",message:"Current value is {currentWithUnit}, which is smaller than allowed minimum of {limitWithUnit}.",values:{currentWithUnit:i,limitWithUnit:n}}}function v(t,e){let i=`${n(t.currentValue,t.unit).toFixed(t.decimalPlaces)}\u00A0${t.unitLabel}`,a=`${n(t.limitValue,t.unit).toFixed(t.decimalPlaces)}\u00A0${t.unitLabel}`;return"tooLarge"===e?{id:"sdk.angleDimension.hintMessageTooLarge",message:"Current value is {currentWithUnit}, which is larger than allowed maximum of {limitWithUnit}.",values:{currentWithUnit:i,limitWithUnit:a}}:{id:"sdk.angleDimension.hintMessageTooSmall",message:"Current value is {currentWithUnit}, which is smaller than allowed minimum of {limitWithUnit}.",values:{currentWithUnit:i,limitWithUnit:a}}}export class DimensionSystem{_context;state;constructor(t){this._context=t,this.state=new u({selectors:this._context.selectors,componentType:g,getInitialState:t=>{let e=this._context.selectors.getComponentReader().readFirstRootComponent({componentTypes:[m]},t);return{unit:e?.state.initialGlobalUnit??e?.state.distanceDataUnit??i.mm}}})}initialize=t=>this.state.getInitialUpdates(t);getDimensionConfig=t=>{let e=this._context.selectors.getComponentReader().readFirstRootComponent({componentTypes:[m]},t);return{distanceDataUnit:e?.state.distanceDataUnit??i.mm,unitDisplayConfig:e?.state.unitDisplayConfig??p,availableDimensions:e?.state.availableDimensions??h}};getDataDistanceUnit=t=>this.getDimensionConfig(t).distanceDataUnit;getGlobalUnit=t=>this.state.get(t).unit;getSetGlobalUnitUpdates=(t,e)=>this.state.getUpdates(e=>({...e,unit:t}),e);_getDistanceComponentViolations=t=>{let e=this.getDimensionConfig(t),i=this.state.get(t),n=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[r]},t),a=[];for(let t of n){let n=t.state.displayUnit??i.unit,l=t.state.unitDisplayConfig?.[n]??e.unitDisplayConfig[n];if(!l)throw Error(`Unit config for ${n} not found!`);let m=t.state.max;if(void 0!==m&&o(t.state.value,m)){let i={currentValue:t.state.value,limitValue:m,sourceUnit:e.distanceDataUnit,displayUnit:n,unitDisplayConfig:l};a.push({entityId:t.componentInstance.entityId,violation:{type:`${t.componentInstance.instanceName}.distanceDimension.tooLarge`,severity:"fatal",message:f({...i,locale:"en-US"},"tooLarge"),formatControlViolationMessage:(t,e)=>f({...i,locale:e.i18n.locale},"tooLarge")}})}let r=t.state.min;if(void 0!==r&&s(t.state.value,r)){let i={currentValue:t.state.value,limitValue:r,sourceUnit:e.distanceDataUnit,displayUnit:n,unitDisplayConfig:l};a.push({entityId:t.componentInstance.entityId,violation:{type:`${t.componentInstance.instanceName}.distanceDimension.tooSmall`,severity:"fatal",message:f({...i,locale:"en-US"},"tooSmall"),formatControlViolationMessage:(t,e)=>f({...i,locale:e.i18n.locale},"tooSmall")}})}}return a};_getGenericComponentViolations=t=>{let i=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[c]},t),n=[];for(let t of i){if(void 0!==t.state.max&&o(t.state.value,t.state.max)){let i={currentValue:t.state.value,limitValue:t.state.max,decimalPlaces:t.state.decimalPlaces??e,unit:t.state.unit};n.push({entityId:t.componentInstance.entityId,violation:{type:`${t.componentInstance.instanceName}.genericDimension.tooLarge`,severity:"fatal",message:y(i,"tooLarge"),formatControlViolationMessage:()=>y(i,"tooLarge")}})}if(void 0!==t.state.min&&s(t.state.value,t.state.min)){let i={currentValue:t.state.value,limitValue:t.state.min,decimalPlaces:t.state.decimalPlaces??e,unit:t.state.unit};n.push({entityId:t.componentInstance.entityId,violation:{type:`${t.componentInstance.instanceName}.genericDimension.tooSmall`,severity:"fatal",message:y(i,"tooSmall"),formatControlViolationMessage:()=>y(i,"tooSmall")}})}}return n};_getAngleComponentViolations=t=>{let i=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[l]},t),n=[];for(let t of i){let i=t.state.unit??"degree",a=d[i],l=t.state.decimalPlaces??e;if(void 0!==t.state.max&&o(t.state.value,t.state.max)){let e={currentValue:t.state.value,limitValue:t.state.max,unit:i,unitLabel:a,decimalPlaces:l};n.push({entityId:t.componentInstance.entityId,violation:{type:`${t.componentInstance.instanceName}.angleDimension.tooLarge`,severity:"fatal",message:v(e,"tooLarge"),formatControlViolationMessage:()=>v(e,"tooLarge")}})}if(void 0!==t.state.min&&s(t.state.value,t.state.min)){let e={currentValue:t.state.value,limitValue:t.state.min,unit:i,unitLabel:a,decimalPlaces:l};n.push({entityId:t.componentInstance.entityId,violation:{type:`${t.componentInstance.instanceName}.angleDimension.tooSmall`,severity:"fatal",message:v(e,"tooSmall"),formatControlViolationMessage:()=>v(e,"tooSmall")}})}}return n};validateState=t=>[...this._getDistanceComponentViolations(t),...this._getGenericComponentViolations(t),...this._getAngleComponentViolations(t)]}
@@ -0,0 +1 @@
1
+ export { type AngleDimensionViolation, type AnyDimensionSystem, DimensionSystem, type DimensionSystemContext, type DistanceDimensionViolation, type GenericDimensionViolation, } from './dimension-system.js';
@@ -0,0 +1 @@
1
+ export{DimensionSystem}from"./dimension-system.js";
@@ -1,12 +1,12 @@
1
1
  import type { $DomainEntity, ActionTypes, Domain, DomainEntity } from '../core/index.js';
2
- import type { ComponentReader, DomainContextSelectors } from '../domain-runtime/domain-context/index.js';
2
+ import type { ComponentReader, DomainContextSelectors } from '../domain-runtime/index.js';
3
3
  import type { BlenderProjections, CollisionProjections, CompositionProjections, ConstraintProjections, PositionProjections, ProjectedEntitiesProjections, SnappingProjections, ValidationProjections } from '../projections/index.js';
4
- import type { SketchingProjections } from '../sketching/sketching-projections.js';
5
- import type { ActionSystem } from './action-system/action-system.js';
6
- import type { DimensionSystem } from './dimension-system/dimension-system.js';
7
- import type { NavigationSystem } from './navigation-system/navigation-system.js';
8
- import type { RecipeCookerSystem } from './recipe-system/recipe-cooker-system.js';
9
- import type { StoreSystem } from './store-system/store-system.js';
4
+ import type { SketchingProjections } from '../sketching/index.js';
5
+ import type { ActionSystem } from './action-system/index.js';
6
+ import type { DimensionSystem } from './dimension-system/index.js';
7
+ import type { NavigationSystem } from './navigation-system/index.js';
8
+ import type { RecipeCookerSystem } from './recipe-system/index.js';
9
+ import type { StoreSystem } from './store-system/index.js';
10
10
  import type { UndoSystem } from './undo-system.js';
11
11
  /**
12
12
  * Stable domain system graph owned by one application slot in the domain runtime.
@@ -1,20 +1,11 @@
1
- export { type AnalyticsSystem, NoopAnalyticsSystem } from './analytics-system/analytics-system.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
- 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
- export { createAutoSelectionTransformer, NavigationSystem, type NavigationSystemContext, } from './navigation-system/navigation-system.js';
5
- export { createResetSelectionOnNavigationTransformer, createNavigationOnSelectionTransformer, createNavigationOnDeselectTransformer, createSelectParentOnDeselectionTransformer, createNavigationOnSelectionChangeTransformer, } from './navigation-system/selection-transformers.js';
6
- export { StoreSystem, type TransformerRegistration, type UpdateTransformer, type TransformerLogFunction, type Transformers, type StateSliceName, type StateEmissionKind, type CommitPreparedOutcome, } from './store-system/store-system.js';
7
- export { nextDomainEntityId, getIdSequence } from './store-system/next-domain-entity-id.js';
8
- export { applyUpdates } from './store-system/apply-updates.js';
9
- export { SystemState, SystemStateInitialUpdateTag, SystemStateUpdateTag, type SystemStateContext, } from './store-system/system-state.js';
10
- export { createRefReplaceTransformer } from './relation-transformers/replace-refs.js';
11
- export { createCascadeDeletesTransformer } from './relation-transformers/cascade-deletes.js';
12
- export { createCascadeRefPruningTransformer } from './relation-transformers/cascade-ref-pruning.js';
13
- export { createCreateEntityRefsTransformer } from './relation-transformers/create-entity-refs.js';
14
- export { type CanBeUndonePredicate, type CanBeUndoneContext, type UndoCapabilities, UndoSystem, UNDO_REDO_RESET_TAG, isUndoRedoReset, } from './undo-system.js';
15
- export { DimensionSystem, type AnyDimensionSystem, type DimensionSystemContext, type AngleDimensionViolation, type DistanceDimensionViolation, type GenericDimensionViolation, } from './dimension-system/dimension-system.js';
16
- export { ActionSystem, type AnyActionSystem, type ActionSystemContext } from './action-system/action-system.js';
17
- export { RecipeCookerSystem, type AnyRecipeCookerSystem, type RecipeCookerSystemContext, ReplaceRecipeUpdateTag, isReplaceEntityUpdate, type IsReplaceRecipeUpdate, CreateRecipeUpdateTag, isCreateEntityUpdate, type IsCreateRecipeUpdate, } from './recipe-system/recipe-cooker-system.js';
1
+ export { type AnalyticsSystem, NoopAnalyticsSystem, type AnalyticsEvent, AnalyticsEventFactory, AnalyticsEventType, type DataLoadedEvent, type InitEvent, type NavigationEvent, type SessionAuthenticatedEvent, type SystemEvent, type UserActionEvent, } from './analytics-system/index.js';
2
+ export { NavigationUpdateTag, isInitialNavigationUpdate, isNavigationUpdate, isInitialViewUpdate, isViewUpdate, isInitialSelectionUpdate, isSelectUpdate, isDeselectUpdate, isInitialFullscreenUpdate, isToggleFullscreenUpdate, isInitialDebugUpdate, isInitialViewportUpdate, isSetViewportUpdate, isInitialDragUpdate, isDragStartUpdate, isDragEndUpdate, isInitialToolUpdate, isToolUpdate, isExportUpdate, createAutoSelectionTransformer, NavigationSystem, type NavigationSystemContext, createResetSelectionOnNavigationTransformer, createNavigationOnSelectionTransformer, createNavigationOnDeselectTransformer, createSelectParentOnDeselectionTransformer, createNavigationOnSelectionChangeTransformer, type AnyNavigationSystem, } from './navigation-system/index.js';
3
+ export { StoreSystem, type TransformerRegistration, type UpdateTransformer, type TransformerLogFunction, type Transformers, type StateSliceName, type StateEmissionKind, type CommitPreparedOutcome, nextDomainEntityId, getIdSequence, applyUpdates, SystemState, SystemStateInitialUpdateTag, SystemStateUpdateTag, type SystemStateContext, type AnyCreateTransformersFactory, type AnyStoreSystem, type Unregister, } from './store-system/index.js';
4
+ export { createRefReplaceTransformer, createCascadeDeletesTransformer, createCascadeRefPruningTransformer, createCreateEntityRefsTransformer, } from './relation-transformers/index.js';
5
+ export { type CanBeUndonePredicate, type CanBeUndoneContext, type UndoCapabilities, type UndoStep, UndoSystem, UNDO_REDO_RESET_TAG, isUndoRedoReset, type AnyUndoSystem, } from './undo-system.js';
6
+ export { DimensionSystem, type AnyDimensionSystem, type DimensionSystemContext, type AngleDimensionViolation, type DistanceDimensionViolation, type GenericDimensionViolation, } from './dimension-system/index.js';
7
+ export { ActionSystem, type AnyActionSystem, type ActionSystemContext } from './action-system/index.js';
8
+ export { RecipeCookerSystem, type AnyRecipeCookerSystem, type RecipeCookerSystemContext, ReplaceRecipeUpdateTag, isReplaceEntityUpdate, type IsReplaceRecipeUpdate, CreateRecipeUpdateTag, isCreateEntityUpdate, type IsCreateRecipeUpdate, } from './recipe-system/index.js';
18
9
  export { type DomainContextSystems, type AnyDomainContextSystems } from './domain-context-systems.js';
19
10
  export { createTransformer, type TransformerFactory } from './create-transformer.js';
20
11
  export * from './transformers/index.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{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,AnalyticsEventFactory,AnalyticsEventType}from"./analytics-system/index.js";export{NavigationUpdateTag,isInitialNavigationUpdate,isNavigationUpdate,isInitialViewUpdate,isViewUpdate,isInitialSelectionUpdate,isSelectUpdate,isDeselectUpdate,isInitialFullscreenUpdate,isToggleFullscreenUpdate,isInitialDebugUpdate,isInitialViewportUpdate,isSetViewportUpdate,isInitialDragUpdate,isDragStartUpdate,isDragEndUpdate,isInitialToolUpdate,isToolUpdate,isExportUpdate,createAutoSelectionTransformer,NavigationSystem,createResetSelectionOnNavigationTransformer,createNavigationOnSelectionTransformer,createNavigationOnDeselectTransformer,createSelectParentOnDeselectionTransformer,createNavigationOnSelectionChangeTransformer}from"./navigation-system/index.js";export{StoreSystem,nextDomainEntityId,getIdSequence,applyUpdates,SystemState,SystemStateInitialUpdateTag,SystemStateUpdateTag}from"./store-system/index.js";export{createRefReplaceTransformer,createCascadeDeletesTransformer,createCascadeRefPruningTransformer,createCreateEntityRefsTransformer}from"./relation-transformers/index.js";export{UndoSystem,UNDO_REDO_RESET_TAG,isUndoRedoReset}from"./undo-system.js";export{DimensionSystem}from"./dimension-system/index.js";export{ActionSystem}from"./action-system/index.js";export{RecipeCookerSystem,ReplaceRecipeUpdateTag,isReplaceEntityUpdate,CreateRecipeUpdateTag,isCreateEntityUpdate}from"./recipe-system/index.js";export{createTransformer}from"./create-transformer.js";export*from"./transformers/index.js";
@@ -0,0 +1,3 @@
1
+ export { type AnyNavigationSystem, NavigationSystem, type NavigationSystemContext, createAutoSelectionTransformer, } from './navigation-system.js';
2
+ export { NavigationUpdateTag, isDeselectUpdate, isDragEndUpdate, isDragStartUpdate, isExportUpdate, isInitialDebugUpdate, isInitialDragUpdate, isInitialFullscreenUpdate, isInitialNavigationUpdate, isInitialSelectionUpdate, isInitialToolUpdate, isInitialViewUpdate, isInitialViewportUpdate, isNavigationUpdate, isSelectUpdate, isSetViewportUpdate, isToggleFullscreenUpdate, isToolUpdate, isViewUpdate, } from './navigation-updates.js';
3
+ export { createNavigationOnDeselectTransformer, createNavigationOnSelectionChangeTransformer, createNavigationOnSelectionTransformer, createResetSelectionOnNavigationTransformer, createSelectParentOnDeselectionTransformer, } from './selection-transformers.js';
@@ -0,0 +1 @@
1
+ export{NavigationSystem,createAutoSelectionTransformer}from"./navigation-system.js";export{NavigationUpdateTag,isDeselectUpdate,isDragEndUpdate,isDragStartUpdate,isExportUpdate,isInitialDebugUpdate,isInitialDragUpdate,isInitialFullscreenUpdate,isInitialNavigationUpdate,isInitialSelectionUpdate,isInitialToolUpdate,isInitialViewUpdate,isInitialViewportUpdate,isNavigationUpdate,isSelectUpdate,isSetViewportUpdate,isToggleFullscreenUpdate,isToolUpdate,isViewUpdate}from"./navigation-updates.js";export{createNavigationOnDeselectTransformer,createNavigationOnSelectionChangeTransformer,createNavigationOnSelectionTransformer,createResetSelectionOnNavigationTransformer,createSelectParentOnDeselectionTransformer}from"./selection-transformers.js";
@@ -1,7 +1,6 @@
1
1
  import { type DomainEntity, type DomainState, type Viewport } from '../../core/index.js';
2
- import type { DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
3
- import type { DomainServicesSelectors } from '../../domain-runtime/domain-services/index.js';
4
- import type { UpdateTransformer } from '../store-system/store-system.js';
2
+ import type { DomainContextSelectors, DomainServicesSelectors } from '../../domain-runtime/index.js';
3
+ import type { UpdateTransformer } from '../store-system/index.js';
5
4
  /**
6
5
  * Automatically selects new/replaced entities and deselects deleted entities.
7
6
  * This transformers runs automatically with priority 100.
@@ -1 +1 @@
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
+ 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/index.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,6 +1,6 @@
1
1
  import { type $DomainEntity, type DomainEntity } from '../../core/index.js';
2
2
  import type { DomainContextSystems } from '../domain-context-systems.js';
3
- import type { UpdateTransformer } from '../store-system/store-system.js';
3
+ import type { UpdateTransformer } from '../store-system/index.js';
4
4
  /**
5
5
  * Resets selection (Deselect update) when the navigation state is one of the provided states.
6
6
  */
@@ -0,0 +1 @@
1
+ export { type AnyRecipeCookerSystem, CreateRecipeUpdateTag, type IsCreateRecipeUpdate, type IsReplaceRecipeUpdate, RecipeCookerSystem, type RecipeCookerSystemContext, ReplaceRecipeUpdateTag, isCreateEntityUpdate, isReplaceEntityUpdate, } from './recipe-cooker-system.js';
@@ -0,0 +1 @@
1
+ export{CreateRecipeUpdateTag,RecipeCookerSystem,ReplaceRecipeUpdateTag,isCreateEntityUpdate,isReplaceEntityUpdate}from"./recipe-cooker-system.js";
@@ -1,5 +1,5 @@
1
1
  import { type DomainEntity, type DomainEntityCreation, type DomainEntityId, type DomainEntityReplacement, type DomainState, type EntityRecipe, type StateUpdate } from '../../core/index.js';
2
- import type { DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
2
+ import type { DomainContextSelectors } from '../../domain-runtime/index.js';
3
3
  export declare const CreateRecipeUpdateTag = "createRecipe";
4
4
  export type IsCreateRecipeUpdate<ENTITIES extends DomainEntity<string>> = <TYPE extends ENTITIES['type']>(update: StateUpdate<ENTITIES, ENTITIES>, types: readonly TYPE[]) => update is DomainEntityCreation<Extract<ENTITIES, {
5
5
  type: TYPE;
@@ -1 +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
+ 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/index.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,6 +1,6 @@
1
1
  import { type DomainEntity } from '../../core/index.js';
2
- import type { CompositionProjections } from '../../projections/composition-projections.js';
3
- import type { IncrementalUpdateTransformer } from '../store-system/store-system.js';
2
+ import type { CompositionProjections } from '../../projections/index.js';
3
+ import type { IncrementalUpdateTransformer } from '../store-system/index.js';
4
4
  /**
5
5
  * This transformer reacts on entity deletion and removes any descendant entities of the deleted one.
6
6
  */
@@ -1,6 +1,6 @@
1
1
  import { type DomainEntity } from '../../core/index.js';
2
- import type { ComponentReader } from '../../domain-runtime/domain-context/index.js';
3
- import type { IncrementalUpdateTransformer } from '../store-system/store-system.js';
2
+ import type { ComponentReader } from '../../domain-runtime/index.js';
3
+ import type { IncrementalUpdateTransformer } from '../store-system/index.js';
4
4
  /**
5
5
  * This transformer reacts on entity deletion and removes references to the deleted entities from any reference field,
6
6
  * through the appropriate system component.
@@ -1,6 +1,6 @@
1
1
  import { type DomainEntity } from '../../core/index.js';
2
- import type { ComponentReader } from '../../domain-runtime/domain-context/index.js';
3
- import type { IncrementalUpdateTransformer } from '../store-system/store-system.js';
2
+ import type { ComponentReader } from '../../domain-runtime/index.js';
3
+ import type { IncrementalUpdateTransformer } from '../store-system/index.js';
4
4
  /**
5
5
  * This transformer reacts on entity creation and adds the entity to all references specified.
6
6
  */
@@ -0,0 +1,4 @@
1
+ export { createCascadeDeletesTransformer } from './cascade-deletes.js';
2
+ export { createCascadeRefPruningTransformer } from './cascade-ref-pruning.js';
3
+ export { createCreateEntityRefsTransformer } from './create-entity-refs.js';
4
+ export { createRefReplaceTransformer } from './replace-refs.js';
@@ -0,0 +1 @@
1
+ export{createCascadeDeletesTransformer}from"./cascade-deletes.js";export{createCascadeRefPruningTransformer}from"./cascade-ref-pruning.js";export{createCreateEntityRefsTransformer}from"./create-entity-refs.js";export{createRefReplaceTransformer}from"./replace-refs.js";
@@ -1,6 +1,6 @@
1
1
  import { type DomainEntity } from '../../core/index.js';
2
- import type { ComponentReader } from '../../domain-runtime/domain-context/index.js';
3
- import type { IncrementalUpdateTransformer } from '../store-system/store-system.js';
2
+ import type { ComponentReader } from '../../domain-runtime/index.js';
3
+ import type { IncrementalUpdateTransformer } from '../store-system/index.js';
4
4
  /**
5
5
  * This transformer reacts on entity replacement and updates references to the replaced entities in any other entity.
6
6
  */
@@ -0,0 +1,4 @@
1
+ export { applyUpdates } from './apply-updates.js';
2
+ export { getIdSequence, nextDomainEntityId } from './next-domain-entity-id.js';
3
+ export { type AnyCreateTransformersFactory, type AnyStoreSystem, type CommitPreparedOutcome, type IncrementalUpdateTransformer, type StateEmissionKind, type StateSliceName, StoreSystem, type TransformerLogFunction, type TransformerRegistration, type Transformers, type Unregister, type UpdateTransformer, } from './store-system.js';
4
+ export { SystemState, type SystemStateContext, SystemStateInitialUpdateTag, SystemStateUpdateTag, } from './system-state.js';
@@ -0,0 +1 @@
1
+ export{applyUpdates}from"./apply-updates.js";export{getIdSequence,nextDomainEntityId}from"./next-domain-entity-id.js";export{StoreSystem}from"./store-system.js";export{SystemState,SystemStateInitialUpdateTag,SystemStateUpdateTag}from"./system-state.js";
@@ -1 +1 @@
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
+ import{systemUpdateFactory as e}from"../../core/index.js";import{getIdSequence as t}from"./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 d=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);d.set(e,{type:a.type,defaults:a.defaults,parentId:t,instanceName:n,key:a.key})}}let r=new Map;for(let e of a)if(n(e)){let t=o(e.parentId,e.instanceName,e.key,e.type);r.set(t,e)}let s=[],l=t(a,i);for(let[t,n]of d)if(!r.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 r)d.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,8 +1,6 @@
1
1
  import { type ObservableWithLastValue } from '@salsita-ai/common/utils';
2
2
  import { type $DomainEntity, type ComponentModification, type DataUpdate, type DomainEntity, type DomainEntityModification, type DomainState, type EphemeralRecordModification, type StateEmission, type StateUpdate, type StateUpdateEmission, type SystemComponentTypeConstraint, type TransformerPhase } from '../../core/index.js';
3
- import type { DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
4
- import type { DomainServicesSelectors } from '../../domain-runtime/domain-services/index.js';
5
- import type { EnvironmentSelectors } from '../../domain-runtime/environment/index.js';
3
+ import type { DomainContextSelectors, DomainServicesSelectors, EnvironmentSelectors } from '../../domain-runtime/index.js';
6
4
  import type { DomainContextSystems } from '../domain-context-systems.js';
7
5
  export type Unregister = () => void;
8
6
  export type StateSliceName =
@@ -55,6 +53,11 @@ export declare class StoreSystem<ENTITIES extends DomainEntity<string>, $MAP ext
55
53
  private readonly _context;
56
54
  readonly stateSlices: Readonly<Record<StateSliceName, ObservableWithLastValue<StateEmission<ENTITIES, $MAP>>>>;
57
55
  get isInitialized(): boolean;
56
+ /**
57
+ * True while a change the user is making, such as a drag, is staged and neither committed nor
58
+ * rolled back. A hover is shown through a staged emission too, but stages no updates.
59
+ */
60
+ get hasStagedUpdates(): boolean;
58
61
  private _onBeforeCommitHooks;
59
62
  private readonly committed;
60
63
  private readonly potentiallyInvalid;
@@ -1,2 +1,2 @@
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
+ 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 v,createEvalCacheToken as f,getEvalCache as g,setEvalCache as u}from"../../utils/eval-cache.js";import{createCascadeDeletesTransformer as y,createCascadeRefPruningTransformer as S}from"../relation-transformers/index.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=f({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}get hasStagedUpdates(){return void 0!==this.stagedUpdates}_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);v(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 v(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)))});v(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,5 +1,5 @@
1
1
  import { type DomainEntity, type DomainState, type StateOfComponent, type SystemComponentTypeConstraint, type WritableStateOfComponent } from '../../core/index.js';
2
- import type { DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
2
+ import type { DomainContextSelectors } from '../../domain-runtime/index.js';
3
3
  export declare const SystemStateInitialUpdateTag = "system.state.initial";
4
4
  export declare const SystemStateUpdateTag = "system.state";
5
5
  type CombinedComponentState<COMPONENT_TYPE extends SystemComponentTypeConstraint> = WritableStateOfComponent<COMPONENT_TYPE> & StateOfComponent<COMPONENT_TYPE>;
@@ -1 +1 @@
1
- import{match as e}from"ts-pattern";import{isEqualArray as t,isNonNullish as i}from"@salsita-ai/common/utils";import{domainEntityTypeFromId as r}from"../../core/index.js";import{isDeselectUpdate as n,isNavigationUpdate as o,isSelectUpdate as a,isViewUpdate as l}from"../navigation-system/navigation-updates.js";import{createCascadeDeletesTransformer as s}from"../relation-transformers/cascade-deletes.js";import{createCascadeRefPruningTransformer as p}from"../relation-transformers/cascade-ref-pruning.js";import{createCreateEntityRefsTransformer as d}from"../relation-transformers/create-entity-refs.js";import{createRefReplaceTransformer as f}from"../relation-transformers/replace-refs.js";import{getIdSequence as g}from"../store-system/next-domain-entity-id.js";import{chainBuilder as u}from"./chain-builder.js";import{isContextWithEntityId as c,isContextWithUpdate as h}from"./context.js";let m=(e,t)=>{let r=[d(e.componentReader),f(e.componentReader),s(e.compositionProjections),p(e.componentReader),t?e.storeSystem.transformToDataUpdates:void 0].filter(i);return(e,t,i,n,o)=>r.reduce((e,r)=>r(e,t,i,n,o),e)};export const updateActions=s=>p=>{let d,f=t=>i=>u(r=>{let n=m(r,s);return(o,a,l,s)=>{let d=p(o,a,l,r,s);return d.length?d.reduce((r,o)=>{let p=i({...o,getIdSequence:()=>g(a.entities,r)});return e(t).with("applySideEffect",()=>0===p.length?(s?.("no-apply","No side effects applied"),r):(s?.("apply","Applying side effects",{added:p}),[...r,...n(p,a,l,s,r)])).with("overrideMatchingUpdate",()=>{let e=h(o)?o.update:null;if(1===p.length&&p[0]===e)return s?.("no-apply","Update replaced with itself, no-op"),r;s?.("apply","Overriding matched updates",{removed:[e],added:p});let t=r.filter(t=>t!==e);return[...t,...n(p,a,l,s,t)]}).exhaustive()},o):o}});return{applySideEffect:f("applySideEffect"),overrideMatchingUpdate:f("overrideMatchingUpdate"),overrideAllUpdates:e=>u(i=>{let r=m(i,s);return(n,o,a,l)=>{let s=p(n,o,a,i,l);if(!s.length)return n;s.length>1&&l?.("apply",'Multiple contexts matched for "overrideAllUpdates", picking the first one only');let d=e(s[0]);if(t(d,n))return l?.("no-apply",'Updates returned from "overrideAllUpdates" are the same as the original updates, skipping transformer'),n;let{processedUpdates:f,trulyNewUpdates:g}=d.reduce((e,t)=>(n.includes(t)?e.processedUpdates.push(t):e.trulyNewUpdates.push(t),e),{processedUpdates:[],trulyNewUpdates:[]});return l?.("apply","Overriding all updates",{removed:n,added:d,keptUnchanged:f,trulyNew:g}),[...f,...r(g,o,a,l,f)]}}),...(d=(e,t,i,r)=>{if(0===i.length)return t;i.length>1&&r?.("apply","Multiple entities supposed to be selected, picking the first one",{entityIds:i});let o=t.filter(e=>!(a(e)||n(e))),l=i[0],s=e.navigationSystem.getSelectUpdate(l);return o.length<t.length?r?.("apply",`Overriding previous selection updates with selection of entity ${l}`,{removed:t.filter(e=>a(e)||n(e)),added:s}):r?.("apply",`Selecting entity ${l}`,{added:s}),[...o,s]},{select:{entity:e=>u(t=>(r,n,o,a)=>{t.storeSystem.prepareStateEmissionWithoutTransformation(r,n,o);let l=p(r,n,o,t,a);if(0===l.length)return r;let s=l.map(e).filter(i);return 0===s.length?(a?.("no-resolve","Custom selector did not return any entity id, skipping selection"),r):d(t,r,s,a)}),self:()=>u(e=>(t,i,r,n)=>{let o=p(t,i,r,e,n);return 0===o.length?t:d(e,t,o.map(e=>{if(!c(e))throw Error("Context does not have entity id");return e.entityId}),n)}),ancestorOfType:e=>u(t=>(n,o,a,l)=>{let s=p(n,o,a,t,l);if(0===s.length)return n;let f=s.map(e=>{if(!c(e))throw Error("Context does not have entity id");return e.entityId}),g=s.map(i=>{if(!c(i))throw Error("Context does not have entity id");let n=t.compositionProjections.getTree(o).map.get(i.entityId);if(!n)throw Error(`Entity with id ${i.entityId} not found in the composition tree. The state is invalid!`);for(let t of n.ancestors())if(e.includes(r(t.id)))return t.id}),u=g.filter(i);return(u.length<f.length&&l?.("no-apply",0===u.length?"No entities have ancestor of the specified type, skipping selection":"Some entities do not have ancestor of the specified type",{entityIds:f.filter((e,t)=>void 0===g[t])}),0===u.length)?n:d(t,n,u,l)})},deselect:()=>u(e=>(t,i,r,o)=>0===p(t,i,r,e,o).length?t:[...t.filter(e=>!(a(e)||n(e))),e.navigationSystem.getDeselectUpdate()]),navigateTo:e=>u(t=>(r,n,a,l)=>{let s=p(r,n,a,t,l);if(0===s.length)return r;let d=s.map(t=>"function"==typeof e?e(t):e).filter(i);if(0===d.length)return l?.("no-resolve","Custom selector did not return any navigation state, skipping navigation"),r;d.length>1&&l?.("apply","Multiple navigation states selected, picking the first one",{navigationStates:d});let f=d[0],g=t.navigationSystem.getNavigationUpdate(f),u=r.filter(e=>!o(e));return u.length<r.length?l?.("apply",`Overriding previous navigation updates with ${f}`,{removed:r.filter(e=>o(e)),added:g}):l?.("apply",`Navigating to ${f}`,{added:g}),[...u,g]}),changeView:e=>u(t=>(r,o,s,d)=>{let f=p(r,o,s,t,d);if(0===f.length)return r;let g=f.map(t=>"function"==typeof e?e(t):e).filter(i);if(0===g.length)return d?.("no-resolve","Custom selector did not return any view state, skipping view change"),r;g.length>1&&d?.("apply","Multiple view states selected, picking the first one",{viewStates:g});let u=g[0],c=t.navigationSystem.getViewUpdate(u),h=r.filter(e=>!l(e));return h.length<r.length?d?.("apply",`Overriding previous view state updates with ${u}`,{removed:r.filter(e=>a(e)||n(e)),added:c}):d?.("apply",`Changing view to ${u}`,{added:c}),[...h,c]})})}};
1
+ import{match as e}from"ts-pattern";import{isEqualArray as t,isNonNullish as i}from"@salsita-ai/common/utils";import{domainEntityTypeFromId as n}from"../../core/index.js";import{isDeselectUpdate as r,isNavigationUpdate as o,isSelectUpdate as l,isViewUpdate as a}from"../navigation-system/index.js";import{createCascadeDeletesTransformer as p,createCascadeRefPruningTransformer as d,createCreateEntityRefsTransformer as s,createRefReplaceTransformer as g}from"../relation-transformers/index.js";import{getIdSequence as f}from"../store-system/index.js";import{chainBuilder as u}from"./chain-builder.js";import{isContextWithEntityId as h,isContextWithUpdate as c}from"./context.js";let m=(e,t)=>{let n=[s(e.componentReader),g(e.componentReader),p(e.compositionProjections),d(e.componentReader),t?e.storeSystem.transformToDataUpdates:void 0].filter(i);return(e,t,i,r,o)=>n.reduce((e,n)=>n(e,t,i,r,o),e)};export const updateActions=p=>d=>{let s,g=t=>i=>u(n=>{let r=m(n,p);return(o,l,a,p)=>{let s=d(o,l,a,n,p);return s.length?s.reduce((n,o)=>{let d=i({...o,getIdSequence:()=>f(l.entities,n)});return e(t).with("applySideEffect",()=>0===d.length?(p?.("no-apply","No side effects applied"),n):(p?.("apply","Applying side effects",{added:d}),[...n,...r(d,l,a,p,n)])).with("overrideMatchingUpdate",()=>{let e=c(o)?o.update:null;if(1===d.length&&d[0]===e)return p?.("no-apply","Update replaced with itself, no-op"),n;p?.("apply","Overriding matched updates",{removed:[e],added:d});let t=n.filter(t=>t!==e);return[...t,...r(d,l,a,p,t)]}).exhaustive()},o):o}});return{applySideEffect:g("applySideEffect"),overrideMatchingUpdate:g("overrideMatchingUpdate"),overrideAllUpdates:e=>u(i=>{let n=m(i,p);return(r,o,l,a)=>{let p=d(r,o,l,i,a);if(!p.length)return r;p.length>1&&a?.("apply",'Multiple contexts matched for "overrideAllUpdates", picking the first one only');let s=e(p[0]);if(t(s,r))return a?.("no-apply",'Updates returned from "overrideAllUpdates" are the same as the original updates, skipping transformer'),r;let{processedUpdates:g,trulyNewUpdates:f}=s.reduce((e,t)=>(r.includes(t)?e.processedUpdates.push(t):e.trulyNewUpdates.push(t),e),{processedUpdates:[],trulyNewUpdates:[]});return a?.("apply","Overriding all updates",{removed:r,added:s,keptUnchanged:g,trulyNew:f}),[...g,...n(f,o,l,a,g)]}}),...(s=(e,t,i,n)=>{if(0===i.length)return t;i.length>1&&n?.("apply","Multiple entities supposed to be selected, picking the first one",{entityIds:i});let o=t.filter(e=>!(l(e)||r(e))),a=i[0],p=e.navigationSystem.getSelectUpdate(a);return o.length<t.length?n?.("apply",`Overriding previous selection updates with selection of entity ${a}`,{removed:t.filter(e=>l(e)||r(e)),added:p}):n?.("apply",`Selecting entity ${a}`,{added:p}),[...o,p]},{select:{entity:e=>u(t=>(n,r,o,l)=>{t.storeSystem.prepareStateEmissionWithoutTransformation(n,r,o);let a=d(n,r,o,t,l);if(0===a.length)return n;let p=a.map(e).filter(i);return 0===p.length?(l?.("no-resolve","Custom selector did not return any entity id, skipping selection"),n):s(t,n,p,l)}),self:()=>u(e=>(t,i,n,r)=>{let o=d(t,i,n,e,r);return 0===o.length?t:s(e,t,o.map(e=>{if(!h(e))throw Error("Context does not have entity id");return e.entityId}),r)}),ancestorOfType:e=>u(t=>(r,o,l,a)=>{let p=d(r,o,l,t,a);if(0===p.length)return r;let g=p.map(e=>{if(!h(e))throw Error("Context does not have entity id");return e.entityId}),f=p.map(i=>{if(!h(i))throw Error("Context does not have entity id");let r=t.compositionProjections.getTree(o).map.get(i.entityId);if(!r)throw Error(`Entity with id ${i.entityId} not found in the composition tree. The state is invalid!`);for(let t of r.ancestors())if(e.includes(n(t.id)))return t.id}),u=f.filter(i);return(u.length<g.length&&a?.("no-apply",0===u.length?"No entities have ancestor of the specified type, skipping selection":"Some entities do not have ancestor of the specified type",{entityIds:g.filter((e,t)=>void 0===f[t])}),0===u.length)?r:s(t,r,u,a)})},deselect:()=>u(e=>(t,i,n,o)=>0===d(t,i,n,e,o).length?t:[...t.filter(e=>!(l(e)||r(e))),e.navigationSystem.getDeselectUpdate()]),navigateTo:e=>u(t=>(n,r,l,a)=>{let p=d(n,r,l,t,a);if(0===p.length)return n;let s=p.map(t=>"function"==typeof e?e(t):e).filter(i);if(0===s.length)return a?.("no-resolve","Custom selector did not return any navigation state, skipping navigation"),n;s.length>1&&a?.("apply","Multiple navigation states selected, picking the first one",{navigationStates:s});let g=s[0],f=t.navigationSystem.getNavigationUpdate(g),u=n.filter(e=>!o(e));return u.length<n.length?a?.("apply",`Overriding previous navigation updates with ${g}`,{removed:n.filter(e=>o(e)),added:f}):a?.("apply",`Navigating to ${g}`,{added:f}),[...u,f]}),changeView:e=>u(t=>(n,o,p,s)=>{let g=d(n,o,p,t,s);if(0===g.length)return n;let f=g.map(t=>"function"==typeof e?e(t):e).filter(i);if(0===f.length)return s?.("no-resolve","Custom selector did not return any view state, skipping view change"),n;f.length>1&&s?.("apply","Multiple view states selected, picking the first one",{viewStates:f});let u=f[0],h=t.navigationSystem.getViewUpdate(u),c=n.filter(e=>!a(e));return c.length<n.length?s?.("apply",`Overriding previous view state updates with ${u}`,{removed:n.filter(e=>l(e)||r(e)),added:h}):s?.("apply",`Changing view to ${u}`,{added:h}),[...c,h]})})}};
@@ -1,13 +1,11 @@
1
1
  import { Euler, Vector3 } from 'three';
2
2
  import { type $DomainEntity, type ComponentModification, type ComponentSnapshot, type DomainEntity, type DomainEntityId, type StateUpdate } from '../../core/index.js';
3
- import { type DimensionUnit } from '../../dimensions/dimensions.js';
4
- import type { ComponentReader } from '../../domain-runtime/domain-context/index.js';
5
- import type { PositionProjections } from '../../projections/position-projections.js';
6
- import type { AnySnapMatch, WorldSnapPoint } from '../../projections/snap-matching.js';
7
- import type { SnappingProjections } from '../../projections/snapping-projections.js';
3
+ import { type DimensionUnit } from '../../dimensions/index.js';
4
+ import type { ComponentReader } from '../../domain-runtime/index.js';
5
+ import type { AnySnapMatch, PositionProjections, SnappingProjections, WorldSnapPoint } from '../../projections/index.js';
8
6
  import { dragHandleComponent, hotspotDragHandleComponent, snapPointComponent } from '../../system-components/index.js';
9
- import type { DimensionSystem } from '../dimension-system/dimension-system.js';
10
- import type { StoreSystem, TransformerLogFunction, UpdateTransformer } from '../store-system/store-system.js';
7
+ import type { DimensionSystem } from '../dimension-system/index.js';
8
+ import type { StoreSystem, TransformerLogFunction, UpdateTransformer } from '../store-system/index.js';
11
9
  export declare const AutoSnapUpdateTag: 'AutoSnap.applied';
12
10
  export type AutoSnapType = 'point' | 'edge' | 'plane' | 'axis';
13
11
  export interface AutoSnapMetadata {