@salsita-ai/sdk 0.50.0-develop.c1dcc73e88 → 0.50.0-develop.c28cfb7ded

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 (376) hide show
  1. package/dist/application-spec/core/components/component-filter.d.ts +53 -0
  2. package/dist/application-spec/core/components/component-filter.js +1 -0
  3. package/dist/application-spec/core/components/index.d.ts +2 -0
  4. package/dist/application-spec/core/components/index.js +1 -0
  5. package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
  6. package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
  7. package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
  8. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  9. package/dist/application-spec/core/expressions/index.d.ts +2 -0
  10. package/dist/application-spec/core/expressions/index.js +1 -0
  11. package/dist/application-spec/core/expressions/relation-expression-params.d.ts +11 -0
  12. package/dist/application-spec/core/expressions/relation-expression-params.js +1 -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 +4 -0
  34. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  35. package/dist/application-spec/errors/diagnostic-messages.d.ts +7 -0
  36. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  37. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  38. package/dist/application-spec/generate-application/code/standalone-app-files.d.ts +2 -2
  39. package/dist/application-spec/generate-application/code/standalone-app-files.js +1 -1
  40. package/dist/application-spec/generate-application/code/templates/configurator-config.js +6 -4
  41. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +4 -4
  42. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  43. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +41 -40
  44. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  45. package/dist/application-spec/generate-application/code/templates/globals.js +5 -4
  46. package/dist/application-spec/generate-application/code/templates/index.d.ts +0 -1
  47. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  48. package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
  49. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +8 -2
  50. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  51. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +10 -3
  52. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  53. package/dist/application-spec/generate-application/code/templates/webhook-index.d.ts +6 -1
  54. package/dist/application-spec/generate-application/code/templates/webhook-index.js +10 -1
  55. package/dist/application-spec/generate-application/index.d.ts +2 -0
  56. package/dist/application-spec/generate-application/index.js +1 -1
  57. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +6 -2
  58. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
  59. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +8 -1
  60. package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
  61. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +5 -1
  62. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  63. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.d.ts +43 -0
  64. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.js +1 -0
  65. package/dist/application-spec/generate-application/runtime/factory-data/index.d.ts +3 -0
  66. package/dist/application-spec/generate-application/runtime/factory-data/index.js +1 -0
  67. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.d.ts +13 -0
  68. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.js +1 -0
  69. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.d.ts +16 -0
  70. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.js +1 -0
  71. package/dist/application-spec/generate-application/runtime/migrations/index.d.ts +1 -0
  72. package/dist/application-spec/generate-application/runtime/migrations/index.js +1 -0
  73. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.d.ts +53 -0
  74. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.js +1 -0
  75. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +1 -1
  76. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  77. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  78. package/dist/application-spec/index.d.ts +1 -0
  79. package/dist/application-spec/index.js +1 -1
  80. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +6 -0
  81. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  82. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  83. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  84. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  85. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  86. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  87. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
  88. package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
  89. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
  90. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  91. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
  92. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  93. package/dist/application-spec/parse-application-files/spec/expressions/expression.d.ts +1 -28
  94. package/dist/application-spec/parse-application-files/spec/expressions/expression.js +1 -1
  95. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +1 -1
  96. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  97. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
  98. package/dist/application-spec/parse-application-files/spec/expressions/index.js +1 -1
  99. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  100. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  101. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  102. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  103. package/dist/client/phoenix-api.d.ts +96 -0
  104. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  105. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  106. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  107. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +32 -1
  108. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  109. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +7 -1
  110. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  111. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  112. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +20 -4
  113. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  114. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  115. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  116. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -2
  117. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  118. package/dist/configurator/common/configurator-interface.d.ts +22 -1
  119. package/dist/configurator/common/configurator-interface.js +1 -1
  120. package/dist/configurator/common/frontend-analytics.d.ts +2 -0
  121. package/dist/configurator/common/frontend-analytics.js +1 -1
  122. package/dist/configurator/common/index.d.ts +2 -0
  123. package/dist/configurator/common/index.js +1 -1
  124. package/dist/configurator/common/use-finalize-action.d.ts +31 -0
  125. package/dist/configurator/common/use-finalize-action.js +1 -0
  126. package/dist/configurator/common/use-reset-camera.d.ts +6 -0
  127. package/dist/configurator/common/use-reset-camera.js +1 -0
  128. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +1 -1
  129. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +2 -2
  130. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  131. package/dist/configurator/pages/configurator-layout-name.d.ts +2 -0
  132. package/dist/configurator/pages/configurator-layout-name.js +1 -0
  133. package/dist/configurator/pages/default-configurator-elements.d.ts +7 -0
  134. package/dist/configurator/pages/default-configurator-elements.js +1 -0
  135. package/dist/configurator/pages/index.d.ts +1 -0
  136. package/dist/configurator/pages/index.js +1 -1
  137. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  138. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  139. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  140. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  141. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  142. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  143. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  144. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  145. package/dist/configurator/ui/assistant/AssistantChips.d.ts +8 -2
  146. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  147. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  148. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  149. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  150. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  151. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  152. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  153. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  154. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  155. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  156. package/dist/configurator/ui/assistant/entity-link/entity-link-target.d.ts +5 -0
  157. package/dist/configurator/ui/assistant/entity-link/entity-link-target.js +1 -0
  158. package/dist/configurator/ui/assistant/entity-link/index.d.ts +3 -0
  159. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  160. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  161. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  162. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  163. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  164. package/dist/configurator/ui/configurator-layout/{universal → slots/desktop-sidebar}/DesktopSidebar.d.ts +23 -14
  165. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  166. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  167. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  168. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.d.ts +4 -4
  169. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  170. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.d.ts +3 -6
  171. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.js +1 -1
  172. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  173. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  174. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +1 -1
  175. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +2 -2
  176. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  177. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -2
  178. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  179. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  180. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  181. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  182. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  183. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  184. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  185. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  186. package/dist/docs/index.json +42 -1
  187. package/dist/docs/layouts/custom-layout.mdx +2125 -0
  188. package/dist/docs/layouts/header/fixed.mdx +2 -2
  189. package/dist/docs/layouts/header/floating.mdx +2 -2
  190. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  191. package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
  192. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  193. package/dist/docs/other-features/transformers.mdx +4 -0
  194. package/dist/docs/phoenix/application-states.mdx +9 -7
  195. package/dist/docs/phoenix/configurator-interface.mdx +136 -18
  196. package/dist/docs/phoenix/finalization.mdx +1 -1
  197. package/dist/docs/phoenix/layout-slots.mdx +116 -0
  198. package/dist/docs/phoenix/phoenix-cli.mdx +8 -2
  199. package/dist/docs/phoenix/project-structure.mdx +6 -2
  200. package/dist/docs/phoenix/sdk-builder-workflow.mdx +1 -1
  201. package/dist/docs/phoenix/testing.mdx +140 -0
  202. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  203. package/dist/docs/phoenix/webhooks.mdx +17 -0
  204. package/dist/domain/application/application-config.d.ts +3 -1
  205. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  206. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  207. package/dist/domain/application/assistant/assistant-manifest.d.ts +9 -1
  208. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +38 -2
  209. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  210. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  211. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  212. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  213. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  214. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  215. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  216. package/dist/domain/application/assistant/index.d.ts +6 -1
  217. package/dist/domain/application/assistant/index.js +1 -1
  218. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  219. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  220. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  221. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  222. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  223. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  224. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  225. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  226. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  227. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  228. package/dist/domain/application/configurator-builder.d.ts +5 -2
  229. package/dist/domain/application/configurator-builder.js +1 -1
  230. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  231. package/dist/domain/core/invariant/violation.d.ts +50 -2
  232. package/dist/domain/core/invariant/violation.js +1 -1
  233. package/dist/domain/core/model/model.d.ts +1 -1
  234. package/dist/domain/domain-context/index.d.ts +1 -1
  235. package/dist/domain/domain-context/undo-system.d.ts +28 -1
  236. package/dist/domain/domain-context/undo-system.js +1 -1
  237. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  238. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  239. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  240. package/dist/domain/domain-runtime/access/types.js +1 -1
  241. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  242. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  243. package/dist/domain/domain-runtime/domain-runtime.d.ts +16 -0
  244. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  245. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  246. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  247. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  248. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  249. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  250. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  251. package/dist/domain/domain-runtime/errors/index.js +1 -0
  252. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  253. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  254. package/dist/domain/domain-runtime/index.d.ts +1 -0
  255. package/dist/domain/domain-runtime/index.js +1 -1
  256. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  257. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  258. package/dist/domain/domain-runtime/spec/module-checks/project-modules.d.ts +8 -1
  259. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -1
  260. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -1
  261. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -1
  262. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -1
  263. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -1
  264. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  265. package/dist/domain/domain-runtime/spec/types.d.ts +2 -0
  266. package/dist/domain/extensions/attribute-switch.d.ts +1 -1
  267. package/dist/domain/extensions/attribute-switch.js +1 -1
  268. package/dist/domain/extensions/canvas-config.d.ts +1 -1
  269. package/dist/domain/extensions/client-side-image.d.ts +2 -2
  270. package/dist/domain/extensions/client-side-image.js +1 -1
  271. package/dist/domain/extensions/common/angle-indicator-schema.d.ts +2 -2
  272. package/dist/domain/extensions/common/dimension-indicator-schema.d.ts +2 -2
  273. package/dist/domain/extensions/editable-angle-indicator.d.ts +1 -1
  274. package/dist/domain/extensions/editable-distance-dimension-indicator.d.ts +1 -1
  275. package/dist/domain/extensions/editable-offset-indicator.d.ts +1 -1
  276. package/dist/domain/extensions/editable-offset-indicator.js +1 -1
  277. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -1
  278. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -1
  279. package/dist/domain/extensions/horizontal-tabs.d.ts +2 -2
  280. package/dist/domain/extensions/list-selector-dimension-indicator.d.ts +1 -1
  281. package/dist/domain/extensions/navigation-steps.d.ts +2 -2
  282. package/dist/domain/extensions/offset-indicator.js +1 -1
  283. package/dist/domain/extensions/rotation-handle.d.ts +2 -2
  284. package/dist/domain/extensions/save-template-thumbnail.d.ts +2 -2
  285. package/dist/domain/extensions/save-template-thumbnail.js +1 -1
  286. package/dist/domain/extensions/scene-entity-animation.js +1 -1
  287. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +9 -0
  288. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  289. package/dist/domain/mocks/create-mock-domain.js +1 -1
  290. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  291. package/dist/domain/mocks/create-test-application-config.js +1 -0
  292. package/dist/domain/mocks/index.d.ts +1 -0
  293. package/dist/domain/mocks/index.js +1 -1
  294. package/dist/domain/system-components/application-config.d.ts +2 -2
  295. package/dist/domain/system-components/child-entity-selection.js +1 -1
  296. package/dist/domain/system-components/collision-box-geometry.d.ts +4 -2
  297. package/dist/domain/system-components/collision-geometry.d.ts +4 -2
  298. package/dist/domain/system-components/collision-point-geometry.d.ts +4 -2
  299. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  300. package/dist/domain/system-components/common/recipes.d.ts +21 -3
  301. package/dist/domain/system-components/common/recipes.js +1 -1
  302. package/dist/domain/system-components/constraint.d.ts +10 -23
  303. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  304. package/dist/domain/system-components/drag-handle.js +1 -1
  305. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  306. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  307. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  308. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  309. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -1
  310. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  311. package/dist/domain/system-components/material-swatch.js +1 -1
  312. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  313. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  314. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  315. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  316. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  317. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  318. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  319. package/dist/editor/mocks/EditorMockContext.js +1 -1
  320. package/dist/i18n/locales/cs/messages.js +1 -1
  321. package/dist/i18n/locales/da/messages.js +1 -1
  322. package/dist/i18n/locales/de/messages.js +1 -1
  323. package/dist/i18n/locales/de-AT/messages.js +1 -1
  324. package/dist/i18n/locales/en/messages.js +1 -1
  325. package/dist/i18n/locales/en-AU/messages.js +1 -1
  326. package/dist/i18n/locales/en-GB/messages.js +1 -1
  327. package/dist/i18n/locales/es/messages.js +1 -1
  328. package/dist/i18n/locales/fr/messages.js +1 -1
  329. package/dist/i18n/locales/hu/messages.js +1 -1
  330. package/dist/i18n/locales/it/messages.js +1 -1
  331. package/dist/i18n/locales/nl/messages.js +1 -1
  332. package/dist/i18n/locales/pl/messages.js +1 -1
  333. package/dist/i18n/locales/pt/messages.js +1 -1
  334. package/dist/i18n/locales/ro/messages.js +1 -1
  335. package/dist/i18n/locales/sk/messages.js +1 -1
  336. package/dist/i18n/locales/tr/messages.js +1 -1
  337. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -1
  338. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  339. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  340. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +81 -68
  341. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  342. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  343. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  344. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +7 -1
  345. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +18 -16
  346. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +14 -12
  347. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +13 -11
  348. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +13 -11
  349. package/dist/phoenix/commands/check.js +1 -1
  350. package/dist/phoenix/commands/deploy.js +1 -1
  351. package/dist/phoenix/commands/fix.js +1 -1
  352. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  353. package/dist/phoenix/services/source-archive.d.ts +1 -0
  354. package/dist/phoenix/services/source-archive.js +1 -1
  355. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  356. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  357. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  358. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +17 -0
  359. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  360. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +30 -0
  361. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -0
  362. package/dist/react-sdk/domain-context/index.d.ts +2 -1
  363. package/dist/react-sdk/domain-context/index.js +1 -1
  364. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +5 -0
  365. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  366. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  367. package/dist/ui-sdk/theme/types.d.ts +1 -1
  368. package/dist/webhook/builders/webhook-builder.js +1 -1
  369. package/package.json +33 -26
  370. package/schema/domain-spec.json +1115 -209
  371. package/dist/application-spec/generate-application/code/templates/webhook-implementation.d.ts +0 -1
  372. package/dist/application-spec/generate-application/code/templates/webhook-implementation.js +0 -7
  373. package/dist/configurator/ui/configurator-layout/universal/DesktopSidebar.js +0 -16
  374. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  375. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  376. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
