@salsita-ai/sdk 0.50.0-develop.6d8967bc99 → 0.50.0-develop.7a3bca8318

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 (262) hide show
  1. package/README.md +1 -1
  2. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  3. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +1 -1
  4. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  5. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  6. package/dist/docs/index.json +1 -1
  7. package/dist/docs/phoenix/deployments.mdx +1 -1
  8. package/dist/docs/phoenix/phoenix-cli.mdx +21 -21
  9. package/dist/docs/phoenix/sdk-builder-workflow.mdx +6 -6
  10. package/dist/domain/admin-domain/index.d.ts +1 -1
  11. package/dist/domain/admin-domain/index.js +1 -1
  12. package/dist/domain/application/assistant/assistant-manifest.d.ts +2 -0
  13. package/dist/domain/application/assistant/assistant-value-type.js +1 -1
  14. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  15. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +1 -11
  16. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  17. package/dist/domain/application/assistant-mutations.js +1 -1
  18. package/dist/domain/application/index.d.ts +1 -1
  19. package/dist/domain/application/index.js +1 -1
  20. package/dist/domain/available-system-components.js +1 -1
  21. package/dist/domain/{actions → core/action}/action-factory.d.ts +2 -1
  22. package/dist/domain/core/{action.d.ts → action/action.d.ts} +5 -5
  23. package/dist/domain/core/action/index.d.ts +2 -0
  24. package/dist/domain/core/action/index.js +1 -0
  25. package/dist/domain/core/domain-factory.d.ts +1 -1
  26. package/dist/domain/core/expression/aliased-expressions.d.ts +10 -0
  27. package/dist/domain/core/expression/custom-expression.d.ts +1 -1
  28. package/dist/domain/core/expression/index.d.ts +1 -2
  29. package/dist/domain/core/expression/index.js +1 -1
  30. package/dist/domain/core/index.d.ts +3 -1
  31. package/dist/domain/core/index.js +1 -1
  32. package/dist/domain/core/recipe/index.d.ts +1 -0
  33. package/dist/domain/core/recipe/index.js +1 -0
  34. package/dist/domain/{domain-context/recipe-system → core/recipe}/recipes.d.ts +1 -1
  35. package/dist/domain/core/recipe/recipes.js +1 -0
  36. package/dist/domain/{relations → core/relation}/all-of-type-relation.d.ts +3 -1
  37. package/dist/domain/core/relation/all-of-type-relation.js +1 -0
  38. package/dist/domain/{relations → core/relation}/component-factories.d.ts +1 -1
  39. package/dist/domain/core/relation/component-factories.js +1 -0
  40. package/dist/domain/{relations → core/relation}/composed-of.d.ts +1 -1
  41. package/dist/domain/core/relation/composed-of.js +1 -0
  42. package/dist/domain/{relations → core/relation}/direct-relation.d.ts +2 -1
  43. package/dist/domain/core/relation/index.d.ts +9 -0
  44. package/dist/domain/core/relation/index.js +1 -0
  45. package/dist/domain/{relations → core/relation}/indirect-relation.d.ts +3 -1
  46. package/dist/domain/core/relation/indirect-relation.js +1 -0
  47. package/dist/domain/{relations → core/relation}/reference-component.d.ts +2 -1
  48. package/dist/domain/core/relation/reference-component.js +1 -0
  49. package/dist/domain/{relations → core/relation}/reference-field.d.ts +1 -1
  50. package/dist/domain/{relations → core/relation}/relation-factory.d.ts +2 -1
  51. package/dist/domain/{relations → core/relation}/relation-implementation.d.ts +3 -1
  52. package/dist/domain/core/relation/relation-implementation.js +1 -0
  53. package/dist/domain/domain-builder.d.ts +1 -4
  54. package/dist/domain/domain-context/index.d.ts +0 -1
  55. package/dist/domain/domain-context/index.js +1 -1
  56. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +1 -2
  57. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  58. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.js +1 -1
  59. package/dist/domain/domain-context/relation-transformers/create-entity-refs.js +2 -2
  60. package/dist/domain/domain-context/relation-transformers/replace-refs.js +1 -1
  61. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +1 -1
  62. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  63. package/dist/domain/domain-runtime/spec/index.d.ts +3 -0
  64. package/dist/domain/domain-runtime/spec/index.js +1 -1
  65. package/dist/domain/{core/expression → domain-runtime/spec}/memoize-expression.d.ts +1 -2
  66. package/dist/domain/{actions → domain-runtime/spec}/prepare-action-implementations.d.ts +1 -1
  67. package/dist/domain/domain-runtime/spec/prepare-action-implementations.js +5 -0
  68. package/dist/domain/{core/expression → domain-runtime/spec}/prepare-domain-expressions.d.ts +1 -1
  69. package/dist/domain/{system-components → extensions}/child-entity-recipe-hierarchy.d.ts +1 -1
  70. package/dist/domain/extensions/child-entity-recipe-hierarchy.js +1 -0
  71. package/dist/domain/{system-components → extensions}/common/angle-indicator-schema.d.ts +1 -1
  72. package/dist/domain/extensions/common/angle-indicator-schema.js +1 -0
  73. package/dist/domain/extensions/common/index.d.ts +4 -0
  74. package/dist/domain/extensions/common/index.js +1 -0
  75. package/dist/domain/{system-components → extensions}/custom-header.d.ts +1 -1
  76. package/dist/domain/extensions/custom-header.js +1 -0
  77. package/dist/domain/{system-components → extensions}/custom-price-footer.js +1 -1
  78. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.d.ts +1 -1
  79. package/dist/domain/extensions/custom-sidebar-footer.js +1 -0
  80. package/dist/domain/{system-components → extensions}/editable-angle-indicator.d.ts +2 -1
  81. package/dist/domain/extensions/editable-angle-indicator.js +1 -0
  82. package/dist/domain/{system-components → extensions}/editable-distance-dimension-indicator.d.ts +2 -1
  83. package/dist/domain/extensions/editable-distance-dimension-indicator.js +1 -0
  84. package/dist/domain/{system-components → extensions}/editable-offset-indicator.d.ts +2 -1
  85. package/dist/domain/extensions/editable-offset-indicator.js +1 -0
  86. package/dist/domain/{system-components → extensions}/editable-size-indicator.d.ts +2 -1
  87. package/dist/domain/extensions/editable-size-indicator.js +1 -0
  88. package/dist/domain/{system-components → extensions}/entity-header.d.ts +1 -1
  89. package/dist/domain/extensions/entity-header.js +1 -0
  90. package/dist/domain/{system-components → extensions}/finalize-component.js +1 -1
  91. package/dist/domain/extensions/index.d.ts +69 -0
  92. package/dist/domain/extensions/index.js +1 -0
  93. package/dist/domain/{system-components → extensions}/list-selector-dimension-indicator.d.ts +2 -1
  94. package/dist/domain/extensions/list-selector-dimension-indicator.js +1 -0
  95. package/dist/domain/{system-components → extensions}/property-page.d.ts +1 -1
  96. package/dist/domain/extensions/property-page.js +1 -0
  97. package/dist/domain/{system-components → extensions}/replace-entity-recipe-hierarchy.d.ts +1 -1
  98. package/dist/domain/extensions/replace-entity-recipe-hierarchy.js +1 -0
  99. package/dist/domain/{system-components → extensions}/scene-entity-add-fab.d.ts +1 -1
  100. package/dist/domain/extensions/scene-entity-add-fab.js +1 -0
  101. package/dist/domain/{system-components → extensions}/scene-entity-delete-fab.d.ts +1 -1
  102. package/dist/domain/extensions/scene-entity-delete-fab.js +1 -0
  103. package/dist/domain/{system-components → extensions}/scene-entity-html-hotspot.d.ts +1 -1
  104. package/dist/domain/extensions/scene-entity-html-hotspot.js +1 -0
  105. package/dist/domain/{system-components → extensions}/scene-entity-navigation-hotspot.d.ts +1 -1
  106. package/dist/domain/extensions/scene-entity-navigation-hotspot.js +1 -0
  107. package/dist/domain/{system-components → extensions}/scene-entity-object-html-hotspot.d.ts +1 -1
  108. package/dist/domain/extensions/scene-entity-object-html-hotspot.js +1 -0
  109. package/dist/domain/{system-components → extensions}/scene-entity-select-hotspot.d.ts +1 -1
  110. package/dist/domain/extensions/scene-entity-select-hotspot.js +1 -0
  111. package/dist/domain/{system-components → extensions}/sketching-edit.d.ts +1 -1
  112. package/dist/domain/extensions/sketching-edit.js +1 -0
  113. package/dist/domain/{system-components → extensions}/summary-component.js +1 -1
  114. package/dist/domain/{system-components → extensions}/tool-menu-fab.d.ts +1 -1
  115. package/dist/domain/extensions/tool-menu-fab.js +1 -0
  116. package/dist/domain/{system-components → extensions}/toolbar.d.ts +1 -1
  117. package/dist/domain/extensions/toolbar.js +1 -0
  118. package/dist/domain/index.d.ts +2 -7
  119. package/dist/domain/index.js +1 -1
  120. package/dist/domain/projections/composition-projections.js +1 -1
  121. package/dist/domain/system-components/child-entity-selection.d.ts +1 -2
  122. package/dist/domain/system-components/common/index.d.ts +0 -4
  123. package/dist/domain/system-components/common/index.js +1 -1
  124. package/dist/domain/system-components/common/recipes.d.ts +1 -2
  125. package/dist/domain/system-components/index.d.ts +0 -68
  126. package/dist/domain/system-components/index.js +1 -1
  127. package/package.json +3 -3
  128. package/dist/domain/actions/prepare-action-implementations.js +0 -5
  129. package/dist/domain/domain-context/recipe-system/recipes.js +0 -1
  130. package/dist/domain/relations/all-of-type-relation.js +0 -1
  131. package/dist/domain/relations/component-factories.js +0 -1
  132. package/dist/domain/relations/composed-of.js +0 -1
  133. package/dist/domain/relations/indirect-relation.js +0 -1
  134. package/dist/domain/relations/reference-component.js +0 -1
  135. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +0 -1
  136. package/dist/domain/system-components/common/angle-indicator-schema.js +0 -1
  137. package/dist/domain/system-components/custom-header.js +0 -1
  138. package/dist/domain/system-components/custom-sidebar-footer.js +0 -1
  139. package/dist/domain/system-components/editable-angle-indicator.js +0 -1
  140. package/dist/domain/system-components/editable-distance-dimension-indicator.js +0 -1
  141. package/dist/domain/system-components/editable-offset-indicator.js +0 -1
  142. package/dist/domain/system-components/editable-size-indicator.js +0 -1
  143. package/dist/domain/system-components/entity-header.js +0 -1
  144. package/dist/domain/system-components/list-selector-dimension-indicator.js +0 -1
  145. package/dist/domain/system-components/property-page.js +0 -1
  146. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +0 -1
  147. package/dist/domain/system-components/scene-entity-add-fab.js +0 -1
  148. package/dist/domain/system-components/scene-entity-delete-fab.js +0 -1
  149. package/dist/domain/system-components/scene-entity-html-hotspot.js +0 -1
  150. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +0 -1
  151. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +0 -1
  152. package/dist/domain/system-components/scene-entity-select-hotspot.js +0 -1
  153. package/dist/domain/system-components/sketching-edit.js +0 -1
  154. package/dist/domain/system-components/tool-menu-fab.js +0 -1
  155. package/dist/domain/system-components/toolbar.js +0 -1
  156. /package/dist/domain/{actions → core/action}/action-factory.js +0 -0
  157. /package/dist/domain/core/{action.js → action/action.js} +0 -0
  158. /package/dist/domain/{relations/reference-field.js → core/expression/aliased-expressions.js} +0 -0
  159. /package/dist/domain/{relations → core/relation}/direct-relation.js +0 -0
  160. /package/dist/domain/{relations/relation-implementation.js → core/relation/reference-field.js} +0 -0
  161. /package/dist/domain/{relations → core/relation}/relation-factory.js +0 -0
  162. /package/dist/domain/{core/expression → domain-runtime/spec}/memoize-expression.js +0 -0
  163. /package/dist/domain/{core/expression → domain-runtime/spec}/prepare-domain-expressions.js +0 -0
  164. /package/dist/domain/{system-components → extensions}/angle-indicator.d.ts +0 -0
  165. /package/dist/domain/{system-components → extensions}/angle-indicator.js +0 -0
  166. /package/dist/domain/{system-components → extensions}/attribute-switch.d.ts +0 -0
  167. /package/dist/domain/{system-components → extensions}/attribute-switch.js +0 -0
  168. /package/dist/domain/{system-components → extensions}/autorotate-camera-component.d.ts +0 -0
  169. /package/dist/domain/{system-components → extensions}/autorotate-camera-component.js +0 -0
  170. /package/dist/domain/{system-components → extensions}/basic-sidebar-footer.d.ts +0 -0
  171. /package/dist/domain/{system-components → extensions}/basic-sidebar-footer.js +0 -0
  172. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.d.ts +0 -0
  173. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.js +0 -0
  174. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.d.ts +0 -0
  175. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.js +0 -0
  176. /package/dist/domain/{system-components → extensions}/canvas-config.d.ts +0 -0
  177. /package/dist/domain/{system-components → extensions}/canvas-config.js +0 -0
  178. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.d.ts +0 -0
  179. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.js +0 -0
  180. /package/dist/domain/{system-components → extensions}/canvas-padding.d.ts +0 -0
  181. /package/dist/domain/{system-components → extensions}/canvas-padding.js +0 -0
  182. /package/dist/domain/{system-components → extensions}/canvas-preset-environment.d.ts +0 -0
  183. /package/dist/domain/{system-components → extensions}/canvas-preset-environment.js +0 -0
  184. /package/dist/domain/{system-components → extensions}/client-side-image.d.ts +0 -0
  185. /package/dist/domain/{system-components → extensions}/client-side-image.js +0 -0
  186. /package/dist/domain/{system-components → extensions}/color-value.d.ts +0 -0
  187. /package/dist/domain/{system-components → extensions}/color-value.js +0 -0
  188. /package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.d.ts +0 -0
  189. /package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.js +0 -0
  190. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.d.ts +0 -0
  191. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.js +0 -0
  192. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.d.ts +0 -0
  193. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.js +0 -0
  194. /package/dist/domain/{system-components → extensions}/custom-price-footer.d.ts +0 -0
  195. /package/dist/domain/{system-components → extensions}/dimension-indicator.d.ts +0 -0
  196. /package/dist/domain/{system-components → extensions}/dimension-indicator.js +0 -0
  197. /package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.d.ts +0 -0
  198. /package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.js +0 -0
  199. /package/dist/domain/{system-components → extensions}/finalize-action.d.ts +0 -0
  200. /package/dist/domain/{system-components → extensions}/finalize-action.js +0 -0
  201. /package/dist/domain/{system-components → extensions}/finalize-component.d.ts +0 -0
  202. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.d.ts +0 -0
  203. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.js +0 -0
  204. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.d.ts +0 -0
  205. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.js +0 -0
  206. /package/dist/domain/{system-components → extensions}/fixed-header.d.ts +0 -0
  207. /package/dist/domain/{system-components → extensions}/fixed-header.js +0 -0
  208. /package/dist/domain/{system-components → extensions}/floating-header.d.ts +0 -0
  209. /package/dist/domain/{system-components → extensions}/floating-header.js +0 -0
  210. /package/dist/domain/{system-components → extensions}/hidden-header.d.ts +0 -0
  211. /package/dist/domain/{system-components → extensions}/hidden-header.js +0 -0
  212. /package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.d.ts +0 -0
  213. /package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.js +0 -0
  214. /package/dist/domain/{system-components → extensions}/horizontal-tabs.d.ts +0 -0
  215. /package/dist/domain/{system-components → extensions}/horizontal-tabs.js +0 -0
  216. /package/dist/domain/{system-components → extensions}/multilingual-text-value.d.ts +0 -0
  217. /package/dist/domain/{system-components → extensions}/multilingual-text-value.js +0 -0
  218. /package/dist/domain/{system-components → extensions}/navigation-steps.d.ts +0 -0
  219. /package/dist/domain/{system-components → extensions}/navigation-steps.js +0 -0
  220. /package/dist/domain/{system-components → extensions}/offset-anchors.d.ts +0 -0
  221. /package/dist/domain/{system-components → extensions}/offset-anchors.js +0 -0
  222. /package/dist/domain/{system-components → extensions}/offset-indicator.d.ts +0 -0
  223. /package/dist/domain/{system-components → extensions}/offset-indicator.js +0 -0
  224. /package/dist/domain/{system-components → extensions}/offset.d.ts +0 -0
  225. /package/dist/domain/{system-components → extensions}/offset.js +0 -0
  226. /package/dist/domain/{system-components → extensions}/other-action.d.ts +0 -0
  227. /package/dist/domain/{system-components → extensions}/other-action.js +0 -0
  228. /package/dist/domain/{system-components → extensions}/read-sidebar-footer.d.ts +0 -0
  229. /package/dist/domain/{system-components → extensions}/read-sidebar-footer.js +0 -0
  230. /package/dist/domain/{system-components → extensions}/rotatable.d.ts +0 -0
  231. /package/dist/domain/{system-components → extensions}/rotatable.js +0 -0
  232. /package/dist/domain/{system-components → extensions}/rotation-handle.d.ts +0 -0
  233. /package/dist/domain/{system-components → extensions}/rotation-handle.js +0 -0
  234. /package/dist/domain/{system-components → extensions}/save-template-thumbnail.d.ts +0 -0
  235. /package/dist/domain/{system-components → extensions}/save-template-thumbnail.js +0 -0
  236. /package/dist/domain/{system-components → extensions}/scene-entity-animation.d.ts +0 -0
  237. /package/dist/domain/{system-components → extensions}/scene-entity-animation.js +0 -0
  238. /package/dist/domain/{system-components → extensions}/scene-entity-control.d.ts +0 -0
  239. /package/dist/domain/{system-components → extensions}/scene-entity-control.js +0 -0
  240. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.d.ts +0 -0
  241. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.js +0 -0
  242. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.d.ts +0 -0
  243. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.js +0 -0
  244. /package/dist/domain/{system-components → extensions}/selectable-component.d.ts +0 -0
  245. /package/dist/domain/{system-components → extensions}/selectable-component.js +0 -0
  246. /package/dist/domain/{system-components → extensions}/sidebar-tabs.d.ts +0 -0
  247. /package/dist/domain/{system-components → extensions}/sidebar-tabs.js +0 -0
  248. /package/dist/domain/{system-components → extensions}/simple-summary.d.ts +0 -0
  249. /package/dist/domain/{system-components → extensions}/simple-summary.js +0 -0
  250. /package/dist/domain/{system-components → extensions}/size.d.ts +0 -0
  251. /package/dist/domain/{system-components → extensions}/size.js +0 -0
  252. /package/dist/domain/{system-components → extensions}/sketching-draw.d.ts +0 -0
  253. /package/dist/domain/{system-components → extensions}/sketching-draw.js +0 -0
  254. /package/dist/domain/{system-components → extensions}/summary-component.d.ts +0 -0
  255. /package/dist/domain/{system-components → extensions}/text-value.d.ts +0 -0
  256. /package/dist/domain/{system-components → extensions}/text-value.js +0 -0
  257. /package/dist/domain/{system-components → extensions}/tool-controls.d.ts +0 -0
  258. /package/dist/domain/{system-components → extensions}/tool-controls.js +0 -0
  259. /package/dist/domain/{system-components → extensions}/universal-sidebar-footer.d.ts +0 -0
  260. /package/dist/domain/{system-components → extensions}/universal-sidebar-footer.js +0 -0
  261. /package/dist/domain/{system-components → extensions}/view-controls.d.ts +0 -0
  262. /package/dist/domain/{system-components → extensions}/view-controls.js +0 -0
