@salsita-ai/sdk 0.50.0-develop.abef6d86a1 → 0.50.0-develop.ae9a830ef0

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 (410) hide show
  1. package/README.md +2 -2
  2. package/dist/application-spec/core/components/component-filter.d.ts +53 -0
  3. package/dist/application-spec/core/components/component-filter.js +1 -0
  4. package/dist/application-spec/core/components/index.d.ts +2 -0
  5. package/dist/application-spec/core/components/index.js +1 -0
  6. package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
  7. package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
  8. package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
  9. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  10. package/dist/application-spec/core/expressions/index.d.ts +2 -0
  11. package/dist/application-spec/core/expressions/index.js +1 -0
  12. package/dist/application-spec/core/expressions/relation-expression-params.d.ts +11 -0
  13. package/dist/application-spec/core/expressions/sdk-expression-implementation.d.ts +24 -0
  14. package/dist/application-spec/core/expressions/sdk-expression-implementation.js +1 -0
  15. package/dist/application-spec/core/index.d.ts +2 -0
  16. package/dist/application-spec/core/index.js +1 -1
  17. package/dist/application-spec/core/json-value.d.ts +1 -1
  18. package/dist/application-spec/{core → enhanced-json}/eval-to-constant.d.ts +1 -1
  19. package/dist/application-spec/enhanced-json/index.d.ts +4 -0
  20. package/dist/application-spec/enhanced-json/index.js +1 -0
  21. package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
  22. package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
  23. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
  24. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
  25. package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
  26. package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
  27. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
  28. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
  29. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
  30. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
  31. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
  32. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
  33. package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
  34. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  35. package/dist/application-spec/errors/diagnostic-messages.d.ts +12 -0
  36. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  37. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +7 -0
  38. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  39. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +4 -4
  40. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  41. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  42. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +48 -48
  43. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  44. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  45. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  46. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +11 -11
  47. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +1 -1
  48. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  49. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  50. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  51. package/dist/application-spec/generate-application/code/templates/globals.js +5 -4
  52. package/dist/application-spec/generate-application/code/templates/index.d.ts +0 -1
  53. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  54. package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
  55. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +8 -2
  56. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  57. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +5 -2
  58. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  59. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +1 -3
  60. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +1 -3
  61. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +1 -1
  62. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  63. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +2 -1
  64. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  65. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +2 -4
  66. package/dist/application-spec/index.d.ts +1 -0
  67. package/dist/application-spec/index.js +1 -1
  68. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  69. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  70. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  71. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  72. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  73. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  74. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  75. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
  76. package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
  77. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
  78. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  79. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
  80. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  81. package/dist/application-spec/parse-application-files/spec/expressions/expression.d.ts +1 -28
  82. package/dist/application-spec/parse-application-files/spec/expressions/expression.js +1 -1
  83. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +1 -1
  84. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  85. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
  86. package/dist/application-spec/parse-application-files/spec/expressions/index.js +1 -1
  87. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  88. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  89. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +7 -2
  90. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  91. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  92. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  93. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  94. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  95. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  96. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  97. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  98. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  99. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  100. package/dist/client/phoenix-api.d.ts +96 -0
  101. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  102. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  103. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  104. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +3 -1
  105. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  106. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  107. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +14 -4
  108. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  109. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  110. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  111. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -2
  112. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  113. package/dist/configurator/common/configurator-interface.d.ts +11 -1
  114. package/dist/configurator/common/configurator-interface.js +1 -1
  115. package/dist/configurator/common/frontend-analytics.d.ts +2 -0
  116. package/dist/configurator/common/frontend-analytics.js +1 -1
  117. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +1 -1
  118. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +6 -0
  119. package/dist/configurator/pages/DefaultConfiguratorLayout.js +1 -0
  120. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  121. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  122. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  123. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  124. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  125. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  126. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  127. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  128. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  129. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  130. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  131. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  132. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  133. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  134. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  135. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  136. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  137. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  138. package/dist/configurator/ui/assistant/entity-link/entity-link-target.d.ts +5 -0
  139. package/dist/configurator/ui/assistant/entity-link/entity-link-target.js +1 -0
  140. package/dist/configurator/ui/assistant/entity-link/index.d.ts +3 -0
  141. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  142. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  143. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  144. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  145. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  146. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.d.ts +101 -0
  147. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  148. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  149. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  150. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.d.ts +4 -4
  151. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  152. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.d.ts +3 -6
  153. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.js +1 -1
  154. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  155. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  156. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +0 -74
  157. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  158. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  159. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  160. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  161. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  162. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  163. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  164. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  165. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  166. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -2
  167. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +16 -19
  168. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  169. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  170. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  171. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  172. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  173. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  174. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  175. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  176. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  177. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  178. package/dist/docs/index.json +42 -1
  179. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  180. package/dist/docs/layouts/custom-layout.mdx +1164 -0
  181. package/dist/docs/layouts/header/fixed.mdx +2 -2
  182. package/dist/docs/layouts/header/floating.mdx +2 -2
  183. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  184. package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
  185. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  186. package/dist/docs/other-features/side-effects.mdx +8 -11
  187. package/dist/docs/other-features/transformers.mdx +4 -0
  188. package/dist/docs/other-features/violation-messages.mdx +52 -56
  189. package/dist/docs/phoenix/application-states.mdx +9 -7
  190. package/dist/docs/phoenix/configurator-interface.mdx +184 -80
  191. package/dist/docs/phoenix/domain-model.mdx +4 -0
  192. package/dist/docs/phoenix/finalization.mdx +1 -1
  193. package/dist/docs/phoenix/layout-slots.mdx +114 -0
  194. package/dist/docs/phoenix/phoenix-cli.mdx +24 -27
  195. package/dist/docs/phoenix/project-structure.mdx +14 -9
  196. package/dist/docs/phoenix/quickstart.mdx +2 -2
  197. package/dist/docs/phoenix/sdk-builder-workflow.mdx +2 -2
  198. package/dist/docs/phoenix/testing.mdx +140 -0
  199. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  200. package/dist/docs/phoenix/webhooks.mdx +2 -2
  201. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -11
  202. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  203. package/dist/domain/admin-domain/index.js +1 -1
  204. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +1 -1
  205. package/dist/domain/application/application-config.d.ts +4 -2
  206. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  207. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  208. package/dist/domain/application/assistant/assistant-manifest.d.ts +9 -1
  209. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +38 -2
  210. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  211. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  212. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  213. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  214. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  215. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  216. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  217. package/dist/domain/application/assistant/index.d.ts +6 -1
  218. package/dist/domain/application/assistant/index.js +1 -1
  219. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  220. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  221. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  222. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  223. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  224. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  225. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  226. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  227. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  228. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  229. package/dist/domain/application/configurator-builder.d.ts +1 -1
  230. package/dist/domain/application/configurator-builder.js +1 -1
  231. package/dist/domain/application/create-initial-published-data.d.ts +5 -5
  232. package/dist/domain/application/index.d.ts +0 -1
  233. package/dist/domain/application/index.js +1 -1
  234. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +1 -1
  235. package/dist/domain/application/published-data/map-published-data.d.ts +7 -3
  236. package/dist/domain/core/component/domain-component-optic.d.ts +11 -19
  237. package/dist/domain/core/component/domain-component-optic.js +2 -2
  238. package/dist/domain/core/component/legacy-filter.d.ts +2 -17
  239. package/dist/domain/core/component/system-component-filter.d.ts +36 -18
  240. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  241. package/dist/domain/core/expression/custom-expression.d.ts +16 -3
  242. package/dist/domain/core/invariant/custom-invariants.d.ts +6 -14
  243. package/dist/domain/core/invariant/invariants.d.ts +1 -4
  244. package/dist/domain/core/invariant/violation.d.ts +50 -2
  245. package/dist/domain/core/invariant/violation.js +1 -1
  246. package/dist/domain/core/model/model.d.ts +1 -1
  247. package/dist/domain/core/recipe/recipes.d.ts +18 -50
  248. package/dist/domain/core/recipe/recipes.js +1 -1
  249. package/dist/domain/core/relation/all-of-type-relation.d.ts +8 -21
  250. package/dist/domain/core/relation/all-of-type-relation.js +1 -1
  251. package/dist/domain/core/relation/direct-relation.d.ts +13 -24
  252. package/dist/domain/core/relation/index.d.ts +0 -1
  253. package/dist/domain/core/relation/indirect-relation.d.ts +12 -67
  254. package/dist/domain/core/relation/indirect-relation.js +1 -1
  255. package/dist/domain/core/relation/relation-factory.d.ts +19 -15
  256. package/dist/domain/core/relation/relation-factory.js +1 -1
  257. package/dist/domain/core/state/migrations.d.ts +14 -45
  258. package/dist/domain/core/state/migrations.js +1 -1
  259. package/dist/domain/core/state/state.d.ts +1 -1
  260. package/dist/domain/domain-builder.js +1 -1
  261. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  262. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  263. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  264. package/dist/domain/domain-runtime/access/types.js +1 -1
  265. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +14 -13
  266. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  267. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  268. package/dist/domain/domain-runtime/domain-runtime.d.ts +32 -16
  269. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  270. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  271. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  272. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  273. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  274. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  275. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  276. package/dist/domain/domain-runtime/errors/index.js +1 -0
  277. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  278. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  279. package/dist/domain/domain-runtime/index.d.ts +1 -0
  280. package/dist/domain/domain-runtime/index.js +1 -1
  281. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  282. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  283. package/dist/domain/domain-runtime/spec/index.d.ts +1 -1
  284. package/dist/domain/domain-runtime/spec/index.js +1 -1
  285. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  286. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  287. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +1 -1
  288. package/dist/domain/domain-runtime/spec/module-checks/project-modules.d.ts +8 -1
  289. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -1
  290. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -1
  291. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -1
  292. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +7 -7
  293. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -1
  294. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +2 -2
  295. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -1
  296. package/dist/domain/extensions/attribute-switch.d.ts +1 -1
  297. package/dist/domain/extensions/attribute-switch.js +1 -1
  298. package/dist/domain/extensions/canvas-config.d.ts +1 -1
  299. package/dist/domain/extensions/client-side-image.d.ts +2 -2
  300. package/dist/domain/extensions/client-side-image.js +1 -1
  301. package/dist/domain/extensions/common/angle-indicator-schema.d.ts +2 -2
  302. package/dist/domain/extensions/common/dimension-indicator-schema.d.ts +2 -2
  303. package/dist/domain/extensions/editable-angle-indicator.d.ts +1 -1
  304. package/dist/domain/extensions/editable-distance-dimension-indicator.d.ts +1 -1
  305. package/dist/domain/extensions/editable-offset-indicator.d.ts +1 -1
  306. package/dist/domain/extensions/editable-offset-indicator.js +1 -1
  307. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -1
  308. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -1
  309. package/dist/domain/extensions/horizontal-tabs.d.ts +2 -2
  310. package/dist/domain/extensions/list-selector-dimension-indicator.d.ts +1 -1
  311. package/dist/domain/extensions/navigation-steps.d.ts +2 -2
  312. package/dist/domain/extensions/offset-indicator.js +1 -1
  313. package/dist/domain/extensions/rotation-handle.d.ts +2 -2
  314. package/dist/domain/extensions/save-template-thumbnail.d.ts +2 -2
  315. package/dist/domain/extensions/save-template-thumbnail.js +1 -1
  316. package/dist/domain/extensions/scene-entity-animation.js +1 -1
  317. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  318. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +18 -9
  319. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  320. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  321. package/dist/domain/mocks/create-mock-domain.js +1 -1
  322. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  323. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  324. package/dist/domain/mocks/create-test-application-config.js +1 -0
  325. package/dist/domain/mocks/index.d.ts +1 -0
  326. package/dist/domain/mocks/index.js +1 -1
  327. package/dist/domain/projections/blender-projections/camera.d.ts +1 -1
  328. package/dist/domain/system-components/application-config.d.ts +2 -2
  329. package/dist/domain/system-components/child-entity-selection.js +1 -1
  330. package/dist/domain/system-components/collision-box-geometry.d.ts +4 -2
  331. package/dist/domain/system-components/collision-geometry.d.ts +4 -2
  332. package/dist/domain/system-components/collision-point-geometry.d.ts +4 -2
  333. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  334. package/dist/domain/system-components/common/recipes.d.ts +21 -3
  335. package/dist/domain/system-components/common/recipes.js +1 -1
  336. package/dist/domain/system-components/constraint.d.ts +10 -23
  337. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  338. package/dist/domain/system-components/drag-handle.js +1 -1
  339. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  340. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  341. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  342. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  343. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -1
  344. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  345. package/dist/domain/system-components/material-swatch.js +1 -1
  346. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  347. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  348. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  349. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  350. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  351. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  352. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  353. package/dist/domain/utils/eval-cache.d.ts +1 -1
  354. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  355. package/dist/editor/domain-editors/use-implementation-files.d.ts +1 -2
  356. package/dist/editor/mocks/EditorMockContext.js +1 -1
  357. package/dist/legacy/domain-cli/gen/configurator-builder.js +13 -12
  358. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -1
  359. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  360. package/dist/legacy/domain-cli/gen/invariants.js +3 -4
  361. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  362. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  363. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  364. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +81 -68
  365. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  366. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  367. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  368. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +2 -0
  369. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +17 -15
  370. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  371. package/dist/phoenix/commands/deploy.js +1 -1
  372. package/dist/phoenix/commands/init.d.ts +4 -4
  373. package/dist/phoenix/commands/init.js +1 -1
  374. package/dist/phoenix/commands/prettier.js +1 -1
  375. package/dist/phoenix/services/source-archive.d.ts +1 -0
  376. package/dist/phoenix/services/source-archive.js +1 -1
  377. package/dist/phoenix/utils/git/index.d.ts +1 -0
  378. package/dist/phoenix/utils/git/index.js +1 -0
  379. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  380. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  381. package/dist/phoenix/utils/index.d.ts +1 -0
  382. package/dist/phoenix/utils/index.js +1 -1
  383. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  384. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  385. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  386. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +33 -16
  387. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  388. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +30 -0
  389. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -0
  390. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +4 -4
  391. package/dist/react-sdk/domain-context/index.d.ts +2 -1
  392. package/dist/react-sdk/domain-context/index.js +1 -1
  393. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +6 -0
  394. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  395. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  396. package/dist/ui-sdk/theme/types.d.ts +1 -1
  397. package/dist/webhook/builders/webhook-builder.js +1 -1
  398. package/package.json +3 -3
  399. package/schema/domain-spec.json +1115 -209
  400. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  401. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  402. package/dist/domain/application/resource-builder.d.ts +0 -13
  403. package/dist/domain/application/resource-builder.js +0 -1
  404. package/dist/domain/core/relation/relation-implementation.d.ts +0 -7
  405. package/dist/domain/domain-runtime/spec/invariant-builder.d.ts +0 -26
  406. package/dist/domain/domain-runtime/spec/invariant-builder.js +0 -1
  407. /package/dist/{domain/core/relation/relation-implementation.js → application-spec/core/expressions/relation-expression-params.js} +0 -0
  408. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  409. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  410. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