@@ -0,0 +1,46 @@
1
+ /**
2
+ * What kind of mistake an {@link ImplementationError} reports. A host that shows the error, such as
3
+ * a webhook log, reads the code instead of parsing the message.
4
+ *
5
+ * - `MISSING_EXPORT`: a convention file exports nothing where its folder requires an export.
6
+ * - `INVALID_EXPORT`: a convention file exports a value that does not match its folder's contract.
7
+ * - `MISSING_IMPLEMENTATION`: the spec declares something that no project file implements.
8
+ * - `DUPLICATE_DEFINITION`: two files define what only one may define.
9
+ * - `INVALID_CONFIGURATION`: the application's configuration is incomplete or contradictory.
10
+ * - `STARTUP_FAILED`: project or SDK code threw while the application was starting.
11
+ */
12
+ export type ImplementationErrorCode = 'MISSING_EXPORT' | 'INVALID_EXPORT' | 'MISSING_IMPLEMENTATION' | 'DUPLICATE_DEFINITION' | 'INVALID_CONFIGURATION' | 'STARTUP_FAILED';
13
+ /** The parts an {@link ImplementationError} is made of. Its message is built from them. */
14
+ export interface ImplementationErrorProps {
15
+ readonly code: ImplementationErrorCode;
16
+ /** Project-relative path of the file to fix, or `null` when the mistake belongs to no single file. */
17
+ readonly origin: string | null;
18
+ /** What went wrong, without the file name and without a full stop. */
19
+ readonly problem: string;
20
+ /** What the SDK requires at that place, when the mistake is a wrong value. */
21
+ readonly expected?: string;
22
+ /** What it found instead. It is part of the message only together with `expected`. */
23
+ readonly received?: string;
24
+ /** What the developer can do to fix it, as one or more full sentences. */
25
+ readonly fix: string;
26
+ /** What was thrown, when the error reports a failure of other code. */
27
+ readonly cause?: unknown;
28
+ }
29
+ /**
30
+ * A mistake in a project's implementation that stops its application from starting: a convention
31
+ * file with the wrong export, a definition made twice, a project file that throws.
32
+ *
33
+ * The checks the domain runtime runs on a project's files throw it, so that every host of the
34
+ * runtime (the web component, the editor, a webhook) can tell it from a defect of its own and report
35
+ * it in its own medium. `message` is the whole report as one text; the fields hold its parts.
36
+ */
37
+ export declare class ImplementationError extends Error {
38
+ readonly code: ImplementationErrorCode;
39
+ readonly origin: string | null;
40
+ readonly problem: string;
41
+ readonly expected: string | null;
42
+ readonly received: string | null;
43
+ readonly fix: string;
44
+ constructor(props: ImplementationErrorProps);
45
+ }
46
+ export declare const isImplementationError: (error: unknown) => error is ImplementationError;
@@ -0,0 +1 @@
1
+ export class ImplementationError extends Error{code;origin;problem;expected;received;fix;constructor(e){let i,r,o;super((i=null===e.origin?"":` in ${e.origin}`,r=void 0===e.received?"":`, but got ${e.received}`,o=void 0===e.expected?"":`: expected ${e.expected}${r}`,`${e.problem}${i}${o}. ${e.fix}`),void 0===e.cause?void 0:{cause:e.cause}),this.name="ImplementationError",this.code=e.code,this.origin=e.origin,this.problem=e.problem,this.expected=e.expected??null,this.received=e.received??null,this.fix=e.fix}}export const isImplementationError=e=>e instanceof ImplementationError;
@@ -0,0 +1,13 @@
1
+ import type { ImplementationError } from './implementation-error.js';
2
+ /**
3
+ * Every {@link ImplementationError} one start of an application found, reported together, so that a
4
+ * developer with four wrong files reads four errors instead of fixing them one reload at a time.
5
+ *
6
+ * The message of a list with one error is that error's message. The message of a longer list is a
7
+ * headline with the count, followed by one numbered line per error in the order of `errors`.
8
+ */
9
+ export declare class ImplementationErrors extends Error {
10
+ readonly errors: readonly ImplementationError[];
11
+ constructor(errors: readonly ImplementationError[]);
12
+ }
13
+ export declare const isImplementationErrors: (error: unknown) => error is ImplementationErrors;
@@ -0,0 +1 @@
1
+ export class ImplementationErrors extends Error{errors;constructor(r){super((r=>{let[e]=r;return 1===r.length&&e?e.message:[`The application cannot start: ${r.length} implementation errors were found.`,...r.map((r,e)=>`${e+1}. ${r.message}`)].join("\n")})(r)),this.name="ImplementationErrors",this.errors=r}}export const isImplementationErrors=r=>r instanceof ImplementationErrors;
@@ -0,0 +1,4 @@
1
+ export { type ImplementationErrorCode, type ImplementationErrorProps, ImplementationError, isImplementationError, } from './implementation-error.js';
2
+ export { type ImplementationErrorCollector, createImplementationErrorCollector, } from './implementation-error-collector.js';
3
+ export { ImplementationErrors, isImplementationErrors } from './implementation-errors.js';
4
+ export { type StartupStage, toImplementationErrors } from './to-implementation-errors.js';
@@ -0,0 +1 @@
1
+ export{ImplementationError,isImplementationError}from"./implementation-error.js";export{createImplementationErrorCollector}from"./implementation-error-collector.js";export{ImplementationErrors,isImplementationErrors}from"./implementation-errors.js";export{toImplementationErrors}from"./to-implementation-errors.js";
@@ -0,0 +1,10 @@
1
+ import { ImplementationErrors } from './implementation-errors.js';
2
+ /** The step of an application start during which a failure that the SDK did not raise itself was caught. */
3
+ export type StartupStage = 'import' | 'initialize' | 'render';
4
+ /**
5
+ * Turns whatever stopped an application from starting into a list of implementation errors, so that
6
+ * a host handles one shape. A list is passed through and a single implementation error becomes a
7
+ * list of one. Anything else, such as a project file that throws while it loads, becomes one
8
+ * `STARTUP_FAILED` error that names the stage and keeps what was thrown as its `cause`.
9
+ */
10
+ export declare const toImplementationErrors: (error: unknown, stage: StartupStage) => ImplementationErrors;
@@ -0,0 +1 @@
1
+ import{ImplementationError as e,isImplementationError as i}from"./implementation-error.js";import{ImplementationErrors as t,isImplementationErrors as r}from"./implementation-errors.js";let n={import:"while its code was loading",initialize:"while its runtime was initializing",render:"while it was rendering"};export const toImplementationErrors=(o,a)=>r(o)?o:i(o)?new t([o]):new t([new e({code:"STARTUP_FAILED",origin:null,problem:`The application failed ${n[a]}: ${o instanceof Error?o.message:String(o)}`,fix:"Read the stack trace of the cause to find the file that threw, and fix the code it points to.",cause:o})]);
@@ -1,6 +1,7 @@
1
1
  export * from './domain-runtime.js';