@@ -1,9 +1,9 @@
1
1
  import type { ExtendedJsonSchema } from '@salsita-ai/common/utils';
2
- import type { DomainContextSystems } from '../domain-context/domain-context-systems.js';
3
- import type { StateUpdate, UpdateFactory } from './component/index.js';
4
- import type { ExpressionContext } from './expression/index.js';
5
- import type { $DomainEntity, DomainEntity } from './model/index.js';
6
- import type { DomainState, IdSequence } from './state/index.js';
2
+ import type { DomainContextSystems } from '../../domain-context/domain-context-systems.js';
3
+ import type { StateUpdate, UpdateFactory } from '../component/index.js';
4
+ import type { ExpressionContext } from '../expression/index.js';
5
+ import type { $DomainEntity, DomainEntity } from '../model/index.js';
6
+ import type { DomainState, IdSequence } from '../state/index.js';
7
7
  /**
8
8
  * The parameter and result types of the actions an application declares under `actions`, keyed by
9
9
  * action name. Codegen derives it from the spec; `ActionSystem.prepareAction` and the
@@ -0,0 +1,2 @@
1
+ export * from './action-factory.js';
2
+ export type * from './action.js';
@@ -0,0 +1 @@
1
+ export*from"./action-factory.js";
@@ -1,5 +1,5 @@
1
1
  import type { ExtendedJsonSchema } from '@salsita-ai/common/utils';
2
- import type { ActionDefinitions, AnyActionImplementations } from './action.js';
2
+ import type { ActionDefinitions, AnyActionImplementations } from './action/index.js';
3
3
  import type { Expression } from './expression/index.js';
4
4
  import type { $DomainEntity, $DomainEntityReflection, DomainEntity, EntityByType, EntityReflections, SchemaOfObject } from './model/index.js';
5
5
  import type { MigrateFunction } from './state/index.js';
@@ -0,0 +1,10 @@
1
+ import type { DomainEntity, ExpandAlias, TypeOrAlias } from '../model/index.js';
2
+ import type { AnonymousExpression } from './expression.js';
3
+ /**
4
+ * The expressions a project implements, keyed by entity type or alias and then by expression name.
5
+ * It is what `implementCustomExpressions` returns and what the domain is built from; an alias key
6
+ * stands for every entity type the alias expands to.
7
+ */
8
+ export type AliasedExpressions<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>> = {
9
+ [K in TypeOrAlias<ENTITIES, ALIASES>]?: Record<string, AnonymousExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ExpandAlias<ENTITIES, ALIASES, K>, unknown>>;
10
+ };
@@ -1,6 +1,6 @@
1
- import type { AliasedExpressions } from '../../domain-builder.js';
2
1
  import type { $DomainEntity, DomainEntity, EntityByType, TypeOrAlias } from '../model/index.js';
3
2
  import type { DomainState } from '../state/index.js';
3
+ import type { AliasedExpressions } from './aliased-expressions.js';
4
4
  import type { AnonymousExpression, ExpressionContext, ExpressionMeta, ExpressionMetas } from './expression.js';
5
5
  export type CustomExpression<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, SELF extends $DomainEntity<ENTITIES>, T> = (self: SELF, state: DomainState<ENTITIES>, ctx: ExpressionContext<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA>) => T;