@@ -4,3 +4,4 @@ export { createMockDomainContext, type MockTransformer } from './create-mock-dom
4
4
  export { createMockDomainRuntime } from './create-mock-domain-runtime.js';
5
5
  export { createMockSessionContext } from './create-mock-session-context.js';
6
6
  export { createMockDomainRuntimeServices } from './create-mock-domain-runtime-services.js';
7
+ export { type TestApplicationOptions, createTestApplicationConfig } from './create-test-application-config.js';
@@ -1 +1 @@
1
- export{createMockDomain}from"./create-mock-domain.js";export{createMockState}from"./create-mock-state.js";export{createMockDomainContext}from"./create-mock-domain-context.js";export{createMockDomainRuntime}from"./create-mock-domain-runtime.js";export{createMockSessionContext}from"./create-mock-session-context.js";export{createMockDomainRuntimeServices}from"./create-mock-domain-runtime-services.js";
1
+ export{createMockDomain}from"./create-mock-domain.js";export{createMockState}from"./create-mock-state.js";export{createMockDomainContext}from"./create-mock-domain-context.js";export{createMockDomainRuntime}from"./create-mock-domain-runtime.js";export{createMockSessionContext}from"./create-mock-session-context.js";export{createMockDomainRuntimeServices}from"./create-mock-domain-runtime-services.js";export{createTestApplicationConfig}from"./create-test-application-config.js";
@@ -8,4 +8,4 @@ export interface BlenderCameraProjectionContext {
8
8
  readonly dimensionSystem: Pick<AnyDimensionSystem, 'getDataDistanceUnit'>;
9
9
  readonly positionProjections: Pick<AnyPositionProjections, 'getEntityWorldMatrix'>;
10
10
  }