2
2
  export * from './domain-context/index.js';
3
3
  export * from './domain-services/index.js';
4
+ export { type ImplementationErrorCode, type ImplementationErrorProps, type StartupStage, ImplementationError, ImplementationErrors, isImplementationError, isImplementationErrors, toImplementationErrors, } from './errors/index.js';
4
5
  export * from './spec/index.js';
5
6
  export * from './environment/index.js';
6
7
  export * from './access/index.js';
@@ -1 +1 @@
1
- export*from"./domain-runtime.js";export*from"./domain-context/index.js";export*from"./domain-services/index.js";export*from"./spec/index.js";export*from"./environment/index.js";export*from"./access/index.js";export*from"./overrides/index.js";export*from"./loaded-data/index.js";export*from"./domain-data/index.js";export*from"./session-context/index.js";export*from"./web-component/index.js";
1
+ export*from"./domain-runtime.js";export*from"./domain-context/index.js";export*from"./domain-services/index.js";export{ImplementationError,ImplementationErrors,isImplementationError,isImplementationErrors,toImplementationErrors}from"./errors/index.js";export*from"./spec/index.js";export*from"./environment/index.js";export*from"./access/index.js";export*from"./overrides/index.js";export*from"./loaded-data/index.js";export*from"./domain-data/index.js";export*from"./session-context/index.js";export*from"./web-component/index.js";
@@ -1,3 +1,14 @@
1
1
  import type { AnyApplicationConfig } from '../../application/index.js';
2
2
  import type { ApplicationSpec } from './types.js';
3
+ /**
4
+ * Builds the runtime spec of an application from its config.
5
+ *
6
+ * Project files reach the config unchecked; this is where each one is held to its folder's
7
+ * contract. Every file is checked on its own, and all the files that break their contract are
8
+ * thrown together as one `ImplementationErrors`. Its errors are ordered by folder (handlers,
9
+ * elements, transformers, configurator components, admin components) and inside a folder by the
10
+ * order of the config's list. No spec is returned when a file is wrong, so nothing that reads the
11
+ * spec, such as the transformer selection, runs on a list with a file missing and reports the
12
+ * mistake a second time.
13
+ */
3
14
  export declare const initializeSpec: (config: AnyApplicationConfig) => ApplicationSpec;