6
6
  export type PotentialCustomExpressions<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>> = {
@@ -1,5 +1,4 @@
1
+ export type * from './aliased-expressions.js';
1
2
  export * from './constant-expressions.js';
2
3
  export * from './custom-expression.js';
3
4
  export type * from './expression.js';
4
- export * from './memoize-expression.js';
5
- export * from './prepare-domain-expressions.js';
@@ -1 +1 @@
1
- export*from"./constant-expressions.js";export*from"./custom-expression.js";export*from"./memoize-expression.js";export*from"./prepare-domain-expressions.js";
1
+ export*from"./constant-expressions.js";export*from"./custom-expression.js";
@@ -1,4 +1,4 @@
1
- export type * from './action.js';
1
+ export * from './action/index.js';
2
2
  export * from './component/index.js';
3
3
  export * from './decoder/index.js';
4
4
  export * from './domain-factory.js';
@@ -6,5 +6,7 @@ export * from './domain.js';
6
6
  export * from './expression/index.js';
7
7
  export * from './invariant/index.js';
8
8
  export * from './model/index.js';
9
+ export * from './recipe/index.js';
10
+ export * from './relation/index.js';
9
11
  export * from './schema/index.js';
10
12
  export * from './state/index.js';
@@ -1 +1 @@
1
- export*from"./component/index.js";export*from"./decoder/index.js";export*from"./domain-factory.js";export*from"./domain.js";export*from"./expression/index.js";export*from"./invariant/index.js";export*from"./model/index.js";export*from"./schema/index.js";export*from"./state/index.js";
1
+ export*from"./action/index.js";export*from"./component/index.js";export*from"./decoder/index.js";export*from"./domain-factory.js";export*from"./domain.js";export*from"./expression/index.js";export*from"./invariant/index.js";export*from"./model/index.js";export*from"./recipe/index.js";export*from"./relation/index.js";export*from"./schema/index.js";export*from"./state/index.js";
@@ -0,0 +1 @@
1
+ export * from './recipes.js';
@@ -0,0 +1 @@
1
+ export*from"./recipes.js";
@@ -1,5 +1,5 @@
1
1
  import type { OmitEmpty, OmitNever, UnionToIntersection } from '@salsita-ai/common/utils';
2
- import { type AliasMap, type DomainEntity, type DomainEntityId, type DomainEntityReflection, type EntityByType, type EventualAlias, type ExpandAlias, type ExtractFromAliasedRecord, type TypeOrAlias } from '../../core/index.js';
2
+ import { type AliasMap, type DomainEntity, type DomainEntityId, type DomainEntityReflection, type EntityByType, type EventualAlias, type ExpandAlias, type ExtractFromAliasedRecord, type TypeOrAlias } from '../model/index.js';
3
3
  export type EntityDefaults<ENTITY extends DomainEntity<string>> = {
4
4
  [K in Exclude<keyof ENTITY, 'id' | 'type'>]: ENTITY[K] extends DomainEntityId<any> ? null : ENTITY[K];
5
5
  };
@@ -0,0 +1 @@
1
+ import{_unsafeBuildDomainEntityId as e,expandAlias as r}from"../model/index.js";export const RecipeFactoryBuilder={forAliases:t=>({forEntities:o=>({withDefaults:i=>{let a={};Object.entries(i).forEach(([e,o])=>{r(t,e).forEach(e=>{a[e]={...a[e],...o}})});let n=new Map(o.map(e=>[e.type,e._meta.validator]));return Object.entries(a).forEach(([r,t])=>{let o=n.get(r);if(!o)throw Error(`Defaults provided for unknown entity ${r}`);if(!o({id:e(r,1),type:r,...t}))throw console.error(o.errors,t),Error(`Invalid defaults for ${r} entity.`)}),{build:()=>r=>({id:e(r.type,1),...a[r.type],...r})}}})})};
@@ -1,4 +1,6 @@
1
- import { type AliasMap, type DomainEntity, type DomainEntityId, type DomainState, type ExpressionMeta, type TypeOrAlias } from '../core/index.js';
1
+ import type { ExpressionMeta } from '../expression/index.js';
2
+ import { type AliasMap, type DomainEntity, type DomainEntityId, type TypeOrAlias } from '../model/index.js';
3
+ import type { DomainState } from '../state/index.js';
2
4
  interface AllOfType0Relation<ENTITIES extends DomainEntity<string>, ALIASES extends Record<string, ENTITIES>, TARGET extends TypeOrAlias<ENTITIES, ALIASES>> {
3
5
  kind: 'allOfType';
4
6
  target: TARGET;
@@ -0,0 +1 @@
1
+ import{expandAlias as e}from"../model/index.js";export const createAllOfTypeRelation=t=>{let r=new Map,a=new WeakMap,n=!1;return o=>{if(n)throw Error(`Cannot register all-of-type relation targeting ${String(o.target)} after evaluation started. Create all relation expressions before evaluating the domain state.`);let i=new Set(e(t,o.target)),l=[...i].sort().join("|");return r.set(l,i),(e,t)=>(e=>{let t=a.get(e);if(t)return t;n=!0;let o=new Map([...r.keys()].map(e=>[e,[]]));for(let t of e.entities)for(let[e,a]of r)a.has(t.type)&&o.get(e).push(t.id);return a.set(e,o),o})(t).get(l)}};
@@ -1,4 +1,4 @@
1
- import type { DomainEntity, DomainEntityId, DomainEntityReflection, RawAliasReflection } from '../core/index.js';
1
+ import type { DomainEntity, DomainEntityId, DomainEntityReflection, RawAliasReflection } from '../model/index.js';
2
2
  import type { ComposedOfComponentState } from './composed-of.js';
3
3
  import type { ReferenceComponentState } from './reference-component.js';
4
4
  export declare const createSingleReferenceRead: <TARGET extends DomainEntity<string>>(_targetReflection: DomainEntityReflection<TARGET> | RawAliasReflection<TARGET>, field: string) => (self: object, state: unknown, ctx: unknown) => ReferenceComponentState;
@@ -0,0 +1 @@
1
+ import{memoEval as e}from"../../utils/memo-eval.js";export const createSingleReferenceRead=(t,r)=>e(e=>[e[r]],e=>({referencedEntityIds:null===e?[]:[e]}));export const createSingleReferenceWrite=(e,t)=>r=>{let n=r.referencedEntityIds[0];return n&&e.assertId(n),{[t]:n??null}};export const createMultipleReferenceRead=(t,r)=>e(e=>[e[r]],e=>({referencedEntityIds:e}));export const createMultipleReferenceWrite=(e,t)=>r=>(e.assertIds(r.referencedEntityIds),{[t]:r.referencedEntityIds});export const createSingleCompositionRead=t=>e(e=>[e[t]?.id??null],e=>({childEntityIds:null===e?[]:[e]}));export const createMultipleCompositionRead=t=>e(e=>e[t].map(e=>e.id),(...e)=>({childEntityIds:e}));export const createEmptyWrite=()=>()=>({});
@@ -1,4 +1,4 @@
1
- import { type DomainEntityId } from '../core/index.js';
1
+ import { type DomainEntityId } from '../model/index.js';
2
2
  export type ComposedOfComponentState = {
3
3
  /**
4
4
  * List of entity IDs that the parent entity is composed of
@@ -0,0 +1 @@
1
+ import{SystemComponentBuilder as o}from"../component/index.js";import{EntityIdSchema as t}from"../model/index.js";export const composedOfComponent=o.component("composedOf").withState({type:"object",properties:{childEntityIds:{type:"array",items:t}},required:["childEntityIds"],additionalProperties:!1}).build();
@@ -1,4 +1,5 @@
1
- import type { DomainEntity, ExpandAlias, ExpressionMeta, TypeOrAlias } from '../core/index.js';
1
+ import type { ExpressionMeta } from '../expression/index.js';
2
+ import type { DomainEntity, ExpandAlias, TypeOrAlias } from '../model/index.js';
2
3
  import type { ArrayReferenceField, SingleReferenceField } from './reference-field.js';
3
4
  import type { RelationImplementation } from './relation-implementation.js';
4
5
  interface DirectArrayRelation<ENTITIES extends DomainEntity<string>, ALIASES extends Record<string, ENTITIES>, SELF extends TypeOrAlias<ENTITIES, ALIASES>, TARGET extends TypeOrAlias<ENTITIES, ALIASES>> {
@@ -0,0 +1,9 @@
1
+ export * from './all-of-type-relation.js';
2
+ export * from './component-factories.js';
3
+ export * from './composed-of.js';
4
+ export * from './direct-relation.js';
5
+ export * from './indirect-relation.js';
6
+ export * from './reference-component.js';
7
+ export type * from './reference-field.js';
8
+ export * from './relation-factory.js';
9
+ export type * from './relation-implementation.js';
@@ -0,0 +1 @@
1
+ export*from"./all-of-type-relation.js";export*from"./component-factories.js";export*from"./composed-of.js";export*from"./direct-relation.js";export*from"./indirect-relation.js";export*from"./reference-component.js";export*from"./relation-factory.js";
@@ -1,4 +1,6 @@
1
- import { type AliasMap, type DomainEntity, type DomainEntityId, type DomainState, type ExpandAlias, type ExpressionMeta, type TypeOrAlias } from '../core/index.js';
1
+ import type { ExpressionMeta } from '../expression/index.js';
2
+ import { type AliasMap, type DomainEntity, type DomainEntityId, type ExpandAlias, type TypeOrAlias } from '../model/index.js';
3
+ import type { DomainState } from '../state/index.js';
2
4
  import type { ArrayReferenceField, SingleReferenceField } from './reference-field.js';
3
5
  interface IndirectNullableSingle0Relation<ENTITIES extends DomainEntity<string>, ALIASES extends Record<string, ENTITIES>, SELF extends TypeOrAlias<ENTITIES, ALIASES>, TARGET extends TypeOrAlias<ENTITIES, ALIASES>> {
4
6
  kind: 'indirect';
@@ -0,0 +1 @@
1
+ import{isArray as e}from"@salsita-ai/common/utils";import{expandAlias as t}from"../model/index.js";let r=e=>"string"==typeof e;export const createIndirectRelation=i=>{let n=new Map,o=new WeakMap,a=!1;return l=>{if(a)throw Error(`Cannot register indirect relation ${String(l.target)}#${l.field} after evaluation started. Create all relation expressions before evaluating the domain state.`);let s=new Set(t(i,l.target)),f=`${l.field}|${[...s].sort().join("|")}`;return n.set(f,{field:l.field,targetTypes:s}),(t,i)=>(t=>{let i=o.get(t);if(i)return i;a=!0;let l=new Map([...n.keys()].map(e=>[e,new Map]));for(let i of t.entities)for(let[t,{field:o,targetTypes:a}]of n){if(!a.has(i.type))continue;let n=i[o],s=e(n)?new Set(n.filter(r)):r(n)?[n]:[],f=l.get(t);for(let e of s){let t=f.get(e);t||(t=[],f.set(e,t)),t.push(i.id)}}return o.set(t,l),l})(i).get(f).get(t)??[]}};
@@ -1,4 +1,5 @@
1
- import { type $DomainEntity, type DomainComponentOpticBuilder, type DomainEntity, type DomainEntityId, type DomainEntityReflection, type RawAliasReflection } from '../core/index.js';
1
+ import { type DomainComponentOpticBuilder } from '../component/index.js';
2
+ import { type $DomainEntity, type DomainEntity, type DomainEntityId, type DomainEntityReflection, type RawAliasReflection } from '../model/index.js';
2
3
  import type { ArrayReferenceField, SingleReferenceField } from './reference-field.js';
3
4
  export type ReferenceComponentState = {
4
5
  /**
@@ -0,0 +1 @@
1
+ import{memoEval as e}from"../../utils/memo-eval.js";import{SystemComponentBuilder as t}from"../component/index.js";import{EntityIdSchema as r}from"../model/index.js";export const referenceComponent=t.component("reference").withState({type:"object",properties:{referencedEntityIds:{type:"array",items:r}},required:["referencedEntityIds"],additionalProperties:!1}).withWritableKeys(["referencedEntityIds"]).build();export const attachSingleReferenceComponent=(t,r,n)=>t.attach(e(e=>[e[n]],e=>({referencedEntityIds:null===e?[]:[e]})),e=>{let t=e.referencedEntityIds[0];return t&&r.assertId(t),{[n]:t??null}});export const attachMultipleReferenceComponent=(t,r,n)=>t.attach(e(e=>[e[n]],e=>({referencedEntityIds:e})),e=>(r.assertIds(e.referencedEntityIds),{[n]:e.referencedEntityIds}));
@@ -1,4 +1,4 @@
1
- import type { DomainEntity } from '../core/index.js';
1
+ import type { DomainEntity } from '../model/index.js';
2
2
  export type SingleReferenceField<FROM extends DomainEntity<string>, TO extends DomainEntity<string>, OPTIONALITY extends null | never> = {
3
3
  [K in keyof FROM]: TO['id'] | OPTIONALITY extends FROM[K] ? FROM[K] extends TO['id'] | OPTIONALITY ? K & string : never : never;
4
4
  }[keyof FROM];
@@ -1,4 +1,5 @@
1
- import type { $DomainEntity, AliasMap, AnonymousExpression, DomainEntity, ExpandAlias, TypeOrAlias } from '../core/index.js';
1
+ import type { AnonymousExpression } from '../expression/index.js';
2
+ import type { $DomainEntity, AliasMap, DomainEntity, ExpandAlias, TypeOrAlias } from '../model/index.js';
2
3
  import { type AllOfTypeRelation } from './all-of-type-relation.js';
3
4
  import type { DirectRelation } from './direct-relation.js';
4
5
  import { type IndirectRelation } from './indirect-relation.js';
@@ -1,4 +1,6 @@
1
- import type { AliasMap, Domain, DomainEntity, DomainEntityId, DomainState } from '../core/index.js';
1
+ import type { Domain } from '../domain.js';
2
+ import type { AliasMap, DomainEntity, DomainEntityId } from '../model/index.js';
3
+ import type { DomainState } from '../state/index.js';
2
4
  import type { Relation } from './relation-factory.js';
3
5
  export type RelationImplementation<KIND extends Relation<any, any, any, any>['kind']> = (relation: Extract<Relation<any, any, any, any>, {
4
6
  kind: KIND;
@@ -1,9 +1,6 @@
1
1
  import { type ExtendedJsonSchema } from '@salsita-ai/common/utils';
2
- import { type $DomainEntity, type $DomainEntityReflection, type ActionDefinition, type AliasMap, type AnonymousExpression, type AnyActionImplementations, type DomainEntity, DomainFactory, type EntityByType, type EntityReflections, type ExpandAlias, type MigrateFunction, type SchemaOfObject, type TypeOrAlias } from './core/index.js';
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
3
  import { type ProjectModule } from './project-modules/index.js';
4
- export type AliasedExpressions<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, ALIASES extends Record<string, ENTITIES>> = {
5
- [K in TypeOrAlias<ENTITIES, ALIASES>]?: Record<string, AnonymousExpression<ENTITIES, ALLOWED_ROOT_ENTITIES, PUBLISHED_DATA, SESSION_DATA, FRONTEND_DATA, ExpandAlias<ENTITIES, ALIASES, K>, unknown>>;
6
- };
7
4
  type $EntityReflections<ENTITIES extends DomainEntity<string>> = {
8
5
  [TYPE in ENTITIES['type']]: $DomainEntityReflection<$DomainEntity<EntityByType<ENTITIES, TYPE>>>;
9
6
  };
@@ -14,7 +14,6 @@ export { createCreateEntityRefsTransformer } from './relation-transformers/creat
14
14
  export { type CanBeUndonePredicate, type CanBeUndoneContext, type UndoCapabilities, UndoSystem, UNDO_REDO_RESET_TAG, isUndoRedoReset, } from './undo-system.js';
15
15
  export { DimensionSystem, type AnyDimensionSystem, type DimensionSystemContext, type AngleDimensionViolation, type DistanceDimensionViolation, type GenericDimensionViolation, } from './dimension-system/dimension-system.js';
16
16
  export { ActionSystem, type AnyActionSystem, type ActionSystemContext } from './action-system/action-system.js';
17
- export { RecipeFactoryBuilder, type EntityRecipe } from './recipe-system/recipes.js';
18
17
  export { RecipeCookerSystem, type AnyRecipeCookerSystem, type RecipeCookerSystemContext, ReplaceRecipeUpdateTag, isReplaceEntityUpdate, type IsReplaceRecipeUpdate, CreateRecipeUpdateTag, isCreateEntityUpdate, type IsCreateRecipeUpdate, } from './recipe-system/recipe-cooker-system.js';
19
18
  export { type DomainContextSystems, type AnyDomainContextSystems } from './domain-context-systems.js';
20
19
  export { createTransformer, type TransformerFactory } from './create-transformer.js';
@@ -1 +1 @@
1
- export{NoopAnalyticsSystem}from"./analytics-system/analytics-system.js";export{AnalyticsEventFactory,AnalyticsEventType}from"./analytics-system/analytics-contracts.js";export{NavigationUpdateTag,isInitialNavigationUpdate,isNavigationUpdate,isInitialViewUpdate,isViewUpdate,isInitialSelectionUpdate,isSelectUpdate,isDeselectUpdate,isInitialFullscreenUpdate,isToggleFullscreenUpdate,isInitialDebugUpdate,isInitialViewportUpdate,isSetViewportUpdate,isInitialDragUpdate,isDragStartUpdate,isDragEndUpdate,isInitialToolUpdate,isToolUpdate,isExportUpdate}from"./navigation-system/navigation-updates.js";export{createAutoSelectionTransformer,NavigationSystem}from"./navigation-system/navigation-system.js";export{createResetSelectionOnNavigationTransformer,createNavigationOnSelectionTransformer,createNavigationOnDeselectTransformer,createSelectParentOnDeselectionTransformer,createNavigationOnSelectionChangeTransformer}from"./navigation-system/selection-transformers.js";export{StoreSystem}from"./store-system/store-system.js";export{nextDomainEntityId,getIdSequence}from"./store-system/next-domain-entity-id.js";export{applyUpdates}from"./store-system/apply-updates.js";export{SystemState,SystemStateInitialUpdateTag,SystemStateUpdateTag}from"./store-system/system-state.js";export{createRefReplaceTransformer}from"./relation-transformers/replace-refs.js";export{createCascadeDeletesTransformer}from"./relation-transformers/cascade-deletes.js";export{createCascadeRefPruningTransformer}from"./relation-transformers/cascade-ref-pruning.js";export{createCreateEntityRefsTransformer}from"./relation-transformers/create-entity-refs.js";export{UndoSystem,UNDO_REDO_RESET_TAG,isUndoRedoReset}from"./undo-system.js";export{DimensionSystem}from"./dimension-system/dimension-system.js";export{ActionSystem}from"./action-system/action-system.js";export{RecipeFactoryBuilder}from"./recipe-system/recipes.js";export{RecipeCookerSystem,ReplaceRecipeUpdateTag,isReplaceEntityUpdate,CreateRecipeUpdateTag,isCreateEntityUpdate}from"./recipe-system/recipe-cooker-system.js";export{createTransformer}from"./create-transformer.js";export*from"./transformers/index.js";
1
+ export{NoopAnalyticsSystem}from"./analytics-system/analytics-system.js";export{AnalyticsEventFactory,AnalyticsEventType}from"./analytics-system/analytics-contracts.js";export{NavigationUpdateTag,isInitialNavigationUpdate,isNavigationUpdate,isInitialViewUpdate,isViewUpdate,isInitialSelectionUpdate,isSelectUpdate,isDeselectUpdate,isInitialFullscreenUpdate,isToggleFullscreenUpdate,isInitialDebugUpdate,isInitialViewportUpdate,isSetViewportUpdate,isInitialDragUpdate,isDragStartUpdate,isDragEndUpdate,isInitialToolUpdate,isToolUpdate,isExportUpdate}from"./navigation-system/navigation-updates.js";export{createAutoSelectionTransformer,NavigationSystem}from"./navigation-system/navigation-system.js";export{createResetSelectionOnNavigationTransformer,createNavigationOnSelectionTransformer,createNavigationOnDeselectTransformer,createSelectParentOnDeselectionTransformer,createNavigationOnSelectionChangeTransformer}from"./navigation-system/selection-transformers.js";export{StoreSystem}from"./store-system/store-system.js";export{nextDomainEntityId,getIdSequence}from"./store-system/next-domain-entity-id.js";export{applyUpdates}from"./store-system/apply-updates.js";export{SystemState,SystemStateInitialUpdateTag,SystemStateUpdateTag}from"./store-system/system-state.js";export{createRefReplaceTransformer}from"./relation-transformers/replace-refs.js";export{createCascadeDeletesTransformer}from"./relation-transformers/cascade-deletes.js";export{createCascadeRefPruningTransformer}from"./relation-transformers/cascade-ref-pruning.js";export{createCreateEntityRefsTransformer}from"./relation-transformers/create-entity-refs.js";export{UndoSystem,UNDO_REDO_RESET_TAG,isUndoRedoReset}from"./undo-system.js";export{DimensionSystem}from"./dimension-system/dimension-system.js";export{ActionSystem}from"./action-system/action-system.js";export{RecipeCookerSystem,ReplaceRecipeUpdateTag,isReplaceEntityUpdate,CreateRecipeUpdateTag,isCreateEntityUpdate}from"./recipe-system/recipe-cooker-system.js";export{createTransformer}from"./create-transformer.js";export*from"./transformers/index.js";
@@ -1,6 +1,5 @@
1
- import { type DomainEntity, type DomainEntityCreation, type DomainEntityId, type DomainEntityReplacement, type DomainState, type StateUpdate } from '../../core/index.js';
1
+ import { type DomainEntity, type DomainEntityCreation, type DomainEntityId, type DomainEntityReplacement, type DomainState, type EntityRecipe, type StateUpdate } from '../../core/index.js';
2
2
  import type { DomainContextSelectors } from '../../domain-runtime/domain-context/index.js';
3
- import type { EntityRecipe } from './recipes.js';
4
3
  export declare const CreateRecipeUpdateTag = "createRecipe";
5
4
  export type IsCreateRecipeUpdate<ENTITIES extends DomainEntity<string>> = <TYPE extends ENTITIES['type']>(update: StateUpdate<ENTITIES, ENTITIES>, types: readonly TYPE[]) => update is DomainEntityCreation<Extract<ENTITIES, {
6
5
  type: TYPE;
@@ -1 +1 @@
1
- import{domainEntityTypeFromId as e,isDomainEntityId as t,systemUpdateFactory as n}from"../../core/index.js";import{composedOfComponent as i}from"../../relations/composed-of.js";import{referenceComponent as o}from"../../relations/reference-component.js";import{getIdSequence as a}from"../store-system/next-domain-entity-id.js";export const CreateRecipeUpdateTag="createRecipe";export const isCreateEntityUpdate=(t,n)=>"createDomainEntity"===t.kind&&t.updateTag===CreateRecipeUpdateTag&&n.includes(e(t.entityId));export const ReplaceRecipeUpdateTag="replaceRecipe";export const isReplaceEntityUpdate=(n,i)=>"replaceDomainEntity"===n.kind&&n.updateTag===ReplaceRecipeUpdateTag&&t(n.entityId)&&i.includes(e(n.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=(t,n)=>{let p=new Map,r=a(n.entities,[]);for(let e of t){let t=r.nextId(e.type);p.set(e.id,t)}let c=this._getFragmentComponents(t,o),d=t.map(t=>{let n={...t,id:p.get(t.id)};return c.filter(e=>e.componentInstance.entityId===t.id).reduce((n,i)=>{let o=this._context.selectors.getComponentReaderIndexes().opticMap.get(e(t.id))?.get(i.componentInstance.componentType)?.get(i.componentInstance.instanceName);if(o?.kind!=="simple")throw Error("References can only be simple optics!");return{...n,...o?.write({referencedEntityIds:i.state.referencedEntityIds.map(e=>e===t.id?e:p.get(e)??e)})}},n)}),s=this._getFragmentComponents(d,i);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,i,o)=>this.cookRecipes(e,t).map(e=>e.parentId?n.DomainEntityCreation({entity:e.entity,collection:void 0,updateTag:CreateRecipeUpdateTag,parentId:e.parentId}):n.DomainEntityCreation({entity:e.entity,collection:o,updateTag:CreateRecipeUpdateTag,parentId:i}));prepareReplaceUpdates=(e,t,i,o)=>{let a=this.cookRecipes(e,t),p=a.filter(e=>!e.parentId);if(!p[0]||p.length>1)throw Error("Can not prepare ReplaceEntityRecipes, root entity not found in the cooked recipes. Please, make sure that defined recipes have always a single root entity.");return a.map(e=>e.parentId?n.DomainEntityCreation({entity:e.entity,collection:void 0,updateTag:ReplaceRecipeUpdateTag,parentId:e.parentId}):n.DomainEntityReplacement({entityId:i,replacementEntity:e.entity,updateTag:ReplaceRecipeUpdateTag,keepChildren:o??!1}))}}
1
+ import{composedOfComponent as e,domainEntityTypeFromId as t,isDomainEntityId as n,referenceComponent as i,systemUpdateFactory as a}from"../../core/index.js";import{getIdSequence as o}from"../store-system/next-domain-entity-id.js";export const CreateRecipeUpdateTag="createRecipe";export const isCreateEntityUpdate=(e,n)=>"createDomainEntity"===e.kind&&e.updateTag===CreateRecipeUpdateTag&&n.includes(t(e.entityId));export const ReplaceRecipeUpdateTag="replaceRecipe";export const isReplaceEntityUpdate=(e,i)=>"replaceDomainEntity"===e.kind&&e.updateTag===ReplaceRecipeUpdateTag&&n(e.entityId)&&i.includes(t(e.entityId));export class RecipeCookerSystem{_context;constructor(e){this._context=e}_getFragmentComponents=(e,t)=>this._context.selectors.getComponentReader().readManyComponents({componentTypes:[t]},{rootEntityId:"Root-1",rootEntityType:"Root",entities:e,ephemeralRecords:[]});cookRecipes=(n,a)=>{let p=new Map,r=o(a.entities,[]);for(let e of n){let t=r.nextId(e.type);p.set(e.id,t)}let c=this._getFragmentComponents(n,i),d=n.map(e=>{let n={...e,id:p.get(e.id)};return c.filter(t=>t.componentInstance.entityId===e.id).reduce((n,i)=>{let a=this._context.selectors.getComponentReaderIndexes().opticMap.get(t(e.id))?.get(i.componentInstance.componentType)?.get(i.componentInstance.instanceName);if(a?.kind!=="simple")throw Error("References can only be simple optics!");return{...n,...a?.write({referencedEntityIds:i.state.referencedEntityIds.map(t=>t===e.id?t:p.get(t)??t)})}},n)}),s=this._getFragmentComponents(d,e);return d.map(e=>{let t=s.find(t=>t.state.childEntityIds.includes(e.id));return{entity:e,parentId:t?.componentInstance.entityId}})};prepareCreateUpdates=(e,t,n,i)=>this.cookRecipes(e,t).map(e=>e.parentId?a.DomainEntityCreation({entity:e.entity,collection:void 0,updateTag:CreateRecipeUpdateTag,parentId:e.parentId}):a.DomainEntityCreation({entity:e.entity,collection:i,updateTag:CreateRecipeUpdateTag,parentId:n}));prepareReplaceUpdates=(e,t,n,i)=>{let o=this.cookRecipes(e,t),p=o.filter(e=>!e.parentId);if(!p[0]||p.length>1)throw Error("Can not prepare ReplaceEntityRecipes, root entity not found in the cooked recipes. Please, make sure that defined recipes have always a single root entity.");return o.map(e=>e.parentId?a.DomainEntityCreation({entity:e.entity,collection:void 0,updateTag:ReplaceRecipeUpdateTag,parentId:e.parentId}):a.DomainEntityReplacement({entityId:n,replacementEntity:e.entity,updateTag:ReplaceRecipeUpdateTag,keepChildren:i??!1}))}}
@@ -1 +1 @@
1
- import{isNonNullish as e}from"@salsita-ai/common/utils";import{systemUpdateFactory as t}from"../../core/index.js";import{referenceComponent as n}from"../../relations/reference-component.js";export const createCascadeRefPruningTransformer=r=>(i,o,a,s,c=[])=>{let d=new Set([...i,...c].filter(e=>"deleteEntity"===e.kind).map(e=>e.entityId));if(0===d.size)return i;let m=new Set([...i,...c].filter(e=>"deleteEntity"===e.kind||"replaceDomainEntity"===e.kind).map(e=>e.entityId)),f=r.readManyComponents({componentTypes:[n]},o).map(e=>{if(m.has(e.componentInstance.entityId))return;let n=e.state.referencedEntityIds.filter(e=>!d.has(e));if(n.length<e.state.referencedEntityIds.length)return t.ComponentModification({componentInstance:e.componentInstance,updateTag:"refs.cascadePruning",writableState:{referencedEntityIds:n}})}).filter(e);return f.length>0?[...i,...f]:i};
1
+ import{isNonNullish as e}from"@salsita-ai/common/utils";import{referenceComponent as t,systemUpdateFactory as n}from"../../core/index.js";export const createCascadeRefPruningTransformer=r=>(i,a,o,s,d=[])=>{let c=new Set([...i,...d].filter(e=>"deleteEntity"===e.kind).map(e=>e.entityId));if(0===c.size)return i;let m=new Set([...i,...d].filter(e=>"deleteEntity"===e.kind||"replaceDomainEntity"===e.kind).map(e=>e.entityId)),f=r.readManyComponents({componentTypes:[t]},a).map(e=>{if(m.has(e.componentInstance.entityId))return;let t=e.state.referencedEntityIds.filter(e=>!c.has(e));if(t.length<e.state.referencedEntityIds.length)return n.ComponentModification({componentInstance:e.componentInstance,updateTag:"refs.cascadePruning",writableState:{referencedEntityIds:t}})}).filter(e);return f.length>0?[...i,...f]:i};
@@ -1,2 +1,2 @@
1
- import{systemUpdateFactory as e}from"../../core/index.js";import{referenceComponent as t}from"../../relations/reference-component.js";export const createCreateEntityRefsTransformer=n=>(r,o)=>{let i=r.filter(e=>"createDomainEntity"===e.kind);if(0===i.length)return r;let a=i.flatMap(r=>{if(void 0===r.collection)return[];let i=n.readManyComponents({componentTypes:[t],entityIds:[r.parentId],instanceNames:[r.collection]},o);if(0===i.length)throw Error(`Newly created entity ${r.entityId} should be added to collection ${r.collection} on parent entity ${r.parentId}, but no such collection can be found.
2
- Check whether the collection name is correctly specified in the createDomainEntity update.`);return i.map(t=>e.ComponentModification({componentInstance:t.componentInstance,updateTag:"refs.update",writableState:{referencedEntityIds:t.state.referencedEntityIds.concat(r.entityId)}}))}).reduce((t,n)=>{let r=t[n.entityId.toString()];if(r){let o=e.ComponentModification({componentInstance:r.componentInstance,updateTag:r.updateTag,writableState:{referencedEntityIds:Array.from(new Set([...r.writableState.referencedEntityIds,...n.writableState.referencedEntityIds]))}});t[n.entityId.toString()]=o}else t[n.entityId.toString()]=n;return t},{});return r.concat(Object.values(a))};
1
+ import{referenceComponent as e,systemUpdateFactory as t}from"../../core/index.js";export const createCreateEntityRefsTransformer=n=>(r,o)=>{let i=r.filter(e=>"createDomainEntity"===e.kind);if(0===i.length)return r;let a=i.flatMap(r=>{if(void 0===r.collection)return[];let i=n.readManyComponents({componentTypes:[e],entityIds:[r.parentId],instanceNames:[r.collection]},o);if(0===i.length)throw Error(`Newly created entity ${r.entityId} should be added to collection ${r.collection} on parent entity ${r.parentId}, but no such collection can be found.
2
+ Check whether the collection name is correctly specified in the createDomainEntity update.`);return i.map(e=>t.ComponentModification({componentInstance:e.componentInstance,updateTag:"refs.update",writableState:{referencedEntityIds:e.state.referencedEntityIds.concat(r.entityId)}}))}).reduce((e,n)=>{let r=e[n.entityId.toString()];if(r){let o=t.ComponentModification({componentInstance:r.componentInstance,updateTag:r.updateTag,writableState:{referencedEntityIds:Array.from(new Set([...r.writableState.referencedEntityIds,...n.writableState.referencedEntityIds]))}});e[n.entityId.toString()]=o}else e[n.entityId.toString()]=n;return e},{});return r.concat(Object.values(a))};
@@ -1 +1 @@
1
- import{isNonNullish as e}from"@salsita-ai/common/utils";import{systemUpdateFactory as t}from"../../core/index.js";import{referenceComponent as n}from"../../relations/reference-component.js";export const createRefReplaceTransformer=i=>(r,o,a,c,m=[])=>{let p=new Map(r.filter(e=>"replaceDomainEntity"===e.kind).map(e=>[e.entityId,e.replacementEntity.id]));if(0===p.size)return r;let s=new Set([...r,...m].filter(e=>"deleteEntity"===e.kind||"replaceDomainEntity"===e.kind).map(e=>e.entityId)),d=i.readManyComponents({componentTypes:[n]},o).map(e=>{if(s.has(e.componentInstance.entityId)&&!p.has(e.componentInstance.entityId))return;let n=!1,i=e.state.referencedEntityIds.map(e=>{let t=p.get(e);return void 0!==t?(n=!0,t):e});if(n)return t.ComponentModification({componentInstance:{...e.componentInstance,entityId:p.get(e.componentInstance.entityId)??e.componentInstance.entityId},updateTag:"refs.replace",writableState:{referencedEntityIds:i}})}).filter(e);return d.length>0?[...r,...d]:r};
1
+ import{isNonNullish as e}from"@salsita-ai/common/utils";import{referenceComponent as t,systemUpdateFactory as n}from"../../core/index.js";export const createRefReplaceTransformer=i=>(r,a,o,c,p=[])=>{let m=new Map(r.filter(e=>"replaceDomainEntity"===e.kind).map(e=>[e.entityId,e.replacementEntity.id]));if(0===m.size)return r;let d=new Set([...r,...p].filter(e=>"deleteEntity"===e.kind||"replaceDomainEntity"===e.kind).map(e=>e.entityId)),s=i.readManyComponents({componentTypes:[t]},a).map(e=>{if(d.has(e.componentInstance.entityId)&&!m.has(e.componentInstance.entityId))return;let t=!1,i=e.state.referencedEntityIds.map(e=>{let n=m.get(e);return void 0!==n?(t=!0,n):e});if(t)return n.ComponentModification({componentInstance:{...e.componentInstance,entityId:m.get(e.componentInstance.entityId)??e.componentInstance.entityId},updateTag:"refs.replace",writableState:{referencedEntityIds:i}})}).filter(e);return s.length>0?[...r,...s]:r};
@@ -14,7 +14,7 @@ import type { DomainServicesSelectors } from '../domain-services/index.js';
14
14
  import type { EnvironmentSelectors } from '../environment/index.js';
15
15
  import type { ApplicationLoadedData } from '../loaded-data/index.js';
16
16
  import type { DomainSessionContext, SessionContextSelectorState, SessionContextSelectors } from '../session-context/index.js';
17
- import type { SpecSelectorState, SpecSelectors } from '../spec/index.js';
17
+ import { type SpecSelectorState, type SpecSelectors } from '../spec/index.js';
18
18
  import type { WebComponentSelectorState, WebComponentSelectors } from '../web-component/index.js';
19
19
  import type { DomainContextApplicationActions } from './actions.js';
20
20
  import { type AnyComponentReader } from './component-reader.js';
@@ -1 +1 @@
1
- import{createSelector as e}from"@salsita-ai/common/utils";import{prepareActionImplementations as t}from"../../actions/prepare-action-implementations.js";import{Domain as n,createInitialDomainState as o,prepareDomainExpressions as i}from"../../core/index.js";import{ActionSystem as a}from"../../domain-context/action-system/action-system.js";import{DimensionSystem as s}from"../../domain-context/dimension-system/dimension-system.js";import{NavigationSystem as r}from"../../domain-context/navigation-system/navigation-system.js";import{RecipeCookerSystem as c}from"../../domain-context/recipe-system/recipe-cooker-system.js";import{StoreSystem as m}from"../../domain-context/store-system/store-system.js";import{UndoSystem as l}from"../../domain-context/undo-system.js";import{BlenderProjections as d,CollisionProjections as g,CompositionProjections as f,ConstraintProjections as p,PositionProjections as u,ProjectedEntitiesProjections as y,SnappingProjections as w,ValidationProjections as h}from"../../projections/index.js";import{SketchingProjections as S}from"../../sketching/sketching-projections.js";import{requireAccessService as x}from"../access/index.js";import{ComponentReader as j}from"./component-reader.js";import{DomainContext as C}from"./domain-context.js";let D=e.withTypes(),v=[],I={},P={role:"admin",data:I},M=e=>{if(null!==e)return e;throw Error("Cannot read the session role and data because the domain session context is not set. The session context is written into the domain runtime by the session lifecycle after authentication. Move this read into the loaded session lifecycle.")};export const createDomainContextSelectors=e=>{let{applicationType:A,getState:R,actions:E,specSelectors:T,accessSelectors:b,webComponentSelectors:k,domainDataSelectors:$,sessionContextSelectors:N,domainServicesSelectors:z,environmentSelectors:L,getExtensionSystems:V}=e,B="configurator"===A?T.selectConfiguratorSpec:T.selectAdminSpec,F="configurator"===A?b.selectConfiguratorRawAccessService:b.selectAdminRawAccessService,W=D.leaf(e=>e.domainContext[A]),_=D([W],e=>e.initializationContext),q=D([_],e=>{if(null===e)throw Error(`Domain lifecycle context is not available for ${A}! Read it from an active domain lifecycle.`);return e}),O=D([W],e=>e.executionMode),U=D([W],e=>e.isInitialized),G=D([B],e=>e.factory),H=D([B],e=>e.expressions),J=D([B],e=>e.actions),K=D([B],e=>e.actionImplementations),Q=D([J,K],t),X=D([B],e=>e.$entityReflections),Y=D([H,X],(e,t)=>i({expressions:e,$entityReflections:t})),Z=D([B],e=>e.modelVersion),ee=D([B],e=>e.aliasMap),et=D([B],e=>e.allowedRootEntityTypes),en=D([B],e=>e.entityReflections),eo=D([B],e=>e.migrate),ei=D([O,k.selectReadonly,F],(e,t,n)=>"finalize"===e?"finalize":x(A,n).accessInfo.viewMode||t?"read":"owner"),ea=D([F],e=>e?.configurationId??null),es="configurator"===A?N.selectSessionContext:D([],()=>P),er=D([es],e=>e?.role??null),ec=D([es],e=>e?.data??null),em=D([D.leaf(e=>e.loadedData)],e=>"configurator"===A?e.configuratorLoadedData:e.adminLoadedData),el=D([em],e=>e?.schemaIdentity??null),ed=D([em,G],(e,t)=>{if(null===e)return"coherent";let n=e.schemaIdentity;return void 0===n?"missing-stamp":n===t?"coherent":"schema-mismatch"}),eg=D([ea,er,ec,el,ed],(e,t,n,o,i)=>null===e||null===t||null===n||null===o||"coherent"!==i?null:{configurationId:e,role:t,schemaIdentity:o,sessionData:n}),ef=D([F,k.selectReadonly],(e,t)=>e?.accessInfo.viewMode===!0||t),ep=D([eg,_,U,ef],(e,t,n,o)=>{let i=null!==e&&null!==t&&n&&t.configurationId===e.configurationId&&t.role===e.role&&t.schemaIdentity===e.schemaIdentity&&t.sessionData===e.sessionData;return{identity:e,isCurrent:i,isViewMode:o}}),eu=D([B],e=>e.componentOptics),ey=D([eu],e=>(e=>{let t=new Map,n=new Map,o=new Map,i=new Map;for(let n of e)for(let e of n.entityTypes){let o=t.get(e);o||(o=new Map,t.set(e,o));let a=o.get(n.componentType);if(a||(a=new Map,o.set(n.componentType,a)),a.has(n.instanceName))throw Error(`Component instance ${n.instanceName} already exists for type ${n.componentType.name} in entity ${e}. This is likely a bug in the component definition! InstanceNames must be unique within an entity and component.`);if(a.set(n.instanceName,n),"dynamic"===n.kind){let t=i.get(e);t||(t=new Map,i.set(e,t));let o=t.get(n.componentType)??[],a=o.find(e=>{var t;return t=n.instanceName,e.startsWith(`${t}_`)||t.startsWith(`${e}_`)});if(a)throw Error(`Cannot register dynamic component instance ${n.instanceName} for component ${n.componentType.name} on entity ${e} because it overlaps with dynamic instance ${a}. Rename one dynamic instance so compound names cannot be ambiguous.`);t.set(n.componentType,[...o,n.instanceName])}}for(let[e,i]of t.entries()){n.set(e,new Set(i.keys()));let t=new Map;for(let[n,a]of(o.set(e,t),i.entries()))t.set(n,new Set(a.keys()))}return{opticMap:t,allComponentTypes:n,allComponentInstanceNames:o,dynamicInstanceNames:i}})(e)),ew=D([ey,Y,et],(e,t,n)=>({componentReaderIndexes:e,domainExpressions:t,allowedRootEntityTypes:n})),eh=D([B],e=>e.navigationStates),eS=D([B],e=>e.viewStates),ex="configurator"===A?D([T.selectConfiguratorSpec],e=>e.toolStates):D([],()=>v),ej="configurator"===A?D([T.selectConfiguratorSpec],e=>e.exportStates):D([],()=>v),eC="configurator"===A?D([T.selectConfiguratorSpec],e=>e.createTransformers):D([],()=>void 0),eD=D([em],e=>{if(null===e)throw Error(`Loaded data is not available for ${A}! Loaded data is written after the configuration fetch succeeds and before the domain context initialization starts.`);return e}),ev=D([eD,G],(e,t)=>o(t.validateAndMigrateState(e.initialEntities,e.modelVersion),e.rootEntityType)),eI="configurator"===A?$.selectConfiguratorFrontendData:$.selectAdminFrontendData,eP="configurator"===A?$.selectConfiguratorBackendData:$.selectAdminBackendData,eM="configurator"===A?$.selectConfiguratorPublishedData:$.selectAdminPublishedData,eA="configurator"===A?D([N.selectSessionContext],e=>M(e).role):D([],()=>"admin"),eR="configurator"===A?D([N.selectSessionContext],e=>M(e).data):D([],()=>I),eE=D([ea,ei,eA,eR,eD],(e,t,n,o,i)=>({configurationId:e,mode:t,role:n,schemaIdentity:i.schemaIdentity,sessionData:o})),eT=D([q],e=>e.mode),eb=D([q],e=>{let t=e.configurationId;if(null===t)throw Error(`Configuration id is not available for ${A}! Read it from an active interactive domain lifecycle.`);return t}),ek=D([q],e=>e.role),e$=D([q],e=>e.sessionData),eN=D([eT,ek,e$,eI,eP,eM,eo],(e,t,n,o,i,a,s)=>({mode:e,role:t,sessionData:n,frontendData:o,backendData:i,publishedData:a,migrate:s,domain:eL,componentReader:eV,positionProjections:eq,sketchingProjections:e_,collisionProjections:eO,constraintProjections:eG,snappingProjections:eU,projectedEntitiesProjections:eH})),ez={selectApplicationSpec:B,selectRawAccessService:F,selectDomainContextState:W,selectInitializationContext:_,selectActiveInitializationContext:q,selectExecutionMode:O,selectIsInitialized:U,selectFactory:G,selectSpecExpressions:H,select$SpecEntityReflections:X,selectDomainExpressions:Y,selectModelVersion:Z,selectAliasMap:ee,selectAllowedRootEntityTypes:et,selectEntityReflections:en,selectMigrate:eo,selectLatestMode:ei,selectLatestConfigurationId:ea,selectLatestSessionContext:es,selectLatestRoleOrNull:er,selectLatestSessionDataOrNull:ec,selectLatestSchemaIdentity:el,selectSchemaCoherence:ed,selectInitializationIdentity:eg,selectIsViewMode:ef,selectInitializationState:ep,selectComponentOptics:eu,selectComponentReaderIndexes:ey,selectStoreRuntimeDependencies:ew,selectNavigationStates:eh,selectViewStates:eS,selectToolStates:ex,selectExportStates:ej,selectCreateTransformers:eC,selectLatestLoadedData:em,selectLoadedData:eD,selectInitialDomainState:ev,selectFrontendData:eI,selectBackendData:eP,selectPublishedData:eM,selectLatestRole:eA,selectLatestSessionData:eR,selectNextInitializationContext:eE,selectActiveMode:eT,selectActiveConfigurationId:eb,selectActiveRole:ek,selectActiveSessionData:e$,selectExpressionContext:eN,getInitializationContext:()=>_(R()),getInitializationState:()=>ep(R()),getNextInitializationContext:()=>eE(R()),getLatestLoadedData:()=>em(R()),getSchemaCoherence:()=>ed(R()),getActiveConfigurationId:()=>eb(R()),getFactory:()=>G(R()),getDomainExpressions:()=>Y(R()),getActionDefinitions:()=>J(R()),getActionImplementations:()=>Q(R()),getModelVersion:()=>Z(R()),getAliasMap:()=>ee(R()),getAllowedRootEntityTypes:()=>et(R()),getEntityReflections:()=>en(R()),getMigrate:()=>eo(R()),getActiveMode:()=>eT(R()),getIsInitialized:()=>U(R()),getComponentReaderIndexes:()=>ey(R()),getStoreRuntimeDependencies:()=>ew(R()),getNavigationStates:()=>eh(R()),getViewStates:()=>eS(R()),getToolStates:()=>ex(R()),getExportStates:()=>ej(R()),getCreateTransformers:()=>eC(R()),getLoadedData:()=>eD(R()),getInitialDomainState:()=>ev(R()),getFrontendData:()=>eI(R()),getBackendData:()=>eP(R()),getPublishedData:()=>eM(R()),getActiveRole:()=>ek(R()),getActiveSessionData:()=>e$(R()),getDomain:()=>eL,getComponentReader:()=>eV,getCompositionProjections:()=>eB,getDimensionSystem:()=>eF,getValidationProjections:()=>eW,getSketchingProjections:()=>e_,getPositionProjections:()=>eq,getCollisionProjections:()=>eO,getSnappingProjections:()=>eU,getConstraintProjections:()=>eG,getProjectedEntitiesProjections:()=>eH,getStoreSystem:()=>eJ,getNavigationSystem:()=>eK,getUndoSystem:()=>eQ,getRecipeCookerSystem:()=>eX,getActionSystem:()=>eY,getBlenderProjections:()=>eZ,getExpressionContext:()=>eN(R()),getDomainSystems:function(){return e0},getDomainContext:function(){return e1}},eL=new n({selectors:ez}),eV=new j({selectors:ez}),eB=new f({selectors:ez}),eF=new s({selectors:ez}),eW=new h({selectors:ez}),e_=new S({selectors:ez}),eq=new u({selectors:ez}),eO=new g({selectors:ez}),eU=new w({selectors:ez}),eG=new p({selectors:ez}),eH=new y({selectors:ez}),eJ=new m({selectors:ez,domainServicesSelectors:z,environmentSelectors:L}),eK=new r({selectors:ez,domainServicesSelectors:z}),eQ=new l({selectors:ez}),eX=new c({selectors:ez}),eY=new a({selectors:ez}),eZ=new d({selectors:ez,domainServicesSelectors:z}),e0={domainContextSelectors:ez,domain:eL,componentReader:eV,compositionProjections:eB,blenderProjections:eZ,validationProjections:eW,storeSystem:eJ,navigationSystem:eK,dimensionSystem:eF,undoSystem:eQ,recipeCooker:eX,actionSystem:eY,sketchingProjections:e_,collisionProjections:eO,positionProjections:eq,snappingProjections:eU,projectedEntitiesProjections:eH,constraintProjections:eG},e1=new C({selectors:ez,actions:E,getExtensionSystems:V});return ez};
1
+ import{createSelector as e}from"@salsita-ai/common/utils";import{Domain as t,createInitialDomainState as n}from"../../core/index.js";import{ActionSystem as o}from"../../domain-context/action-system/action-system.js";import{DimensionSystem as i}from"../../domain-context/dimension-system/dimension-system.js";import{NavigationSystem as a}from"../../domain-context/navigation-system/navigation-system.js";import{RecipeCookerSystem as s}from"../../domain-context/recipe-system/recipe-cooker-system.js";import{StoreSystem as r}from"../../domain-context/store-system/store-system.js";import{UndoSystem as c}from"../../domain-context/undo-system.js";import{BlenderProjections as l,CollisionProjections as m,CompositionProjections as d,ConstraintProjections as g,PositionProjections as f,ProjectedEntitiesProjections as p,SnappingProjections as u,ValidationProjections as y}from"../../projections/index.js";import{SketchingProjections as w}from"../../sketching/sketching-projections.js";import{requireAccessService as h}from"../access/index.js";import{prepareActionImplementations as S,prepareDomainExpressions as x}from"../spec/index.js";import{ComponentReader as j}from"./component-reader.js";import{DomainContext as C}from"./domain-context.js";let D=e.withTypes(),v=[],I={},P={role:"admin",data:I},M=e=>{if(null!==e)return e;throw Error("Cannot read the session role and data because the domain session context is not set. The session context is written into the domain runtime by the session lifecycle after authentication. Move this read into the loaded session lifecycle.")};export const createDomainContextSelectors=e=>{let{applicationType:A,getState:R,actions:E,specSelectors:T,accessSelectors:b,webComponentSelectors:k,domainDataSelectors:$,sessionContextSelectors:N,domainServicesSelectors:z,environmentSelectors:L,getExtensionSystems:V}=e,B="configurator"===A?T.selectConfiguratorSpec:T.selectAdminSpec,F="configurator"===A?b.selectConfiguratorRawAccessService:b.selectAdminRawAccessService,W=D.leaf(e=>e.domainContext[A]),_=D([W],e=>e.initializationContext),q=D([_],e=>{if(null===e)throw Error(`Domain lifecycle context is not available for ${A}! Read it from an active domain lifecycle.`);return e}),O=D([W],e=>e.executionMode),U=D([W],e=>e.isInitialized),G=D([B],e=>e.factory),H=D([B],e=>e.expressions),J=D([B],e=>e.actions),K=D([B],e=>e.actionImplementations),Q=D([J,K],S),X=D([B],e=>e.$entityReflections),Y=D([H,X],(e,t)=>x({expressions:e,$entityReflections:t})),Z=D([B],e=>e.modelVersion),ee=D([B],e=>e.aliasMap),et=D([B],e=>e.allowedRootEntityTypes),en=D([B],e=>e.entityReflections),eo=D([B],e=>e.migrate),ei=D([O,k.selectReadonly,F],(e,t,n)=>"finalize"===e?"finalize":h(A,n).accessInfo.viewMode||t?"read":"owner"),ea=D([F],e=>e?.configurationId??null),es="configurator"===A?N.selectSessionContext:D([],()=>P),er=D([es],e=>e?.role??null),ec=D([es],e=>e?.data??null),el=D([D.leaf(e=>e.loadedData)],e=>"configurator"===A?e.configuratorLoadedData:e.adminLoadedData),em=D([el],e=>e?.schemaIdentity??null),ed=D([el,G],(e,t)=>{if(null===e)return"coherent";let n=e.schemaIdentity;return void 0===n?"missing-stamp":n===t?"coherent":"schema-mismatch"}),eg=D([ea,er,ec,em,ed],(e,t,n,o,i)=>null===e||null===t||null===n||null===o||"coherent"!==i?null:{configurationId:e,role:t,schemaIdentity:o,sessionData:n}),ef=D([F,k.selectReadonly],(e,t)=>e?.accessInfo.viewMode===!0||t),ep=D([eg,_,U,ef],(e,t,n,o)=>{let i=null!==e&&null!==t&&n&&t.configurationId===e.configurationId&&t.role===e.role&&t.schemaIdentity===e.schemaIdentity&&t.sessionData===e.sessionData;return{identity:e,isCurrent:i,isViewMode:o}}),eu=D([B],e=>e.componentOptics),ey=D([eu],e=>(e=>{let t=new Map,n=new Map,o=new Map,i=new Map;for(let n of e)for(let e of n.entityTypes){let o=t.get(e);o||(o=new Map,t.set(e,o));let a=o.get(n.componentType);if(a||(a=new Map,o.set(n.componentType,a)),a.has(n.instanceName))throw Error(`Component instance ${n.instanceName} already exists for type ${n.componentType.name} in entity ${e}. This is likely a bug in the component definition! InstanceNames must be unique within an entity and component.`);if(a.set(n.instanceName,n),"dynamic"===n.kind){let t=i.get(e);t||(t=new Map,i.set(e,t));let o=t.get(n.componentType)??[],a=o.find(e=>{var t;return t=n.instanceName,e.startsWith(`${t}_`)||t.startsWith(`${e}_`)});if(a)throw Error(`Cannot register dynamic component instance ${n.instanceName} for component ${n.componentType.name} on entity ${e} because it overlaps with dynamic instance ${a}. Rename one dynamic instance so compound names cannot be ambiguous.`);t.set(n.componentType,[...o,n.instanceName])}}for(let[e,i]of t.entries()){n.set(e,new Set(i.keys()));let t=new Map;for(let[n,a]of(o.set(e,t),i.entries()))t.set(n,new Set(a.keys()))}return{opticMap:t,allComponentTypes:n,allComponentInstanceNames:o,dynamicInstanceNames:i}})(e)),ew=D([ey,Y,et],(e,t,n)=>({componentReaderIndexes:e,domainExpressions:t,allowedRootEntityTypes:n})),eh=D([B],e=>e.navigationStates),eS=D([B],e=>e.viewStates),ex="configurator"===A?D([T.selectConfiguratorSpec],e=>e.toolStates):D([],()=>v),ej="configurator"===A?D([T.selectConfiguratorSpec],e=>e.exportStates):D([],()=>v),eC="configurator"===A?D([T.selectConfiguratorSpec],e=>e.createTransformers):D([],()=>void 0),eD=D([el],e=>{if(null===e)throw Error(`Loaded data is not available for ${A}! Loaded data is written after the configuration fetch succeeds and before the domain context initialization starts.`);return e}),ev=D([eD,G],(e,t)=>n(t.validateAndMigrateState(e.initialEntities,e.modelVersion),e.rootEntityType)),eI="configurator"===A?$.selectConfiguratorFrontendData:$.selectAdminFrontendData,eP="configurator"===A?$.selectConfiguratorBackendData:$.selectAdminBackendData,eM="configurator"===A?$.selectConfiguratorPublishedData:$.selectAdminPublishedData,eA="configurator"===A?D([N.selectSessionContext],e=>M(e).role):D([],()=>"admin"),eR="configurator"===A?D([N.selectSessionContext],e=>M(e).data):D([],()=>I),eE=D([ea,ei,eA,eR,eD],(e,t,n,o,i)=>({configurationId:e,mode:t,role:n,schemaIdentity:i.schemaIdentity,sessionData:o})),eT=D([q],e=>e.mode),eb=D([q],e=>{let t=e.configurationId;if(null===t)throw Error(`Configuration id is not available for ${A}! Read it from an active interactive domain lifecycle.`);return t}),ek=D([q],e=>e.role),e$=D([q],e=>e.sessionData),eN=D([eT,ek,e$,eI,eP,eM,eo],(e,t,n,o,i,a,s)=>({mode:e,role:t,sessionData:n,frontendData:o,backendData:i,publishedData:a,migrate:s,domain:eL,componentReader:eV,positionProjections:eq,sketchingProjections:e_,collisionProjections:eO,constraintProjections:eG,snappingProjections:eU,projectedEntitiesProjections:eH})),ez={selectApplicationSpec:B,selectRawAccessService:F,selectDomainContextState:W,selectInitializationContext:_,selectActiveInitializationContext:q,selectExecutionMode:O,selectIsInitialized:U,selectFactory:G,selectSpecExpressions:H,select$SpecEntityReflections:X,selectDomainExpressions:Y,selectModelVersion:Z,selectAliasMap:ee,selectAllowedRootEntityTypes:et,selectEntityReflections:en,selectMigrate:eo,selectLatestMode:ei,selectLatestConfigurationId:ea,selectLatestSessionContext:es,selectLatestRoleOrNull:er,selectLatestSessionDataOrNull:ec,selectLatestSchemaIdentity:em,selectSchemaCoherence:ed,selectInitializationIdentity:eg,selectIsViewMode:ef,selectInitializationState:ep,selectComponentOptics:eu,selectComponentReaderIndexes:ey,selectStoreRuntimeDependencies:ew,selectNavigationStates:eh,selectViewStates:eS,selectToolStates:ex,selectExportStates:ej,selectCreateTransformers:eC,selectLatestLoadedData:el,selectLoadedData:eD,selectInitialDomainState:ev,selectFrontendData:eI,selectBackendData:eP,selectPublishedData:eM,selectLatestRole:eA,selectLatestSessionData:eR,selectNextInitializationContext:eE,selectActiveMode:eT,selectActiveConfigurationId:eb,selectActiveRole:ek,selectActiveSessionData:e$,selectExpressionContext:eN,getInitializationContext:()=>_(R()),getInitializationState:()=>ep(R()),getNextInitializationContext:()=>eE(R()),getLatestLoadedData:()=>el(R()),getSchemaCoherence:()=>ed(R()),getActiveConfigurationId:()=>eb(R()),getFactory:()=>G(R()),getDomainExpressions:()=>Y(R()),getActionDefinitions:()=>J(R()),getActionImplementations:()=>Q(R()),getModelVersion:()=>Z(R()),getAliasMap:()=>ee(R()),getAllowedRootEntityTypes:()=>et(R()),getEntityReflections:()=>en(R()),getMigrate:()=>eo(R()),getActiveMode:()=>eT(R()),getIsInitialized:()=>U(R()),getComponentReaderIndexes:()=>ey(R()),getStoreRuntimeDependencies:()=>ew(R()),getNavigationStates:()=>eh(R()),getViewStates:()=>eS(R()),getToolStates:()=>ex(R()),getExportStates:()=>ej(R()),getCreateTransformers:()=>eC(R()),getLoadedData:()=>eD(R()),getInitialDomainState:()=>ev(R()),getFrontendData:()=>eI(R()),getBackendData:()=>eP(R()),getPublishedData:()=>eM(R()),getActiveRole:()=>ek(R()),getActiveSessionData:()=>e$(R()),getDomain:()=>eL,getComponentReader:()=>eV,getCompositionProjections:()=>eB,getDimensionSystem:()=>eF,getValidationProjections:()=>eW,getSketchingProjections:()=>e_,getPositionProjections:()=>eq,getCollisionProjections:()=>eO,getSnappingProjections:()=>eU,getConstraintProjections:()=>eG,getProjectedEntitiesProjections:()=>eH,getStoreSystem:()=>eJ,getNavigationSystem:()=>eK,getUndoSystem:()=>eQ,getRecipeCookerSystem:()=>eX,getActionSystem:()=>eY,getBlenderProjections:()=>eZ,getExpressionContext:()=>eN(R()),getDomainSystems:function(){return e0},getDomainContext:function(){return e1}},eL=new t({selectors:ez}),eV=new j({selectors:ez}),eB=new d({selectors:ez}),eF=new i({selectors:ez}),eW=new y({selectors:ez}),e_=new w({selectors:ez}),eq=new f({selectors:ez}),eO=new m({selectors:ez}),eU=new u({selectors:ez}),eG=new g({selectors:ez}),eH=new p({selectors:ez}),eJ=new r({selectors:ez,domainServicesSelectors:z,environmentSelectors:L}),eK=new a({selectors:ez,domainServicesSelectors:z}),eQ=new c({selectors:ez}),eX=new s({selectors:ez}),eY=new o({selectors:ez}),eZ=new l({selectors:ez,domainServicesSelectors:z}),e0={domainContextSelectors:ez,domain:eL,componentReader:eV,compositionProjections:eB,blenderProjections:eZ,validationProjections:eW,storeSystem:eJ,navigationSystem:eK,dimensionSystem:eF,undoSystem:eQ,recipeCooker:eX,actionSystem:eY,sketchingProjections:e_,collisionProjections:eO,positionProjections:eq,snappingProjections:eU,projectedEntitiesProjections:eH,constraintProjections:eG},e1=new C({selectors:ez,actions:E,getExtensionSystems:V});return ez};
@@ -2,3 +2,6 @@ export * from './selectors.js';
2
2
  export type * from './types.js';
3
3
  export * from './actions.js';
4
4
  export * from './initialize.js';
5
+ export * from './memoize-expression.js';
6
+ export * from './prepare-action-implementations.js';
7
+ export * from './prepare-domain-expressions.js';
@@ -1 +1 @@
1
- export*from"./selectors.js";export*from"./actions.js";export*from"./initialize.js";
1
+ export*from"./selectors.js";export*from"./actions.js";export*from"./initialize.js";export*from"./memoize-expression.js";export*from"./prepare-action-implementations.js";export*from"./prepare-domain-expressions.js";
@@ -1,5 +1,4 @@
1
- import type { DomainEntity, DomainEntityId } from '../model/index.js';
2
- import type { Expression, ExpressionOrigin } from './expression.js';
1
+ import type { DomainEntity, DomainEntityId, Expression, ExpressionOrigin } from '../../core/index.js';
3
2
  export interface ExpressionTrace {
4
3
  origin: ExpressionOrigin;
5
4
  entityId: DomainEntityId<string>;
@@ -1,4 +1,4 @@
1
- import type { ActionDefinitions, AnyActionImplementations } from '../core/index.js';
1
+ import type { ActionDefinitions, AnyActionImplementations } from '../../core/index.js';
2
2
  /** The declared actions that have no implementation, and the implementations of undeclared names. */
3
3
  export interface ActionImplementationConflicts {
4
4
  readonly missing: readonly string[];
@@ -0,0 +1,5 @@
1
+ export const findActionImplementationConflicts=(e,t)=>{let n=Object.entries(t).filter(([,e])=>"function"==typeof e).map(([e])=>e);return{missing:e.filter(e=>!n.includes(e)),extra:n.filter(t=>!e.includes(t))}};export const prepareActionImplementations=(e,t)=>{let{missing:n,extra:i}=findActionImplementationConflicts(Object.values(e).map(e=>e.name),t);if(0===n.length&&0===i.length)return t;let o=Error("Domain cannot be instantiated because there are conflicts between declared and implemented actions."+(n.length>0?`
2
+
3
+ Missing actions: ${n.join(", ")}. Add each to a default export of phx.domain.implementActions({ ... }) in src/actions/.`:"")+(i.length>0?`
4
+
5
+ Extra actions: ${i.join(", ")}. Declare each under "actions" in a spec file or remove its implementation.`:"")+"\n");if(n.length>0)throw o;return console.error(o),t};
@@ -1,4 +1,4 @@
1
- import type { AnyExpressions } from './expression.js';
1
+ import type { AnyExpressions } from '../../core/index.js';
2
2
  interface DomainExpressionsSource {
3
3
  readonly expressions: AnyExpressions;
4
4
  readonly $entityReflections: Record<string, {
@@ -1,5 +1,5 @@
1
1
  import { type ComponentInstance, type ComponentSnapshot, type SystemComponentTypeConstraint } from '../core/index.js';
2
- import { type GroupedRecipeItems } from './common/recipes.js';
2
+ import { type GroupedRecipeItems } from '../system-components/index.js';
3
3
  export type ChildEntityRecipeHierarchyComponentState = {
4
4
  /**
5
5
  * The fixable violations.
@@ -0,0 +1 @@
1
+ import{SystemComponentBuilder as e}from"../core/index.js";import{GroupedRecipeItemsSchema as i}from"../system-components/index.js";export const childEntityRecipeHierarchyComponent=e.component("childEntityRecipeHierarchy").withState({type:"object",tsType:"ChildEntityRecipeHierarchyComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"ChildEntityRecipeHierarchyComponentState"}],properties:{recipes:i,fixableViolations:{type:"array",items:{type:"string"}}},definitions:{GroupedRecipeItems:i},required:["recipes"],additionalProperties:!1}).build();export const isChildEntityRecipeHierarchySnapshot=e=>e.componentInstance.componentType===childEntityRecipeHierarchyComponent;export const isChildEntityRecipeHierarchyInstance=e=>e.componentType===childEntityRecipeHierarchyComponent;
@@ -1,5 +1,5 @@
1
1
  import { type Localizable } from '@salsita-ai/common/utils';
2
- import { type AngleUnit } from '../../dimensions/angles.js';
2
+ import { type AngleUnit } from '../../dimensions/index.js';
3
3
  import type { DeepWritable } from '../../utils/deep-writable.js';
4
4
  export type AngleIndicatorBaseState = {
5
5
  /**
@@ -0,0 +1 @@
1
+ import{EnhancedLocalizableSchema as e}from"@salsita-ai/common/utils";import{AngleUnitSchema as t}from"../../dimensions/index.js";export const AngleIndicatorProperties={positionX:{type:"number"},positionY:{type:"number"},positionZ:{type:"number"},startAngle:{type:"number"},sweepAngle:{type:"number"},angleOffset:{type:"number"},arcDiameter:{type:"number"},lineWidth:{type:"number"},indicatorLineColor:{type:["string","number"]},indicatorLineDashed:{type:"boolean"},dashScale:{type:"number"},labelFont:{type:"string"},labelFontSize:{type:"number"},labelColor:{type:["string","number"]},labelDirection:{type:"string",enum:["auto","ltr","rtl"]},labelFillOpacity:{type:"number"},labelFontStyle:{type:"string",enum:["normal","italic"]},labelFontWeight:{type:["number","string"]},labelLetterSpacing:{type:"number"},labelLineHeight:{type:"number"},labelMaxWidth:{type:"number"},labelOutlineBlur:{type:["number","string"]},labelOutlineColor:{type:["string","number"]},labelOutlineOffsetX:{type:["number","string"]},labelOutlineOffsetY:{type:["number","string"]},labelOutlineOpacity:{type:"number"},labelOutlineWidth:{type:["number","string"]},labelOverflowWrap:{type:"string",enum:["normal","break-word"]},labelStrokeColor:{type:["string","number"]},labelStrokeOpacity:{type:"number"},labelStrokeWidth:{type:["number","string"]},labelWhiteSpace:{type:"string",enum:["normal","nowrap","pre-wrap"]},labelPrefix:e,labelPrefixFontColor:{type:["string","number"]},indicatorAlwaysVisible:{type:"boolean"},renderOrder:{type:"number"},screenSized:{type:"boolean"},angleUnit:t};
@@ -0,0 +1,4 @@
1
+ export { type AngleIndicatorBaseState, AngleIndicatorProperties } from './angle-indicator-schema.js';
2
+ export { ArrowHeadType, ArrowHeadTypeSchema } from './dimension-indicators.js';
3
+ export { type EditableIndicatorButtonVariant, EditableIndicatorButtonVariantSchema, } from './editable-indicator-button-variant.js';
4
+ export { type DimensionIndicatorBaseState, type DimensionIndicatorState, DimensionIndicatorBaseProperties, DimensionIndicatorProperties, } from './dimension-indicator-schema.js';
@@ -0,0 +1 @@
1
+ export{AngleIndicatorProperties}from"./angle-indicator-schema.js";export{ArrowHeadType,ArrowHeadTypeSchema}from"./dimension-indicators.js";export{EditableIndicatorButtonVariantSchema}from"./editable-indicator-button-variant.js";export{DimensionIndicatorBaseProperties,DimensionIndicatorProperties}from"./dimension-indicator-schema.js";
@@ -1,5 +1,5 @@
1
1
  import { type ComponentInstance, type ComponentSnapshot } from '../core/index.js';
2
- import { type PhoenixLayoutElement } from './phoenix-layout-elements/index.js';
2
+ import { type PhoenixLayoutElement } from '../system-components/index.js';
3
3
  export type CustomHeaderComponentState = {
4
4
  readonly children?: readonly PhoenixLayoutElement[];
5
5
  };
@@ -0,0 +1 @@
1
+ import{SystemComponentBuilder as e,isInstanceOfComponentType as t,isSnapshotOfComponentType as o}from"../core/index.js";import{PhoenixLayoutElementSchema as n}from"../system-components/index.js";export const customHeaderComponent=e.component("customHeader").withState({type:"object",tsType:"CustomHeaderComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"CustomHeaderComponentState"}],properties:{children:{type:"array",items:{$ref:"#/definitions/PhoenixLayoutElement"}}},definitions:{PhoenixLayoutElement:n},required:[],additionalProperties:!1}).build();export const isCustomHeaderSnapshot=o(customHeaderComponent);export const isCustomHeaderInstance=t(customHeaderComponent);
@@ -1 +1 @@
1
- import{SystemComponentBuilder as o}from"../core/index.js";import{ReactNodeSchema as e}from"./common/react-node-schema.js";export const customPriceFooterComponent=o.component("customPriceFooter").withState({type:"object",properties:{node:e},required:["node"],additionalProperties:!1}).build();
1
+ import{SystemComponentBuilder as o}from"../core/index.js";import{ReactNodeSchema as e}from"../system-components/index.js";export const customPriceFooterComponent=o.component("customPriceFooter").withState({type:"object",properties:{node:e},required:["node"],additionalProperties:!1}).build();
@@ -1,5 +1,5 @@
1
1
  import { type ComponentInstance, type ComponentSnapshot } from '../core/index.js';
2
- import { type PhoenixLayoutElement } from './phoenix-layout-elements/index.js';
2
+ import { type PhoenixLayoutElement } from '../system-components/index.js';
3
3
  export type CustomSidebarFooterComponentState = {
4
4
  readonly children?: readonly PhoenixLayoutElement[];
5
5
  };
@@ -0,0 +1 @@
1
+ import{SystemComponentBuilder as o,isInstanceOfComponentType as e,isSnapshotOfComponentType as t}from"../core/index.js";import{PhoenixLayoutElementSchema as r}from"../system-components/index.js";export const customSidebarFooterComponent=o.component("customSidebarFooter").withState({type:"object",tsType:"CustomSidebarFooterComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"CustomSidebarFooterComponentState"}],properties:{children:{type:"array",items:{$ref:"#/definitions/PhoenixLayoutElement"}}},definitions:{PhoenixLayoutElement:r},required:[],additionalProperties:!1}).build();export const isCustomSidebarFooterSnapshot=t(customSidebarFooterComponent);export const isCustomSidebarFooterInstance=e(customSidebarFooterComponent);
@@ -1,6 +1,7 @@
1
1
  import { type Localizable } from '@salsita-ai/common/utils';
2
2
  import { type ComponentInstance, type ComponentSnapshot } from '../core/index.js';
3
- import { type AngleIndicatorBaseState, type EditableIndicatorButtonVariant, type SceneEntityHtmlOpacityState, type SceneEntityHtmlVisibilityState } from './common/index.js';
3
+ import { type SceneEntityHtmlOpacityState, type SceneEntityHtmlVisibilityState } from '../system-components/index.js';
4
+ import { type AngleIndicatorBaseState, type EditableIndicatorButtonVariant } from './common/index.js';
4
5
  export type EditableAngleIndicatorComponentState = AngleIndicatorBaseState & SceneEntityHtmlOpacityState & SceneEntityHtmlVisibilityState & {
5
6
  /**
6
7
  * The instance name of the angleDimension component that will be used to update the angle.
@@ -0,0 +1 @@
1
+ import{EnhancedLocalizableSchema as t}from"@salsita-ai/common/utils";import{SystemComponentBuilder as e,isSnapshotOfComponentType as o}from"../core/index.js";import{SceneHtmlOpacityProperties as i,SceneHtmlVisibilityProperties as n}from"../system-components/index.js";import{AngleIndicatorProperties as a,EditableIndicatorButtonVariantSchema as r}from"./common/index.js";export const editableAngleIndicatorComponent=e.component("editableAngleIndicator").withState({tsType:"EditableAngleIndicatorComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"EditableAngleIndicatorComponentState"}],type:"object",properties:{...a,...i,...n,targetDimension:{type:"string"},fixableViolations:{type:"array",items:{type:"string"}},inputLabel:t,modalTitle:t,modalText:t,helperText:t,buttonVariant:r},required:["targetDimension","positionX","positionY","positionZ","startAngle","sweepAngle"],additionalProperties:!1}).build();export const isEditableAngleIndicatorSnapshot=o(editableAngleIndicatorComponent);
@@ -1,6 +1,7 @@
1
1
  import { type Localizable } from '@salsita-ai/common/utils';
2
2
  import { type ComponentInstance, type ComponentSnapshot } from '../core/index.js';
3
- import { type DimensionIndicatorState, type EditableIndicatorButtonVariant, type SceneEntityHtmlOpacityState, type SceneEntityHtmlVisibilityState } from './common/index.js';
3
+ import { type SceneEntityHtmlOpacityState, type SceneEntityHtmlVisibilityState } from '../system-components/index.js';
4
+ import { type DimensionIndicatorState, type EditableIndicatorButtonVariant } from './common/index.js';
4
5
  export type EditableDistanceDimensionIndicatorComponentState = DimensionIndicatorState & SceneEntityHtmlOpacityState & SceneEntityHtmlVisibilityState & {
5
6
  /**
6
7
  * The instance name of the dimension component that will be used to update the dimension.
@@ -0,0 +1 @@
1
+ import{EnhancedLocalizableSchema as t}from"@salsita-ai/common/utils";import{SystemComponentBuilder as e,isSnapshotOfComponentType as i}from"../core/index.js";import{SceneHtmlOpacityProperties as n,SceneHtmlVisibilityProperties as o}from"../system-components/index.js";import{DimensionIndicatorProperties as a,EditableIndicatorButtonVariantSchema as s}from"./common/index.js";export const editableDistanceDimensionIndicatorComponent=e.component("editableDistanceDimensionIndicator").withState({tsType:"EditableDistanceDimensionIndicatorComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"EditableDistanceDimensionIndicatorComponentState"}],type:"object",properties:{...a,...n,...o,targetDimension:{type:"string"},fixableViolations:{type:"array",items:{type:"string"}},inputLabel:t,modalTitle:t,modalText:t,helperText:t,buttonVariant:s,icon:{type:"string"}},required:["targetDimension","startX","startY","startZ","endX","endY","endZ"],additionalProperties:!1}).build();export const isEditableDistanceDimensionIndicatorSnapshot=i(editableDistanceDimensionIndicatorComponent);
@@ -1,6 +1,7 @@
1
1
  import { type Localizable } from '@salsita-ai/common/utils';
2
2
  import { type ComponentInstance, type ComponentSnapshot } from '../core/index.js';
3
- import { type EditableIndicatorButtonVariant, type SceneEntityHtmlOpacityState, type SceneEntityHtmlVisibilityState } from './common/index.js';
3
+ import { type SceneEntityHtmlOpacityState, type SceneEntityHtmlVisibilityState } from '../system-components/index.js';
4
+ import { type EditableIndicatorButtonVariant } from './common/index.js';
4
5
  import { type OffsetIndicatorComponentState } from './offset-indicator.js';
5
6
  export type EditableOffsetIndicatorComponentState = OffsetIndicatorComponentState & SceneEntityHtmlOpacityState & SceneEntityHtmlVisibilityState & {
6
7
  /**
@@ -0,0 +1 @@
1
+ import{EnhancedLocalizableSchema as t}from"@salsita-ai/common/utils";import{SystemComponentBuilder as e,isSnapshotOfComponentType as i}from"../core/index.js";import{DimensionUnitSchema as n,UnitsConfigSchema as r}from"../dimensions/index.js";import{SceneHtmlOpacityProperties as o,SceneHtmlVisibilityProperties as a}from"../system-components/index.js";import{DimensionIndicatorBaseProperties as s,EditableIndicatorButtonVariantSchema as p}from"./common/index.js";export const editableOffsetIndicatorComponent=e.component("editableOffsetIndicator").withState({tsType:"EditableOffsetIndicatorComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"EditableOffsetIndicatorComponentState"}],type:"object",properties:{...s,targetEntityOffsetAnchors:{type:"array",items:{type:"string"}},targetReferenceOffsetAnchors:{type:"array",items:{type:"string"}},referenceEntityIds:{type:"array",items:{type:"string"}},directionVector:{type:"object",properties:{x:{type:"number"},y:{type:"number"},z:{type:"number"}},additionalProperties:!1},directionVectorRelativeToEntityId:{type:"string"},maxDistance:{type:["number","null"]},minDistance:{type:["number","null"]},maxPerpendicularDistance:{type:["number","null"]},minPerpendicularDistance:{type:["number","null"]},visible:{type:"boolean"},force:{type:"boolean"},displayUnit:n,unitDisplayConfig:r,...o,...a,targetOffset:{type:"string"},fixableViolations:{type:"array",items:{type:"string"}},inputLabel:t,modalTitle:t,modalText:t,helperText:t,buttonVariant:p},required:["targetOffset","targetEntityOffsetAnchors","targetReferenceOffsetAnchors","directionVector"],additionalProperties:!1}).build();export const isEditableOffsetIndicatorSnapshot=i(editableOffsetIndicatorComponent);
@@ -1,6 +1,7 @@
1
1
  import { type Localizable } from '@salsita-ai/common/utils';
2
2
  import { type ComponentInstance, type ComponentSnapshot } from '../core/index.js';
3
- import { type DimensionIndicatorState, type EditableIndicatorButtonVariant, type SceneEntityHtmlOpacityState, type SceneEntityHtmlVisibilityState } from './common/index.js';
3
+ import { type SceneEntityHtmlOpacityState, type SceneEntityHtmlVisibilityState } from '../system-components/index.js';
4
+ import { type DimensionIndicatorState, type EditableIndicatorButtonVariant } from './common/index.js';
4
5
  export type EditableSizeIndicatorComponentState = DimensionIndicatorState & SceneEntityHtmlOpacityState & SceneEntityHtmlVisibilityState & {
5
6
  /**
6
7
  * The instance name of the size component that will be used to update the size.
@@ -0,0 +1 @@
1
+ import{EnhancedLocalizableSchema as t}from"@salsita-ai/common/utils";import{SystemComponentBuilder as e,isSnapshotOfComponentType as i}from"../core/index.js";import{SceneHtmlOpacityProperties as o,SceneHtmlVisibilityProperties as a}from"../system-components/index.js";import{DimensionIndicatorProperties as n,EditableIndicatorButtonVariantSchema as r}from"./common/index.js";export const editableSizeIndicatorComponent=e.component("editableSizeIndicator").withState({tsType:"EditableSizeIndicatorComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"EditableSizeIndicatorComponentState"}],type:"object",properties:{...n,...o,...a,targetSize:{type:"string"},fixableViolations:{type:"array",items:{type:"string"}},inputLabel:t,modalTitle:t,modalText:t,helperText:t,buttonVariant:r},required:["targetSize","startX","startY","startZ","endX","endY","endZ"],additionalProperties:!1}).build();export const isEditableSizeIndicatorSnapshot=i(editableSizeIndicatorComponent);