11
- export declare const projectBlenderCamera: <ENTITIES extends DomainEntity<string>>(state: DomainState<ENTITIES>, imageSize: BlenderImageSize, context: BlenderCameraProjectionContext) => BlenderCamera;
11
+ export declare const projectBlenderCamera: (state: DomainState<DomainEntity<string>>, imageSize: BlenderImageSize, context: BlenderCameraProjectionContext) => BlenderCamera;
@@ -38,7 +38,7 @@ export type ApplicationConfigComponentState = {
38
38
  /**
39
39
  * Array of available dimensions in the application. It will be possible to select them in toolbar if more than one is available.
40
40
  */
41
- readonly availableDimensions?: DimensionUnit[];
41
+ readonly availableDimensions?: readonly DimensionUnit[];
42
42
  /**
43
43
  * When true, the sidebar will be split, it will show the tabs and the header, otherwise it will not.
44
44
  *
@@ -83,7 +83,7 @@ export type ApplicationConfigComponentState = {
83
83
  /**
84
84
  * Locales that user can select in the language switcher. Default ['en'].
85
85
  */
86
- readonly availableLocales?: string[];
86
+ readonly availableLocales?: readonly string[];
87
87
  /**
88
88
  * Initial state of dimension indicators. Default false.
89
89
  */
@@ -1 +1 @@
1
- import{EnhancedLocalizableSchema as e}from"@salsita-ai/common/utils";import{SystemComponentBuilder as t}from"../core/index.js";import{recipeSchema as i}from"./common/recipes.js";export const childEntitySelectionComponent=t.component("childEntitySelection").withState({type:"object",tsType:"ChildEntitySelectionComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"ChildEntitySelectionComponentState"}],properties:{value:{type:"string"},options:{type:"array",items:{type:"object",properties:{label:e,description:e,img:e,recipes:{type:"array",items:i},keepChildren:{type:"boolean"}},required:["recipes","label"],additionalProperties:!0}}},required:["value","options"],additionalProperties:!1}).build();
1
+ import{EnhancedLocalizableSchema as e}from"@salsita-ai/common/utils";import{DomainEntityIdSchema as t,SystemComponentBuilder as i}from"../core/index.js";import{recipeSchema as o}from"./common/recipes.js";export const childEntitySelectionComponent=i.component("childEntitySelection").withState({type:"object",tsType:"ChildEntitySelectionComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"ChildEntitySelectionComponentState"}],properties:{value:t,options:{type:"array",items:{type:"object",properties:{label:e,description:e,img:e,recipes:{type:"array",items:o},keepChildren:{type:"boolean"}},required:["recipes","label"],additionalProperties:!0}}},required:["value","options"],additionalProperties:!1}).build();
@@ -1,4 +1,3 @@
1
- import type { Color } from '@salsita-ai/common/utils';
2
1
  import { type ComponentSnapshot } from '../core/index.js';
3
2
  /**
4
3
  * Axis-aligned box collision geometry, authored via per-axis start/end
@@ -14,7 +13,10 @@ export type CollisionBoxGeometryComponentState = {
14
13
  readonly endY: number;
15
14
  readonly startZ: number;
16
15
  readonly endZ: number;
17
- readonly color: Color;
16
+ /**
17
+ * Colour of the collision mesh's wireframe material, any CSS colour string that three.js `Color` accepts.
18
+ */
19
+ readonly color: string;
18
20
  };
19
21
  export declare const collisionBoxGeometryComponent: import("../index.js").SystemComponentType<"collisionBoxGeometry", CollisionBoxGeometryComponentState, never>;
20
22
  export type CollisionBoxGeometryComponent = typeof collisionBoxGeometryComponent;
@@ -1,4 +1,3 @@
1
- import type { Color } from '@salsita-ai/common/utils';
2
1
  import { type ComponentSnapshot } from '../core/index.js';
3
2
  /**
4
3
  * Mesh-backed collision geometry. The caller supplies a pre-built
@@ -10,7 +9,10 @@ import { type ComponentSnapshot } from '../core/index.js';
10
9
  */
11
10
  export type CollisionGeometryComponentState = {
12
11
  readonly geometry: THREE.BufferGeometry;
13
- readonly color: Color;
12
+ /**
13
+ * Colour of the collision mesh's wireframe material, any CSS colour string that three.js `Color` accepts.
14
+ */
15
+ readonly color: string;
14
16
  };
15
17
  export declare const collisionGeometryComponent: import("../index.js").SystemComponentType<"collisionGeometry", CollisionGeometryComponentState, never>;
16
18
  export type CollisionGeometryComponent = typeof collisionGeometryComponent;
@@ -1,4 +1,3 @@
1
- import type { Color } from '@salsita-ai/common/utils';
2
1
  import { type ComponentSnapshot } from '../core/index.js';
3
2
  /**
4
3
  * Zero-volume point collision geometry at a local `(x, y, z)`. Authored
@@ -12,7 +11,10 @@ export type CollisionPointGeometryComponentState = {
12
11
  readonly x: number;
13
12
  readonly y: number;
14
13
  readonly z: number;
15
- readonly color: Color;
14
+ /**
15
+ * Colour of the collision mesh's wireframe material, any CSS colour string that three.js `Color` accepts.
16
+ */
17
+ readonly color: string;
16
18
  };
17
19
  export declare const collisionPointGeometryComponent: import("../index.js").SystemComponentType<"collisionPointGeometry", CollisionPointGeometryComponentState, never>;
18
20
  export type CollisionPointGeometryComponent = typeof collisionPointGeometryComponent;
@@ -100,8 +100,8 @@ export type MaterialOverrideBaseState = {
100
100
  clearcoatRoughnessMapUrl?: string | null | undefined;
101
101
  /** URL of the iridescence map texture. */
102
102
  iridescenceMapUrl?: string | null | undefined;
103
- /** Range of iridescence thickness. */
104
- iridescenceThicknessRange?: [number, number] | undefined;
103
+ /** Range of iridescence thickness: the minimum and the maximum, two numbers. */
104
+ iridescenceThicknessRange?: readonly number[] | undefined;
105
105
  /** URL of the iridescence thickness map texture. */
106
106
  iridescenceThicknessMapUrl?: string | null | undefined;
107
107
  /** URL of the sheen color map texture. */
@@ -1,5 +1,5 @@
1
1
  import { type Localizable } from '@salsita-ai/common/utils';
2
- import type { DomainEntity, EntityRecipe } from '../../core/index.js';
2
+ import { type DomainEntity, type EntityRecipe } from '../../core/index.js';
3
3
  export interface RecipeListItem {
4
4
  /**
5
5
  * Stable identifier of the recipe within its list, independent of the language and of the title.
@@ -29,8 +29,17 @@ export declare const recipeSchema: {
29
29
  readonly type: {
30
30
  readonly type: 'string';
31
31
  };
32
+ readonly id: {
33
+ readonly type: 'string';
34
+ readonly pattern: '^[A-Z]\\w*-\\d+$';
35
+ readonly import: [{
36
+ readonly module: '@salsita-ai/sdk/domain';
37
+ readonly member: 'DomainEntityId';
38
+ }];
39
+ readonly tsType: 'DomainEntityId';
40
+ };
32
41
  };
33
- readonly required: ["type"];
42
+ readonly required: ["type", "id"];
34
43
  readonly additionalProperties: true;
35
44
  };
36
45
  export declare const recipeListItemSchema: {
@@ -89,8 +98,17 @@ export declare const recipeListItemSchema: {
89
98
  readonly type: {
90
99
  readonly type: 'string';
91
100
  };
101
+ readonly id: {
102
+ readonly type: 'string';
103
+ readonly pattern: '^[A-Z]\\w*-\\d+$';
104
+ readonly import: [{
105
+ readonly module: '@salsita-ai/sdk/domain';
106
+ readonly member: 'DomainEntityId';
107
+ }];
108
+ readonly tsType: 'DomainEntityId';
109
+ };
92
110
  };
93
- readonly required: ["type"];
111
+ readonly required: ["type", "id"];
94
112
  readonly additionalProperties: true;
95
113
  };
96
114
  };
@@ -1 +1 @@
1
- import{EnhancedLocalizableSchema as e}from"@salsita-ai/common/utils";export const recipeSchema={type:"object",properties:{type:{type:"string"}},required:["type"],additionalProperties:!0};export const recipeListItemSchema={type:"object",properties:{key:{type:"string"},title:e,description:e,thumbnailUrl:e,recipes:{type:"array",items:recipeSchema}},required:["title","recipes"],additionalProperties:!1};export const GroupedRecipesSchema={type:"object",tsType:"GroupedRecipes",import:[{module:"@salsita-ai/sdk/domain",member:"GroupedRecipes"}],properties:{instanceNames:{type:"array",items:{type:"string"}}},required:["instanceNames"]};export const GroupedRecipeGroupSchema={type:"object",tsType:"GroupedRecipeGroup",import:[{module:"@salsita-ai/sdk/domain",member:"GroupedRecipeGroup"}],properties:{label:e,description:e,thumbnailUrl:e,children:{$ref:"#/definitions/GroupedRecipeItems"}},required:["label","children"],additionalProperties:!1};export const GroupedRecipeItemsSchema={tsType:"GroupedRecipeItems",import:[{module:"@salsita-ai/sdk/domain",member:"GroupedRecipeItems"}],anyOf:[{type:"array",items:GroupedRecipeGroupSchema},GroupedRecipesSchema]};
1
+ import{EnhancedLocalizableSchema as e}from"@salsita-ai/common/utils";import{DomainEntityIdSchema as i}from"../../core/index.js";export const recipeSchema={type:"object",properties:{type:{type:"string"},id:i},required:["type","id"],additionalProperties:!0};export const recipeListItemSchema={type:"object",properties:{key:{type:"string"},title:e,description:e,thumbnailUrl:e,recipes:{type:"array",items:recipeSchema}},required:["title","recipes"],additionalProperties:!1};export const GroupedRecipesSchema={type:"object",tsType:"GroupedRecipes",import:[{module:"@salsita-ai/sdk/domain",member:"GroupedRecipes"}],properties:{instanceNames:{type:"array",items:{type:"string"}}},required:["instanceNames"]};export const GroupedRecipeGroupSchema={type:"object",tsType:"GroupedRecipeGroup",import:[{module:"@salsita-ai/sdk/domain",member:"GroupedRecipeGroup"}],properties:{label:e,description:e,thumbnailUrl:e,children:{$ref:"#/definitions/GroupedRecipeItems"}},required:["label","children"],additionalProperties:!1};export const GroupedRecipeItemsSchema={tsType:"GroupedRecipeItems",import:[{module:"@salsita-ai/sdk/domain",member:"GroupedRecipeItems"}],anyOf:[{type:"array",items:GroupedRecipeGroupSchema},GroupedRecipesSchema]};
@@ -13,25 +13,23 @@ export type SpatialPredicateName = 'disjoint' | 'touches' | 'within';
13
13
  * Authored in YAML via an expression that resolves to the container's
14
14
  * `DomainEntityId`, e.g. `container: { $read: $sceneId }`. If the
15
15
  * expression resolves to `null` / `undefined` / missing the rule is treated
16
- * as not-applicable (no clamp, no violation). `undefined` is included so
17
- * codegen-emitted reads (e.g. `SpatialConstraint['container']`, which
18
- * resolves to `SpatialConstraintContainer | undefined` because `container`
19
- * is absent on the `disjoint` / `touches` variants) round-trip back into a
20
- * `within` rule's `container` field without a cast.
16
+ * as not-applicable (no clamp, no violation).
21
17
  */
22
18
  export type SpatialConstraintContainer = string | null | undefined;
23
19
  /**
24
- * A single spatial constraint rule. Discriminated on `predicate`.
20
+ * A single spatial constraint rule. `predicate` decides which of the other fields it reads.
25
21
  *
26
- * `disjoint` / `touches` carry a required `group` string. Matching is
22
+ * `disjoint` / `touches` read `group`. Matching is
27
23
  * symmetric: a rule on entity A with `group: G` applies against every
28
24
  * *other* entity whose own constraint component declares the same predicate
29
25
  * with `group: G` — "both sides must opt in to the group". An entity can
30
26
  * join multiple groups by stacking rules. Declaring `disjoint group=G`
31
27
  * simultaneously means "I'm in G" and "I must not overlap anything else in
32
- * G". There is no wildcard: a rule with no matching peers no-ops.
28
+ * G". There is no wildcard: a rule with no matching peers no-ops. A rule
29
+ * without `group` matches the rules of the same predicate that have no
30
+ * `group` either.
33
31
  *
34
- * `within` carries an identity-based `container` and has no group — it
32
+ * `within` reads an identity-based `container` and ignores `group` — it
35
33
  * binds to one specific other entity, not a class.
36
34
  *
37
35
  * Optional `target` names a specific collision-geometry instance on
@@ -70,20 +68,9 @@ export type SpatialConstraintContainer = string | null | undefined;
70
68
  * perimeter.
71
69
  */
72
70
  export type SpatialConstraint = {
73
- readonly predicate: 'disjoint';
74
- readonly group: string;
75
- readonly target?: string;
76
- readonly container?: undefined;
77
- readonly enforce?: boolean;
78
- } | {
79
- readonly predicate: 'touches';
80
- readonly group: string;
81
- readonly target?: string;
82
- readonly container?: undefined;
83
- readonly enforce?: boolean;
84
- } | {
85
- readonly predicate: 'within';
86
- readonly container: SpatialConstraintContainer;
71
+ readonly predicate: SpatialPredicateName;
72
+ readonly group?: string;
73
+ readonly container?: SpatialConstraintContainer;
87
74
  readonly target?: string;
88
75
  readonly enforce?: boolean;
89
76
  };
@@ -6,7 +6,7 @@ export type DragHandleComponentState = {
6
6
  * It is defined in hessian normal form: `normal.x * x + normal.y * y + normal.z * z + constant = 0`
7
7
  * see https://threejs.org/docs/#api/en/math/Plane
8
8
  */
9
- readonly surfaces: DraggableSurface[];
9
+ readonly surfaces: readonly DraggableSurface[];
10
10
  /**
11
11
  * The x property to be updated when the drag handle is dragged.
12
12
  */
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e,isInstanceOfComponentType as a,isSnapshotOfComponentType as t}from"../core/index.js";import{DraggableSurfaceSchema as r}from"./common/index.js";export const dragHandleComponent=e.component("dragHandle").withState({tsType:"DragHandleComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"DragHandleComponentState"}],type:"object",properties:{surfaces:{type:"array",items:r},target:{type:"string"},draggableX:{type:"number"},draggableY:{type:"number"},draggableZ:{type:"number"},draggableRotationY:{type:"number"}},required:["surfaces"],additionalProperties:!1}).withWritableKeys(["draggableX","draggableY","draggableZ","draggableRotationY"]).build();export const DraggableUpdateTag="Draggable.update";export const TransientDraggableUpdateTag="Draggable.update.transient";export const isDragHandleSnapshot=t(dragHandleComponent);export const isDragHandleInstance=a(dragHandleComponent);
1
+ import{SystemComponentBuilder as e,isInstanceOfComponentType as a,isSnapshotOfComponentType as t}from"../core/index.js";import{DraggableSurfaceSchema as r}from"./common/index.js";export const dragHandleComponent=e.component("dragHandle").withState({tsType:"DragHandleComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"DragHandleComponentState"}],type:"object",properties:{surfaces:{type:"array",items:r},draggableX:{type:"number"},draggableY:{type:"number"},draggableZ:{type:"number"},draggableRotationY:{type:"number"}},required:["surfaces"],additionalProperties:!1}).withWritableKeys(["draggableX","draggableY","draggableZ","draggableRotationY"]).build();export const DraggableUpdateTag="Draggable.update";export const TransientDraggableUpdateTag="Draggable.update.transient";export const isDragHandleSnapshot=t(dragHandleComponent);export const isDragHandleInstance=a(dragHandleComponent);
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e,isInstanceOfComponentType as t,isSnapshotOfComponentType as o}from"../core/index.js";export const FitEntityOrthographicCameraComponentName="fitEntityOrthographicCamera";export const fitEntityOrthographicCameraComponent=e.component("fitEntityOrthographicCamera").withState({type:"object",tsType:"FitEntityOrthographicCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitEntityOrthographicCameraComponentState"}],properties:{priority:{type:"number"},fitMeshChanges:{type:"boolean"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},zoomLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},fitToBox:{type:"boolean"},left:{type:"number"},bottom:{type:"number"},frustumSize:{type:"number"},near:{type:"number"},far:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},minZoom:{type:"number"},maxZoom:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number"},middle:{type:"number"},right:{type:"number"},wheel:{type:"number"}},required:["left","middle","right"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number"},two:{type:"number"},three:{type:"number"}},required:["one","two"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitEntityOrthographicCameraComponentSnapshot=o(fitEntityOrthographicCameraComponent);export const isFitEntityOrthographicCameraComponentInstance=t(fitEntityOrthographicCameraComponent);
1
+ import{SystemComponentBuilder as e,isInstanceOfComponentType as t,isSnapshotOfComponentType as o}from"../core/index.js";export const FitEntityOrthographicCameraComponentName="fitEntityOrthographicCamera";export const fitEntityOrthographicCameraComponent=e.component("fitEntityOrthographicCamera").withState({type:"object",tsType:"FitEntityOrthographicCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitEntityOrthographicCameraComponentState"}],properties:{priority:{type:"number"},fitMeshChanges:{type:"boolean"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},zoomLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},fitToBox:{type:"boolean"},left:{type:"number"},bottom:{type:"number"},frustumSize:{type:"number"},near:{type:"number"},far:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},minZoom:{type:"number"},maxZoom:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number",enum:[0,1,2,4,8,16]},middle:{type:"number",enum:[0,1,2,4,8,16]},right:{type:"number",enum:[0,1,2,4,8,16]},wheel:{type:"number",enum:[0,1,2,4,8,16]}},required:["left","middle","right","wheel"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number",enum:[0,8,16,32,64,128]},two:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]},three:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]}},required:["one","two","three"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitEntityOrthographicCameraComponentSnapshot=o(fitEntityOrthographicCameraComponent);export const isFitEntityOrthographicCameraComponentInstance=t(fitEntityOrthographicCameraComponent);
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e,isInstanceOfComponentType as t,isSnapshotOfComponentType as n}from"../core/index.js";export const FitEntityPerspectiveCameraComponentName="fitEntityPerspectiveCamera";export const fitEntityPerspectiveCameraComponent=e.component("fitEntityPerspectiveCamera").withState({type:"object",tsType:"FitEntityPerspectiveCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitEntityPerspectiveCameraComponentState"}],properties:{priority:{type:"number"},fitMeshChanges:{type:"boolean"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},distanceLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},fitToBox:{type:"boolean"},fov:{type:"number"},far:{type:"number"},near:{type:"number"},focus:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number"},middle:{type:"number"},right:{type:"number"},wheel:{type:"number"}},required:["left","middle","right"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number"},two:{type:"number"},three:{type:"number"}},required:["one","two"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitEntityPerspectiveCameraComponentSnapshot=n(fitEntityPerspectiveCameraComponent);export const isFitEntityPerspectiveCameraComponentInstance=t(fitEntityPerspectiveCameraComponent);
1
+ import{SystemComponentBuilder as e,isInstanceOfComponentType as t,isSnapshotOfComponentType as n}from"../core/index.js";export const FitEntityPerspectiveCameraComponentName="fitEntityPerspectiveCamera";export const fitEntityPerspectiveCameraComponent=e.component("fitEntityPerspectiveCamera").withState({type:"object",tsType:"FitEntityPerspectiveCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitEntityPerspectiveCameraComponentState"}],properties:{priority:{type:"number"},fitMeshChanges:{type:"boolean"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},distanceLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},fitToBox:{type:"boolean"},fov:{type:"number"},far:{type:"number"},near:{type:"number"},focus:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number",enum:[0,1,2,4,8,16]},middle:{type:"number",enum:[0,1,2,4,8,16]},right:{type:"number",enum:[0,1,2,4,8,16]},wheel:{type:"number",enum:[0,1,2,4,8,16]}},required:["left","middle","right","wheel"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number",enum:[0,8,16,32,64,128]},two:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]},three:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]}},required:["one","two","three"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitEntityPerspectiveCameraComponentSnapshot=n(fitEntityPerspectiveCameraComponent);export const isFitEntityPerspectiveCameraComponentInstance=t(fitEntityPerspectiveCameraComponent);
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";export const FitRootOrthographicCameraComponentName="fitRootOrthographicCamera";export const fitRootOrthographicCameraComponent=e.component("fitRootOrthographicCamera").withState({type:"object",tsType:"FitRootOrthographicCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitRootOrthographicCameraComponentState"}],properties:{priority:{type:"number"},fitMeshChanges:{type:"boolean"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},zoomLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},fitToBox:{type:"boolean"},left:{type:"number"},bottom:{type:"number"},frustumSize:{type:"number"},near:{type:"number"},far:{type:"number"},focus:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},minZoom:{type:"number"},maxZoom:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number"},middle:{type:"number"},right:{type:"number"},wheel:{type:"number"}},required:["left","middle","right"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number"},two:{type:"number"},three:{type:"number"}},required:["one","two"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitRootOrthographicCameraComponent=t(fitRootOrthographicCameraComponent);
1
+ import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";export const FitRootOrthographicCameraComponentName="fitRootOrthographicCamera";export const fitRootOrthographicCameraComponent=e.component("fitRootOrthographicCamera").withState({type:"object",tsType:"FitRootOrthographicCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitRootOrthographicCameraComponentState"}],properties:{priority:{type:"number"},fitMeshChanges:{type:"boolean"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},zoomLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},fitToBox:{type:"boolean"},left:{type:"number"},bottom:{type:"number"},frustumSize:{type:"number"},near:{type:"number"},far:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},minZoom:{type:"number"},maxZoom:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number",enum:[0,1,2,4,8,16]},middle:{type:"number",enum:[0,1,2,4,8,16]},right:{type:"number",enum:[0,1,2,4,8,16]},wheel:{type:"number",enum:[0,1,2,4,8,16]}},required:["left","middle","right","wheel"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number",enum:[0,8,16,32,64,128]},two:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]},three:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]}},required:["one","two","three"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitRootOrthographicCameraComponent=t(fitRootOrthographicCameraComponent);
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";export const FitRootPerspectiveCameraComponentName="fitRootPerspectiveCamera";export const fitRootPerspectiveCameraComponent=e.component("fitRootPerspectiveCamera").withState({type:"object",tsType:"FitRootPerspectiveCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitRootPerspectiveCameraComponentState"}],properties:{priority:{type:"number"},fitMeshChanges:{type:"boolean"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},distanceLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},fitToBox:{type:"boolean"},fov:{type:"number"},far:{type:"number"},near:{type:"number"},focus:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number"},middle:{type:"number"},right:{type:"number"},wheel:{type:"number"}},required:["left","middle","right"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number"},two:{type:"number"},three:{type:"number"}},required:["one","two"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitRootPerspectiveCameraComponent=t(fitRootPerspectiveCameraComponent);
1
+ import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";export const FitRootPerspectiveCameraComponentName="fitRootPerspectiveCamera";export const fitRootPerspectiveCameraComponent=e.component("fitRootPerspectiveCamera").withState({type:"object",tsType:"FitRootPerspectiveCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitRootPerspectiveCameraComponentState"}],properties:{priority:{type:"number"},fitMeshChanges:{type:"boolean"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},distanceLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},fitToBox:{type:"boolean"},fov:{type:"number"},far:{type:"number"},near:{type:"number"},focus:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number",enum:[0,1,2,4,8,16]},middle:{type:"number",enum:[0,1,2,4,8,16]},right:{type:"number",enum:[0,1,2,4,8,16]},wheel:{type:"number",enum:[0,1,2,4,8,16]}},required:["left","middle","right","wheel"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number",enum:[0,8,16,32,64,128]},two:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]},three:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]}},required:["one","two","three"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitRootPerspectiveCameraComponent=t(fitRootPerspectiveCameraComponent);
@@ -12,7 +12,7 @@ export type HotspotDragHandleComponentState = SceneEntityHtmlPositionState & Sce
12
12
  * It is defined in hessian normal form: `normal.x * x + normal.y * y + normal.z * z + constant = 0`
13
13
  * see https://threejs.org/docs/#api/en/math/Plane
14
14
  */
15
- readonly surfaces: DraggableSurface[];
15
+ readonly surfaces: readonly DraggableSurface[];
16
16
  /**
17
17
  * Size of the hotspot drag handle ring in pixels. It should match the size of the drag hotspot used. Default is 40px.
18
18
  */
@@ -1 +1 @@
1
- import{SystemComponentBuilder as t,isComponentModificationOfType as e,isInstanceOfComponentType as o,isSnapshotOfComponentType as a}from"../core/index.js";import{DraggableSurfaceSchema as n,SceneHtmlOpacityProperties as r,SceneHtmlPositionProperties as p,SceneHtmlVisibilityProperties as s}from"./common/index.js";export const HotspotDragHandleVariant={Point:"point",Fab:"fab"};export const hotspotDragHandleComponent=t.component("hotspotDragHandle").withState({tsType:"HotspotDragHandleComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"HotspotDragHandleComponentState"}],type:"object",properties:{...p,...r,...s,surfaces:{type:"array",items:n},target:{type:"string"},handleSize:{type:"number"},variant:{type:"string",enum:Object.values(HotspotDragHandleVariant)},icon:{type:"string"},draggableX:{type:"number"},draggableY:{type:"number"},draggableZ:{type:"number"}},required:["surfaces"],additionalProperties:!1}).withWritableKeys(["draggableX","draggableY","draggableZ"]).build();export const isHotspotDragHandleSnapshot=a(hotspotDragHandleComponent);export const isHotspotDragHandleInstance=o(hotspotDragHandleComponent);export const isHotspotDragHandleModification=e(hotspotDragHandleComponent);
1
+ import{SystemComponentBuilder as t,isComponentModificationOfType as e,isInstanceOfComponentType as o,isSnapshotOfComponentType as a}from"../core/index.js";import{DraggableSurfaceSchema as n,SceneHtmlOpacityProperties as r,SceneHtmlPositionProperties as p,SceneHtmlVisibilityProperties as s}from"./common/index.js";export const HotspotDragHandleVariant={Point:"point",Fab:"fab"};export const hotspotDragHandleComponent=t.component("hotspotDragHandle").withState({tsType:"HotspotDragHandleComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"HotspotDragHandleComponentState"}],type:"object",properties:{...p,...r,...s,surfaces:{type:"array",items:n},handleSize:{type:"number"},variant:{type:"string",enum:Object.values(HotspotDragHandleVariant)},icon:{type:"string"},draggableX:{type:"number"},draggableY:{type:"number"},draggableZ:{type:"number"}},required:["surfaces"],additionalProperties:!1}).withWritableKeys(["draggableX","draggableY","draggableZ"]).build();export const isHotspotDragHandleSnapshot=a(hotspotDragHandleComponent);export const isHotspotDragHandleInstance=o(hotspotDragHandleComponent);export const isHotspotDragHandleModification=e(hotspotDragHandleComponent);
@@ -1 +1 @@
1
- import{EnhancedLocalizableSchema as t}from"@salsita-ai/common/utils";import{SystemComponentBuilder as e,isSnapshotOfComponentType as a}from"../core/index.js";export const materialSwatchComponent=e.component("materialSwatch").withState({type:"object",tsType:"MaterialSwatchComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"MaterialSwatchComponentState"}],properties:{swatches:{type:"object",additionalProperties:{type:"object",properties:{color:{type:"string",pattern:"^#[0-9a-fA-F]{6}$"},swatchName:t,thumbnailUrl:t},required:["swatchName","color"],additionalProperties:!1}},selectedSwatchKey:{type:["string","null"]}},required:["swatches","selectedSwatchKey"],additionalProperties:!1}).withWritableKeys(["selectedSwatchKey"]).build();export const isMaterialSwatchSnapshot=a(materialSwatchComponent);
1
+ import{EnhancedLocalizableSchema as t}from"@salsita-ai/common/utils";import{SystemComponentBuilder as e,isSnapshotOfComponentType as a}from"../core/index.js";export const materialSwatchComponent=e.component("materialSwatch").withState({type:"object",tsType:"MaterialSwatchComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"MaterialSwatchComponentState"}],properties:{swatches:{type:"object",additionalProperties:{type:"object",properties:{color:{type:"string",pattern:"^#[0-9a-fA-F]{6}$",tsType:"Color",import:[{module:"@salsita-ai/sdk/common/utils",member:"Color"}]},swatchName:t,thumbnailUrl:t},required:["swatchName","color"],additionalProperties:!1}},selectedSwatchKey:{type:["string","null"]}},required:["swatches","selectedSwatchKey"],additionalProperties:!1}).withWritableKeys(["selectedSwatchKey"]).build();export const isMaterialSwatchSnapshot=a(materialSwatchComponent);
@@ -1,7 +1,7 @@
1
1
  import { type Material } from 'three';
2
2
  export type SceneEntityMaterialOverrideComponentState = {
3
3
  material: Material;
4
- materialsToOverride: string[];
4
+ materialsToOverride: readonly string[];
5
5
  };
6
6
  export declare const sceneEntityMaterialOverrideComponent: import("../index.js").SystemComponentType<"sceneEntityMaterialOverride", SceneEntityMaterialOverrideComponentState, never>;
7
7
  export type SceneEntityMaterialOverrideComponent = typeof sceneEntityMaterialOverrideComponent;
@@ -1,7 +1,7 @@
1
1
  import { type Material } from 'three';
2
2
  export type SceneEntityObjectMaterialOverrideComponentState = {
3
3
  material: Material;
4
- materialsToOverride: string[];
4
+ materialsToOverride: readonly string[];
5
5
  };
6
6
  export declare const sceneEntityObjectMaterialOverrideComponent: import("../index.js").SystemComponentType<"sceneEntityObjectMaterialOverride", SceneEntityObjectMaterialOverrideComponentState, never>;
7
7
  export type SceneEntityObjectMaterialOverrideComponent = typeof sceneEntityObjectMaterialOverrideComponent;
@@ -12,7 +12,7 @@ export type SceneEntityObjectTextDecalComponentState = {
12
12
  readonly positionX?: number | undefined;
13
13
  readonly positionY?: number | undefined;
14
14
  readonly positionZ?: number | undefined;
15
- readonly preloadFonts?: string[] | undefined;
15
+ readonly preloadFonts?: readonly string[] | undefined;
16
16
  readonly rotationX?: number | undefined;
17
17
  readonly rotationY?: number | undefined;
18
18
  readonly rotationZ?: number | undefined;
@@ -1,5 +1,5 @@
1
1
  export type SceneEntityObjectTransmissiveMaterialOverrideComponentState = {
2
- materialsToOverride: string[];
2
+ materialsToOverride: readonly string[];
3
3
  transmission?: number;
4
4
  thickness?: number;
5
5
  roughness?: number;
@@ -1,5 +1,5 @@
1
1
  export type SceneEntityTransmissiveMaterialOverrideComponentState = {
2
- materialsToOverride: string[];
2
+ materialsToOverride: readonly string[];
3
3
  transmission?: number;
4
4
  thickness?: number;
5
5
  roughness?: number;
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e}from"../core/index.js";export const StaticOrthographicCameraComponentName="staticOrthographicCamera";export const staticOrthographicCameraComponent=e.component(StaticOrthographicCameraComponentName).withState({type:"object",tsType:"StaticOrthographicCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"StaticOrthographicCameraComponentState"}],properties:{priority:{type:"number"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},zoomLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},left:{type:"number"},bottom:{type:"number"},frustumSize:{type:"number"},far:{type:"number"},near:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},minZoom:{type:"number"},maxZoom:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number"},middle:{type:"number"},right:{type:"number"},wheel:{type:"number"}},required:["left","middle","right"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number"},two:{type:"number"},three:{type:"number"}},required:["one","two"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},lookAtX:{type:"number"},lookAtY:{type:"number"},lookAtZ:{type:"number"}},required:[],additionalProperties:!1}).build();export const isStaticOrthographicCameraComponent=e=>e.componentInstance.componentType.name===StaticOrthographicCameraComponentName;
1
+ import{SystemComponentBuilder as e}from"../core/index.js";export const StaticOrthographicCameraComponentName="staticOrthographicCamera";export const staticOrthographicCameraComponent=e.component(StaticOrthographicCameraComponentName).withState({type:"object",tsType:"StaticOrthographicCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"StaticOrthographicCameraComponentState"}],properties:{priority:{type:"number"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},zoomLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},left:{type:"number"},bottom:{type:"number"},frustumSize:{type:"number"},far:{type:"number"},near:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},minZoom:{type:"number"},maxZoom:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number",enum:[0,1,2,4,8,16]},middle:{type:"number",enum:[0,1,2,4,8,16]},right:{type:"number",enum:[0,1,2,4,8,16]},wheel:{type:"number",enum:[0,1,2,4,8,16]}},required:["left","middle","right","wheel"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number",enum:[0,8,16,32,64,128]},two:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]},three:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]}},required:["one","two","three"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},lookAtX:{type:"number"},lookAtY:{type:"number"},lookAtZ:{type:"number"}},required:[],additionalProperties:!1}).build();export const isStaticOrthographicCameraComponent=e=>e.componentInstance.componentType.name===StaticOrthographicCameraComponentName;
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e}from"../core/index.js";export const StaticPerspectiveCameraComponentName="staticPerspectiveCamera";export const staticPerspectiveCameraComponent=e.component(StaticPerspectiveCameraComponentName).withState({type:"object",tsType:"StaticPerspectiveCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"StaticPerspectiveCameraComponentState"}],properties:{priority:{type:"number"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},distanceLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},fov:{type:"number"},far:{type:"number"},near:{type:"number"},focus:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number"},middle:{type:"number"},right:{type:"number"},wheel:{type:"number"}},required:["left","middle","right"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number"},two:{type:"number"},three:{type:"number"}},required:["one","two"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},lookAtX:{type:"number"},lookAtY:{type:"number"},lookAtZ:{type:"number"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isStaticPerspectiveCameraComponent=e=>e.componentInstance.componentType.name===StaticPerspectiveCameraComponentName;
1
+ import{SystemComponentBuilder as e}from"../core/index.js";export const StaticPerspectiveCameraComponentName="staticPerspectiveCamera";export const staticPerspectiveCameraComponent=e.component(StaticPerspectiveCameraComponentName).withState({type:"object",tsType:"StaticPerspectiveCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"StaticPerspectiveCameraComponentState"}],properties:{priority:{type:"number"},animateOnLoad:{type:"boolean"},animateTransition:{type:"boolean"},distanceLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},fov:{type:"number"},far:{type:"number"},near:{type:"number"},focus:{type:"number"},distance:{type:"number"},minDistance:{type:"number"},maxDistance:{type:"number"},polarAngle:{type:"number"},minPolarAngle:{type:"number"},maxPolarAngle:{type:"number"},azimuthAngle:{type:"number"},minAzimuthAngle:{type:"number"},maxAzimuthAngle:{type:"number"},smoothTime:{type:"number"},draggingSmoothTime:{type:"number"},maxSpeed:{type:"number"},azimuthRotateSpeed:{type:"number"},polarRotateSpeed:{type:"number"},dollySpeed:{type:"number"},dollyDragInverted:{type:"boolean"},truckSpeed:{type:"number"},mouseButtons:{type:"object",properties:{left:{type:"number",enum:[0,1,2,4,8,16]},middle:{type:"number",enum:[0,1,2,4,8,16]},right:{type:"number",enum:[0,1,2,4,8,16]},wheel:{type:"number",enum:[0,1,2,4,8,16]}},required:["left","middle","right","wheel"],additionalProperties:!1},touches:{type:"object",properties:{one:{type:"number",enum:[0,8,16,32,64,128]},two:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]},three:{type:"number",enum:[0,32,64,128,256,512,1024,2048,4096,8192,16384,32768]}},required:["one","two","three"],additionalProperties:!1},boundaryEnclosesCamera:{type:"boolean"},dollyToCursor:{type:"boolean"},dragToOffset:{type:"boolean"},verticalDragToForward:{type:"boolean"},boundary:{type:"object"},lookAtX:{type:"number"},lookAtY:{type:"number"},lookAtZ:{type:"number"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isStaticPerspectiveCameraComponent=e=>e.componentInstance.componentType.name===StaticPerspectiveCameraComponentName;
@@ -3,7 +3,7 @@ import type { DomainEntity, DomainState } from '../core/index.js';
3
3
  * Clone the evaluation cache from one state to another.
4
4
  * You should not need to use this function manually as it is used internally by the framework.
5
5
  */
6
- export declare const cloneEvalCache: <ENTITIES extends DomainEntity<string>>(originalState: DomainState<ENTITIES>, newState: DomainState<ENTITIES>) => void;
6
+ export declare const cloneEvalCache: (originalState: DomainState<DomainEntity<string>>, newState: DomainState<DomainEntity<string>>) => void;
7
7
  /**
8
8
  * A unique token that can be used to retrieve an evaluation cache from a state.
9
9
  * The token carries type information about the cache's key and value types.
@@ -1 +1 @@
1
- export declare const mapNestedObject: <TI, TO, KI extends string, KO extends string = KI>() => <REC extends Partial<Record<KI, Record<string, TI>>>>(record: REC, map: (entry: [key1: KI, key2: string, value: TI]) => Array<[key1: KO, key2: string, value: TO]>, onDuplicate?: (previousValue: TO, newValue: TO, key1: KO, key2: string) => void) => Record<KO, Record<string, TO>>;
1
+ export declare const mapNestedObject: <TI, TO, KI extends string, KO extends string = KI>() => (record: Partial<Record<KI, Record<string, TI>>>, map: (entry: [key1: KI, key2: string, value: TI]) => Array<[key1: KO, key2: string, value: TO]>, onDuplicate?: (previousValue: TO, newValue: TO, key1: KO, key2: string) => void) => Record<KO, Record<string, TO>>;
@@ -1,6 +1,5 @@
1
1
  import type { Application, ExpressionImplementations, InvariantImplementations } from '#package/application-spec';
2
2
  import { type AnyActionImplementations, type DomainComponentOptic, type DomainEntity, type ElementRegistration, type HandlerRegistration, type ImportedTransformer, type ProjectModule, type SystemComponentTypeConstraint } from '#package/domain';
3
- type AnyImportedTransformer = ImportedTransformer<any, any, any, any, any, any, any>;
4
3
  type RuntimeData = Record<string, unknown>;
5
4
  type RuntimeEntity = DomainEntity<string>;
6
5
  export type ReloadedComponentOptic = DomainComponentOptic<RuntimeEntity, RuntimeEntity, RuntimeData, RuntimeData, RuntimeData, RuntimeEntity, SystemComponentTypeConstraint>;
@@ -32,7 +31,7 @@ export interface ImplementationFiles {
32
31
  readonly actionImplementations: AnyActionImplementations | null;
33
32
  readonly adminImplementations?: ExpressionImplementations;
34
33
  readonly invariantImplementations: InvariantImplementations;
35
- readonly importedTransformers: readonly AnyImportedTransformer[];
34
+ readonly importedTransformers: readonly ImportedTransformer[];
36
35
  readonly customComponentOptics: readonly ReloadedComponentOptic[] | null;
37
36
  readonly handlers: HandlerRegistryUpdate | null;
38
37
  readonly elements: ElementRegistryUpdate | null;
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{createContext as t,useCallback as r,useContext as o,useEffect as n,useMemo as a,useRef as s,useState as c}from"react";import{createUnsignedJWT as i,memoryStorage as l}from"#package/client";import{createInitialDomainState as d}from"#package/domain";import{useApplicationRuntime as u,useIntegrationService as m,useModal as p,useMountGuard as f}from"#package/react-sdk";import{useEditorConnection as w}from"../services/EditorConnectionContext.js";import{trpc as g}from"../services/trpc.js";import{ConfirmMemoryModeModal as y}from"./ConfirmMemoryModeModal.js";import{ValidationErrorModal as b}from"./ValidationErrorModal.js";let h=e=>{let t=e??("u">typeof window?window.location.pathname:"default");return`phx-editor-template:${t}`},k=e=>`template-configuration-${e}`,v=t(null);export const EditorMockProvider=t=>{let{children:o,mockTemplates:E,autoApplyTemplate:I,environmentKey:C}=t,V=s(!1),P=s(0),S=s(null),[M,x]=c(null),[D,A]=c([]),[R,T]=c(null),[j,$]=c({session:null,access:null,embeddedView:null}),B=f(),F=u(),L=F.actions.overrides,O=m(),{showModal:_}=p(),{localMode:q}=w(),z=a(()=>[...E&&E.length>0?E:D].sort((e,t)=>(e.order??1/0)-(t.order??1/0)),[E,D]),G=r(()=>F.selectors.spec.getConfiguratorFactory(),[F]),H=r(e=>(G().parseSessionData(e.data),{role:e.role,data:e.data}),[G]),J=r(e=>G().parsePublishedData(e.data),[G]),K=r(e=>G().parseFrontendData(e.data),[G]),N=r(e=>{let t=G();if(!t.hasBackendData)throw Error("Backend data mock could not be applied, because backend data is not supported by the current domain configuration. Please use a domain that supports backend data.");return t.parseBackendData(e.data)},[G]),Q=r(e=>{if("recipe"===e.type){if(!e.collection)throw Error("Embedded view mock could not be applied, because a collection is required for recipe type embedded views. Please specify a collection for this mock.");return{type:"recipe",recipeId:`Recipe_${Math.floor(1e6*Math.random())}`,collection:e.collection,...e.rootRecipeId?{rootRecipeId:e.rootRecipeId}:{}}}return{type:"preset",presetId:`Preset_${Math.floor(1e6*Math.random())}`}},[]),U=r((e,t)=>{if(l.has(e))return null;let r=F.selectors.loadedData.getConfiguratorRawLoadedData();if(null===r)return null;let o=F.selectors.domainContext.configurator,n=o.getInitializationState().isCurrent?o.getStoreSystem().stateSlices.committed.value.state.entities:r.initialEntities;return{configurationId:e,revisionId:t??r.initialRevisionId,modelVersion:r.modelVersion,rootEntityType:r.rootEntityType,data:n}},[F]),W=r((e,t)=>{let r=U(e,t);null!==r&&l.set(e,[r])},[U]),X=r(async()=>!!("server"!==F.selectors.environment.getBasePersistenceConfig().type||F.selectors.overrides.getActive())||new Promise(e=>{_(y,{onConfirm:()=>e(!0),onCancel:()=>e(!1)})}),[F,_]),Y=s(null),Z=r((e,t)=>{let r=e instanceof Error?e.message:t;Y.current?.destroy(),Y.current=_(b,{error:r})},[_]),ee=r(async e=>{try{if(!await X())return;let t=H(e),r=F.selectors.access.getConfiguratorRawAccessService();null!==r&&W(r.configurationId,r.accessInfo.revisionId),L.setSessionContext(t),$(t=>({...t,session:e}))}catch(e){Z(e,"Session mock could not be applied, because an unknown error has occurred. Please check the mock data and try again.")}},[X,H,F,W,L,Z]),et=r(async e=>{try{if(!await X())return;let t=F.selectors.access.getConfiguratorRawAccessInfo();null!==t&&W(t.configurationId,t.revisionId),L.setAccessLevel(e.access),$(t=>({...t,access:e}))}catch(e){Z(e,"Access mock could not be applied, because an unknown error has occurred. Please check the mock data and try again.")}},[X,F,W,L,Z]),er=r(async e=>{try{if(!await X())return;let t=Q(e),r=F.selectors.access.getConfiguratorRawAccessInfo();null!==r&&W(r.configurationId,r.revisionId),O.enterEmbeddedView(t),L.setEmbeddedViewActive(!0),$(t=>({...t,embeddedView:e}))}catch(e){Z(e,"Embedded view mock could not be applied, because an unknown error has occurred. Please check the mock data and try again.")}},[X,Q,F,W,O,L,Z]),eo=r(async()=>{try{let e=R?H(R.session):null;L.setSessionContext(e),$(e=>({...e,session:null}))}catch(e){Z(e,"Session mock could not be reset, because an unknown error has occurred. Please check the active template and try again.")}},[L,R,H,Z]),en=r(async()=>{L.setAccessLevel(R?.access.access??null),$(e=>({...e,access:null}))},[L,R]),ea=r(async()=>{try{let e=R?.embeddedView?Q(R.embeddedView):null;null!==e?O.enterEmbeddedView(e):O.exitEmbeddedView(),L.setEmbeddedViewActive(null!==e),$(e=>({...e,embeddedView:null}))}catch(e){Z(e,"Embedded view mock could not be reset, because an unknown error has occurred. Please check the active template and try again.")}},[O,L,R,Q,Z]),es=r(e=>{null!==e&&l.delete(k(e))},[]),ec=r(async()=>{P.current+=1,es(S.current),S.current=null,x(null),T(null),$({session:null,access:null,embeddedView:null}),O.exitEmbeddedView(),L.clearMockOverrides();try{localStorage.removeItem(h(C))}catch{console.warn("[Editor] Failed to clear template key from localStorage")}},[O,L,C,es]),ei=r(async(e,t)=>{let r=t?.generation??++P.current;try{let t=e.embeddedView?Q(e.embeddedView):null,n=H(e.session),a=e.publishedData?J(e.publishedData):null,s=e.frontendData?K(e.frontendData):null,c=e.backendData?N(e.backendData):null,u=null,m=null,p=F.selectors.access.getConfiguratorRawAccessInfo(),f=null===p?null:U(p.configurationId,p.revisionId);if(e.configuration){let t=k(e.key),r="latest",o=e.configuration,n=G(),a=n.validateAndMigrateState(o.entities,o.modelVersion);d(a,o.rootEntityType),u={configurationId:t,revisionId:r,modelVersion:n.modelVersion,rootEntityType:o.rootEntityType,data:a};let s=Math.floor(Date.now()/1e3),c=i({configurationId:t,revisionId:r,access:e.access.access,iat:s,exp:s+3600});m={configurationId:t,accessInfo:{raw:c,viewMode:"read-revision"===e.access.access,revisionId:r,configurationId:t}}}else null!==p&&(u=U(p.configurationId,p.revisionId));if(r!==P.current)return;null!==f&&l.set(f.configurationId,[f]),null!==u&&l.set(u.configurationId,[u]),null!==t?O.enterEmbeddedView(t):O.exitEmbeddedView(),L.updateOverrides({accessService:m,accessLevel:null===m?e.access.access:null,sessionContext:n,publishedData:a,frontendData:s,backendData:c,webComponentProperties:e.webComponentProperties??null,embeddedViewActive:null!==t,persistenceConfig:F.selectors.overrides.getPersistenceConfig()}),S.current!==e.key&&es(S.current),S.current=e.key,x(e.key),T(e),$({session:null,access:null,embeddedView:null});var o=e.key;try{localStorage.setItem(h(C),o)}catch{console.warn("[Editor] Failed to store template key to localStorage")}}catch(o){let r="Template could not be applied, because an unknown error has occurred. Please check the template configuration and try again.";if(t?.errorPresentation==="console")return void console.warn(`[Editor] Template "${e.title}" could not be applied:`,o instanceof Error?o.message:r);Z(o,r)}},[H,G,J,K,N,Q,O,L,Z,C,F,es,U]),el=r(async e=>{let t=++P.current;await X()&&t===P.current&&await ei(e,{generation:t})},[X,ei]);g.onMockTemplateChange.useSubscription(void 0,{enabled:!q,onData:e=>{B()&&A(e.templates)}}),n(()=>{if(z&&z.length>0&&!V.current){V.current=!0;let e=(e=>{try{return localStorage.getItem(h(e))}catch{return null}})(C);if(e){let t=z.find(t=>t.key===e);if(t)return void ei(t,{errorPresentation:"console"});console.warn(`[Editor] Stored template "${e}" not found in available templates`)}if(I){let e=z[0];e&&ei(e,{errorPresentation:"console"})}}},[I,z,ei,C]);let ed=a(()=>({activeTemplateKey:M,activeCustomizations:j,effectiveMockTemplates:z,applySessionMock:ee,applyAccessMock:et,resetSessionOverride:eo,resetAccessOverride:en,applyEmbeddedViewMock:er,resetEmbeddedViewOverride:ea,applyTemplate:el,resetAllMocks:ec}),[M,j,z,ee,et,eo,en,er,ea,el,ec]);return e(v.Provider,{value:ed,children:o})};export const useEditorMockContext=()=>{let e=o(v);if(null===e)throw Error("useEditorMockContext must be used within EditorMockProvider");return e};
1
+ import{jsx as e}from"react/jsx-runtime";import{createContext as t,useCallback as r,useContext as o,useEffect as n,useMemo as a,useRef as s,useState as c}from"react";import{AccessLevel as i}from"@salsita-ai/contracts/api";import{createUnsignedJWT as l,memoryStorage as d}from"#package/client";import{createInitialDomainState as u}from"#package/domain";import{useApplicationRuntime as m,useIntegrationService as p,useModal as f,useMountGuard as w}from"#package/react-sdk";import{useEditorConnection as g}from"../services/EditorConnectionContext.js";import{trpc as y}from"../services/trpc.js";import{ConfirmMemoryModeModal as b}from"./ConfirmMemoryModeModal.js";import{ValidationErrorModal as h}from"./ValidationErrorModal.js";let k=e=>{let t=e??("u">typeof window?window.location.pathname:"default");return`phx-editor-template:${t}`},v=e=>`template-configuration-${e}`,E=t(null);export const EditorMockProvider=t=>{let{children:o,mockTemplates:I,autoApplyTemplate:C,environmentKey:V}=t,P=s(!1),S=s(0),M=s(null),[x,D]=c(null),[R,A]=c([]),[T,j]=c(null),[$,B]=c({session:null,access:null,embeddedView:null}),F=w(),L=m(),O=L.actions.overrides,_=p(),{showModal:q}=f(),{localMode:z}=g(),G=a(()=>[...I&&I.length>0?I:R].sort((e,t)=>(e.order??1/0)-(t.order??1/0)),[I,R]),H=r(()=>L.selectors.spec.getConfiguratorFactory(),[L]),J=r(e=>(H().parseSessionData(e.data),{role:e.role,data:e.data}),[H]),K=r(e=>H().parsePublishedData(e.data),[H]),N=r(e=>H().parseFrontendData(e.data),[H]),Q=r(e=>{let t=H();if(!t.hasBackendData)throw Error("Backend data mock could not be applied, because backend data is not supported by the current domain configuration. Please use a domain that supports backend data.");return t.parseBackendData(e.data)},[H]),U=r(e=>{if("recipe"===e.type){if(!e.collection)throw Error("Embedded view mock could not be applied, because a collection is required for recipe type embedded views. Please specify a collection for this mock.");return{type:"recipe",recipeId:`Recipe_${Math.floor(1e6*Math.random())}`,collection:e.collection,...e.rootRecipeId?{rootRecipeId:e.rootRecipeId}:{}}}return{type:"preset",presetId:`Preset_${Math.floor(1e6*Math.random())}`}},[]),W=r((e,t)=>{if(d.has(e))return null;let r=L.selectors.loadedData.getConfiguratorRawLoadedData();if(null===r)return null;let o=L.selectors.domainContext.configurator,n=o.getInitializationState().isCurrent?o.getStoreSystem().stateSlices.committed.value.state.entities:r.initialEntities;return{configurationId:e,revisionId:t??r.initialRevisionId,modelVersion:r.modelVersion,rootEntityType:r.rootEntityType,data:n}},[L]),X=r((e,t)=>{let r=W(e,t);null!==r&&d.set(e,[r])},[W]),Y=r(async()=>!!("server"!==L.selectors.environment.getBasePersistenceConfig().type||L.selectors.overrides.getActive())||new Promise(e=>{q(b,{onConfirm:()=>e(!0),onCancel:()=>e(!1)})}),[L,q]),Z=s(null),ee=r((e,t)=>{let r=e instanceof Error?e.message:t;Z.current?.destroy(),Z.current=q(h,{error:r})},[q]),et=r(async e=>{try{if(!await Y())return;let t=J(e),r=L.selectors.access.getConfiguratorRawAccessService();null!==r&&X(r.configurationId,r.accessInfo.revisionId),O.setSessionContext(t),B(t=>({...t,session:e}))}catch(e){ee(e,"Session mock could not be applied, because an unknown error has occurred. Please check the mock data and try again.")}},[Y,J,L,X,O,ee]),er=r(async e=>{try{if(!await Y())return;let t=L.selectors.access.getConfiguratorRawAccessInfo();null!==t&&X(t.configurationId,t.revisionId),O.setAccessLevel(e.access),B(t=>({...t,access:e}))}catch(e){ee(e,"Access mock could not be applied, because an unknown error has occurred. Please check the mock data and try again.")}},[Y,L,X,O,ee]),eo=r(async e=>{try{if(!await Y())return;let t=U(e),r=L.selectors.access.getConfiguratorRawAccessInfo();null!==r&&X(r.configurationId,r.revisionId),_.enterEmbeddedView(t),O.setEmbeddedViewActive(!0),B(t=>({...t,embeddedView:e}))}catch(e){ee(e,"Embedded view mock could not be applied, because an unknown error has occurred. Please check the mock data and try again.")}},[Y,U,L,X,_,O,ee]),en=r(async()=>{try{let e=T?J(T.session):null;O.setSessionContext(e),B(e=>({...e,session:null}))}catch(e){ee(e,"Session mock could not be reset, because an unknown error has occurred. Please check the active template and try again.")}},[O,T,J,ee]),ea=r(async()=>{O.setAccessLevel(T?.access.access??null),B(e=>({...e,access:null}))},[O,T]),es=r(async()=>{try{let e=T?.embeddedView?U(T.embeddedView):null;null!==e?_.enterEmbeddedView(e):_.exitEmbeddedView(),O.setEmbeddedViewActive(null!==e),B(e=>({...e,embeddedView:null}))}catch(e){ee(e,"Embedded view mock could not be reset, because an unknown error has occurred. Please check the active template and try again.")}},[_,O,T,U,ee]),ec=r(e=>{null!==e&&d.delete(v(e))},[]),ei=r(async()=>{S.current+=1,ec(M.current),M.current=null,D(null),j(null),B({session:null,access:null,embeddedView:null}),_.exitEmbeddedView(),O.clearMockOverrides();try{localStorage.removeItem(k(V))}catch{console.warn("[Editor] Failed to clear template key from localStorage")}},[_,O,V,ec]),el=r(async(e,t)=>{let r=t?.generation??++S.current;try{let t=e.embeddedView?U(e.embeddedView):null,n=J(e.session),a=e.publishedData?K(e.publishedData):null,s=e.frontendData?N(e.frontendData):null,c=e.backendData?Q(e.backendData):null,m=null,p=null,f=L.selectors.access.getConfiguratorRawAccessInfo(),w=null===f?null:W(f.configurationId,f.revisionId);if(e.configuration){let t=v(e.key),r="latest",o=e.configuration,n=H(),a=n.validateAndMigrateState(o.entities,o.modelVersion);u(a,o.rootEntityType),m={configurationId:t,revisionId:r,modelVersion:n.modelVersion,rootEntityType:o.rootEntityType,data:a};let s=Math.floor(Date.now()/1e3),c=l({configurationId:t,revisionId:r,access:e.access.access,iat:s,exp:s+3600});p={configurationId:t,accessInfo:{raw:c,access:"owner"===e.access.access?i.Owner:"read-revision"===e.access.access?i.ReadRevision:i.Read,viewMode:"read-revision"===e.access.access,revisionId:r,configurationId:t}}}else null!==f&&(m=W(f.configurationId,f.revisionId));if(r!==S.current)return;null!==w&&d.set(w.configurationId,[w]),null!==m&&d.set(m.configurationId,[m]),null!==t?_.enterEmbeddedView(t):_.exitEmbeddedView(),O.updateOverrides({accessService:p,accessLevel:null===p?e.access.access:null,sessionContext:n,publishedData:a,frontendData:s,backendData:c,webComponentProperties:e.webComponentProperties??null,embeddedViewActive:null!==t,persistenceConfig:L.selectors.overrides.getPersistenceConfig()}),M.current!==e.key&&ec(M.current),M.current=e.key,D(e.key),j(e),B({session:null,access:null,embeddedView:null});var o=e.key;try{localStorage.setItem(k(V),o)}catch{console.warn("[Editor] Failed to store template key to localStorage")}}catch(o){let r="Template could not be applied, because an unknown error has occurred. Please check the template configuration and try again.";if(t?.errorPresentation==="console")return void console.warn(`[Editor] Template "${e.title}" could not be applied:`,o instanceof Error?o.message:r);ee(o,r)}},[J,H,K,N,Q,U,_,O,ee,V,L,ec,W]),ed=r(async e=>{let t=++S.current;await Y()&&t===S.current&&await el(e,{generation:t})},[Y,el]);y.onMockTemplateChange.useSubscription(void 0,{enabled:!z,onData:e=>{F()&&A(e.templates)}}),n(()=>{if(G&&G.length>0&&!P.current){P.current=!0;let e=(e=>{try{return localStorage.getItem(k(e))}catch{return null}})(V);if(e){let t=G.find(t=>t.key===e);if(t)return void el(t,{errorPresentation:"console"});console.warn(`[Editor] Stored template "${e}" not found in available templates`)}if(C){let e=G[0];e&&el(e,{errorPresentation:"console"})}}},[C,G,el,V]);let eu=a(()=>({activeTemplateKey:x,activeCustomizations:$,effectiveMockTemplates:G,applySessionMock:et,applyAccessMock:er,resetSessionOverride:en,resetAccessOverride:ea,applyEmbeddedViewMock:eo,resetEmbeddedViewOverride:es,applyTemplate:ed,resetAllMocks:ei}),[x,$,G,et,er,en,ea,eo,es,ed,ei]);return e(E.Provider,{value:eu,children:o})};export const useEditorMockContext=()=>{let e=o(E);if(null===e)throw Error("useEditorMockContext must be used within EditorMockProvider");return e};
@@ -1,30 +1,31 @@
1
- import{P as e,match as t}from"ts-pattern";import{Imports as a}from"./imports.js";export const generateConfigBuilder=(i,n,o,s,r,d,l,m,p,h,c,u,g)=>{let y=[],C=new a("./configurator-builder.js",g);C.importMembers("./application-types.js","PrefetchedFinalizeData","FinalizeData","FinalizeResult","NavigationState","ViewState","ToolState","ExportState","CallbackData","AdminNavigationState","AdminViewState","ApplicationVersion","PublishedDataHash","$dataSpec");let w=(a=>{if(!a||0===a.length)return"";let i=[];for(let n of a){let a=t(n).with({type:"ConfigurationLink"},e=>` .addLink({
1
+ import{P as e,match as t}from"ts-pattern";import{Imports as a}from"./imports.js";export const generateConfigBuilder=(i,n,o,s,r,d,m,l,p,h,c,u,g)=>{let y=[],w=new a("./configurator-builder.js",g);w.importMembers("./application-types.js","PrefetchedFinalizeData","FinalizeData","FinalizeResult","NavigationState","ViewState","ToolState","ExportState","CallbackData","AdminNavigationState","AdminViewState","ApplicationVersion","PublishedDataHash","$dataSpec");let C=(a=>{if(!a||0===a.length)return"";let i=[],n=new Set;for(let o of a){if(n.has(o.name))throw Error(`Resource with name ${o.name} already exists!`);n.add(o.name);let a=t(o).with({type:"ConfigurationLink"},e=>` {
2
2
  type: 'ConfigurationLink',
3
3
  name: '${e.name}',
4
- })`).with({type:"Csv"},e=>{let t=e.s3Key?`,
5
- s3Key: '${e.s3Key}'`:"";return` .addCsv({
4
+ },`).with({type:"Csv"},e=>{let t=e.s3Key?`,
5
+ s3Key: '${e.s3Key}'`:"";return` {
6
6
  type: 'Csv',
7
7
  name: '${e.name}'${t},
8
- })`}).with({type:"Pdf"},e=>{let t=e.s3Key?`,
9
- s3Key: '${e.s3Key}'`:"";return` .addPdf({
8
+ },`}).with({type:"Pdf"},e=>{let t=e.s3Key?`,
9
+ s3Key: '${e.s3Key}'`:"";return` {
10
10
  type: 'Pdf',
11
11
  name: '${e.name}'${t},
12
- })`}).with({type:"Image",clientGenerated:!0,s3Key:e.string},e=>` .addClientGeneratedImage({
12
+ },`}).with({type:"Image",clientGenerated:!0,s3Key:e.string},e=>` {
13
13
  type: 'Image',
14
14
  name: '${e.name}',
15
15
  clientGenerated: true,
16
16
  s3Key: '${e.s3Key}',
17
- })`).with({type:"Image",exists:!0,url:e.string},e=>` .addExistingImage({
17
+ },`).with({type:"Image",exists:!0,url:e.string},e=>` {
18
18
  type: 'Image',
19
19
  name: '${e.name}',
20
20
  exists: true,
21
21
  url: '${e.url}',
22
- })`).with({type:"Image"},e=>` .addGeneratedImage({
22
+ },`).with({type:"Image"},e=>` {
23
23
  type: 'Image',
24
24
  name: '${e.name}',
25
25
  s3Key: '${e.s3Key}',
26
- })`).exhaustive();i.push(a)}return`const generatedResources = new ResourceBuilder()${i.join("\n")}
27
- .build()`})(s);if(w&&y.push(w),y.push(`
26
+ },`).exhaustive();i.push(a)}return`const generatedResources = [
27
+ ${i.join("\n")}
28
+ ] as const`})(s);if(C&&y.push(C),y.push(`
28
29
  // The generated optics reach the builder as untyped project modules, so the entity and data types
29
30
  // they used to carry by inference are stated here.
30
31
  export const generatedConfiguratorBuilder = new ConfiguratorBuilder<
@@ -55,7 +56,7 @@ import{P as e,match as t}from"ts-pattern";import{Imports as a}from"./imports.js"
55
56
  .withDataSpec($dataSpec)
56
57
  .withPublishedDataHash(PublishedDataHash)
57
58
  .withVersion(ApplicationVersion)${c?`
58
- .withTextLanguages(${JSON.stringify(c)})`:""}`),o&&y.push(`.withWebComponentTag('${o}')`),i&&(y.push(".withPresets(generatedPresets)"),C.importMembers("./presets.js","generatedPresets")),n&&(y.push(".withAdminPresets(generatedAdminPresets)"),C.importMembers("./admin-presets.js","generatedAdminPresets")),w&&y.push(".withResources(generatedResources)"),r?.canCreate&&y.push(`.withAcl({ canCreate: [${r.canCreate.map(e=>`'${e}'`).join(", ")}] })`),d&&y.push(".withAdminRelease(true)"),void 0!==l||void 0!==m||void 0!==p){let e=[];void 0!==l&&e.push(`appLoader: '${l}'`),void 0!==m&&e.push(`preview: '${m}'`),void 0!==p&&e.push(`alwaysExpand: ${p}`),e.length>0&&y.push(`.withUi({ ${e.join(", ")} })`)}if(h){let e=[];if(void 0!==h.baseResourcesUrl&&e.push(`baseResourcesUrl: ${JSON.stringify(h.baseResourcesUrl)}`),void 0!==h.prefetchTextureUrls){let t=h.prefetchTextureUrls.map(e=>JSON.stringify(e)).join(", ");e.push(`prefetchTextureUrls: [${t}]`)}void 0!==h.deploymentQueryDisabled&&e.push(`deploymentQueryDisabled: ${h.deploymentQueryDisabled}`),e.length>0&&y.push(`.withResourcesConfig({ ${e.join(", ")} })`)}if(u&&Object.keys(u).length>0){let e=JSON.stringify(u);y.push(`.withChunks(${e})`)}let b=["ConfiguratorBuilder"];return w&&b.push("ResourceBuilder"),C.importMembers("@salsita-ai/sdk/domain",...b),C.importMembers("./components/index.js","generatedComponents"),C.importMembers("./admin-components/index.js","adminGeneratedComponents"),C.importMembers("./implementation.js","createRecipe","implementCustomInvariants","attachComponent","implementCustomExpressions"),C.importMembers("./admin-implementation.js","createAdminRecipe","implementCustomAdminInvariants","attachAdminComponent","implementAdminCustomExpressions","createMapPublishedRevisionDataHandler","createMapPublishedChunkedDataHandler","createDataRowValidatorHandler","createSheetValidatorHandler"),y.push(`
59
+ .withTextLanguages(${JSON.stringify(c)})`:""}`),o&&y.push(`.withWebComponentTag('${o}')`),i&&(y.push(".withPresets(generatedPresets)"),w.importMembers("./presets.js","generatedPresets")),n&&(y.push(".withAdminPresets(generatedAdminPresets)"),w.importMembers("./admin-presets.js","generatedAdminPresets")),C&&y.push(".withResources(generatedResources)"),r?.canCreate&&y.push(`.withAcl({ canCreate: [${r.canCreate.map(e=>`'${e}'`).join(", ")}] })`),d&&y.push(".withAdminRelease(true)"),void 0!==m||void 0!==l||void 0!==p){let e=[];void 0!==m&&e.push(`appLoader: '${m}'`),void 0!==l&&e.push(`preview: '${l}'`),void 0!==p&&e.push(`alwaysExpand: ${p}`),e.length>0&&y.push(`.withUi({ ${e.join(", ")} })`)}if(h){let e=[];if(void 0!==h.baseResourcesUrl&&e.push(`baseResourcesUrl: ${JSON.stringify(h.baseResourcesUrl)}`),void 0!==h.prefetchTextureUrls){let t=h.prefetchTextureUrls.map(e=>JSON.stringify(e)).join(", ");e.push(`prefetchTextureUrls: [${t}]`)}void 0!==h.deploymentQueryDisabled&&e.push(`deploymentQueryDisabled: ${h.deploymentQueryDisabled}`),e.length>0&&y.push(`.withResourcesConfig({ ${e.join(", ")} })`)}if(u&&Object.keys(u).length>0){let e=JSON.stringify(u);y.push(`.withChunks(${e})`)}return w.importMembers("@salsita-ai/sdk/domain","ConfiguratorBuilder"),w.importMembers("./components/index.js","generatedComponents"),w.importMembers("./admin-components/index.js","adminGeneratedComponents"),w.importMembers("./implementation.js","createRecipe","implementCustomInvariants","attachComponent","implementCustomExpressions"),w.importMembers("./admin-implementation.js","createAdminRecipe","implementCustomAdminInvariants","attachAdminComponent","implementAdminCustomExpressions","createMapPublishedRevisionDataHandler","createMapPublishedChunkedDataHandler","createDataRowValidatorHandler","createSheetValidatorHandler"),y.push(`
59
60
  import * as AdminEnhancenModel from './admin-enhanced-model.js'
60
61
  import * as AdminModel from './admin-model/index.js'
61
62
  import * as EnhancedModel from './enhanced-model.js'
@@ -101,4 +102,4 @@ import{P as e,match as t}from"ts-pattern";import{Imports as a}from"./imports.js"
101
102
  createSheetValidatorHandler: createSheetValidatorHandler,
102
103
  },
103
104
  }
104
- `),{modulePath:C.targetModule,content:["/* eslint-disable */",C.toString(),...y].join("\n")}};
105
+ `),{modulePath:w.targetModule,content:["/* eslint-disable */",w.toString(),...y].join("\n")}};
@@ -1,2 +1,2 @@
1
- import{DOMAIN_SDK_MODULE as t}from"./imports.js";export const generateConstantExpressions=(n,s)=>(n.importMembers(t,"createConstantExpressionFactory"),n.importMembers(s?"./admin-model/index.js":"./model/index.js","AnyDomainEntity","Aliases","RootEntity"),n.importMembers(s?"./admin-enhanced-model.js":"./enhanced-model.js","constants"),`export const constantExpressions = createConstantExpressionFactory<AnyDomainEntity, RootEntity, PublishedData, SessionData, FrontendData, Aliases>()(constants)
1
+ import{DOMAIN_SDK_MODULE as s}from"./imports.js";export const generateConstantExpressions=(t,n)=>(t.importMembers(s,"createConstantExpressionFactory"),t.importMembers(n?"./admin-enhanced-model.js":"./enhanced-model.js","constants"),`export const constantExpressions = createConstantExpressionFactory()(constants)
2
2
  `);
@@ -1,7 +1 @@
1
- import{DOMAIN_SDK_MODULE as e}from"./imports.js";import{stringifyWithCodeRefsAndI18n as i}from"./stringify-with-code-refs-and-i18n.js";export const generateDefaults=(t,s,n)=>(s.importMembers(e,"RecipeFactoryBuilder"),s.importMembers(n?"./admin-model/index.js":"./model/index.js","AnyDomainEntity","Aliases","aliases"),n)?`export const createAdminRecipe = RecipeFactoryBuilder.forAliases<AnyDomainEntity, Aliases>(aliases)
2
- .forEntities(AnyDomainEntity.reflections)
3
- .withDefaults(${i(t,s)})
4
- .build()`:`export const createRecipe = RecipeFactoryBuilder.forAliases<AnyDomainEntity, Aliases>(aliases)
5
- .forEntities(AnyDomainEntity.reflections)
6
- .withDefaults(${i(t,s)})
7
- .build()`;
1
+ import{DOMAIN_SDK_MODULE as e}from"./imports.js";import{stringifyWithCodeRefsAndI18n as i}from"./stringify-with-code-refs-and-i18n.js";export const generateDefaults=(t,r,n)=>(r.importMembers(e,"createRecipeFactory"),r.importMembers(n?"./admin-model/index.js":"./model/index.js","AnyDomainEntity","aliases"),`export const ${n?"createAdminRecipe":"createRecipe"} = createRecipeFactory<AnyDomainEntity>(aliases, AnyDomainEntity.reflections, ${i(t,r)})`);