@@ -1 +1 @@
1
- import{SessionRole as e}from"@salsita-ai/contracts/api";import{resolveComponentOpticModules as t,resolveElementModules as a,resolveHandlerModules as n,resolveImportedTransformers as o,resolveTransformerModules as i}from"./module-checks/index.js";export const initializeSpec=s=>{let r=s.adminDomain.presets[0];if(!r)throw Error("Cannot register application spec because admin preset is required.");let m=n(s.handlers),c=a(s.elements),d=(e=>{let t={};for(let a of e)t[a.name]=(void 0)??a.name;return t})(m),l=(e=>{let t={},a=0;for(let n of e)if("entity"===n.type||"layout"===n.type)t[n.name]=(void 0)??n.name;else{let e=`icon:${a}`;t[e]=(void 0)??`${e}:${n.elements.length}`,a+=1}return t})(c),p=i(s.transformers?.importedTransformers??[]),y=s.transformers?.specTransformers??[];return{version:s.version,dataConfig:s.dataSpec??null,chunks:s.chunks,publishedDataHash:s.publishedDataHash,initialPublishedData:s.initialPublishedData,canCreate:s.features?.acl?.canCreate??Object.values(e),enableAdminRelease:s.features?.enableAdminRelease??!1,textLanguages:s.domain.textLanguages??s.adminDomain.textLanguages??["en"],baseResourcesUrl:s.resources?.baseResourcesUrl??s.defaultEnvs?.resourcesUrl??"",configurator:{factory:s.domain.domainFactory,presets:s.domain.presets,aliasMap:s.domain.domainFactory.context.aliasMap,entityReflections:s.domain.domainFactory.context.entityReflections,$entityReflections:s.domain.domainFactory.context.$entityReflections,expressions:s.domain.domainFactory.context.expressions,actions:s.domain.domainFactory.context.actions,actionImplementations:s.domain.domainFactory.context.actionImplementations,allowedRootEntityTypes:s.domain.domainFactory.context.allowedRootEntityTypes,migrate:s.domain.domainFactory.context.migrate,componentOptics:t(s.domain.componentOptics),createTransformers:e=>o(p,y,e),navigationStates:s.navigation?.navigationStates??[],viewStates:s.navigation?.viewStates??[],toolStates:s.navigation?.toolStates??[],exportStates:s.navigation?.exportStates??[],handlers:m,handlerHashes:d,elements:c,elementHashes:l,appLoader:s.ui?.appLoader??"universal",preview:s.ui?.preview??"auto",alwaysExpand:s.ui?.alwaysExpand??!1,theme:s.ui?.theme??{},assistant:s.assistant??null,deploymentQueryDisabled:s.resources?.deploymentQueryDisabled??!1,prefetchTextureUrls:s.resources?.prefetchTextureUrls??[],modelVersion:s.domain.domainFactory.modelVersion},admin:{factory:s.adminDomain.domainFactory,modelVersion:s.adminDomain.domainFactory.modelVersion,aliasMap:s.adminDomain.domainFactory.context.aliasMap,entityReflections:s.adminDomain.domainFactory.context.entityReflections,$entityReflections:s.adminDomain.domainFactory.context.$entityReflections,expressions:s.adminDomain.domainFactory.context.expressions,actions:s.adminDomain.domainFactory.context.actions,actionImplementations:s.adminDomain.domainFactory.context.actionImplementations,allowedRootEntityTypes:s.adminDomain.domainFactory.context.allowedRootEntityTypes,migrate:s.adminDomain.domainFactory.context.migrate,preset:r,componentOptics:t(s.adminDomain.componentOptics),navigationStates:s.adminNavigation?.navigationStates??[],viewStates:s.adminNavigation?.viewStates??[],handlers:m,handlerHashes:d,elements:c,elementHashes:l}}};
1
+ import{SessionRole as e}from"@salsita-ai/contracts/api";import{createImplementationErrorCollector as t}from"../errors/index.js";import{resolveComponentOpticModules as a,resolveElementModule as n,resolveHandlerModule as o,resolveImportedTransformers as i,resolveTransformerModule as s}from"./module-checks/index.js";let r=(e,t,a)=>e.flatMap(e=>a.attempt(()=>t(e),[]));export const initializeSpec=m=>{let c=m.adminDomain.presets[0];if(!c)throw Error("Cannot register application spec because admin preset is required.");let d=t(),l=r(m.handlers,o,d),p=r(m.elements,n,d),y=r(m.transformers?.importedTransformers??[],e=>[s(e)],d),u=r(m.domain.componentOptics,e=>a([e]),d),f=r(m.adminDomain.componentOptics,e=>a([e]),d);d.throwIfAny();let x=(e=>{let t={};for(let a of e)t[a.name]=(void 0)??a.name;return t})(l),g=(e=>{let t={},a=0;for(let n of e)if("entity"===n.type||"layout"===n.type)t[n.name]=(void 0)??n.name;else{let e=`icon:${a}`;t[e]=(void 0)??`${e}:${n.elements.length}`,a+=1}return t})(p),v=m.transformers?.specTransformers??[];return{version:m.version,dataConfig:m.dataSpec??null,chunks:m.chunks,publishedDataHash:m.publishedDataHash,initialPublishedData:m.initialPublishedData,canCreate:m.features?.acl?.canCreate??Object.values(e),enableAdminRelease:m.features?.enableAdminRelease??!1,textLanguages:m.domain.textLanguages??m.adminDomain.textLanguages??["en"],baseResourcesUrl:m.resources?.baseResourcesUrl??m.defaultEnvs?.resourcesUrl??"",configurator:{factory:m.domain.domainFactory,presets:m.domain.presets,aliasMap:m.domain.domainFactory.context.aliasMap,entityReflections:m.domain.domainFactory.context.entityReflections,$entityReflections:m.domain.domainFactory.context.$entityReflections,expressions:m.domain.domainFactory.context.expressions,actions:m.domain.domainFactory.context.actions,actionImplementations:m.domain.domainFactory.context.actionImplementations,allowedRootEntityTypes:m.domain.domainFactory.context.allowedRootEntityTypes,migrate:m.domain.domainFactory.context.migrate,componentOptics:u,createTransformers:e=>i(y,v,e),navigationStates:m.navigation?.navigationStates??[],viewStates:m.navigation?.viewStates??[],toolStates:m.navigation?.toolStates??[],exportStates:m.navigation?.exportStates??[],handlers:l,handlerHashes:x,elements:p,defaultElements:m.defaultElements??[],elementHashes:g,appLoader:m.ui?.appLoader??"universal",preview:m.ui?.preview??"auto",alwaysExpand:m.ui?.alwaysExpand??!1,theme:m.ui?.theme??{},assistant:m.assistant??null,deploymentQueryDisabled:m.resources?.deploymentQueryDisabled??!1,prefetchTextureUrls:m.resources?.prefetchTextureUrls??[],modelVersion:m.domain.domainFactory.modelVersion},admin:{factory:m.adminDomain.domainFactory,modelVersion:m.adminDomain.domainFactory.modelVersion,aliasMap:m.adminDomain.domainFactory.context.aliasMap,entityReflections:m.adminDomain.domainFactory.context.entityReflections,$entityReflections:m.adminDomain.domainFactory.context.$entityReflections,expressions:m.adminDomain.domainFactory.context.expressions,actions:m.adminDomain.domainFactory.context.actions,actionImplementations:m.adminDomain.domainFactory.context.actionImplementations,allowedRootEntityTypes:m.adminDomain.domainFactory.context.allowedRootEntityTypes,migrate:m.adminDomain.domainFactory.context.migrate,preset:c,componentOptics:f,navigationStates:m.adminNavigation?.navigationStates??[],viewStates:m.adminNavigation?.viewStates??[],handlers:l,handlerHashes:x,elements:p,elementHashes:g}}};
@@ -1,3 +1,4 @@
1
+ import { ImplementationError } from '../../errors/index.js';
1
2
  /**
2
3
  * The default export of one file in a project convention folder (`src/elements/`, `src/handlers/`,
3
4
  * `src/expressions/`, …), paired with the project-relative path it was imported from.
@@ -17,7 +18,13 @@ export interface ProjectModuleContract {
17
18
  }
18
19
  export declare const SHARED_FOLDER_HINT = "or move the file to an underscore-prefixed folder such as src/_shared/ when it is shared code";
19
20
  export declare const isRecord: (value: unknown) => value is Record<string, unknown>;
20
- export declare const createContractError: (origin: string, contract: ProjectModuleContract, received: unknown) => Error;
21
+ /**
22
+ * The error of a file whose default export does not match its folder's contract. `received` is the
23
+ * value the message reports: the export itself, or the item of an array export that fails. The
24
+ * code is `MISSING_EXPORT` when the file has no default export at all, and `INVALID_EXPORT`
25
+ * otherwise, also when an item of an array export is `undefined`.
26
+ */
27
+ export declare const createContractError: (module: ProjectModule, contract: ProjectModuleContract, received: unknown) => ImplementationError;
21
28
  /**
22
29
  * Checks a file of a folder whose contract is one item or an array of them, and returns its items.
23
30
  * The first item that fails the check is the value the error reports.
@@ -1 +1 @@
1
- export const SHARED_FOLDER_HINT="or move the file to an underscore-prefixed folder such as src/_shared/ when it is shared code";export const isRecord=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);export const createContractError=(e,r,t)=>Error(`Invalid default export in ${e}: expected ${r.expected}, but got ${(e=>{if(void 0===e)return"nothing (the file has no default export)";if(null===e)return"null";if("function"==typeof e)return e.name?`the function "${e.name}"`:"an anonymous function";if(Array.isArray(e))return`an array of ${e.length} item(s)`;if(isRecord(e)){let r=Object.keys(e);return r.length>0?`an object with the keys ${r.join(", ")}`:"an empty object"}return`the ${typeof e} ${JSON.stringify(e)}`})(t)}. Every file in this folder is loaded by convention, so each one must default-export that shape. ${r.fix}`);export const resolveListModule=(e,r,t)=>{let o=Array.isArray(e.exports)?e.exports:[e.exports],n=[];for(let i of o){if(!t(i))throw createContractError(e.origin,r,i);n.push(i)}return n};
1
+ import{ImplementationError as e}from"../../errors/index.js";export const SHARED_FOLDER_HINT="or move the file to an underscore-prefixed folder such as src/_shared/ when it is shared code";export const isRecord=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);export const createContractError=(r,t,o)=>new e({code:void 0===r.exports?"MISSING_EXPORT":"INVALID_EXPORT",origin:r.origin,problem:"Invalid default export",expected:t.expected,received:(e=>{if(void 0===e)return"nothing (the file has no default export)";if(null===e)return"null";if("function"==typeof e)return e.name?`the function "${e.name}"`:"an anonymous function";if(Array.isArray(e))return`an array of ${e.length} item(s)`;if(isRecord(e)){let r=Object.keys(e);return r.length>0?`an object with the keys ${r.join(", ")}`:"an empty object"}return`the ${typeof e} ${JSON.stringify(e)}`})(o),fix:`Every file in this folder is loaded by convention, so each one must default-export that shape. ${t.fix}`});export const resolveListModule=(e,r,t)=>{let o=Array.isArray(e.exports)?e.exports:[e.exports],n=[];for(let i of o){if(!t(i))throw createContractError(e,r,i);n.push(i)}return n};
@@ -1 +1 @@
1
- import{SHARED_FOLDER_HINT as e,createContractError as t,isRecord as o}from"./project-modules.js";let i={expected:"an object of action implementations keyed by action name",fix:`Create it with phx.domain.implementActions({ ... }), ${e}.`},n=e=>"function"==typeof e;export const resolveActionModules=e=>e.reduce((e,r)=>{let c;if(!(o(c=r.exports)&&Object.values(c).every(n)))throw t(r.origin,i,r.exports);return{...e,...r.exports}},{});
1
+ import{SHARED_FOLDER_HINT as e,createContractError as t,isRecord as o}from"./project-modules.js";let i={expected:"an object of action implementations keyed by action name",fix:`Create it with phx.domain.implementActions({ ... }), ${e}.`},n=e=>"function"==typeof e;export const resolveActionModules=e=>e.reduce((e,r)=>{let c;if(!(o(c=r.exports)&&Object.values(c).every(n)))throw t(r,i,r.exports);return{...e,...r.exports}},{});
@@ -1 +1 @@
1
- import{SHARED_FOLDER_HINT as e,createContractError as o,isRecord as t}from"./project-modules.js";let i={expected:"an object of expressions keyed by entity type or alias, then by expression name",fix:`Create it with phx.domain.implementCustomExpressions({ ... }) (phx.domain.admin.implementCustomExpressions({ ... }) under src/admin/), ${e}.`},r=e=>t(e)&&"function"==typeof e.evaluate,n=e=>t(e)&&Object.values(e).every(r);export const resolveExpressionModules=(e,r)=>{let s=new Map;return e.map(e=>{let p;if(!(t(p=e.exports)&&Object.values(p).every(n)))throw o(e.origin,i,e.exports);for(let[o,t]of Object.entries(e.exports))for(let i of r[o]??[o])for(let o of Object.keys(t)){let t=`${i}.${o}`,r=s.get(t);if(void 0!==r&&r!==e.origin)throw Error(`Duplicate expression ${t}: it is defined in both ${r} and ${e.origin}, which would make its value depend on file order. Keep one definition and remove the other.`);s.set(t,e.origin)}return{origin:e.origin,expressions:e.exports}})};
1
+ import{SHARED_FOLDER_HINT as e,createContractError as o,isRecord as t}from"./project-modules.js";let i={expected:"an object of expressions keyed by entity type or alias, then by expression name",fix:`Create it with phx.domain.implementCustomExpressions({ ... }) (phx.domain.admin.implementCustomExpressions({ ... }) under src/admin/), ${e}.`},r=e=>t(e)&&"function"==typeof e.evaluate,n=e=>t(e)&&Object.values(e).every(r);export const resolveExpressionModules=(e,r)=>{let s=new Map;return e.map(e=>{let p;if(!(t(p=e.exports)&&Object.values(p).every(n)))throw o(e,i,e.exports);for(let[o,t]of Object.entries(e.exports))for(let i of r[o]??[o])for(let o of Object.keys(t)){let t=`${i}.${o}`,r=s.get(t);if(void 0!==r&&r!==e.origin)throw Error(`Duplicate expression ${t}: it is defined in both ${r} and ${e.origin}, which would make its value depend on file order. Keep one definition and remove the other.`);s.set(t,e.origin)}return{origin:e.origin,expressions:e.exports}})};
@@ -1 +1 @@
1
- import{SHARED_FOLDER_HINT as r,createContractError as e,isRecord as t}from"./project-modules.js";let o={expected:"a transformer (a function of the domain context, or an object with a register method), or an array of them",fix:`Create it with phx.frontend.transformerBuilder, ${r}.`},n=r=>"function"==typeof r||t(r)&&"function"==typeof r.register;export const resolveTransformerModule=r=>{let t;if(!(Array.isArray(t=r.exports)?t.every(n):n(t)))throw e(r.origin,o,r.exports);return{name:r.origin.replace(/^.*\//,"").replace(/\.tsx?$/,""),transformer:r.exports}};export const resolveTransformerModules=r=>r.map(resolveTransformerModule);export const resolveImportedTransformers=(r,e,t)=>{let o=r.flatMap(({name:r,transformer:e})=>{if(Array.isArray(e))return e.map((e,o)=>{if("register"in e)return e.register(t);if("function"==typeof e)return{priority:1/0,transformer:e(t),name:`${r}[${o}]`};throw Error(`Transformer '${r}[${o}]' must be either a RegistrableTransformer (with register method) or a TransformerFactory (function)`)});if("register"in e)return e.register(t);if("function"==typeof e)return{priority:1/0,transformer:e(t),name:r};throw Error(`Transformer '${r}' must be either a RegistrableTransformer (with register method) or a TransformerFactory (function)`)}),n=[];for(let r of e){let e=o.find(e=>e.name===r.name);if(!e){let e=o.map(r=>r.name).filter(Boolean).join(", ");throw Error(`Transformer '${r.name}' not found in imported transformer files. Available transformers: ${e||"none"}`)}n.push({priority:r.priority??1/0,transformer:e.transformer,name:r.name})}return n};
1
+ import{SHARED_FOLDER_HINT as r,createContractError as e,isRecord as t}from"./project-modules.js";let o={expected:"a transformer (a function of the domain context, or an object with a register method), or an array of them",fix:`Create it with phx.frontend.transformerBuilder, ${r}.`},n=r=>"function"==typeof r||t(r)&&"function"==typeof r.register;export const resolveTransformerModule=r=>{let t;if(!(Array.isArray(t=r.exports)?t.every(n):n(t)))throw e(r,o,r.exports);return{name:r.origin.replace(/^.*\//,"").replace(/\.tsx?$/,""),transformer:r.exports}};export const resolveTransformerModules=r=>r.map(resolveTransformerModule);export const resolveImportedTransformers=(r,e,t)=>{let o=r.flatMap(({name:r,transformer:e})=>{if(Array.isArray(e))return e.map((e,o)=>{if("register"in e)return e.register(t);if("function"==typeof e)return{priority:1/0,transformer:e(t),name:`${r}[${o}]`};throw Error(`Transformer '${r}[${o}]' must be either a RegistrableTransformer (with register method) or a TransformerFactory (function)`)});if("register"in e)return e.register(t);if("function"==typeof e)return{priority:1/0,transformer:e(t),name:r};throw Error(`Transformer '${r}' must be either a RegistrableTransformer (with register method) or a TransformerFactory (function)`)}),n=[];for(let r of e){let e=o.find(e=>e.name===r.name);if(!e){let e=o.map(r=>r.name).filter(Boolean).join(", ");throw Error(`Transformer '${r.name}' not found in imported transformer files. Available transformers: ${e||"none"}`)}n.push({priority:r.priority??1/0,transformer:e.transformer,name:r.name})}return n};
@@ -1 +1 @@
1
- import{SHARED_FOLDER_HINT as e,createContractError as t,isRecord as r}from"./project-modules.js";let o={expected:"an object of invariant lists keyed by entity type or alias",fix:`Create it with phx.domain.implementCustomInvariants({ ... }) (phx.domain.admin.implementCustomInvariants({ ... }) under src/admin/), ${e}.`},i=e=>r(e)&&"function"==typeof e.evaluate,n=e=>r(e)&&Object.values(e).every(e=>Array.isArray(e)&&e.every(i));export const resolveInvariantModules=e=>{let r={};for(let i of e){if(!n(i.exports))throw t(i.origin,o,i.exports);for(let[e,t]of Object.entries(i.exports))r[e]=[...r[e]??[],...t]}return r};
1
+ import{SHARED_FOLDER_HINT as e,createContractError as t,isRecord as r}from"./project-modules.js";let o={expected:"an object of invariant lists keyed by entity type or alias",fix:`Create it with phx.domain.implementCustomInvariants({ ... }) (phx.domain.admin.implementCustomInvariants({ ... }) under src/admin/), ${e}.`},i=e=>r(e)&&"function"==typeof e.evaluate,n=e=>r(e)&&Object.values(e).every(e=>Array.isArray(e)&&e.every(i));export const resolveInvariantModules=e=>{let r={};for(let i of e){if(!n(i.exports))throw t(i,o,i.exports);for(let[e,t]of Object.entries(i.exports))r[e]=[...r[e]??[],...t]}return r};
@@ -1 +1 @@
1
- import{createSelector as e}from"@salsita-ai/common/utils";import{buildAssistantManifest as t}from"../../application/assistant/index.js";import{systemElementRegistry as n}from"./module-checks/index.js";export const createSpecSelectors=a=>{let{getState:s}=a,r=e.withTypes(),o=r([r.leaf(e=>e.spec)],e=>e),l=r([o],e=>e.version),i=r([o],e=>e.baseResourcesUrl),m=r([o],e=>e.configurator),g=r([o],e=>e.dataConfig),p=r([o],e=>e.chunks),d=r([o],e=>e.publishedDataHash),c=r([o],e=>e.initialPublishedData),u=r([o],e=>e.canCreate),h=r([o],e=>e.enableAdminRelease),y=r([o],e=>e.textLanguages),f=r([m],e=>e.modelVersion),C=r([o],e=>e.admin),x=r([C],e=>e.preset),A=r([C],e=>e.modelVersion),E=r([m],e=>e.theme),b=r([m],e=>e.assistant),H=r([b],e=>e?t(e):null),D=r([m],e=>e.factory),P=r([C],e=>e.factory),S=r([m],e=>e.componentOptics),w=r([C],e=>e.componentOptics),O=r([m],e=>e.appLoader),T=r([m],e=>e.preview),V=r([m],e=>e.alwaysExpand),L=r([m],e=>e.presets),R=r([m],e=>e.deploymentQueryDisabled),U=r([m],e=>e.prefetchTextureUrls),k=r([m],e=>e.handlerHashes),v=r([m],e=>e.handlers),j=r([v,k],(e,t)=>({...(e=>{let t={},n={},a={};for(let s of e)"phoenix"===s.type&&(t[s.name]=s.handler),"system"===s.type&&(n[s.name]=s.handler),"system-async"===s.type&&(a[s.name]=s.handler);return{handlers:t,systemHandlers:n,systemAsyncHandlers:a}})(e),hashes:t})),F=r([m],e=>e.elementHashes),M=r([m],e=>e.elements),Q=r([M,F],(e,t)=>({...(e=>{let t={},a={};for(let n of e)"layout"===n.type&&(t[n.name]=n.element),"entity"===n.type&&(a[n.name]=n.element);return{entityElements:{...n.entityElements,...a},layoutElements:{...n.layoutElements,...t}}})(e),hashes:t}));return{selectSpec:o,selectVersion:l,selectBaseResourcesUrl:i,selectConfiguratorSpec:m,selectConfiguratorModelVersion:f,selectAdminSpec:C,selectAdminPreset:x,selectAdminModelVersion:A,selectThemeOptions:E,selectAssistant:H,selectConfiguratorFactory:D,selectAdminFactory:P,selectConfiguratorComponentOptics:S,selectAdminComponentOptics:w,selectAppLoader:O,selectPreview:T,selectAlwaysExpand:V,selectPresetSeed:L,selectDeploymentQueryDisabled:R,selectPrefetchTextureUrls:U,selectTextLanguages:y,selectHandlerHashes:k,selectHandlers:v,selectHandlerSlots:j,selectElementHashes:F,selectElements:M,selectElementSlots:Q,selectDataConfig:g,selectChunks:p,selectPublishedDataHash:d,selectInitialPublishedData:c,selectCanCreate:u,selectEnableAdminRelease:h,getVersion:()=>l(s()),getBaseResourcesUrl:()=>i(s()),getConfiguratorSpec:()=>m(s()),getConfiguratorModelVersion:()=>f(s()),getAdminSpec:()=>C(s()),getAdminPreset:()=>x(s()),getAdminModelVersion:()=>A(s()),getThemeOptions:()=>E(s()),getAssistant:()=>H(s()),getConfiguratorFactory:()=>D(s()),getAdminFactory:()=>P(s()),getConfiguratorComponentOptics:()=>S(s()),getAdminComponentOptics:()=>w(s()),getAppLoader:()=>O(s()),getPreview:()=>T(s()),getAlwaysExpand:()=>V(s()),getPresetSeed:()=>L(s()),getDeploymentQueryDisabled:()=>R(s()),getPrefetchTextureUrls:()=>U(s()),getTextLanguages:()=>y(s()),getHandlerHashes:()=>k(s()),getHandlers:()=>v(s()),getHandlerSlots:()=>j(s()),getElementHashes:()=>F(s()),getElements:()=>M(s()),getElementSlots:()=>Q(s()),getDataConfig:()=>g(s()),getChunks:()=>p(s()),getPublishedDataHash:()=>d(s()),getInitialPublishedData:()=>c(s()),getCanCreate:()=>u(s()),getEnableAdminRelease:()=>h(s())}};
1
+ import{createSelector as e}from"@salsita-ai/common/utils";import{buildAssistantManifest as t}from"../../application/assistant/index.js";import{systemElementRegistry as n}from"./module-checks/index.js";export const createSpecSelectors=a=>{let{getState:s}=a,r=e.withTypes(),l=r([r.leaf(e=>e.spec)],e=>e),o=r([l],e=>e.version),i=r([l],e=>e.baseResourcesUrl),m=r([l],e=>e.configurator),g=r([l],e=>e.dataConfig),p=r([l],e=>e.chunks),d=r([l],e=>e.publishedDataHash),c=r([l],e=>e.initialPublishedData),u=r([l],e=>e.canCreate),h=r([l],e=>e.enableAdminRelease),y=r([l],e=>e.textLanguages),f=r([m],e=>e.modelVersion),C=r([l],e=>e.admin),E=r([C],e=>e.preset),x=r([C],e=>e.modelVersion),A=r([m],e=>e.theme),b=r([m],e=>e.assistant),H=r([b],e=>e?t(e):null),D=r([m],e=>e.factory),P=r([C],e=>e.factory),S=r([m],e=>e.componentOptics),w=r([C],e=>e.componentOptics),O=r([m],e=>e.appLoader),T=r([m],e=>e.preview),V=r([m],e=>e.alwaysExpand),L=r([m],e=>e.presets),R=r([m],e=>e.deploymentQueryDisabled),U=r([m],e=>e.prefetchTextureUrls),k=r([m],e=>e.handlerHashes),v=r([m],e=>e.handlers),j=r([v,k],(e,t)=>({...(e=>{let t={},n={},a={};for(let s of e)"phoenix"===s.type&&(t[s.name]=s.handler),"system"===s.type&&(n[s.name]=s.handler),"system-async"===s.type&&(a[s.name]=s.handler);return{handlers:t,systemHandlers:n,systemAsyncHandlers:a}})(e),hashes:t})),F=r([m],e=>e.elementHashes),M=r([m],e=>e.elements),Q=r([m],e=>e.defaultElements),B=r([Q,M,F],(e,t,a)=>({...(e=>{let t={},a={};for(let n of e)"layout"===n.type&&(t[n.name]=n.element),"entity"===n.type&&(a[n.name]=n.element);return{entityElements:{...n.entityElements,...a},layoutElements:{...n.layoutElements,...t}}})([...e,...t]),hashes:a}));return{selectSpec:l,selectVersion:o,selectBaseResourcesUrl:i,selectConfiguratorSpec:m,selectConfiguratorModelVersion:f,selectAdminSpec:C,selectAdminPreset:E,selectAdminModelVersion:x,selectThemeOptions:A,selectAssistant:H,selectConfiguratorFactory:D,selectAdminFactory:P,selectConfiguratorComponentOptics:S,selectAdminComponentOptics:w,selectAppLoader:O,selectPreview:T,selectAlwaysExpand:V,selectPresetSeed:L,selectDeploymentQueryDisabled:R,selectPrefetchTextureUrls:U,selectTextLanguages:y,selectHandlerHashes:k,selectHandlers:v,selectHandlerSlots:j,selectElementHashes:F,selectElements:M,selectElementSlots:B,selectDataConfig:g,selectChunks:p,selectPublishedDataHash:d,selectInitialPublishedData:c,selectCanCreate:u,selectEnableAdminRelease:h,getVersion:()=>o(s()),getBaseResourcesUrl:()=>i(s()),getConfiguratorSpec:()=>m(s()),getConfiguratorModelVersion:()=>f(s()),getAdminSpec:()=>C(s()),getAdminPreset:()=>E(s()),getAdminModelVersion:()=>x(s()),getThemeOptions:()=>A(s()),getAssistant:()=>H(s()),getConfiguratorFactory:()=>D(s()),getAdminFactory:()=>P(s()),getConfiguratorComponentOptics:()=>S(s()),getAdminComponentOptics:()=>w(s()),getAppLoader:()=>O(s()),getPreview:()=>T(s()),getAlwaysExpand:()=>V(s()),getPresetSeed:()=>L(s()),getDeploymentQueryDisabled:()=>R(s()),getPrefetchTextureUrls:()=>U(s()),getTextLanguages:()=>y(s()),getHandlerHashes:()=>k(s()),getHandlers:()=>v(s()),getHandlerSlots:()=>j(s()),getElementHashes:()=>F(s()),getElements:()=>M(s()),getElementSlots:()=>B(s()),getDataConfig:()=>g(s()),getChunks:()=>p(s()),getPublishedDataHash:()=>d(s()),getInitialPublishedData:()=>c(s()),getCanCreate:()=>u(s()),getEnableAdminRelease:()=>h(s())}};
@@ -35,6 +35,8 @@ export interface ApplicationConfiguratorSpec {
35
35
  */
36
36
  readonly handlerHashes: Record<string, string>;
37
37
  readonly elements: readonly ElementRegistration[];
38
+ /** The SDK's default element registrations; an entry of `elements` with the same name replaces one. */
39
+ readonly defaultElements: readonly ElementRegistration[];
38
40
  /**
39
41
  * Per-element content hash. Used as remount key so only the specific element
40
42
  * whose source changed remounts. Unchanged elements keep their hash and stay mounted.
@@ -1,5 +1,5 @@
1
1
  export declare const AttributeSwitchValueSchema: {
2
- readonly type: ["string", "number", "boolean"];
2
+ readonly type: 'boolean';
3
3
  };
4
4
  export type AttributeSwitchComponentState = {
5
5
  readonly value: boolean;
@@ -1 +1 @@
1
- import{SystemComponentBuilder as t}from"../core/index.js";export const AttributeSwitchValueSchema={type:["string","number","boolean"]};export const attributeSwitchComponent=t.component("attributeSwitch").withState({type:"object",properties:{value:AttributeSwitchValueSchema},tsType:"AttributeSwitchComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"AttributeSwitchComponentState"}],required:["value"],additionalProperties:!1}).withWritableKeys(["value"]).build();
1
+ import{SystemComponentBuilder as t}from"../core/index.js";export const AttributeSwitchValueSchema={type:"boolean"};export const attributeSwitchComponent=t.component("attributeSwitch").withState({type:"object",properties:{value:AttributeSwitchValueSchema},tsType:"AttributeSwitchComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"AttributeSwitchComponentState"}],required:["value"],additionalProperties:!1}).withWritableKeys(["value"]).build();
@@ -41,7 +41,7 @@ export type CanvasConfigComponentState = {
41
41
  /**
42
42
  * Can be "high-performance", "low-power" or "default"
43
43
  */
44
- readonly powerPreference?: string | undefined;
44
+ readonly powerPreference?: 'high-performance' | 'low-power' | 'default' | undefined;
45
45
  /**
46
46
  * default is true.
47
47
  */
@@ -1,10 +1,10 @@
1
- import { type Color } from '@salsita-ai/common/utils';
1
+ import { type HexColor } from '@salsita-ai/common/utils';
2
2
  export type ClientSideImageComponentState = {
3
3
  readonly exportState: string;
4
4
  readonly width: number;
5
5
  readonly height: number;
6
6
  readonly fileFormat: 'PNG' | 'JPEG';
7
- readonly backgroundColor?: Color;
7
+ readonly backgroundColor?: HexColor;
8
8
  readonly toolState: string;
9
9
  readonly viewState: string;
10
10
  readonly navigationState: string;
@@ -1 +1 @@
1
- import{SystemComponentBuilder as t,isSnapshotOfComponentType as e}from"../core/index.js";export const clientSideImageComponent=t.component("clientSideImage").withState({type:"object",tsType:"ClientSideImageComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"ClientSideImageComponentState"}],properties:{exportState:{type:"string"},width:{type:"number"},height:{type:"number"},fileFormat:{type:"string",enum:["PNG","JPEG"]},backgroundColor:{type:"string",pattern:"^#[0-9a-fA-F]{6}$"},toolState:{type:"string"},viewState:{type:"string"},navigationState:{type:"string"}},required:["exportState","width","height","fileFormat","toolState","viewState","navigationState"],additionalProperties:!1}).build();export const isClientSideImageComponentSnapshot=e(clientSideImageComponent);
1
+ import{SystemComponentBuilder as t,isSnapshotOfComponentType as e}from"../core/index.js";export const clientSideImageComponent=t.component("clientSideImage").withState({type:"object",tsType:"ClientSideImageComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"ClientSideImageComponentState"}],properties:{exportState:{type:"string"},width:{type:"number"},height:{type:"number"},fileFormat:{type:"string",enum:["PNG","JPEG"]},backgroundColor:{type:"string",pattern:"^#[0-9a-fA-F]{6}$",tsType:"HexColor",import:[{module:"@salsita-ai/sdk/common/utils",member:"HexColor"}]},toolState:{type:"string"},viewState:{type:"string"},navigationState:{type:"string"}},required:["exportState","width","height","fileFormat","toolState","viewState","navigationState"],additionalProperties:!1}).build();export const isClientSideImageComponentSnapshot=e(clientSideImageComponent);
@@ -71,9 +71,9 @@ export type AngleIndicatorBaseState = {
71
71
  */
72
72
  readonly labelFontStyle?: 'normal' | 'italic';
73
73
  /**
74
- * Font weight, which can be a numeric value, 'normal', or 'bold'.
74
+ * Font weight: a number, or a keyword such as 'normal' or 'bold'.
75
75
  */
76
- readonly labelFontWeight?: number | 'normal' | 'bold';
76
+ readonly labelFontWeight?: number | string;
77
77
  /**
78
78
  * Spacing between letters. Default is 0.
79
79
  */
@@ -119,10 +119,10 @@ export type DimensionIndicatorBaseState = {
119
119
  */
120
120
  readonly labelFontStyle?: 'normal' | 'italic';
121
121
  /**
122
- * Font weight, which can be a numeric value, 'normal', or 'bold'.
122
+ * Font weight: a number, or a keyword such as 'normal' or 'bold'.
123
123
  * See https://protectwise.github.io/troika/troika-three-text/
124
124
  */
125
- readonly labelFontWeight?: number | 'normal' | 'bold';
125
+ readonly labelFontWeight?: number | string;
126
126
  /**
127
127
  * Spacing between letters. Default is 0.
128
128
  * See https://protectwise.github.io/troika/troika-three-text/
@@ -10,7 +10,7 @@ export type EditableAngleIndicatorComponentState = AngleIndicatorBaseState & Sce
10
10
  /**
11
11
  * An array of fixable violations. They will be ignored in the violation hint.
12
12
  */
13
- readonly fixableViolations?: string[];
13
+ readonly fixableViolations?: readonly string[];
14
14
  /**
15
15
  * The label of the input field.
16
16
  */
@@ -10,7 +10,7 @@ export type EditableDistanceDimensionIndicatorComponentState = DimensionIndicato
10
10
  /**
11
11
  * An array of fixable violations. They will be ignored in the violation hint.
12
12
  */
13
- readonly fixableViolations?: string[];
13
+ readonly fixableViolations?: readonly string[];
14
14
  /**
15
15
  * The label of the input field.
16
16
  */
@@ -13,7 +13,7 @@ export type EditableOffsetIndicatorComponentState = OffsetIndicatorComponentStat
13
13
  /**
14
14
  * Violation names to ignore when computing hints for the edit input.
15
15
  */
16
- readonly fixableViolations?: string[];
16
+ readonly fixableViolations?: readonly string[];
17
17
  /**
18
18
  * Label displayed on the edit input field.
19
19
  */
@@ -1 +1 @@
1
- import{EnhancedLocalizableSchema as t}from"@salsita-ai/common/utils";import{SystemComponentBuilder as e,isSnapshotOfComponentType as i}from"../core/index.js";import{DimensionUnitSchema as n,UnitsConfigSchema as r}from"../dimensions/index.js";import{SceneHtmlOpacityProperties as o,SceneHtmlVisibilityProperties as a}from"../system-components/index.js";import{DimensionIndicatorBaseProperties as s,EditableIndicatorButtonVariantSchema as p}from"./common/index.js";export const editableOffsetIndicatorComponent=e.component("editableOffsetIndicator").withState({tsType:"EditableOffsetIndicatorComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"EditableOffsetIndicatorComponentState"}],type:"object",properties:{...s,targetEntityOffsetAnchors:{type:"array",items:{type:"string"}},targetReferenceOffsetAnchors:{type:"array",items:{type:"string"}},referenceEntityIds:{type:"array",items:{type:"string"}},directionVector:{type:"object",properties:{x:{type:"number"},y:{type:"number"},z:{type:"number"}},additionalProperties:!1},directionVectorRelativeToEntityId:{type:"string"},maxDistance:{type:["number","null"]},minDistance:{type:["number","null"]},maxPerpendicularDistance:{type:["number","null"]},minPerpendicularDistance:{type:["number","null"]},visible:{type:"boolean"},force:{type:"boolean"},displayUnit:n,unitDisplayConfig:r,...o,...a,targetOffset:{type:"string"},fixableViolations:{type:"array",items:{type:"string"}},inputLabel:t,modalTitle:t,modalText:t,helperText:t,buttonVariant:p},required:["targetOffset","targetEntityOffsetAnchors","targetReferenceOffsetAnchors","directionVector"],additionalProperties:!1}).build();export const isEditableOffsetIndicatorSnapshot=i(editableOffsetIndicatorComponent);
1
+ import{EnhancedLocalizableSchema as e}from"@salsita-ai/common/utils";import{DomainEntityIdSchema as t,SystemComponentBuilder as i,isSnapshotOfComponentType as n}from"../core/index.js";import{DimensionUnitSchema as r,UnitsConfigSchema as o}from"../dimensions/index.js";import{SceneHtmlOpacityProperties as a,SceneHtmlVisibilityProperties as s}from"../system-components/index.js";import{DimensionIndicatorBaseProperties as p,EditableIndicatorButtonVariantSchema as m}from"./common/index.js";export const editableOffsetIndicatorComponent=i.component("editableOffsetIndicator").withState({tsType:"EditableOffsetIndicatorComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"EditableOffsetIndicatorComponentState"}],type:"object",properties:{...p,targetEntityOffsetAnchors:{type:"array",items:{type:"string"}},targetReferenceOffsetAnchors:{type:"array",items:{type:"string"}},referenceEntityIds:{type:["array","null"],items:t},directionVector:{type:"object",properties:{x:{type:"number"},y:{type:"number"},z:{type:"number"}},additionalProperties:!1},directionVectorRelativeToEntityId:{anyOf:[t,{type:"null"}]},maxDistance:{type:["number","null"]},minDistance:{type:["number","null"]},maxPerpendicularDistance:{type:["number","null"]},minPerpendicularDistance:{type:["number","null"]},visible:{type:"boolean"},force:{type:"boolean"},displayUnit:r,unitDisplayConfig:o,...a,...s,targetOffset:{type:"string"},fixableViolations:{type:"array",items:{type:"string"}},inputLabel:e,modalTitle:e,modalText:e,helperText:e,buttonVariant:m},required:["targetOffset","targetEntityOffsetAnchors","targetReferenceOffsetAnchors","directionVector"],additionalProperties:!1}).build();export const isEditableOffsetIndicatorSnapshot=n(editableOffsetIndicatorComponent);
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";export const FitSelectionOrthographicCameraComponentName="fitSelectionOrthographicCamera";export const fitSelectionOrthographicCameraComponent=e.component("fitSelectionOrthographicCamera").withState({type:"object",tsType:"FitSelectionOrthographicCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitSelectionOrthographicCameraComponentState"}],properties:{priority:{type:"number"},fitToBox:{type:"boolean"},animateTransition:{type:"boolean"},zoomLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},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 isFitSelectionOrthographicCameraComponent=t(fitSelectionOrthographicCameraComponent);
1
+ import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";export const FitSelectionOrthographicCameraComponentName="fitSelectionOrthographicCamera";export const fitSelectionOrthographicCameraComponent=e.component("fitSelectionOrthographicCamera").withState({type:"object",tsType:"FitSelectionOrthographicCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitSelectionOrthographicCameraComponentState"}],properties:{priority:{type:"number"},fitToBox:{type:"boolean"},animateTransition:{type:"boolean"},zoomLockGroup:{type:["string","null"]},rotationLockGroup:{type:["string","null"]},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 isFitSelectionOrthographicCameraComponent=t(fitSelectionOrthographicCameraComponent);
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";export const FitSelectionPerspectiveCameraComponentName="fitSelectionPerspectiveCamera";export const fitSelectionPerspectiveCameraComponent=e.component("fitSelectionPerspectiveCamera").withState({type:"object",tsType:"FitSelectionPerspectiveCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitSelectionPerspectiveCameraComponentState"}],properties:{priority:{type:"number"},fitToBox:{type:"boolean"},fitMeshChanges:{type:"boolean"},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"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitSelectionPerspectiveCameraComponent=t(fitSelectionPerspectiveCameraComponent);
1
+ import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";export const FitSelectionPerspectiveCameraComponentName="fitSelectionPerspectiveCamera";export const fitSelectionPerspectiveCameraComponent=e.component("fitSelectionPerspectiveCamera").withState({type:"object",tsType:"FitSelectionPerspectiveCameraComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"FitSelectionPerspectiveCameraComponentState"}],properties:{priority:{type:"number"},fitToBox:{type:"boolean"},fitMeshChanges:{type:"boolean"},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"},relative:{type:"boolean"}},required:[],additionalProperties:!1}).build();export const isFitSelectionPerspectiveCameraComponent=t(fitSelectionPerspectiveCameraComponent);
@@ -12,13 +12,13 @@ export interface HorizontalTab {
12
12
  /**
13
13
  * List of navigation states when the tab is active. First one will be used for activation.
14
14
  */
15
- readonly navigationStates: string[];
15
+ readonly navigationStates: readonly string[];
16
16
  }
17
17
  export type HorizontalTabsComponentState = {
18
18
  /**
19
19
  * List of tabs in the horizontal tabs.
20
20
  */
21
- readonly tabs: HorizontalTab[];
21
+ readonly tabs: readonly HorizontalTab[];
22
22
  };
23
23
  export declare const horizontalTabsComponent: import("../index.js").SystemComponentType<"horizontalTabs", HorizontalTabsComponentState, never>;
24
24
  export type HorizontalTabsComponent = typeof horizontalTabsComponent;
@@ -10,7 +10,7 @@ export type ListSelectorDimensionIndicatorComponentState = DimensionIndicatorSta
10
10
  /**
11
11
  * An array of fixable violations. They will be ignored in the violation hint.
12
12
  */
13
- readonly fixableViolations?: string[];
13
+ readonly fixableViolations?: readonly string[];
14
14
  /**
15
15
  * The title of the modal.
16
16
  */
@@ -7,13 +7,13 @@ export interface NavigationStep {
7
7
  /**
8
8
  * List of navigation states when the tab is active. First one will be used for activation.
9
9
  */
10
- readonly navigationStates: string[];
10
+ readonly navigationStates: readonly string[];
11
11
  }
12
12
  export type NavigationStepsComponentState = {
13
13
  /**
14
14
  * List of steps in the top navigation.
15
15
  */
16
- readonly steps: NavigationStep[];
16
+ readonly steps: readonly NavigationStep[];
17
17
  };
18
18
  export declare const navigationStepsComponent: import("../index.js").SystemComponentType<"navigationSteps", NavigationStepsComponentState, never>;
19
19
  export type NavigationStepsComponent = typeof navigationStepsComponent;
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e,isSnapshotOfComponentType as t}from"../core/index.js";import{DimensionUnitSchema as n,UnitsConfigSchema as r}from"../dimensions/index.js";import{DimensionIndicatorBaseProperties as i}from"./common/index.js";export const offsetIndicatorComponent=e.component("offsetIndicator").withState({tsType:"OffsetIndicatorComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"OffsetIndicatorComponentState"}],type:"object",properties:{...i,targetEntityOffsetAnchors:{type:"array",items:{type:"string"}},targetReferenceOffsetAnchors:{type:"array",items:{type:"string"}},referenceEntityIds:{type:"array",items:{type:"string"}},directionVector:{type:"object",properties:{x:{type:"number"},y:{type:"number"},z:{type:"number"}},additionalProperties:!1},directionVectorRelativeToEntityId:{type:"string"},maxDistance:{type:["number","null"]},minDistance:{type:["number","null"]},maxPerpendicularDistance:{type:["number","null"]},minPerpendicularDistance:{type:["number","null"]},visible:{type:"boolean"},force:{type:"boolean"},displayUnit:n,unitDisplayConfig:r},required:["targetEntityOffsetAnchors","targetReferenceOffsetAnchors","directionVector"],additionalProperties:!1}).build();export const isOffsetIndicatorSnapshot=t(offsetIndicatorComponent);
1
+ import{DomainEntityIdSchema as e,SystemComponentBuilder as t,isSnapshotOfComponentType as n}from"../core/index.js";import{DimensionUnitSchema as r,UnitsConfigSchema as o}from"../dimensions/index.js";import{DimensionIndicatorBaseProperties as i}from"./common/index.js";export const offsetIndicatorComponent=t.component("offsetIndicator").withState({tsType:"OffsetIndicatorComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"OffsetIndicatorComponentState"}],type:"object",properties:{...i,targetEntityOffsetAnchors:{type:"array",items:{type:"string"}},targetReferenceOffsetAnchors:{type:"array",items:{type:"string"}},referenceEntityIds:{type:["array","null"],items:e},directionVector:{type:"object",properties:{x:{type:"number"},y:{type:"number"},z:{type:"number"}},additionalProperties:!1},directionVectorRelativeToEntityId:{anyOf:[e,{type:"null"}]},maxDistance:{type:["number","null"]},minDistance:{type:["number","null"]},maxPerpendicularDistance:{type:["number","null"]},minPerpendicularDistance:{type:["number","null"]},visible:{type:"boolean"},force:{type:"boolean"},displayUnit:r,unitDisplayConfig:o},required:["targetEntityOffsetAnchors","targetReferenceOffsetAnchors","directionVector"],additionalProperties:!1}).build();export const isOffsetIndicatorSnapshot=n(offsetIndicatorComponent);
@@ -1,8 +1,8 @@
1
1
  export type RotatableSurface = {
2
2
  /**
3
- * Unique identifier for the surface.
3
+ * Identifier of the surface.
4
4
  */
5
- readonly key: string;
5
+ readonly key?: string;
6
6
  /**
7
7
  * The widget rotation axis in normal form. Usually corresponds to the target object's rotation axis.
8
8
  */
@@ -1,10 +1,10 @@
1
- import { type Color } from '@salsita-ai/common/utils';
1
+ import { type HexColor } from '@salsita-ai/common/utils';
2
2
  export type SaveTemplateThumbnailComponentState = {
3
3
  readonly exportState: string;
4
4
  readonly width: number;
5
5
  readonly height: number;
6
6
  readonly fileFormat: 'PNG' | 'JPEG';
7
- readonly backgroundColor?: Color;
7
+ readonly backgroundColor?: HexColor;
8
8
  readonly toolState: string;
9
9
  readonly viewState: string;
10
10
  readonly navigationState: string;
@@ -1 +1 @@
1
- import{SystemComponentBuilder as t,isSnapshotOfComponentType as e}from"../core/index.js";export const saveTemplateThumbnailComponent=t.component("saveTemplateThumbnail").withState({type:"object",tsType:"SaveTemplateThumbnailComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"SaveTemplateThumbnailComponentState"}],properties:{exportState:{type:"string"},width:{type:"number"},height:{type:"number"},fileFormat:{type:"string",enum:["PNG","JPEG"]},backgroundColor:{type:"string",pattern:"^#[0-9a-fA-F]{6}$"},toolState:{type:"string"},viewState:{type:"string"},navigationState:{type:"string"}},required:["exportState","width","height","fileFormat","toolState","viewState","navigationState"],additionalProperties:!1}).build();export const isSaveTemplateThumbnailComponentSnapshot=e(saveTemplateThumbnailComponent);
1
+ import{SystemComponentBuilder as t,isSnapshotOfComponentType as e}from"../core/index.js";export const saveTemplateThumbnailComponent=t.component("saveTemplateThumbnail").withState({type:"object",tsType:"SaveTemplateThumbnailComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"SaveTemplateThumbnailComponentState"}],properties:{exportState:{type:"string"},width:{type:"number"},height:{type:"number"},fileFormat:{type:"string",enum:["PNG","JPEG"]},backgroundColor:{type:"string",pattern:"^#[0-9a-fA-F]{6}$",tsType:"HexColor",import:[{module:"@salsita-ai/sdk/common/utils",member:"HexColor"}]},toolState:{type:"string"},viewState:{type:"string"},navigationState:{type:"string"}},required:["exportState","width","height","fileFormat","toolState","viewState","navigationState"],additionalProperties:!1}).build();export const isSaveTemplateThumbnailComponentSnapshot=e(saveTemplateThumbnailComponent);
@@ -1 +1 @@
1
- import{SystemComponentBuilder as e}from"../core/index.js";export const sceneEntityAnimationComponent=e.component("sceneEntityAnimation").withState({type:"object",tsType:"SceneEntityAnimationComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"SceneEntityAnimationComponentState"}],properties:{fileUrl:{type:"string"},name:{type:"string"},type:{type:"string"},timeScale:{type:"number"}},required:["fileUrl","name","timeScale","type"],additionalProperties:!1}).build();
1
+ import{SystemComponentBuilder as e}from"../core/index.js";export const sceneEntityAnimationComponent=e.component("sceneEntityAnimation").withState({type:"object",tsType:"SceneEntityAnimationComponentState",import:[{module:"@salsita-ai/sdk/domain",member:"SceneEntityAnimationComponentState"}],properties:{fileUrl:{type:"string"},name:{type:"string"},type:{type:"string",enum:["reversable"]},timeScale:{type:"number"}},required:["fileUrl","name","timeScale","type"],additionalProperties:!1}).build();
@@ -1,3 +1,4 @@
1
+ import { AccessLevel } from '@salsita-ai/contracts/api';
1
2
  import type { ApplicationConfig } from '../application/index.js';
2
3
  import type { $DomainEntity, DomainEntity } from '../core/index.js';
3
4
  import type { RegistrableTransformer } from '../domain-context/index.js';
@@ -268,24 +269,28 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
268
269
  access: {
269
270
  selectConfiguratorRawAccessInfo: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, {
270
271
  raw: string;
272
+ access: AccessLevel;
271
273
  viewMode: boolean;
272
274
  revisionId: string | undefined;
273
275
  configurationId: string;
274
276
  } | null>;
275
277
  selectAdminRawAccessInfo: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, {
276
278
  raw: string;
279
+ access: AccessLevel;
277
280
  viewMode: boolean;
278
281
  revisionId: string | undefined;
279
282
  configurationId: string;
280
283
  } | null>;
281
284
  selectConfiguratorAccessInfo: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, {
282
285
  raw: string;
286
+ access: AccessLevel;
283
287
  viewMode: boolean;
284
288
  revisionId: string | undefined;
285
289
  configurationId: string;
286
290
  }>;
287
291
  selectAdminAccessInfo: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, {
288
292
  raw: string;
293
+ access: AccessLevel;
289
294
  viewMode: boolean;
290
295
  revisionId: string | undefined;
291
296
  configurationId: string;
@@ -298,24 +303,28 @@ export declare const createMockDomainRuntime: <ENTITIES extends DomainEntity<str
298
303
  selectAdminConfigurationId: import("@salsita-ai/common/utils").Selector<import("../index.js").AccessSelectorState, string>;
299
304
  getConfiguratorRawAccessInfo: () => {
300
305
  raw: string;
306
+ access: AccessLevel;
301
307
  viewMode: boolean;
302
308
  revisionId: string | undefined;
303
309
  configurationId: string;
304
310
  } | null;
305
311
  getAdminRawAccessInfo: () => {
306
312
  raw: string;
313
+ access: AccessLevel;
307
314
  viewMode: boolean;
308
315
  revisionId: string | undefined;
309
316
  configurationId: string;
310
317
  } | null;
311
318
  getConfiguratorAccessInfo: () => {
312
319
  raw: string;
320
+ access: AccessLevel;
313
321
  viewMode: boolean;
314
322
  revisionId: string | undefined;
315
323
  configurationId: string;
316
324
  };
317
325
  getAdminAccessInfo: () => {
318
326
  raw: string;
327
+ access: AccessLevel;
319
328
  viewMode: boolean;
320
329
  revisionId: string | undefined;
321
330
  configurationId: string;
@@ -1 +1 @@
1
- import{createDomainRuntime as o}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as t}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as e}from"./create-mock-session-context.js";export const createMockDomainRuntime=(a,i)=>{let{sessionData:n,mode:r,role:s}=i,c=o({config:a,services:t()}),m=c.getState().spec;return c.actions.spec.updateSpec({...m,configurator:{...m.configurator,createTransformers:o=>i.transformers.map(t=>t.transformer.register(o,t.priority??1/0))}}),c.actions.sessionContext.setSessionContext(e(s,n)),c.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",viewMode:"read"===r,revisionId:void 0,configurationId:"mock"}),c.actions.domainData.setDomainData({publishedData:i.publishedData,frontendData:i.frontendData,backendData:i.backendData}),c.actions.loadedData.completeConfiguratorLoad({initialRevisionId:"mock-revision",initialEntities:i.entities,modelVersion:a.domain.domainFactory.modelVersion,rootEntityType:i.rootEntityType,schemaIdentity:a.domain.domainFactory}),c};
1
+ import{AccessLevel as t}from"@salsita-ai/contracts/api";import{createDomainRuntime as e}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as o}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as a}from"./create-mock-session-context.js";export const createMockDomainRuntime=(i,n)=>{let{sessionData:r,mode:s,role:c}=n,m=e({config:i,services:o()}),d=m.getState().spec;return m.actions.spec.updateSpec({...d,configurator:{...d.configurator,createTransformers:t=>n.transformers.map(e=>e.transformer.register(t,e.priority??1/0))}}),m.actions.sessionContext.setSessionContext(a(c,r)),m.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",access:"read"===s?t.Read:t.Owner,viewMode:"read"===s,revisionId:void 0,configurationId:"mock"}),m.actions.domainData.setDomainData({publishedData:n.publishedData,frontendData:n.frontendData,backendData:n.backendData}),m.actions.loadedData.completeConfiguratorLoad({initialRevisionId:"mock-revision",initialEntities:n.entities,modelVersion:i.domain.domainFactory.modelVersion,rootEntityType:n.rootEntityType,schemaIdentity:i.domain.domainFactory}),m};
@@ -1 +1 @@
1
- import{createDomainRuntime as o}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as e}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as t}from"./create-mock-session-context.js";export const createMockDomain=(i,n)=>{let{frontendData:s,publishedData:a,sessionData:c,backendData:r,mode:m,role:d}=n,f=o({config:i,services:e()});return f.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",viewMode:"read"===m,revisionId:void 0,configurationId:"mock-configuration"}),"finalize"===m&&f.actions.domainContext.configurator.setExecutionMode("finalize"),f.actions.domainData.setDomainData({publishedData:a,frontendData:s,backendData:r}),f.actions.sessionContext.setSessionContext(t(d,c)),f.selectors.domainContext.configurator.getDomain()};
1
+ import{AccessLevel as o}from"@salsita-ai/contracts/api";import{createDomainRuntime as e}from"../domain-runtime/index.js";import{createMockDomainRuntimeServices as t}from"./create-mock-domain-runtime-services.js";import{createMockSessionContext as i}from"./create-mock-session-context.js";export const createMockDomain=(n,a)=>{let{frontendData:s,publishedData:c,sessionData:r,backendData:m,mode:d,role:f}=a,u=e({config:n,services:t()});return u.actions.access.setConfiguratorAccessInfo({raw:"mock-access-token",access:"read"===d?o.Read:o.Owner,viewMode:"read"===d,revisionId:void 0,configurationId:"mock-configuration"}),"finalize"===d&&u.actions.domainContext.configurator.setExecutionMode("finalize"),u.actions.domainData.setDomainData({publishedData:c,frontendData:s,backendData:m}),u.actions.sessionContext.setSessionContext(i(f,r)),u.selectors.domainContext.configurator.getDomain()};