@salsita-ai/sdk 0.50.0-develop.97a772d197 → 0.50.0-develop.996c9540be

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 (890) hide show
  1. package/README.md +13 -12
  2. package/dist/admin/create-admin-pages-from-spec.d.ts +1 -1
  3. package/dist/application-spec/core/components/component-filter.d.ts +53 -0
  4. package/dist/application-spec/core/components/component-filter.js +1 -0
  5. package/dist/application-spec/core/components/index.d.ts +2 -0
  6. package/dist/application-spec/core/components/index.js +1 -0
  7. package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
  8. package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
  9. package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
  10. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  11. package/dist/application-spec/core/expressions/index.d.ts +2 -0
  12. package/dist/application-spec/core/expressions/index.js +1 -0
  13. package/dist/application-spec/core/expressions/relation-expression-params.d.ts +11 -0
  14. package/dist/application-spec/core/expressions/sdk-expression-implementation.d.ts +24 -0
  15. package/dist/application-spec/core/expressions/sdk-expression-implementation.js +1 -0
  16. package/dist/application-spec/core/index.d.ts +2 -0
  17. package/dist/application-spec/core/index.js +1 -1
  18. package/dist/application-spec/core/json-value.d.ts +1 -1
  19. package/dist/application-spec/{core → enhanced-json}/eval-to-constant.d.ts +1 -1
  20. package/dist/application-spec/enhanced-json/index.d.ts +4 -0
  21. package/dist/application-spec/enhanced-json/index.js +1 -0
  22. package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
  23. package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
  24. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
  25. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
  26. package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
  27. package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
  28. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
  29. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
  30. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
  31. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
  32. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
  33. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
  34. package/dist/application-spec/errors/diagnostic-codes.d.ts +11 -0
  35. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  36. package/dist/application-spec/errors/diagnostic-messages.d.ts +14 -0
  37. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  38. package/dist/application-spec/generate-application/code/generate-application-code.d.ts +3 -2
  39. package/dist/application-spec/generate-application/code/generate-application-code.js +1 -1
  40. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +17 -5
  41. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  42. package/dist/application-spec/generate-application/code/standalone-app-files.d.ts +2 -2
  43. package/dist/application-spec/generate-application/code/standalone-app-files.js +1 -1
  44. package/dist/application-spec/generate-application/code/templates/configurator-config.js +6 -4
  45. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +4 -4
  46. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  47. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  48. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +56 -56
  49. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +1 -1
  50. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  51. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  52. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  53. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  54. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +11 -11
  55. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +1 -1
  56. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  57. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  58. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  59. package/dist/application-spec/generate-application/code/templates/frontend-config.js +3 -5
  60. package/dist/application-spec/generate-application/code/templates/gitignore.js +1 -2
  61. package/dist/application-spec/generate-application/code/templates/globals.js +3 -3
  62. package/dist/application-spec/generate-application/code/templates/index.d.ts +1 -8
  63. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  64. package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
  65. package/dist/application-spec/generate-application/code/templates/root-tsconfig.d.ts +6 -0
  66. package/dist/application-spec/generate-application/code/templates/root-tsconfig.js +2 -0
  67. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
  68. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +66 -42
  69. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +9 -3
  70. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  71. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +24 -18
  72. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +6 -8
  73. package/dist/application-spec/generate-application/code/templates/tsconfig.d.ts +5 -0
  74. package/dist/application-spec/generate-application/code/templates/tsconfig.js +1 -1
  75. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +4 -3
  76. package/dist/application-spec/generate-application/code/templates/webhook-index.d.ts +6 -1
  77. package/dist/application-spec/generate-application/code/templates/webhook-index.js +10 -1
  78. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -3
  79. package/dist/application-spec/generate-application/index.d.ts +2 -0
  80. package/dist/application-spec/generate-application/index.js +1 -1
  81. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +6 -2
  82. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
  83. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +8 -3
  84. package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
  85. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +5 -3
  86. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  87. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.d.ts +43 -0
  88. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.js +1 -0
  89. package/dist/application-spec/generate-application/runtime/factory-data/index.d.ts +3 -0
  90. package/dist/application-spec/generate-application/runtime/factory-data/index.js +1 -0
  91. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.d.ts +13 -0
  92. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.js +1 -0
  93. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.d.ts +16 -0
  94. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.js +1 -0
  95. package/dist/application-spec/generate-application/runtime/migrations/index.d.ts +1 -0
  96. package/dist/application-spec/generate-application/runtime/migrations/index.js +1 -0
  97. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.d.ts +53 -0
  98. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.js +1 -0
  99. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +1 -1
  100. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  101. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +2 -1
  102. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  103. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +2 -4
  104. package/dist/application-spec/index.d.ts +1 -0
  105. package/dist/application-spec/index.js +1 -1
  106. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +16 -0
  107. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  108. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.d.ts +9 -0
  109. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.js +1 -0
  110. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  111. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  112. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  113. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  114. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  115. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  116. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  117. package/dist/application-spec/parse-application-files/spec/common/index.d.ts +1 -0
  118. package/dist/application-spec/parse-application-files/spec/common/index.js +1 -1
  119. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.d.ts +3 -0
  120. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.js +1 -0
  121. package/dist/application-spec/parse-application-files/spec/common/value-type/index.d.ts +4 -0
  122. package/dist/application-spec/parse-application-files/spec/common/value-type/index.js +1 -0
  123. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.d.ts +8 -0
  124. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.js +1 -0
  125. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.d.ts +10 -0
  126. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.js +1 -0
  127. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.d.ts +98 -0
  128. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.js +1 -0
  129. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.d.ts +13 -0
  130. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.js +1 -0
  131. package/dist/application-spec/parse-application-files/spec/components/bindings/index.d.ts +2 -0
  132. package/dist/application-spec/parse-application-files/spec/components/bindings/index.js +1 -1
  133. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.d.ts +24 -0
  134. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.js +1 -0
  135. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
  136. package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
  137. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
  138. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  139. package/dist/application-spec/parse-application-files/spec/components/component-state-type.d.ts +8 -0
  140. package/dist/application-spec/parse-application-files/spec/components/component-state-type.js +1 -0
  141. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.d.ts +13 -0
  142. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.js +1 -0
  143. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
  144. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  145. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.d.ts +14 -0
  146. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.js +1 -0
  147. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.d.ts +3 -0
  148. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.js +1 -1
  149. package/dist/application-spec/parse-application-files/spec/components/user-components.d.ts +4 -4
  150. package/dist/application-spec/parse-application-files/spec/components/user-components.js +1 -1
  151. package/dist/application-spec/parse-application-files/spec/expressions/expression.d.ts +1 -28
  152. package/dist/application-spec/parse-application-files/spec/expressions/expression.js +1 -1
  153. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +1 -1
  154. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  155. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
  156. package/dist/application-spec/parse-application-files/spec/expressions/index.js +1 -1
  157. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  158. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  159. package/dist/application-spec/parse-application-files/spec/invariants/invariants.d.ts +2 -2
  160. package/dist/application-spec/parse-application-files/spec/invariants/invariants.js +1 -1
  161. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +7 -2
  162. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  163. package/dist/application-spec/parse-application-files/spec/model/index.d.ts +1 -0
  164. package/dist/application-spec/parse-application-files/spec/model/index.js +1 -1
  165. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.d.ts +10 -0
  166. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.js +1 -0
  167. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  168. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  169. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  170. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  171. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  172. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  173. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  174. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  175. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  176. package/dist/client/authorized-client.d.ts +3 -1
  177. package/dist/client/authorized-client.js +1 -1
  178. package/dist/client/contract.d.ts +34 -0
  179. package/dist/client/contract.js +1 -1
  180. package/dist/client/index.d.ts +2 -2
  181. package/dist/client/index.js +1 -1
  182. package/dist/client/local-authorized-client.d.ts +3 -1
  183. package/dist/client/local-authorized-client.js +1 -1
  184. package/dist/client/memory-authorized-client.d.ts +3 -1
  185. package/dist/client/memory-authorized-client.js +1 -1
  186. package/dist/client/phoenix-api.d.ts +797 -121
  187. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  188. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  189. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  190. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +120 -2
  191. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  192. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +7 -1
  193. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  194. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  195. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +20 -4
  196. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  197. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  198. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  199. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  200. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -2
  201. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  202. package/dist/configurator/common/configurator-interface.d.ts +26 -1
  203. package/dist/configurator/common/configurator-interface.js +1 -1
  204. package/dist/configurator/common/frontend-analytics.d.ts +2 -0
  205. package/dist/configurator/common/frontend-analytics.js +1 -1
  206. package/dist/configurator/common/index.d.ts +2 -0
  207. package/dist/configurator/common/index.js +1 -1
  208. package/dist/configurator/common/use-finalize-action.d.ts +31 -0
  209. package/dist/configurator/common/use-finalize-action.js +1 -0
  210. package/dist/configurator/common/use-reset-camera.d.ts +6 -0
  211. package/dist/configurator/common/use-reset-camera.js +1 -0
  212. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +1 -1
  213. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +6 -0
  214. package/dist/configurator/pages/DefaultConfiguratorLayout.js +1 -0
  215. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  216. package/dist/configurator/pages/configurator-layout-name.d.ts +2 -0
  217. package/dist/configurator/pages/configurator-layout-name.js +1 -0
  218. package/dist/configurator/pages/default-configurator-elements.d.ts +7 -0
  219. package/dist/configurator/pages/default-configurator-elements.js +1 -0
  220. package/dist/configurator/pages/index.d.ts +1 -0
  221. package/dist/configurator/pages/index.js +1 -1
  222. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  223. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  224. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  225. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  226. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  227. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  228. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  229. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  230. package/dist/configurator/ui/assistant/AssistantChips.d.ts +8 -2
  231. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  232. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +2 -1
  233. package/dist/configurator/ui/assistant/AssistantComposer.js +1 -1
  234. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  235. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  236. package/dist/configurator/ui/assistant/AssistantThread.d.ts +6 -2
  237. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  238. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  239. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  240. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  241. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  242. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  243. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  244. package/dist/configurator/ui/assistant/entity-link/entity-link-target.d.ts +5 -0
  245. package/dist/configurator/ui/assistant/entity-link/entity-link-target.js +1 -0
  246. package/dist/configurator/ui/assistant/entity-link/index.d.ts +3 -0
  247. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  248. package/dist/configurator/ui/assistant/thread-items.d.ts +13 -2
  249. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  250. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  251. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  252. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  253. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  254. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.d.ts +101 -0
  255. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  256. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  257. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  258. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.d.ts +4 -4
  259. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  260. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.d.ts +3 -6
  261. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.js +1 -1
  262. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  263. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  264. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +0 -74
  265. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  266. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  267. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  268. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  269. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  270. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  271. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  272. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  273. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  274. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -2
  275. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +16 -19
  276. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  277. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  278. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  279. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  280. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  281. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  282. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  283. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  284. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  285. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  286. package/dist/docs/index.json +42 -1
  287. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  288. package/dist/docs/layouts/custom-layout.mdx +2125 -0
  289. package/dist/docs/layouts/header/fixed.mdx +2 -2
  290. package/dist/docs/layouts/header/floating.mdx +2 -2
  291. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  292. package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
  293. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  294. package/dist/docs/other-features/side-effects.mdx +8 -11
  295. package/dist/docs/other-features/transformers.mdx +4 -0
  296. package/dist/docs/other-features/violation-messages.mdx +52 -56
  297. package/dist/docs/phoenix/application-states.mdx +9 -7
  298. package/dist/docs/phoenix/components.mdx +6 -0
  299. package/dist/docs/phoenix/configurator-interface.mdx +237 -80
  300. package/dist/docs/phoenix/deployments.mdx +2 -6
  301. package/dist/docs/phoenix/domain-model.mdx +4 -0
  302. package/dist/docs/phoenix/expression-context.mdx +11 -3
  303. package/dist/docs/phoenix/finalization.mdx +1 -1
  304. package/dist/docs/phoenix/getting-started.mdx +2 -1
  305. package/dist/docs/phoenix/layout-slots.mdx +116 -0
  306. package/dist/docs/phoenix/localization.mdx +4 -4
  307. package/dist/docs/phoenix/migration-guide.mdx +19 -8
  308. package/dist/docs/phoenix/phoenix-cli.mdx +66 -34
  309. package/dist/docs/phoenix/project-structure.mdx +38 -16
  310. package/dist/docs/phoenix/quickstart.mdx +2 -2
  311. package/dist/docs/phoenix/sdk-builder-workflow.mdx +3 -3
  312. package/dist/docs/phoenix/testing.mdx +140 -0
  313. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  314. package/dist/docs/phoenix/webhooks.mdx +23 -6
  315. package/dist/docs/ux-guidelines/choosing-a-control.mdx +11 -0
  316. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -11
  317. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  318. package/dist/domain/admin-domain/index.d.ts +7 -2
  319. package/dist/domain/admin-domain/index.js +1 -1
  320. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +2 -2
  321. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  322. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  323. package/dist/domain/application/admin-page-factories.d.ts +1 -2
  324. package/dist/domain/application/application-config.d.ts +9 -26
  325. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  326. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  327. package/dist/domain/application/assistant/assistant-manifest.d.ts +9 -1
  328. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +38 -2
  329. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  330. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  331. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  332. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  333. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  334. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  335. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  336. package/dist/domain/application/assistant/index.d.ts +6 -1
  337. package/dist/domain/application/assistant/index.js +1 -1
  338. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  339. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  340. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  341. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  342. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  343. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  344. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  345. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  346. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  347. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  348. package/dist/domain/application/assistant-mutations.d.ts +2 -1
  349. package/dist/domain/application/assistant-recipe-groups.d.ts +1 -1
  350. package/dist/domain/application/configurator-builder.d.ts +5 -2
  351. package/dist/domain/application/configurator-builder.js +1 -1
  352. package/dist/domain/application/create-initial-published-data.d.ts +6 -7
  353. package/dist/domain/application/index.d.ts +1 -5
  354. package/dist/domain/application/index.js +1 -1
  355. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  356. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  357. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  358. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  359. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  360. package/dist/domain/application/published-data/build-legend-data.d.ts +1 -1
  361. package/dist/domain/application/published-data/format-field-type.d.ts +1 -1
  362. package/dist/domain/application/published-data/map-data-to-sheet.d.ts +1 -1
  363. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +3 -3
  364. package/dist/domain/application/published-data/map-published-data.d.ts +7 -3
  365. package/dist/domain/application/published-data/validate-sheet-data.d.ts +1 -1
  366. package/dist/domain/available-system-components.js +1 -1
  367. package/dist/domain/core/action/action-factory.d.ts +2 -2
  368. package/dist/domain/core/action/action.d.ts +19 -14
  369. package/dist/domain/core/component/domain-component-optic.d.ts +29 -40
  370. package/dist/domain/core/component/domain-component-optic.js +2 -2
  371. package/dist/domain/core/component/legacy-filter.d.ts +2 -17
  372. package/dist/domain/core/component/system-component-filter.d.ts +36 -18
  373. package/dist/domain/core/data-schema/data-cell-value.d.ts +4 -0
  374. package/dist/domain/core/data-schema/data-cell-value.js +1 -0
  375. package/dist/domain/core/data-schema/data-schema-array-field.d.ts +5 -0
  376. package/dist/domain/core/data-schema/data-schema-array-field.js +1 -0
  377. package/dist/domain/core/data-schema/data-schema-field-object.d.ts +4 -0
  378. package/dist/domain/core/data-schema/data-schema-field-object.js +1 -0
  379. package/dist/domain/core/data-schema/data-schema-field.d.ts +2 -0
  380. package/dist/domain/core/data-schema/data-schema-field.js +1 -0
  381. package/dist/domain/core/data-schema/data-schema-localized-field.d.ts +4 -0
  382. package/dist/domain/core/data-schema/data-schema-localized-field.js +1 -0
  383. package/dist/domain/core/data-schema/data-schema-primitive-field.d.ts +5 -0
  384. package/dist/domain/core/data-schema/data-schema-primitive-field.js +1 -0
  385. package/dist/domain/core/data-schema/data-schema.d.ts +2 -0
  386. package/dist/domain/core/data-schema/data-schema.js +1 -0
  387. package/dist/domain/core/data-schema/index.d.ts +7 -0
  388. package/dist/domain/core/data-schema/index.js +1 -0
  389. package/dist/domain/core/domain.d.ts +2 -2
  390. package/dist/domain/core/emission/index.d.ts +8 -0
  391. package/dist/domain/core/emission/index.js +1 -0
  392. package/dist/domain/core/emission/reset-state-emission.d.ts +12 -0
  393. package/dist/domain/core/emission/reset-state-emission.js +1 -0
  394. package/dist/domain/core/emission/state-emission.d.ts +4 -0
  395. package/dist/domain/core/emission/state-emission.js +1 -0
  396. package/dist/domain/core/emission/state-update-emission.d.ts +14 -0
  397. package/dist/domain/core/emission/state-update-emission.js +1 -0
  398. package/dist/domain/core/emission/state-validation-result.d.ts +18 -0
  399. package/dist/domain/core/emission/state-validation-result.js +1 -0
  400. package/dist/domain/core/emission/transformation-log.d.ts +2 -0
  401. package/dist/domain/core/emission/transformation-log.js +1 -0
  402. package/dist/domain/core/emission/transformer-log-entry.d.ts +6 -0
  403. package/dist/domain/core/emission/transformer-log-entry.js +1 -0
  404. package/dist/domain/core/emission/transformer-log.d.ts +11 -0
  405. package/dist/domain/core/emission/transformer-log.js +1 -0
  406. package/dist/domain/core/emission/transformer-phase.d.ts +1 -0
  407. package/dist/domain/core/emission/transformer-phase.js +1 -0
  408. package/dist/domain/core/expression/aliased-expressions.d.ts +2 -2
  409. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  410. package/dist/domain/core/expression/constant-expressions.js +1 -1
  411. package/dist/domain/core/expression/custom-expression.d.ts +20 -7
  412. package/dist/domain/core/expression/custom-expression.js +1 -1
  413. package/dist/domain/core/expression/expression.d.ts +15 -17
  414. package/dist/domain/core/index.d.ts +2 -0
  415. package/dist/domain/core/invariant/custom-invariants.d.ts +8 -16
  416. package/dist/domain/core/invariant/index.d.ts +1 -1
  417. package/dist/domain/core/invariant/index.js +1 -1
  418. package/dist/domain/core/invariant/invariants.d.ts +4 -70
  419. package/dist/domain/core/invariant/invariants.js +1 -1
  420. package/dist/domain/core/invariant/violation.d.ts +51 -3
  421. package/dist/domain/core/invariant/violation.js +1 -1
  422. package/dist/domain/core/model/model.d.ts +1 -1
  423. package/dist/domain/core/recipe/recipes.d.ts +18 -50
  424. package/dist/domain/core/recipe/recipes.js +1 -1
  425. package/dist/domain/core/relation/all-of-type-relation.d.ts +8 -21
  426. package/dist/domain/core/relation/all-of-type-relation.js +1 -1
  427. package/dist/domain/core/relation/direct-relation.d.ts +13 -24
  428. package/dist/domain/core/relation/index.d.ts +0 -1
  429. package/dist/domain/core/relation/indirect-relation.d.ts +12 -67
  430. package/dist/domain/core/relation/indirect-relation.js +1 -1
  431. package/dist/domain/core/relation/reference-component.d.ts +2 -2
  432. package/dist/domain/core/relation/relation-factory.d.ts +19 -15
  433. package/dist/domain/core/relation/relation-factory.js +1 -1
  434. package/dist/domain/core/state/migrations.d.ts +14 -45
  435. package/dist/domain/core/state/migrations.js +1 -1
  436. package/dist/domain/core/state/state.d.ts +1 -1
  437. package/dist/domain/domain-builder.d.ts +1 -1
  438. package/dist/domain/domain-builder.js +1 -1
  439. package/dist/domain/domain-context/action-system/action-system.d.ts +2 -2
  440. package/dist/domain/domain-context/action-system/action-system.js +1 -1
  441. package/dist/domain/domain-context/action-system/index.d.ts +1 -0
  442. package/dist/domain/domain-context/action-system/index.js +1 -0
  443. package/dist/domain/domain-context/analytics-system/index.d.ts +2 -0
  444. package/dist/domain/domain-context/analytics-system/index.js +1 -0
  445. package/dist/domain/domain-context/create-transformer.d.ts +1 -1
  446. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +2 -2
  447. package/dist/domain/domain-context/dimension-system/dimension-system.js +1 -1
  448. package/dist/domain/domain-context/dimension-system/index.d.ts +1 -0
  449. package/dist/domain/domain-context/dimension-system/index.js +1 -0
  450. package/dist/domain/domain-context/domain-context-systems.d.ts +7 -7
  451. package/dist/domain/domain-context/index.d.ts +8 -17
  452. package/dist/domain/domain-context/index.js +1 -1
  453. package/dist/domain/domain-context/navigation-system/index.d.ts +3 -0
  454. package/dist/domain/domain-context/navigation-system/index.js +1 -0
  455. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +2 -3
  456. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  457. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +1 -1
  458. package/dist/domain/domain-context/recipe-system/index.d.ts +1 -0
  459. package/dist/domain/domain-context/recipe-system/index.js +1 -0
  460. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +1 -1
  461. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  462. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +2 -2
  463. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +2 -2
  464. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +2 -2
  465. package/dist/domain/domain-context/relation-transformers/index.d.ts +4 -0
  466. package/dist/domain/domain-context/relation-transformers/index.js +1 -0
  467. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +2 -2
  468. package/dist/domain/domain-context/store-system/index.d.ts +4 -0
  469. package/dist/domain/domain-context/store-system/index.js +1 -0
  470. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  471. package/dist/domain/domain-context/store-system/store-system.d.ts +2 -35
  472. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  473. package/dist/domain/domain-context/store-system/system-state.d.ts +1 -1
  474. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  475. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +5 -7
  476. package/dist/domain/domain-context/transformers/auto-snap-transformer.js +1 -1
  477. package/dist/domain/domain-context/transformers/chain-builder.d.ts +1 -1
  478. package/dist/domain/domain-context/transformers/context.d.ts +2 -3
  479. package/dist/domain/domain-context/transformers/context.js +1 -1
  480. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  481. package/dist/domain/domain-context/transformers/index.d.ts +1 -1
  482. package/dist/domain/domain-context/transformers/index.js +1 -1
  483. package/dist/domain/domain-context/transformers/when-builder.d.ts +2 -3
  484. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  485. package/dist/domain/domain-context/undo-system.d.ts +29 -3
  486. package/dist/domain/domain-context/undo-system.js +1 -1
  487. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  488. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  489. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  490. package/dist/domain/domain-runtime/access/types.js +1 -1
  491. package/dist/domain/domain-runtime/domain-context/action-context.d.ts +11 -0
  492. package/dist/domain/domain-runtime/domain-context/action-context.js +1 -0
  493. package/dist/domain/domain-runtime/domain-context/domain-context.js +1 -1
  494. package/dist/domain/domain-runtime/domain-context/expression-context.d.ts +8 -0
  495. package/dist/domain/domain-runtime/domain-context/expression-context.js +1 -0
  496. package/dist/domain/domain-runtime/domain-context/index.d.ts +3 -0
  497. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.d.ts +18 -0
  498. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.js +1 -0
  499. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +18 -22
  500. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  501. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  502. package/dist/domain/domain-runtime/domain-runtime.d.ts +84 -68
  503. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  504. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  505. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  506. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  507. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  508. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  509. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  510. package/dist/domain/domain-runtime/errors/index.js +1 -0
  511. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  512. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  513. package/dist/domain/domain-runtime/index.d.ts +1 -0
  514. package/dist/domain/domain-runtime/index.js +1 -1
  515. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  516. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  517. package/dist/domain/domain-runtime/spec/index.d.ts +2 -0
  518. package/dist/domain/domain-runtime/spec/index.js +1 -1
  519. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  520. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  521. package/dist/domain/{application → domain-runtime/spec/module-checks}/element-registration.d.ts +2 -2
  522. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -0
  523. package/dist/domain/{application → domain-runtime/spec/module-checks}/handler-registration.d.ts +1 -1
  524. package/dist/domain/domain-runtime/spec/module-checks/handler-registration.js +1 -0
  525. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +8 -0
  526. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -0
  527. package/dist/domain/{project-modules → domain-runtime/spec/module-checks}/project-modules.d.ts +8 -17
  528. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -0
  529. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.d.ts +4 -0
  530. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -0
  531. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.d.ts +4 -0
  532. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.js +1 -0
  533. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.d.ts +15 -0
  534. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -0
  535. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +22 -0
  536. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -0
  537. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +6 -0
  538. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -0
  539. package/dist/domain/domain-runtime/spec/selectors.d.ts +5 -6
  540. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  541. package/dist/domain/domain-runtime/spec/types.d.ts +5 -2
  542. package/dist/domain/{system-components → extensions}/attribute-switch.d.ts +1 -1
  543. package/dist/domain/extensions/attribute-switch.js +1 -0
  544. package/dist/domain/{system-components → extensions}/canvas-config.d.ts +1 -1
  545. package/dist/domain/{system-components → extensions}/child-entity-recipe-hierarchy.d.ts +1 -1
  546. package/dist/domain/extensions/child-entity-recipe-hierarchy.js +1 -0
  547. package/dist/domain/{system-components → extensions}/client-side-image.d.ts +2 -2
  548. package/dist/domain/{system-components → extensions}/client-side-image.js +1 -1
  549. package/dist/domain/{system-components → extensions}/common/angle-indicator-schema.d.ts +3 -3
  550. package/dist/domain/extensions/common/angle-indicator-schema.js +1 -0
  551. package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.d.ts +2 -2
  552. package/dist/domain/extensions/common/index.d.ts +4 -0
  553. package/dist/domain/extensions/common/index.js +1 -0
  554. package/dist/domain/{system-components → extensions}/custom-header.d.ts +1 -1
  555. package/dist/domain/extensions/custom-header.js +1 -0
  556. package/dist/domain/{system-components → extensions}/custom-price-footer.js +1 -1
  557. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.d.ts +1 -1
  558. package/dist/domain/extensions/custom-sidebar-footer.js +1 -0
  559. package/dist/domain/{system-components → extensions}/editable-angle-indicator.d.ts +3 -2
  560. package/dist/domain/extensions/editable-angle-indicator.js +1 -0
  561. package/dist/domain/{system-components → extensions}/editable-distance-dimension-indicator.d.ts +3 -2
  562. package/dist/domain/extensions/editable-distance-dimension-indicator.js +1 -0
  563. package/dist/domain/{system-components → extensions}/editable-offset-indicator.d.ts +3 -2
  564. package/dist/domain/extensions/editable-offset-indicator.js +1 -0
  565. package/dist/domain/{system-components → extensions}/editable-size-indicator.d.ts +2 -1
  566. package/dist/domain/extensions/editable-size-indicator.js +1 -0
  567. package/dist/domain/{system-components → extensions}/entity-header.d.ts +1 -1
  568. package/dist/domain/extensions/entity-header.js +1 -0
  569. package/dist/domain/{system-components → extensions}/finalize-component.js +1 -1
  570. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -0
  571. package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.js +1 -1
  572. package/dist/domain/{system-components → extensions}/horizontal-tabs.d.ts +2 -2
  573. package/dist/domain/extensions/index.d.ts +69 -0
  574. package/dist/domain/extensions/index.js +1 -0
  575. package/dist/domain/{system-components → extensions}/list-selector-dimension-indicator.d.ts +3 -2
  576. package/dist/domain/extensions/list-selector-dimension-indicator.js +1 -0
  577. package/dist/domain/{system-components → extensions}/navigation-steps.d.ts +2 -2
  578. package/dist/domain/extensions/offset-indicator.js +1 -0
  579. package/dist/domain/{system-components → extensions}/property-page.d.ts +1 -1
  580. package/dist/domain/extensions/property-page.js +1 -0
  581. package/dist/domain/{system-components → extensions}/replace-entity-recipe-hierarchy.d.ts +1 -1
  582. package/dist/domain/extensions/replace-entity-recipe-hierarchy.js +1 -0
  583. package/dist/domain/{system-components → extensions}/rotation-handle.d.ts +2 -2
  584. package/dist/domain/{system-components → extensions}/save-template-thumbnail.d.ts +2 -2
  585. package/dist/domain/{system-components → extensions}/save-template-thumbnail.js +1 -1
  586. package/dist/domain/{system-components → extensions}/scene-entity-add-fab.d.ts +1 -1
  587. package/dist/domain/extensions/scene-entity-add-fab.js +1 -0
  588. package/dist/domain/{system-components → extensions}/scene-entity-animation.js +1 -1
  589. package/dist/domain/{system-components → extensions}/scene-entity-delete-fab.d.ts +1 -1
  590. package/dist/domain/extensions/scene-entity-delete-fab.js +1 -0
  591. package/dist/domain/{system-components → extensions}/scene-entity-html-hotspot.d.ts +1 -1
  592. package/dist/domain/extensions/scene-entity-html-hotspot.js +1 -0
  593. package/dist/domain/{system-components → extensions}/scene-entity-navigation-hotspot.d.ts +1 -1
  594. package/dist/domain/extensions/scene-entity-navigation-hotspot.js +1 -0
  595. package/dist/domain/{system-components → extensions}/scene-entity-object-html-hotspot.d.ts +1 -1
  596. package/dist/domain/extensions/scene-entity-object-html-hotspot.js +1 -0
  597. package/dist/domain/{system-components → extensions}/scene-entity-select-hotspot.d.ts +1 -1
  598. package/dist/domain/extensions/scene-entity-select-hotspot.js +1 -0
  599. package/dist/domain/{system-components → extensions}/sketching-edit.d.ts +1 -1
  600. package/dist/domain/extensions/sketching-edit.js +1 -0
  601. package/dist/domain/{system-components → extensions}/summary-component.js +1 -1
  602. package/dist/domain/{system-components → extensions}/tool-menu-fab.d.ts +1 -1
  603. package/dist/domain/extensions/tool-menu-fab.js +1 -0
  604. package/dist/domain/{system-components → extensions}/toolbar.d.ts +1 -1
  605. package/dist/domain/extensions/toolbar.js +1 -0
  606. package/dist/domain/index.d.ts +1 -1
  607. package/dist/domain/index.js +1 -1
  608. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  609. package/dist/domain/mocks/create-mock-domain-runtime-services.d.ts +1 -1
  610. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +28 -19
  611. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  612. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  613. package/dist/domain/mocks/create-mock-domain.js +1 -1
  614. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  615. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  616. package/dist/domain/mocks/create-test-application-config.js +1 -0
  617. package/dist/domain/mocks/index.d.ts +1 -0
  618. package/dist/domain/mocks/index.js +1 -1
  619. package/dist/domain/projections/blender-projections/blender-projections.d.ts +1 -2
  620. package/dist/domain/projections/blender-projections/camera.d.ts +2 -2
  621. package/dist/domain/projections/collision-projections.d.ts +1 -1
  622. package/dist/domain/projections/composition-projections.d.ts +1 -1
  623. package/dist/domain/projections/constraint-projections.d.ts +1 -1
  624. package/dist/domain/projections/index.d.ts +1 -1
  625. package/dist/domain/projections/position-projections.d.ts +1 -1
  626. package/dist/domain/projections/projected-entities-projections.d.ts +1 -1
  627. package/dist/domain/projections/snapping-projections.d.ts +1 -1
  628. package/dist/domain/projections/validation-projections.d.ts +3 -19
  629. package/dist/domain/sketching/sketching-projections.d.ts +1 -1
  630. package/dist/domain/system-components/application-config.d.ts +2 -2
  631. package/dist/domain/system-components/child-entity-selection.js +1 -1
  632. package/dist/domain/system-components/collision-box-geometry.d.ts +4 -2
  633. package/dist/domain/system-components/collision-geometry.d.ts +4 -2
  634. package/dist/domain/system-components/collision-point-geometry.d.ts +4 -2
  635. package/dist/domain/system-components/common/index.d.ts +0 -4
  636. package/dist/domain/system-components/common/index.js +1 -1
  637. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  638. package/dist/domain/system-components/common/recipes.d.ts +21 -3
  639. package/dist/domain/system-components/common/recipes.js +1 -1
  640. package/dist/domain/system-components/constraint.d.ts +10 -23
  641. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  642. package/dist/domain/system-components/drag-handle.js +1 -1
  643. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  644. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  645. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  646. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  647. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -1
  648. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  649. package/dist/domain/system-components/index.d.ts +0 -68
  650. package/dist/domain/system-components/index.js +1 -1
  651. package/dist/domain/system-components/material-swatch.js +1 -1
  652. package/dist/domain/system-components/phoenix-entity-elements/admin-data-table-sidebar.d.ts +1 -1
  653. package/dist/domain/system-components/phoenix-layout-elements/admin-connected-resource-page.d.ts +1 -1
  654. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-actions.d.ts +1 -1
  655. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-page.d.ts +1 -1
  656. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  657. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  658. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  659. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  660. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  661. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  662. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  663. package/dist/domain/utils/eval-cache.d.ts +1 -1
  664. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  665. package/dist/domain/utils/memo-eval.d.ts +2 -2
  666. package/dist/editor/domain-editors/use-implementation-files.d.ts +1 -2
  667. package/dist/editor/mocks/EditorMockContext.js +1 -1
  668. package/dist/globals/index.d.ts +2 -0
  669. package/dist/i18n/locales/cs/messages.js +1 -1
  670. package/dist/i18n/locales/da/messages.js +1 -1
  671. package/dist/i18n/locales/de/messages.js +1 -1
  672. package/dist/i18n/locales/de-AT/messages.js +1 -1
  673. package/dist/i18n/locales/en/messages.js +1 -1
  674. package/dist/i18n/locales/en-AU/messages.js +1 -1
  675. package/dist/i18n/locales/en-GB/messages.js +1 -1
  676. package/dist/i18n/locales/es/messages.js +1 -1
  677. package/dist/i18n/locales/fr/messages.js +1 -1
  678. package/dist/i18n/locales/hu/messages.js +1 -1
  679. package/dist/i18n/locales/it/messages.js +1 -1
  680. package/dist/i18n/locales/nl/messages.js +1 -1
  681. package/dist/i18n/locales/pl/messages.js +1 -1
  682. package/dist/i18n/locales/pt/messages.js +1 -1
  683. package/dist/i18n/locales/ro/messages.js +1 -1
  684. package/dist/i18n/locales/sk/messages.js +1 -1
  685. package/dist/i18n/locales/tr/messages.js +1 -1
  686. package/dist/legacy/domain-cli/gen/configurator-builder.js +13 -12
  687. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -3
  688. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  689. package/dist/legacy/domain-cli/gen/implementation.js +7 -11
  690. package/dist/legacy/domain-cli/gen/invariants.js +7 -6
  691. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  692. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  693. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  694. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +81 -68
  695. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  696. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  697. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  698. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +7 -0
  699. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +17 -15
  700. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.d.ts +1 -1
  701. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.js +4 -0
  702. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +18 -16
  703. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +14 -12
  704. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +13 -11
  705. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +13 -11
  706. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  707. package/dist/phoenix/application-spec/project-files.js +1 -1
  708. package/dist/phoenix/cli.js +1 -1
  709. package/dist/phoenix/commands/check.js +1 -1
  710. package/dist/phoenix/commands/deploy.js +1 -1
  711. package/dist/phoenix/commands/deps/deps.d.ts +52 -0
  712. package/dist/phoenix/commands/deps/deps.js +3 -0
  713. package/dist/phoenix/commands/deps/index.d.ts +1 -0
  714. package/dist/phoenix/commands/deps/index.js +1 -0
  715. package/dist/phoenix/commands/deps/sdk-manifest.d.ts +12 -0
  716. package/dist/phoenix/commands/deps/sdk-manifest.js +1 -0
  717. package/dist/phoenix/commands/dev.js +5 -5
  718. package/dist/phoenix/commands/fix.js +1 -1
  719. package/dist/phoenix/commands/index.d.ts +1 -0
  720. package/dist/phoenix/commands/index.js +1 -1
  721. package/dist/phoenix/commands/init.d.ts +4 -4
  722. package/dist/phoenix/commands/init.js +1 -1
  723. package/dist/phoenix/commands/prettier.js +1 -1
  724. package/dist/phoenix/services/application-spec-project-watcher.d.ts +2 -0
  725. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  726. package/dist/phoenix/services/source-archive.d.ts +1 -0
  727. package/dist/phoenix/services/source-archive.js +1 -1
  728. package/dist/phoenix/services/swc.js +1 -1
  729. package/dist/phoenix/utils/git/index.d.ts +1 -0
  730. package/dist/phoenix/utils/git/index.js +1 -0
  731. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  732. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  733. package/dist/phoenix/utils/index.d.ts +2 -0
  734. package/dist/phoenix/utils/index.js +1 -1
  735. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  736. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  737. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  738. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +53 -36
  739. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  740. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +30 -0
  741. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -0
  742. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +9 -9
  743. package/dist/react-sdk/domain-context/index.d.ts +2 -1
  744. package/dist/react-sdk/domain-context/index.js +1 -1
  745. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +11 -0
  746. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  747. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  748. package/dist/ui-sdk/theme/types.d.ts +1 -1
  749. package/dist/webhook/builders/common.d.ts +5 -0
  750. package/dist/webhook/builders/webhook-builder.js +1 -1
  751. package/package.json +33 -29
  752. package/schema/domain-spec.json +1115 -209
  753. package/dist/application-spec/generate-application/code/templates/env-ci.d.ts +0 -1
  754. package/dist/application-spec/generate-application/code/templates/env-ci.js +0 -25
  755. package/dist/application-spec/generate-application/code/templates/env-example.d.ts +0 -1
  756. package/dist/application-spec/generate-application/code/templates/env-example.js +0 -90
  757. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  758. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  759. package/dist/application-spec/generate-application/code/templates/private-assets-readme.d.ts +0 -1
  760. package/dist/application-spec/generate-application/code/templates/private-assets-readme.js +0 -24
  761. package/dist/application-spec/generate-application/code/templates/public-assets-readme.d.ts +0 -1
  762. package/dist/application-spec/generate-application/code/templates/public-assets-readme.js +0 -24
  763. package/dist/application-spec/generate-application/code/templates/readme.d.ts +0 -1
  764. package/dist/application-spec/generate-application/code/templates/readme.js +0 -23
  765. package/dist/application-spec/generate-application/code/templates/skills/agents-md.d.ts +0 -1
  766. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +0 -2
  767. package/dist/application-spec/generate-application/code/templates/webhook-implementation.d.ts +0 -1
  768. package/dist/application-spec/generate-application/code/templates/webhook-implementation.js +0 -7
  769. package/dist/domain/application/element-registration.js +0 -1
  770. package/dist/domain/application/handler-registration.js +0 -1
  771. package/dist/domain/application/resolve-imported-transformers.d.ts +0 -23
  772. package/dist/domain/application/resolve-imported-transformers.js +0 -1
  773. package/dist/domain/application/resource-builder.d.ts +0 -13
  774. package/dist/domain/application/resource-builder.js +0 -1
  775. package/dist/domain/core/relation/relation-implementation.d.ts +0 -7
  776. package/dist/domain/project-modules/index.d.ts +0 -1
  777. package/dist/domain/project-modules/index.js +0 -1
  778. package/dist/domain/project-modules/project-modules.js +0 -1
  779. package/dist/domain/system-components/attribute-switch.js +0 -1
  780. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +0 -1
  781. package/dist/domain/system-components/common/angle-indicator-schema.js +0 -1
  782. package/dist/domain/system-components/custom-header.js +0 -1
  783. package/dist/domain/system-components/custom-sidebar-footer.js +0 -1
  784. package/dist/domain/system-components/editable-angle-indicator.js +0 -1
  785. package/dist/domain/system-components/editable-distance-dimension-indicator.js +0 -1
  786. package/dist/domain/system-components/editable-offset-indicator.js +0 -1
  787. package/dist/domain/system-components/editable-size-indicator.js +0 -1
  788. package/dist/domain/system-components/entity-header.js +0 -1
  789. package/dist/domain/system-components/fit-selection-orthographic-camera-component.js +0 -1
  790. package/dist/domain/system-components/list-selector-dimension-indicator.js +0 -1
  791. package/dist/domain/system-components/offset-indicator.js +0 -1
  792. package/dist/domain/system-components/property-page.js +0 -1
  793. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +0 -1
  794. package/dist/domain/system-components/scene-entity-add-fab.js +0 -1
  795. package/dist/domain/system-components/scene-entity-delete-fab.js +0 -1
  796. package/dist/domain/system-components/scene-entity-html-hotspot.js +0 -1
  797. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +0 -1
  798. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +0 -1
  799. package/dist/domain/system-components/scene-entity-select-hotspot.js +0 -1
  800. package/dist/domain/system-components/sketching-edit.js +0 -1
  801. package/dist/domain/system-components/tool-menu-fab.js +0 -1
  802. package/dist/domain/system-components/toolbar.js +0 -1
  803. /package/dist/{domain/core/relation/relation-implementation.js → application-spec/core/expressions/relation-expression-params.js} +0 -0
  804. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  805. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  806. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
  807. /package/dist/domain/{system-components → extensions}/angle-indicator.d.ts +0 -0
  808. /package/dist/domain/{system-components → extensions}/angle-indicator.js +0 -0
  809. /package/dist/domain/{system-components → extensions}/autorotate-camera-component.d.ts +0 -0
  810. /package/dist/domain/{system-components → extensions}/autorotate-camera-component.js +0 -0
  811. /package/dist/domain/{system-components → extensions}/basic-sidebar-footer.d.ts +0 -0
  812. /package/dist/domain/{system-components → extensions}/basic-sidebar-footer.js +0 -0
  813. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.d.ts +0 -0
  814. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.js +0 -0
  815. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.d.ts +0 -0
  816. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.js +0 -0
  817. /package/dist/domain/{system-components → extensions}/canvas-config.js +0 -0
  818. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.d.ts +0 -0
  819. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.js +0 -0
  820. /package/dist/domain/{system-components → extensions}/canvas-padding.d.ts +0 -0
  821. /package/dist/domain/{system-components → extensions}/canvas-padding.js +0 -0
  822. /package/dist/domain/{system-components → extensions}/canvas-preset-environment.d.ts +0 -0
  823. /package/dist/domain/{system-components → extensions}/canvas-preset-environment.js +0 -0
  824. /package/dist/domain/{system-components → extensions}/color-value.d.ts +0 -0
  825. /package/dist/domain/{system-components → extensions}/color-value.js +0 -0
  826. /package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.js +0 -0
  827. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.d.ts +0 -0
  828. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.js +0 -0
  829. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.d.ts +0 -0
  830. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.js +0 -0
  831. /package/dist/domain/{system-components → extensions}/custom-price-footer.d.ts +0 -0
  832. /package/dist/domain/{system-components → extensions}/dimension-indicator.d.ts +0 -0
  833. /package/dist/domain/{system-components → extensions}/dimension-indicator.js +0 -0
  834. /package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.d.ts +0 -0
  835. /package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.js +0 -0
  836. /package/dist/domain/{system-components → extensions}/finalize-action.d.ts +0 -0
  837. /package/dist/domain/{system-components → extensions}/finalize-action.js +0 -0
  838. /package/dist/domain/{system-components → extensions}/finalize-component.d.ts +0 -0
  839. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.d.ts +0 -0
  840. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.d.ts +0 -0
  841. /package/dist/domain/{system-components → extensions}/fixed-header.d.ts +0 -0
  842. /package/dist/domain/{system-components → extensions}/fixed-header.js +0 -0
  843. /package/dist/domain/{system-components → extensions}/floating-header.d.ts +0 -0
  844. /package/dist/domain/{system-components → extensions}/floating-header.js +0 -0
  845. /package/dist/domain/{system-components → extensions}/hidden-header.d.ts +0 -0
  846. /package/dist/domain/{system-components → extensions}/hidden-header.js +0 -0
  847. /package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.d.ts +0 -0
  848. /package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.js +0 -0
  849. /package/dist/domain/{system-components → extensions}/horizontal-tabs.js +0 -0
  850. /package/dist/domain/{system-components → extensions}/multilingual-text-value.d.ts +0 -0
  851. /package/dist/domain/{system-components → extensions}/multilingual-text-value.js +0 -0
  852. /package/dist/domain/{system-components → extensions}/navigation-steps.js +0 -0
  853. /package/dist/domain/{system-components → extensions}/offset-anchors.d.ts +0 -0
  854. /package/dist/domain/{system-components → extensions}/offset-anchors.js +0 -0
  855. /package/dist/domain/{system-components → extensions}/offset-indicator.d.ts +0 -0
  856. /package/dist/domain/{system-components → extensions}/offset.d.ts +0 -0
  857. /package/dist/domain/{system-components → extensions}/offset.js +0 -0
  858. /package/dist/domain/{system-components → extensions}/other-action.d.ts +0 -0
  859. /package/dist/domain/{system-components → extensions}/other-action.js +0 -0
  860. /package/dist/domain/{system-components → extensions}/read-sidebar-footer.d.ts +0 -0
  861. /package/dist/domain/{system-components → extensions}/read-sidebar-footer.js +0 -0
  862. /package/dist/domain/{system-components → extensions}/rotatable.d.ts +0 -0
  863. /package/dist/domain/{system-components → extensions}/rotatable.js +0 -0
  864. /package/dist/domain/{system-components → extensions}/rotation-handle.js +0 -0
  865. /package/dist/domain/{system-components → extensions}/scene-entity-animation.d.ts +0 -0
  866. /package/dist/domain/{system-components → extensions}/scene-entity-control.d.ts +0 -0
  867. /package/dist/domain/{system-components → extensions}/scene-entity-control.js +0 -0
  868. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.d.ts +0 -0
  869. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.js +0 -0
  870. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.d.ts +0 -0
  871. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.js +0 -0
  872. /package/dist/domain/{system-components → extensions}/selectable-component.d.ts +0 -0
  873. /package/dist/domain/{system-components → extensions}/selectable-component.js +0 -0
  874. /package/dist/domain/{system-components → extensions}/sidebar-tabs.d.ts +0 -0
  875. /package/dist/domain/{system-components → extensions}/sidebar-tabs.js +0 -0
  876. /package/dist/domain/{system-components → extensions}/simple-summary.d.ts +0 -0
  877. /package/dist/domain/{system-components → extensions}/simple-summary.js +0 -0
  878. /package/dist/domain/{system-components → extensions}/size.d.ts +0 -0
  879. /package/dist/domain/{system-components → extensions}/size.js +0 -0
  880. /package/dist/domain/{system-components → extensions}/sketching-draw.d.ts +0 -0
  881. /package/dist/domain/{system-components → extensions}/sketching-draw.js +0 -0
  882. /package/dist/domain/{system-components → extensions}/summary-component.d.ts +0 -0
  883. /package/dist/domain/{system-components → extensions}/text-value.d.ts +0 -0
  884. /package/dist/domain/{system-components → extensions}/text-value.js +0 -0
  885. /package/dist/domain/{system-components → extensions}/tool-controls.d.ts +0 -0
  886. /package/dist/domain/{system-components → extensions}/tool-controls.js +0 -0
  887. /package/dist/domain/{system-components → extensions}/universal-sidebar-footer.d.ts +0 -0
  888. /package/dist/domain/{system-components → extensions}/universal-sidebar-footer.js +0 -0
  889. /package/dist/domain/{system-components → extensions}/view-controls.d.ts +0 -0
  890. /package/dist/domain/{system-components → extensions}/view-controls.js +0 -0
@@ -1 +1 @@
1
- import{createCustomPhoenixEntityElement as e,createCustomPhoenixLayoutElement as t,createGetThemeHandler as r,createGetWebComponentOptionsHandler as o,createPhoenixHandler as i,createTransformer as s,createTransformerBuilder as a,createUpdateFactory as n,getIdSequence as m,isCreateEntityUpdate as p,isReplaceEntityUpdate as u}from"#package/domain";import{createCollectFrontendDataHandler as d,createFilterPublishedChunksHandler as c,createNotAuthenticatedPage as f,isAngleDimensionUpdate as g,isAttributeSelectionUpdate as j,isAttributeSwitchUpdate as l,isDeleteEntityUpdate as x,isDistanceDimensionUpdate as y,isGenericDimensionUpdate as k,isSwatchSelectionUpdate as h,isTextValueUpdate as S,useAccessService as E,useActiveNavigationState as I,useActiveToolState as q,useActiveViewState as A,useAnalyticsService as B,useAngleDimension as C,useAttributeSelection as P,useAttributeSwitch as R,useAuthenticatedClient as U,useAuthorizedClient as b,useBackendData as v,useChildEntitySelection as w,useCommittedSlice as z,useCommittedState as D,useComponent as F,useComponents as G,useComposition as H,useConfigurationId as J,useControlViolations as K,useCookRecipes as L,useCookReplaceRecipes as M,useCookedRecipes as N,useCookedReplaceRecipes as O,useCreateAuthorizedClient as Q,useDeleteEntity as T,useDeletedEntity as V,useDeselect as W,useDistanceDimension as X,useDistanceDimensionSelection as Y,useDomain as Z,useDomainApplication as $,useDomainApplicationProps as _,useDomainEntityRenderedState as ee,useDomainEntityState as et,useEntityPrice as er,useEntitySelector as eo,useFinalizeViolations as ei,useFirstComponent as es,useFirstRenderedComponent as ea,useFirstRootComponent as en,useFirstRootRenderedComponent as em,useFrontendData as ep,useGenericDimension as eu,useGroupedRecipeOptions as ed,useHoveredDomainEntityId as ec,useHoveredEntity as ef,useHoveredEntityId as eg,useIntegrationService as ej,useIntegrationState as el,useIsFullscreenActive as ex,useLoadedData as ey,useLoadingState as ek,useLoadingStateValue as eh,useMapViolationHints as eS,useNavigate as eE,usePopNavigate as eI,usePresetEmbeddedState as eq,usePublishedData as eA,usePushNavigate as eB,useRecipeEmbeddedState as eC,useRenderedComponent as eP,useRenderedComponents as eR,useRenderedEntitySelector as eU,useRenderedRootEntitySelector as eb,useRenderedSelector as ev,useRenderedSelector$ as ew,useRenderedSlice as ez,useRenderedState as eD,useReplaceEntityRecipeOptions as eF,useRootComponents as eG,useRootEntityId as eH,useRootEntityPrice as eJ,useRootEntityRenderedId as eK,useRootEntityRenderedState as eL,useRootEntitySelector as eM,useRootEntityState as eN,useRootRenderedComponents as eO,useSelectEntity as eQ,useSelectParent as eT,useSelectedDomainEntityId as eV,useSelectedEntity as eW,useSelectedEntityId as eX,useSession as eY,useSessionRole as eZ,useSessionService as e$,useStateValidity as e_,useStoreSelector as e0,useStoreSelector$ as e1,useSwatchSelection as e2,useTextValue as e3,useUpdateControl as e4,useUpdatedControl as e5}from"#package/react-sdk";import{createPhoenixIconSet as e6}from"#package/ui-sdk";import{useConfigurator as e7}from"../application-runtime/index.js";import{createOnApplicationStartProvider as e8,createOnBackendDataReadyProvider as e9,createOnConfiguratorReadyProvider as te,createOnFrontendDataReadyProvider as tt,createOnGoToIndexHandler as tr,createOnPresetLoadedHandler as to,createOnPublishedDataReadyProvider as ti,createOnRoutingReadyProvider as ts,createOnSessionReadyProvider as ta,useConfiguratorRouting as tn,usePresetSelection as tm,usePropertyPageStack as tp,usePropertyPageState as tu}from"../configurator-context/index.js";import{createGetTextureProcessingMapHandler as td}from"../scene/index.js";import{useUpdateEntityObjectSelection as tc}from"../scene/scene-entity/drag-and-drop/use-updated-selection.js";import{createAppLoader as tf,createCanvasLoader as tg,createLayoutAdminUi as tj,createLayoutCustomOwnerUi as tl,createLayoutCustomReadUi as tx,createLayoutDialog as ty,createLayoutFooter as tk,createLayoutToolbarDesktop as th,createLayoutToolbarDesktopFullScreen as tS,createLayoutToolbarReadDesktop as tE,createLayoutToolbarReadDesktopFullScreen as tI,createLayoutUserUi as tq,createToolbarHelp as tA}from"../ui/index.js";import{useGenerateShareLink as tB}from"../ui/phoenix-layout-elements/share/use-share.js";import{createPresetDeviceNotSupported as tC,createPresetPageAction as tP,createPresetUi as tR}from"../ui/preset-layout/PresetUi.js";export const createConfiguratorInterface=tU=>({updates:n(),getIdSequence:m,createGetWebComponentOptionsHandler:o,createGetThemeHandler:r,createPhoenixHandler:i,createCustomPhoenixEntityElement:e,createCustomPhoenixLayoutElement:t,createPhoenixIconSet:e6,createGetTextureProcessingMapHandler:td,createCollectFrontendDataHandler:d,createFilterPublishedChunksHandler:c,createOnGoToIndexHandler:tr,createOnApplicationStartProvider:e8,createOnSessionReadyProvider:ta,createOnPublishedDataReadyProvider:ti,createOnFrontendDataReadyProvider:tt,createOnBackendDataReadyProvider:e9,createOnRoutingReadyProvider:ts,createOnConfiguratorReadyProvider:te,createOnPresetLoadedHandler:to,createPresetUi:tR,createPresetPageAction:tP,createPresetDeviceNotSupported:tC,createLayoutFooter:tk,createAppLoader:tf,createCanvasLoader:tg,createLayoutDialog:ty,createLayoutToolbarDesktop:th,createLayoutToolbarDesktopFullScreen:tS,createLayoutToolbarReadDesktop:tE,createLayoutToolbarReadDesktopFullScreen:tI,createLayoutCustomOwnerUi:tl,createLayoutCustomReadUi:tx,createLayoutAdminUi:tj,createLayoutUserUi:tq,createToolbarHelp:tA,createNotAuthenticatedPage:f,createTransformer:s,transformerBuilder:a(),useAnalytics:B,useAuthenticatedClient:U,useAuthorizedClient:b,useCreateAuthorizedClient:Q,useAccessService:E,useConfigurationId:J,useSession:eY,useSessionRole:eZ,useSessionService:e$,useDomain:Z,useDomainApplication:$,useConfigurator:e7,useConfiguratorRouting:tn,usePresetSelection:tm,usePublishedData:eA,useFrontendData:ep,useBackendData:v,useDomainApplicationProps:_,useLoadedData:ey,useIntegrationService:ej,useIntegrationState:el,usePresetEmbeddedState:eq,useRecipeEmbeddedState:eC,useCommittedSlice:z,useRenderedSlice:ez,useCommittedState:D,useRenderedState:eD,useStoreSelector:e0,useRenderedSelector:ev,useStoreSelector$:e1,useRenderedSelector$:ew,useEntitySelector:eo,useRenderedEntitySelector:eU,useRootEntitySelector:eM,useRenderedRootEntitySelector:eb,useStateValidity:e_,useMapViolationHints:eS,useNavigate:eE,usePopNavigate:eI,usePushNavigate:eB,useControlViolations:K,useFinalizeViolations:ei,useComponent:F,useRenderedComponent:eP,useComponents:G,useRenderedComponents:eR,useFirstComponent:es,useFirstRenderedComponent:ea,useRootComponents:eG,useRootRenderedComponents:eO,useFirstRootComponent:en,useFirstRootRenderedComponent:em,useEntityState:et,useEntityRenderedState:ee,useRootEntityState:eN,useRootEntityRenderedState:eL,useRootEntityId:eH,useRootEntityRenderedId:eK,useEntityPrice:er,useRootEntityPrice:eJ,useSelectedEntity:eW,useSelectedEntityId:eX,useSelectedDomainEntityId:eV,useSelectEntity:eQ,useDeselect:W,useSelectParent:eT,useHoveredEntity:ef,useHoveredEntityId:eg,useHoveredDomainEntityId:ec,useActiveNavigationState:I,useActiveViewState:A,useActiveToolState:q,useIsFullscreenActive:ex,useComposition:H,useUpdateControl:e4,useUpdatedControl:e5,useCookRecipes:L,useCookedRecipes:N,useCookReplaceRecipes:M,useCookedReplaceRecipes:O,useDeleteEntity:T,useDeletedEntity:V,useSwatchSelection:e2,useTextValue:e3,useAttributeSelection:P,useAttributeSwitch:R,useDistanceDimension:X,useDistanceDimensionSelection:Y,useGenericDimension:eu,useAngleDimension:C,useChildEntitySelection:w,useGroupedRecipeOptions:ed,useReplaceEntityRecipeOptions:eF,useUpdateEntityObjectSelection:tc,useGenerateShareLink:tB,useLoadingState:ek,useLoadingStateValue:eh,usePropertyPageStack:tp,usePropertyPageState:tu,isCreateEntityUpdate:p,isReplaceEntityUpdate:u,isDeleteEntityUpdate:x,isAngleDimensionUpdate:g,isDistanceDimensionUpdate:y,isGenericDimensionUpdate:k,isAttributeSelectionUpdate:j,isAttributeSwitchUpdate:l,isTextValueUpdate:S,isSwatchSelectionUpdate:h});
1
+ import{createCustomPhoenixEntityElement as e,createCustomPhoenixLayoutElement as r,createGetThemeHandler as t,createGetWebComponentOptionsHandler as o,createPhoenixHandler as i,createTransformer as s,createTransformerBuilder as a,createUpdateFactory as m,getIdSequence as n,isCreateEntityUpdate as p,isReplaceEntityUpdate as u}from"#package/domain";import{createCollectFrontendDataHandler as c,createFilterPublishedChunksHandler as d,createNotAuthenticatedPage as f,isAngleDimensionUpdate as j,isAttributeSelectionUpdate as l,isAttributeSwitchUpdate as g,isDeleteEntityUpdate as x,isDistanceDimensionUpdate as y,isGenericDimensionUpdate as k,isSwatchSelectionUpdate as h,isTextValueUpdate as S,useAccessService as E,useActiveNavigationState as I,useActiveToolState as q,useActiveViewState as z,useAnalyticsService as A,useAngleDimension as B,useAttributeSelection as C,useAttributeSwitch as P,useAuthenticatedClient as R,useAuthorizedClient as U,useBackendData as b,useChildEntitySelection as v,useCommittedSlice as w,useCommittedState as D,useComponent as F,useComponents as G,useComposition as H,useConfigurationId as J,useConfiguratorMessages as K,useControlViolations as L,useCookRecipes as M,useCookReplaceRecipes as N,useCookedRecipes as O,useCookedReplaceRecipes as Q,useCreateAuthorizedClient as T,useDeleteEntity as V,useDeletedEntity as W,useDeselect as X,useDistanceDimension as Y,useDistanceDimensionSelection as Z,useDomain as $,useDomainApplication as _,useDomainApplicationProps as ee,useDomainEntityRenderedState as er,useDomainEntityState as et,useEntityPrice as eo,useEntitySelector as ei,useFinalizeViolations as es,useFirstComponent as ea,useFirstRenderedComponent as em,useFirstRootComponent as en,useFirstRootRenderedComponent as ep,useFrontendData as eu,useGenericDimension as ec,useGroupedRecipeOptions as ed,useHoveredDomainEntityId as ef,useHoveredEntity as ej,useHoveredEntityId as el,useIntegrationService as eg,useIntegrationState as ex,useIsFullscreenActive as ey,useLoadedData as ek,useLoadingState as eh,useLoadingStateValue as eS,useMapViolationHints as eE,useNavigate as eI,usePopNavigate as eq,usePresetEmbeddedState as ez,usePublishedData as eA,usePushNavigate as eB,useRecipeEmbeddedState as eC,useRenderedComponent as eP,useRenderedComponents as eR,useRenderedEntitySelector as eU,useRenderedRootEntitySelector as eb,useRenderedSelector as ev,useRenderedSelector$ as ew,useRenderedSlice as eD,useRenderedState as eF,useReplaceEntityRecipeOptions as eG,useRootComponents as eH,useRootEntityId as eJ,useRootEntityPrice as eK,useRootEntityRenderedId as eL,useRootEntityRenderedState as eM,useRootEntitySelector as eN,useRootEntityState as eO,useRootRenderedComponents as eQ,useSelectEntity as eT,useSelectParent as eV,useSelectedDomainEntityId as eW,useSelectedEntity as eX,useSelectedEntityId as eY,useSession as eZ,useSessionRole as e$,useSessionService as e_,useSetFullscreen as e0,useSetViewState as e1,useStateValidity as e2,useStoreSelector as e3,useStoreSelector$ as e4,useSwatchSelection as e5,useTextValue as e6,useUpdateControl as e7,useUpdatedControl as e8}from"#package/react-sdk";import{createPhoenixIconSet as e9}from"#package/ui-sdk";import{useConfigurator as re}from"../application-runtime/index.js";import{createOnApplicationStartProvider as rr,createOnBackendDataReadyProvider as rt,createOnConfiguratorReadyProvider as ro,createOnFrontendDataReadyProvider as ri,createOnGoToIndexHandler as rs,createOnPresetLoadedHandler as ra,createOnPublishedDataReadyProvider as rm,createOnRoutingReadyProvider as rn,createOnSessionReadyProvider as rp,useConfiguratorRouting as ru,usePresetSelection as rc,usePropertyPageStack as rd,usePropertyPageState as rf}from"../configurator-context/index.js";import{createGetTextureProcessingMapHandler as rj}from"../scene/index.js";import{useUpdateEntityObjectSelection as rl}from"../scene/scene-entity/drag-and-drop/use-updated-selection.js";import{createAppLoader as rg,createCanvasLoader as rx,createLayoutAdminUi as ry,createLayoutCustomOwnerUi as rk,createLayoutCustomReadUi as rh,createLayoutDialog as rS,createLayoutFooter as rE,createLayoutToolbarDesktop as rI,createLayoutToolbarDesktopFullScreen as rq,createLayoutToolbarReadDesktop as rz,createLayoutToolbarReadDesktopFullScreen as rA,createLayoutUserUi as rB,createToolbarHelp as rC}from"../ui/index.js";import{useGenerateShareLink as rP}from"../ui/phoenix-layout-elements/share/use-share.js";import{createPresetDeviceNotSupported as rR,createPresetPageAction as rU,createPresetUi as rb}from"../ui/preset-layout/PresetUi.js";import{useFinalizeAction as rv}from"./use-finalize-action.js";import{useResetCamera as rw}from"./use-reset-camera.js";export const createConfiguratorInterface=rD=>({updates:m(),getIdSequence:n,createGetWebComponentOptionsHandler:o,createGetThemeHandler:t,createPhoenixHandler:i,createCustomPhoenixEntityElement:e,createCustomPhoenixLayoutElement:r,createPhoenixIconSet:e9,createGetTextureProcessingMapHandler:rj,createCollectFrontendDataHandler:c,createFilterPublishedChunksHandler:d,createOnGoToIndexHandler:rs,createOnApplicationStartProvider:rr,createOnSessionReadyProvider:rp,createOnPublishedDataReadyProvider:rm,createOnFrontendDataReadyProvider:ri,createOnBackendDataReadyProvider:rt,createOnRoutingReadyProvider:rn,createOnConfiguratorReadyProvider:ro,createOnPresetLoadedHandler:ra,createPresetUi:rb,createPresetPageAction:rU,createPresetDeviceNotSupported:rR,createLayoutFooter:rE,createAppLoader:rg,createCanvasLoader:rx,createLayoutDialog:rS,createLayoutToolbarDesktop:rI,createLayoutToolbarDesktopFullScreen:rq,createLayoutToolbarReadDesktop:rz,createLayoutToolbarReadDesktopFullScreen:rA,createLayoutCustomOwnerUi:rk,createLayoutCustomReadUi:rh,createLayoutAdminUi:ry,createLayoutUserUi:rB,createToolbarHelp:rC,createNotAuthenticatedPage:f,createTransformer:s,transformerBuilder:a(),useAnalytics:A,useAuthenticatedClient:R,useAuthorizedClient:U,useCreateAuthorizedClient:T,useAccessService:E,useConfigurationId:J,useSession:eZ,useSessionRole:e$,useSessionService:e_,useDomain:$,useDomainApplication:_,useConfigurator:re,useConfiguratorRouting:ru,usePresetSelection:rc,usePublishedData:eA,useFrontendData:eu,useBackendData:b,useDomainApplicationProps:ee,useLoadedData:ek,useIntegrationService:eg,useIntegrationState:ex,usePresetEmbeddedState:ez,useRecipeEmbeddedState:eC,useCommittedSlice:w,useRenderedSlice:eD,useCommittedState:D,useRenderedState:eF,useStoreSelector:e3,useRenderedSelector:ev,useStoreSelector$:e4,useRenderedSelector$:ew,useEntitySelector:ei,useRenderedEntitySelector:eU,useRootEntitySelector:eN,useRenderedRootEntitySelector:eb,useStateValidity:e2,useMapViolationHints:eE,useNavigate:eI,usePopNavigate:eq,usePushNavigate:eB,useControlViolations:L,useFinalizeViolations:es,useConfiguratorMessages:K,useFinalizeAction:rv,useComponent:F,useRenderedComponent:eP,useComponents:G,useRenderedComponents:eR,useFirstComponent:ea,useFirstRenderedComponent:em,useRootComponents:eH,useRootRenderedComponents:eQ,useFirstRootComponent:en,useFirstRootRenderedComponent:ep,useEntityState:et,useEntityRenderedState:er,useRootEntityState:eO,useRootEntityRenderedState:eM,useRootEntityId:eJ,useRootEntityRenderedId:eL,useEntityPrice:eo,useRootEntityPrice:eK,useSelectedEntity:eX,useSelectedEntityId:eY,useSelectedDomainEntityId:eW,useSelectEntity:eT,useDeselect:X,useSelectParent:eV,useHoveredEntity:ej,useHoveredEntityId:el,useHoveredDomainEntityId:ef,useActiveNavigationState:I,useActiveViewState:z,useSetViewState:e1,useActiveToolState:q,useIsFullscreenActive:ey,useSetFullscreen:e0,useResetCamera:rw,useComposition:H,useUpdateControl:e7,useUpdatedControl:e8,useCookRecipes:M,useCookedRecipes:O,useCookReplaceRecipes:N,useCookedReplaceRecipes:Q,useDeleteEntity:V,useDeletedEntity:W,useSwatchSelection:e5,useTextValue:e6,useAttributeSelection:C,useAttributeSwitch:P,useDistanceDimension:Y,useDistanceDimensionSelection:Z,useGenericDimension:ec,useAngleDimension:B,useChildEntitySelection:v,useGroupedRecipeOptions:ed,useReplaceEntityRecipeOptions:eG,useUpdateEntityObjectSelection:rl,useGenerateShareLink:rP,useLoadingState:eh,useLoadingStateValue:eS,usePropertyPageStack:rd,usePropertyPageState:rf,isCreateEntityUpdate:p,isReplaceEntityUpdate:u,isDeleteEntityUpdate:x,isAngleDimensionUpdate:j,isDistanceDimensionUpdate:y,isGenericDimensionUpdate:k,isAttributeSelectionUpdate:l,isAttributeSwitchUpdate:g,isTextValueUpdate:S,isSwatchSelectionUpdate:h});
@@ -10,6 +10,7 @@ declare const GoToProductsClicked: () => import("#package/domain").UserActionEve
10
10
  declare const ExpandedViewClosed: () => import("#package/domain").UserActionEvent;
11
11
  declare const ProductSelected: (productType: string, productName: string) => import("#package/domain").UserActionEvent;
12
12
  declare const SelectionHotspotClicked: (id: string) => import("#package/domain").UserActionEvent;
13
+ declare const AssistantEntityLinkClicked: (id: string) => import("#package/domain").UserActionEvent;
13
14
  declare const RedoButtonClicked: () => import("#package/domain").UserActionEvent;
14
15
  declare const UndoButtonClicked: () => import("#package/domain").UserActionEvent;
15
16
  declare const GlobalDimensionsButtonClicked: (dimensionUnit: string) => import("#package/domain").UserActionEvent;
@@ -31,6 +32,7 @@ export declare const FrontendAnalyticsFactory: {
31
32
  GoToProductsClicked: typeof GoToProductsClicked;
32
33
  ProductSelected: typeof ProductSelected;
33
34
  SelectionHotspotClicked: typeof SelectionHotspotClicked;
35
+ AssistantEntityLinkClicked: typeof AssistantEntityLinkClicked;
34
36
  RedoButtonClicked: typeof RedoButtonClicked;
35
37
  UndoButtonClicked: typeof UndoButtonClicked;
36
38
  GlobalDimensionsButtonClicked: typeof GlobalDimensionsButtonClicked;
@@ -1 +1 @@
1
- import{AnalyticsEventFactory as e,domainEntityTypeFromId as t,isVirtualEntityId as o}from"#package/domain";export const FrontendAnalyticsFactory={CloseConfiguratorClicked:()=>e.UserActionEvent({section:"topNavigation",element:"button",action:"click",result:"User requested to close the configurator."}),PreviousStepButtonClicked:()=>e.UserActionEvent({section:"sidebar",element:"previousStepButton",action:"click",result:"User clicked on previous step button."}),NextStepButtonClicked:()=>e.UserActionEvent({section:"sidebar",element:"nextStepButton",action:"click",result:"User clicked on next step button."}),FinalizeButtonClicked:()=>e.UserActionEvent({section:"sidebar",element:"finalizeButton",action:"click",result:"User clicked on finalize button."}),SummaryButtonClicked:()=>e.UserActionEvent({section:"sidebar",element:"summaryButton",action:"click",result:"User clicked go to summary button."}),TopNavigationStepClicked:t=>e.UserActionEvent({section:"topNavigation",element:"step",action:"click",result:"User clicked on top navigation step.",data:{step:t}}),HorizontalTabClicked:t=>e.UserActionEvent({section:"topNavigation",element:"horizontalTab",action:"click",result:"User clicked on horizontal tab.",data:{tab:t}}),GoToProductsClicked:()=>e.UserActionEvent({section:"topNavigation",element:"button",action:"click",result:"User requested to go to the product page."}),ProductSelected:(t,o)=>e.UserActionEvent({section:"productPage",element:"selectCardButton",action:"click",data:{productType:t,productName:o},result:"User has selected a product."}),SelectionHotspotClicked:t=>e.UserActionEvent({section:"canvas",element:"selectionHotspot",action:"click",result:"User clicked on selection hotspot of an entity.",data:{id:t}}),RedoButtonClicked:()=>e.UserActionEvent({section:"bottomToolbar",element:"redoButton",action:"click",result:"User clicked on redo button."}),UndoButtonClicked:()=>e.UserActionEvent({section:"bottomToolbar",element:"undoButton",action:"click",result:"User clicked on undo button."}),GlobalDimensionsButtonClicked:t=>e.UserActionEvent({section:"bottomToolbar",element:"measurementUnitButton",action:"click",data:{dimensionUnit:t},result:"Global measurement units were changed."}),MeasurementsMenuToggled:()=>e.UserActionEvent({section:"bottomToolbar",element:"measurementsMenu",action:"click",result:"User opened the measurements menu."}),MeasurementsMenuClosed:()=>e.UserActionEvent({section:"bottomToolbar",element:"measurementsMenu",action:"click",result:"User closed the measurements menu."}),DimensionIndicatorsToggled:()=>e.UserActionEvent({section:"bottomToolbar",element:"dimensionIndicatorsToggle",action:"click",result:"User toggled dimension indicators visibility."}),FullScreenModeToggled:()=>e.UserActionEvent({section:"bottomToolbar",element:"fullscreenButton",action:"click",result:"User toggled fullscreen mode."}),HelpDialogOpened:()=>e.UserActionEvent({section:"bottomToolbar",element:"helpButton",action:"click",result:"Help dialog opened."}),HelpDialogClosed:()=>e.UserActionEvent({section:"bottomToolbar",element:"helpDialog",action:"click",result:"Help dialog closed."}),EntityDeleteHotspotClicked:n=>{let i=o(n)?"":t(n);return e.UserActionEvent({section:"canvas",element:"deleteEntityHotspot",action:"click",data:{id:n,type:i},result:"User has deleted an entity."})},ExpandedViewClosed:()=>e.UserActionEvent({section:"topNavigation",element:"button",action:"click",result:"User requested to close the expanded view."})};
1
+ import{AnalyticsEventFactory as e,domainEntityTypeFromId as t,isVirtualEntityId as o}from"#package/domain";export const FrontendAnalyticsFactory={CloseConfiguratorClicked:()=>e.UserActionEvent({section:"topNavigation",element:"button",action:"click",result:"User requested to close the configurator."}),PreviousStepButtonClicked:()=>e.UserActionEvent({section:"sidebar",element:"previousStepButton",action:"click",result:"User clicked on previous step button."}),NextStepButtonClicked:()=>e.UserActionEvent({section:"sidebar",element:"nextStepButton",action:"click",result:"User clicked on next step button."}),FinalizeButtonClicked:()=>e.UserActionEvent({section:"sidebar",element:"finalizeButton",action:"click",result:"User clicked on finalize button."}),SummaryButtonClicked:()=>e.UserActionEvent({section:"sidebar",element:"summaryButton",action:"click",result:"User clicked go to summary button."}),TopNavigationStepClicked:t=>e.UserActionEvent({section:"topNavigation",element:"step",action:"click",result:"User clicked on top navigation step.",data:{step:t}}),HorizontalTabClicked:t=>e.UserActionEvent({section:"topNavigation",element:"horizontalTab",action:"click",result:"User clicked on horizontal tab.",data:{tab:t}}),GoToProductsClicked:()=>e.UserActionEvent({section:"topNavigation",element:"button",action:"click",result:"User requested to go to the product page."}),ProductSelected:(t,o)=>e.UserActionEvent({section:"productPage",element:"selectCardButton",action:"click",data:{productType:t,productName:o},result:"User has selected a product."}),SelectionHotspotClicked:t=>e.UserActionEvent({section:"canvas",element:"selectionHotspot",action:"click",result:"User clicked on selection hotspot of an entity.",data:{id:t}}),AssistantEntityLinkClicked:t=>e.UserActionEvent({section:"chat",element:"entityLink",action:"click",result:"User clicked on a link to an entity in a reply of the assistant.",data:{id:t}}),RedoButtonClicked:()=>e.UserActionEvent({section:"bottomToolbar",element:"redoButton",action:"click",result:"User clicked on redo button."}),UndoButtonClicked:()=>e.UserActionEvent({section:"bottomToolbar",element:"undoButton",action:"click",result:"User clicked on undo button."}),GlobalDimensionsButtonClicked:t=>e.UserActionEvent({section:"bottomToolbar",element:"measurementUnitButton",action:"click",data:{dimensionUnit:t},result:"Global measurement units were changed."}),MeasurementsMenuToggled:()=>e.UserActionEvent({section:"bottomToolbar",element:"measurementsMenu",action:"click",result:"User opened the measurements menu."}),MeasurementsMenuClosed:()=>e.UserActionEvent({section:"bottomToolbar",element:"measurementsMenu",action:"click",result:"User closed the measurements menu."}),DimensionIndicatorsToggled:()=>e.UserActionEvent({section:"bottomToolbar",element:"dimensionIndicatorsToggle",action:"click",result:"User toggled dimension indicators visibility."}),FullScreenModeToggled:()=>e.UserActionEvent({section:"bottomToolbar",element:"fullscreenButton",action:"click",result:"User toggled fullscreen mode."}),HelpDialogOpened:()=>e.UserActionEvent({section:"bottomToolbar",element:"helpButton",action:"click",result:"Help dialog opened."}),HelpDialogClosed:()=>e.UserActionEvent({section:"bottomToolbar",element:"helpDialog",action:"click",result:"Help dialog closed."}),EntityDeleteHotspotClicked:n=>{let i=o(n)?"":t(n);return e.UserActionEvent({section:"canvas",element:"deleteEntityHotspot",action:"click",data:{id:n,type:i},result:"User has deleted an entity."})},ExpandedViewClosed:()=>e.UserActionEvent({section:"topNavigation",element:"button",action:"click",result:"User requested to close the expanded view."})};
@@ -1,2 +1,4 @@
1
1
  export { type ConfiguratorInterface, createConfiguratorInterface } from './configurator-interface.js';
2
2
  export { FrontendAnalyticsFactory } from './frontend-analytics.js';
3
+ export { type UseFinalizeAction, type UseFinalizeActionResult, useFinalizeAction } from './use-finalize-action.js';
4
+ export { type UseResetCamera, useResetCamera } from './use-reset-camera.js';
@@ -1 +1 @@
1
- export{createConfiguratorInterface}from"./configurator-interface.js";export{FrontendAnalyticsFactory}from"./frontend-analytics.js";
1
+ export{createConfiguratorInterface}from"./configurator-interface.js";export{FrontendAnalyticsFactory}from"./frontend-analytics.js";export{useFinalizeAction}from"./use-finalize-action.js";export{useResetCamera}from"./use-reset-camera.js";
@@ -0,0 +1,31 @@
1
+ /**
2
+ * What a project layout needs to show and run one `finalizeAction` of the spec.
3
+ * - `run`: pushes the finalize-button analytics event, then runs the action's handler. Does nothing while
4
+ * `disabled` or `isPending`.
5
+ * - `isPending`: the handler is running.
6
+ * - `error`: what the handler's last run rejected with, `null` after a run that resolved and while a new run is
7
+ * pending. A rejection that is not an `Error` is wrapped in one, with the rejected value as its `cause`. No snackbar
8
+ * is raised; the layout shows it its own way.
9
+ * - `disabled` and `hints`: from `useFinalizeViolations()`; the configuration cannot be finalized while it has
10
+ * a `warning` or worse, or while it is out of sync with the server, and `hints` says why.
11
+ *
12
+ * `isPending` and `error` belong to the mounted component: when it unmounts during a run, the handler keeps
13
+ * running, and a component mounted afterwards starts with `isPending` false and no `error`.
14
+ */
15
+ export interface UseFinalizeActionResult {
16
+ readonly run: () => void;
17
+ readonly isPending: boolean;
18
+ readonly error: Error | null;
19
+ readonly disabled: boolean;
20
+ readonly hints: string | undefined;
21
+ }
22
+ export type UseFinalizeAction = (handler: string) => UseFinalizeActionResult;
23
+ /**
24
+ * Runs the project handler a `finalizeAction` component names, with the state a finalize button shows.
25
+ *
26
+ * It calls `usePhoenixHandler(handler)`, which calls the project's handler factory and the hooks inside it, so:
27
+ * call it once per component, never in a loop or conditionally, render one component per action, and wrap that
28
+ * component in `<PhoenixHandlerBoundary name={handler}>` from `@salsita-ai/sdk/react`, so an edited handler takes
29
+ * effect without a reload. It does not check read mode; a layout hides finalization for a viewer.
30
+ */
31
+ export declare const useFinalizeAction: UseFinalizeAction;
@@ -0,0 +1 @@
1
+ import{useMutation as r}from"@tanstack/react-query";import{useCallback as t,useRef as e}from"react";import{useAnalyticsService as a,useFinalizeViolations as n,useLogger as o,usePhoenixHandler as i}from"#package/react-sdk";import{FrontendAnalyticsFactory as c}from"./frontend-analytics.js";export const useFinalizeAction=l=>{let{handler:s}=i(l),u=a(),f=o(),{disabled:m,hints:d}=n(),h=e(!1),{mutate:p,isPending:y,error:k}=r({mutationFn:async()=>{try{await s()}catch(r){throw r instanceof Error?r:Error(null==r?"The finalize handler failed without a reason.":String(r),{cause:r})}finally{h.current=!1}},onError:r=>{f.error("Failed to finalize",{error:r.message})}});return{run:t(()=>{m||h.current||(h.current=!0,u.push(c.FinalizeButtonClicked()),p())},[u,m,p]),isPending:y,error:k,disabled:m,hints:d}};
@@ -0,0 +1,6 @@
1
+ export type UseResetCamera = () => () => void;
2
+ /**
3
+ * Hook to move the camera back to the framing of the active camera configuration, undoing what the user orbited,
4
+ * panned or zoomed. It does what the built-in toolbar's reset button does
5
+ */
6
+ export declare const useResetCamera: UseResetCamera;
@@ -0,0 +1 @@
1
+ import{useCallback as e}from"react";import{useConfigurator as r}from"../application-runtime/index.js";export const useResetCamera=()=>{let{cameraControlSystem:t}=r();return e(()=>{t.resetCamera()},[t])};
@@ -5,7 +5,7 @@ export declare const useLayoutSystemConfig: () => {
5
5
  splitSidebar: boolean;
6
6
  showSelectionBackButton: boolean;
7
7
  shareDisabled: boolean;
8
- availableLocales: string[];
8
+ availableLocales: readonly string[];
9
9
  indicatorSwitch: boolean;
10
10
  };
11
11
  export declare const useEnterSidebarSummary: () => () => void;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The built-in UI of a loaded configuration: the layout the spec's `layout` selects, in owner or
3
+ * read mode. `defaultConfiguratorElements` registers it as `ConfiguratorLayout`, and
4
+ * `LoadedConfiguratorDetailPage` renders it when no layout element has that name.
5
+ */
6
+ export declare const DefaultConfiguratorLayout: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as r,jsxs as e,Fragment as t}from"react/jsx-runtime";import{useMemo as a}from"react";import{match as o}from"ts-pattern";import{useAccessService as i}from"#package/react-sdk";import{useLayoutSystemConfig as m}from"../configurator-context/index.js";import{Layout as n,LayoutCustomOwnerUi as u,LayoutCustomReadUi as s,LayoutDialog as d,Legacy as w}from"../ui/index.js";export const DefaultConfiguratorLayout=()=>{let{accessInfo:p}=i(),y=m(),{ownerUi:l,readUi:c}=a(()=>o(y.layout).with("simple",()=>({ownerUi:r(w.SimpleOwnerLayout,{}),readUi:r(w.SummaryReadLayout,{})})).with("tabs",()=>({ownerUi:r(w.TabsOwnerLayout,{}),readUi:r(w.SummaryReadLayout,{})})).with("steps",()=>({ownerUi:r(w.StepsOwnerLayout,{}),readUi:r(w.SummaryReadLayout,{})})).with("universal",()=>({ownerUi:r(n,{}),readUi:r(n,{})})).with("custom",()=>({ownerUi:r(u,{}),readUi:r(s,{})})).exhaustive(),[y.layout]);return e(t,{children:[p.viewMode?c:l,"universal"===y.layout&&e(t,{children:[r(w.CommonFinalizePage,{}),r(d,{})]})]})};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as o,Fragment as i}from"react/jsx-runtime";import r from"mui-modal-provider";import{memo as n,useCallback as t,useEffect as a,useMemo as d}from"react";import{match as s}from"ts-pattern";import{InvalidAccessKeyError as l}from"#package/client";import{BuiltInLoadingPhase as u,CommonAnalyticsFactory as m,DomainLifecycleBoundary as c,LoadedDataProvider as f,useAccessService as p,useAnalyticsService as g,useAuthorizedClient as v,useConfiguratorDomainFactory as w,useConfiguratorLoadStatus as y,useConfiguratorRawLoadedData as h,useExpectPhase as I,useLoadedDataActions as j,useLoadingError as x,useLoadingPhase as C,useLogger as b,useRoutingService as k,useSpecAssistant as L}from"#package/react-sdk";import{useConfigurator as U}from"../application-runtime/index.js";import{IntegrationSubscription as M,OnConfiguratorReadyProvider as S,ViewportStateSync as E,useLayoutSystemConfig as F}from"../configurator-context/index.js";import{Layout as R,Legacy as D}from"../ui/index.js";import{LayoutCustomOwnerUi as T,LayoutCustomReadUi as P,LayoutDialog as A}from"../ui/phoenix-layout-elements/index.js";import{ConfiguratorNotFoundPage as O}from"./ConfiguratorNotFoundPage.js";import{DevContextFallback as V}from"./error-boundaries/DevContextFallback.js";import{DevLoadingFallback as q}from"./error-boundaries/DevLoadingFallback.js";import{LoadingErrorBoundary as z}from"./error-boundaries/LoadingErrorBoundary.js";import{useLoad as B}from"./use-load.js";let G=n(n=>{let{viewMode:t}=n,l=F();(()=>{let{assistantSystem:e}=U(),o=null!=L();a(()=>{if(o)return e.activate()},[e,o])})();let{ownerUi:u,readUi:m}=d(()=>s(l.layout).with("simple",()=>({ownerUi:e(D.SimpleOwnerLayout,{}),readUi:e(D.SummaryReadLayout,{})})).with("tabs",()=>({ownerUi:e(D.TabsOwnerLayout,{}),readUi:e(D.SummaryReadLayout,{})})).with("steps",()=>({ownerUi:e(D.StepsOwnerLayout,{}),readUi:e(D.SummaryReadLayout,{})})).with("universal",()=>({ownerUi:e(R,{}),readUi:e(R,{})})).with("custom",()=>({ownerUi:e(T,{}),readUi:e(P,{})})).exhaustive(),[l.layout]);return e(r,{children:o(S,{children:[t?m:u,"universal"===l.layout&&o(i,{children:[e(D.CommonFinalizePage,{}),e(A,{})]})]})})});export const LoadedConfiguratorDetailPage=()=>{I(u.SceneAssets);let{configurationId:i,accessInfo:r}=p(),n=v(),a=k(),d=b(),s=g(),{startConfiguratorLoad:L,completeConfiguratorLoad:U,failConfiguratorLoad:S,resetConfiguratorLoad:F}=j(),{isLoading:R,isError:D}=y(),T=h(),P=w(),A=t(()=>r.viewMode&&void 0!==r.revisionId?n.getConfigurationRevision(i,r.revisionId):n.getConfiguration(i),[r.revisionId,r.viewMode,n,i]),N=t(()=>{L()},[L]),H=t(e=>{U({initialRevisionId:e.revisionId,initialEntities:e.data,modelVersion:e.modelVersion,rootEntityType:e.rootEntityType,schemaIdentity:P}),s.push(m.ConfigurationLoaded(e.configurationId,e.revisionId,r.viewMode?"read":"owner")),d.appendToGlobalContext({configurationId:e.configurationId,revisionId:e.revisionId,mode:r.viewMode}),d.info("Configuration loaded.")},[r.viewMode,s,U,P,d]),J=t(e=>{if(S(e),e instanceof l)return void a.rejectAccessToken(i,r.raw);let o=e instanceof Error?e:Error("Configuration loading failed with an unknown error.",{cause:e});d.error("Configuration loading failed because the API request did not succeed. Verify the configuration ID and access token.",{configurationId:i},o)},[r.raw,i,S,d,a]),K=t(()=>{F()},[F]);return(B({key:[n,i,r.revisionId,r.viewMode],load:A,onStart:N,onSuccess:H,onError:J,onCleanup:K}),C({id:u.DataFetch,label:"Loading configuration…"},R),x(D),D)?e(O,{}):null===T?null:e(f,{value:T,children:e(z,{fallbackRender:o=>e(q,{...o}),children:e(c,{type:"configurator",children:e(z,{FallbackComponent:V,children:o(M,{children:[e(E,{}),e(G,{viewMode:r.viewMode})]})})})})})};
1
+ import{jsx as o,jsxs as r}from"react/jsx-runtime";import e from"mui-modal-provider";import{memo as i,useCallback as n,useEffect as t}from"react";import{InvalidAccessKeyError as a}from"#package/client";import{BuiltInLoadingPhase as d,CommonAnalyticsFactory as s,DomainLifecycleBoundary as l,LoadedDataProvider as c,PhoenixLayoutElement as u,useAccessService as f,useAnalyticsService as m,useAuthorizedClient as g,useConfiguratorDomainFactory as p,useConfiguratorLoadStatus as v,useConfiguratorRawLoadedData as I,useExpectPhase as h,useLoadedDataActions as j,useLoadingError as C,useLoadingPhase as k,useLogger as w,useRoutingService as y,useSpecAssistant as b}from"#package/react-sdk";import{useConfigurator as x}from"../application-runtime/index.js";import{IntegrationSubscription as E,OnConfiguratorReadyProvider as D,ViewportStateSync as L}from"../configurator-context/index.js";import{ConfiguratorNotFoundPage as M}from"./ConfiguratorNotFoundPage.js";import{DefaultConfiguratorLayout as F}from"./DefaultConfiguratorLayout.js";import{ConfiguratorLayoutName as S}from"./configurator-layout-name.js";import{DevContextFallback as T}from"./error-boundaries/DevContextFallback.js";import{DevLoadingFallback as A}from"./error-boundaries/DevLoadingFallback.js";import{LoadingErrorBoundary as P}from"./error-boundaries/LoadingErrorBoundary.js";import{useLoad as R}from"./use-load.js";let V=i(()=>((()=>{let{assistantSystem:o}=x(),r=null!=b();t(()=>{if(r)return o.activate()},[o,r])})(),o(e,{children:o(D,{children:o(u,{name:S,defaultSlot:F})})})));export const LoadedConfiguratorDetailPage=()=>{h(d.SceneAssets);let{configurationId:e,accessInfo:i}=f(),t=g(),u=y(),b=w(),x=m(),{startConfiguratorLoad:D,completeConfiguratorLoad:F,failConfiguratorLoad:S,resetConfiguratorLoad:q}=j(),{isLoading:B,isError:G}=v(),N=I(),z=p(),H=n(()=>i.viewMode&&void 0!==i.revisionId?t.getConfigurationRevision(e,i.revisionId):t.getConfiguration(e),[i.revisionId,i.viewMode,t,e]),J=n(()=>{D()},[D]),K=n(o=>{F({initialRevisionId:o.revisionId,initialEntities:o.data,modelVersion:o.modelVersion,rootEntityType:o.rootEntityType,schemaIdentity:z}),x.push(s.ConfigurationLoaded(o.configurationId,o.revisionId,i.viewMode?"read":"owner")),b.appendToGlobalContext({configurationId:o.configurationId,revisionId:o.revisionId,mode:i.viewMode}),b.info("Configuration loaded.")},[i.viewMode,x,F,z,b]),O=n(o=>{if(S(o),o instanceof a)return void u.rejectAccessToken(e,i.raw);let r=o instanceof Error?o:Error("Configuration loading failed with an unknown error.",{cause:o});b.error("Configuration loading failed because the API request did not succeed. Verify the configuration ID and access token.",{configurationId:e},r)},[i.raw,e,S,b,u]),Q=n(()=>{q()},[q]);return(R({key:[t,e,i.revisionId,i.viewMode],load:H,onStart:J,onSuccess:K,onError:O,onCleanup:Q}),k({id:d.DataFetch,label:"Loading configuration…"},B),C(G),G)?o(M,{}):null===N?null:o(c,{value:N,children:o(P,{fallbackRender:r=>o(A,{...r}),children:o(l,{type:"configurator",children:o(P,{FallbackComponent:T,children:r(E,{children:[o(L,{}),o(V,{})]})})})})})};
@@ -0,0 +1,2 @@
1
+ /** The name a project registers a layout element under to replace the UI of a loaded configuration. */
2
+ export declare const ConfiguratorLayoutName = "ConfiguratorLayout";
@@ -0,0 +1 @@
1
+ export const ConfiguratorLayoutName="ConfiguratorLayout";
@@ -0,0 +1,7 @@
1
+ import { type ElementRegistration } from '#package/domain';
2
+ /**
3
+ * The configurator's default element registrations, passed to `withDefaultElements`. A project
4
+ * element registered under the same name replaces one: `ConfiguratorLayout` is the built-in UI of a
5
+ * loaded configuration.
6
+ */
7
+ export declare const defaultConfiguratorElements: readonly ElementRegistration[];
@@ -0,0 +1 @@
1
+ import{createCustomPhoenixLayoutElement as o}from"#package/domain";import{DefaultConfiguratorLayout as r}from"./DefaultConfiguratorLayout.js";import{ConfiguratorLayoutName as t}from"./configurator-layout-name.js";export const defaultConfiguratorElements=[o(t,r)];
@@ -4,6 +4,7 @@ export { RootPage } from './RootPage.js';
4
4
  export { NewConfiguratorPage } from './NewConfiguratorPage.js';
5
5
  export { ConfiguratorRootErrorPage } from './ConfiguratorErrorPage.js';
6
6
  export { ConfiguratorNotFoundPage } from './ConfiguratorNotFoundPage.js';
7
+ export { defaultConfiguratorElements } from './default-configurator-elements.js';
7
8
  export { DevContextFallback } from './error-boundaries/DevContextFallback.js';
8
9
  export { DevLoadingFallback } from './error-boundaries/DevLoadingFallback.js';
9
10
  export { GeneralErrorFallback, DevGeneralErrorFallback, ProdGeneralErrorFallback } from './error-boundaries/index.js';
@@ -1 +1 @@
1
- export{ConfiguratorRoot}from"./ConfiguratorRoot.js";export{LoadedConfiguratorDetailPage}from"./LoadedConfiguratorDetailPage.js";export{RootPage}from"./RootPage.js";export{NewConfiguratorPage}from"./NewConfiguratorPage.js";export{ConfiguratorRootErrorPage}from"./ConfiguratorErrorPage.js";export{ConfiguratorNotFoundPage}from"./ConfiguratorNotFoundPage.js";export{DevContextFallback}from"./error-boundaries/DevContextFallback.js";export{DevLoadingFallback}from"./error-boundaries/DevLoadingFallback.js";export{GeneralErrorFallback,DevGeneralErrorFallback,ProdGeneralErrorFallback}from"./error-boundaries/index.js";export{LoadingErrorBoundary}from"./error-boundaries/LoadingErrorBoundary.js";
1
+ export{ConfiguratorRoot}from"./ConfiguratorRoot.js";export{LoadedConfiguratorDetailPage}from"./LoadedConfiguratorDetailPage.js";export{RootPage}from"./RootPage.js";export{NewConfiguratorPage}from"./NewConfiguratorPage.js";export{ConfiguratorRootErrorPage}from"./ConfiguratorErrorPage.js";export{ConfiguratorNotFoundPage}from"./ConfiguratorNotFoundPage.js";export{defaultConfiguratorElements}from"./default-configurator-elements.js";export{DevContextFallback}from"./error-boundaries/DevContextFallback.js";export{DevLoadingFallback}from"./error-boundaries/DevLoadingFallback.js";export{GeneralErrorFallback,DevGeneralErrorFallback,ProdGeneralErrorFallback}from"./error-boundaries/index.js";export{LoadingErrorBoundary}from"./error-boundaries/LoadingErrorBoundary.js";
@@ -2,7 +2,7 @@ import type { DraggableSurface } from '#package/domain';
2
2
  import { HotspotDragHandleVariant } from '#package/domain';
3
3
  import type { SceneEntitySpecificProps, SceneHtmlOpacityProps, SceneHtmlPositionProps, SceneHtmlVisibilityProps } from '../../scene-html/index.js';
4
4
  export interface HotspotDragHandleProps extends SceneHtmlOpacityProps, SceneHtmlVisibilityProps, SceneHtmlPositionProps, SceneEntitySpecificProps {
5
- readonly surfaces: DraggableSurface[];
5
+ readonly surfaces: readonly DraggableSurface[];
6
6
  readonly instanceName: string;
7
7
  readonly handleSize?: number;
8
8
  readonly variant?: HotspotDragHandleVariant;
@@ -3,7 +3,7 @@ import { type DraggableSurface } from '#package/domain';
3
3
  import { type SceneEntitySpecificProps, type SceneHtmlOpacityProps, type SceneHtmlPositionProps, type SceneHtmlVisibilityProps } from '../../scene-html/index.js';
4
4
  export declare const useHotspotHovered: () => boolean;
5
5
  export interface HotspotDragSceneHandleProps extends SceneHtmlOpacityProps, SceneHtmlVisibilityProps, SceneHtmlPositionProps, SceneEntitySpecificProps {
6
- readonly surfaces: DraggableSurface[];
6
+ readonly surfaces: readonly DraggableSurface[];
7
7
  readonly instanceName: string;
8
8
  readonly children: ReactNode;
9
9
  readonly handleSize?: number;
@@ -37,7 +37,7 @@ export interface DimensionIndicatorProps {
37
37
  readonly labelDirection?: 'auto' | 'ltr' | 'rtl';
38
38
  readonly labelFillOpacity?: number;
39
39
  readonly labelFontStyle?: 'normal' | 'italic';
40
- readonly labelFontWeight?: number | 'normal' | 'bold';
40
+ readonly labelFontWeight?: number | string;
41
41
  readonly labelLetterSpacing?: number;
42
42
  readonly labelLineHeight?: number;
43
43
  readonly labelMaxWidth?: number;
@@ -76,7 +76,7 @@ interface DimensionIndicatorProps {
76
76
  /** Font style. See https://protectwise.github.io/troika/troika-three-text/ */
77
77
  labelFontStyle?: 'normal' | 'italic';
78
78
  /** Font weight. See https://protectwise.github.io/troika/troika-three-text/ */
79
- labelFontWeight?: number | 'normal' | 'bold';
79
+ labelFontWeight?: number | string;
80
80
  /** Spacing between letters. See https://protectwise.github.io/troika/troika-three-text/ */
81
81
  labelLetterSpacing?: number;
82
82
  /** Line height as a multiple of the font size. See https://protectwise.github.io/troika/troika-three-text/ */
@@ -1,6 +1,6 @@
1
1
  import { type Size } from '@react-three/fiber';
2
2
  import { type Camera, Vector2, Vector3 } from 'three';
3
- import type { DraggableSurface } from '#package/domain';
3
+ import type { DraggableSurface, RotatableSurface } from '#package/domain';
4
4
  /**
5
5
  * Converts mouse coordinates to normalized device coordinates
6
6
  */
@@ -20,7 +20,7 @@ export declare const findSurfaceClosestToPoint: (worldPoint: Vector3, surfaces:
20
20
  * Projects the cursor ray onto a single specified surface. Returns null if the
21
21
  * ray is parallel to or points away from the plane.
22
22
  */
23
- export declare const projectMouseOntoSurface: (mouse: Vector2, surface: DraggableSurface, camera: Camera) => Vector3 | null;
23
+ export declare const projectMouseOntoSurface: (mouse: Vector2, surface: DraggableSurface | RotatableSurface, camera: Camera) => Vector3 | null;
24
24
  /**
25
25
  * Among the camera-facing surfaces the cursor ray actually hits, picks the
26
26
  * intersection closest to the world origin. Used during multi-surface drag-move
@@ -1,7 +1,7 @@
1
1
  import { type Object3D } from 'three';
2
2
  import { type DomainEntityId, type DraggableSurface } from '#package/domain';
3
3
  interface DragHandle {
4
- surfaces: DraggableSurface[];
4
+ surfaces: readonly DraggableSurface[];
5
5
  instanceName: string;
6
6
  }
7
7
  export declare const useDragObject: (entityId: DomainEntityId<string>, object: Object3D | null, dragHandle: DragHandle | undefined, onUpdate: () => void, onDragStart?: () => void, onDragEnd?: () => void) => {
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t,Fragment as a}from"react/jsx-runtime";import s from"lodash-es/isNumber.js";import{memo as r,useEffect as n,useMemo as i}from"react";import{Color as o,RepeatWrapping as l}from"three";import{isRemoteMaterialOverrideComponent as c}from"#package/domain";import{useResourceUrl as p}from"#package/react-sdk";import{useCombinedQueries as M,usePhxGltf as m,useResourceQueryFactories as d}from"../../resources/index.js";import{isPhysicalMaterial as h,isStandardMaterial as u,isWithColor as U}from"../../three/with-material.js";import{ReplacedMaterialTransformations as v}from"./ReplacedMaterialTransformer.js";import{ReplacedMaterialTransitions as g}from"./ReplacedMaterialTransition.js";export const applyRemoteMaterialOverride=(e,t,a,r)=>{let n=t=>{let{offsetX:a,offsetY:r,rotation:n,rotationCenterX:i,rotationCenterY:o,repeatX:c,repeatY:p}=e.state,M=s(a)||s(r),m=s(n),d=s(c)||s(p);return M&&t.offset.set(a??0,r??0),m&&(t.rotation=n,t.center.set(i??0,o??0)),d&&(t.repeat.set(c??1,p??1),t.wrapS=l,t.wrapT=l),t},i=(e,t)=>{if(null===e)t(null);else if(e){let s=r[a.findIndex(t=>t===e)];s&&t(n(s))}};if((u(t)||h(t))&&(i(e.state.textureUrl,e=>{t.map=e}),e.state.color&&t.color.set(new o(e.state.color)),i(e.state.roughnessMapUrl,e=>{t.roughnessMap=e}),s(e.state.roughness)&&(t.roughness=e.state.roughness),i(e.state.bumpMapUrl,e=>{t.bumpMap=e}),s(e.state.bumpScale)&&(t.bumpScale=e.state.bumpScale),i(e.state.metalnessMapUrl,e=>{t.metalnessMap=e}),s(e.state.metalness)&&(t.metalness=e.state.metalness),s(e.state.envMapIntensity)&&(t.envMapIntensity=e.state.envMapIntensity),void 0!==e.state.toneMapped&&(t.toneMapped=e.state.toneMapped),void 0!==e.state.emissive&&t.emissive.set(new o(e.state.emissive)),void 0!==e.state.emissiveIntensity&&(t.emissiveIntensity=e.state.emissiveIntensity),i(e.state.alphaMapUrl,e=>{t.alphaMap=e}),void 0!==e.state.transparent&&(t.transparent=e.state.transparent),s(e.state.opacity)&&(t.opacity=e.state.opacity),i(e.state.aoMapUrl,e=>{t.aoMap=e}),s(e.state.aoMapIntensity)&&(t.aoMapIntensity=e.state.aoMapIntensity),i(e.state.displacementMapUrl,e=>{t.displacementMap=e}),s(e.state.displacementScale)&&(t.displacementScale=e.state.displacementScale),i(e.state.lightMapUrl,e=>{t.lightMap=e}),s(e.state.lightMapIntensity)&&(t.lightMapIntensity=e.state.lightMapIntensity),i(e.state.envMapUrl,e=>{t.envMap=e}),s(e.state.envMapIntensity)&&(t.envMapIntensity=e.state.envMapIntensity),s(e.state.blendingMode)&&(t.blending=e.state.blendingMode),i(e.state.normalMapUrl,e=>{t.normalMap=e}),s(e.state.normalScale)&&t.normalScale.set(e.state.normalScale,e.state.normalScale),void 0!==e.state.wireframe&&(t.wireframe=e.state.wireframe)),h(t)&&(void 0!==e.state.clearcoat&&(t.clearcoat=e.state.clearcoat),void 0!==e.state.clearcoatRoughness&&(t.clearcoatRoughness=e.state.clearcoatRoughness),void 0!==e.state.iridescence&&(t.iridescence=e.state.iridescence),void 0!==e.state.iridescenceIor&&(t.iridescenceIOR=e.state.iridescenceIor),s(e.state.sheen)&&(t.sheen=e.state.sheen),void 0!==e.state.sheenColor&&U(t)&&t.sheenColor.set(new o(e.state.sheenColor)),s(e.state.sheenRoughness)&&(t.sheenRoughness=e.state.sheenRoughness),i(e.state.anisotropyMapUrl,e=>{t.anisotropyMap=e}),s(e.state.anisotropyStrength)&&(t.anisotropy=e.state.anisotropyStrength),s(e.state.anisotropyRotation)&&(t.anisotropyRotation=e.state.anisotropyRotation),s(e.state.ior)&&(t.ior=e.state.ior),s(e.state.reflectivity)&&(t.reflectivity=e.state.reflectivity),s(e.state.transmission)&&(t.transmission=e.state.transmission),s(e.state.thickness)&&(t.thickness=e.state.thickness),s(e.state.attenuationDistance)&&(t.attenuationDistance=e.state.attenuationDistance),void 0!==e.state.attenuationColor&&t.attenuationColor.set(new o(e.state.attenuationColor)),s(e.state.specularIntensity)&&(t.specularIntensity=e.state.specularIntensity),void 0!==e.state.specularColor&&t.specularColor.set(new o(e.state.specularColor)),i(e.state.specularIntensityMapUrl,e=>{t.specularIntensityMap=e}),i(e.state.specularColorMapUrl,e=>{t.specularColorMap=e}),i(e.state.clearcoatNormalMapUrl,e=>{t.clearcoatNormalMap=e}),s(e.state.clearcoatNormalScale)&&t.clearcoatNormalScale.set(e.state.clearcoatNormalScale,e.state.clearcoatNormalScale),i(e.state.clearcoatMapUrl,e=>{t.clearcoatMap=e}),i(e.state.clearcoatRoughnessMapUrl,e=>{t.clearcoatRoughnessMap=e}),i(e.state.iridescenceMapUrl,e=>{t.iridescenceMap=e}),void 0!==e.state.iridescenceThicknessRange&&(t.iridescenceThicknessRange=e.state.iridescenceThicknessRange),i(e.state.iridescenceThicknessMapUrl,e=>{t.iridescenceThicknessMap=e}),i(e.state.sheenColorMapUrl,e=>{t.sheenColorMap=e}),i(e.state.sheenRoughnessMapUrl,e=>{t.sheenRoughnessMap=e}),i(e.state.transmissionMapUrl,e=>{t.transmissionMap=e}),i(e.state.thicknessMapUrl,e=>{t.thicknessMap=e})),u(t)&&!h(t)){let a=[void 0!==e.state.clearcoat?"clearcoat":"",void 0!==e.state.clearcoatRoughness?"clearcoatRoughness":"",void 0!==e.state.iridescence?"iridescence":"",void 0!==e.state.iridescenceIor?"iridescenceIor":"",void 0!==e.state.sheen?"sheen":"",void 0!==e.state.sheenColor?"sheenColor":"",void 0!==e.state.sheenRoughness?"sheenRoughness":"",void 0!==e.state.anisotropyMapUrl?"anisotropyMapUrl":"",void 0!==e.state.anisotropyStrength?"anisotropyStrength":"",void 0!==e.state.anisotropyRotation?"anisotropyRotation":"",void 0!==e.state.ior?"ior":"",void 0!==e.state.reflectivity?"reflectivity":"",void 0!==e.state.transmission?"transmission":"",void 0!==e.state.thickness?"thickness":"",void 0!==e.state.attenuationDistance?"attenuationDistance":"",void 0!==e.state.attenuationColor?"attenuationColor":"",void 0!==e.state.specularIntensity?"specularIntensity":"",void 0!==e.state.specularColor?"specularColor":"",void 0!==e.state.specularIntensityMapUrl?"specularIntensityMapUrl":"",void 0!==e.state.specularColorMapUrl?"specularColorMapUrl":"",void 0!==e.state.clearcoatNormalMapUrl?"clearcoatNormalMapUrl":"",void 0!==e.state.clearcoatNormalScale?"clearcoatNormalScale":"",void 0!==e.state.clearcoatMapUrl?"clearcoatMapUrl":"",void 0!==e.state.clearcoatRoughnessMapUrl?"clearcoatRoughnessMapUrl":"",void 0!==e.state.iridescenceMapUrl?"iridescenceMapUrl":"",void 0!==e.state.iridescenceThicknessRange?"iridescenceThicknessRange":"",void 0!==e.state.iridescenceThicknessMapUrl?"iridescenceThicknessMapUrl":"",void 0!==e.state.sheenColorMapUrl?"sheenColorMapUrl":"",void 0!==e.state.sheenRoughnessMapUrl?"sheenRoughnessMapUrl":"",void 0!==e.state.transmissionMapUrl?"transmissionMapUrl":"",void 0!==e.state.thicknessMapUrl?"thicknessMapUrl":""].filter(Boolean);a.length>0&&console.warn(`[Phoenix] Material override properties [${a.join(", ")}] were ignored because the target material "${t.name}" is a MeshStandardMaterial, not a MeshPhysicalMaterial. These properties require MeshPhysicalMaterial. Ensure the source material in the override file uses a physical property (e.g. clearcoat) to trigger MeshPhysicalMaterial.`)}};let y=["textureUrl","roughnessMapUrl","bumpMapUrl","metalnessMapUrl","anisotropyMapUrl","normalMapUrl","alphaMapUrl","aoMapUrl","displacementMapUrl","lightMapUrl","envMapUrl","specularIntensityMapUrl","specularColorMapUrl","clearcoatNormalMapUrl","clearcoatMapUrl","clearcoatRoughnessMapUrl","iridescenceMapUrl","iridescenceThicknessMapUrl","sheenColorMapUrl","sheenRoughnessMapUrl","transmissionMapUrl","thicknessMapUrl"];export const getMaterialOverrideTextureNames=e=>y.flatMap(t=>{let a=e.state[t];return"string"==typeof a&&""!==a?[a]:[]});export const RemoteReplacedMaterial=r(s=>{let{overrideComponent:r,original:o,object:l}=s,{getResourceUrl:h}=p(),u=i(()=>[r].reduce((e,t)=>(c(t)&&e.push(t.state.fileUrl),e),[]),[r]),U=i(()=>getMaterialOverrideTextureNames(r),[r]),y=m(u.map(h)),{createTextureQuery:R}=d(),f=M(U.map(R)),I=i(()=>f.map(e=>e.clone()),[f]),C=i(()=>{let e=y[u.findIndex(e=>e===r.state.fileUrl)],t=e?.materials[r.state.materialName];if(null==t)throw Error(`Material with name '${r.state.materialName}' not found in '${r.state.fileUrl}'`);let a=t.clone();return applyRemoteMaterialOverride(r,a,U,I),a},[r,u,y,U,I]);return n(()=>(l.material=C,l.material.name=o.name,()=>{l.material=o}),[l,o,C]),t(a,{children:[e(v,{material:C,instanceName:r.componentInstance.instanceName}),e(g,{material:C,instanceName:r.componentInstance.instanceName})]})});
1
+ import{jsx as e,jsxs as t,Fragment as a}from"react/jsx-runtime";import s from"lodash-es/isNumber.js";import{memo as r,useEffect as n,useMemo as o}from"react";import{Color as i,RepeatWrapping as l}from"three";import{isRemoteMaterialOverrideComponent as c}from"#package/domain";import{useResourceUrl as p}from"#package/react-sdk";import{useCombinedQueries as M,usePhxGltf as m,useResourceQueryFactories as d}from"../../resources/index.js";import{isPhysicalMaterial as h,isStandardMaterial as u,isWithColor as v}from"../../three/with-material.js";import{ReplacedMaterialTransformations as U}from"./ReplacedMaterialTransformer.js";import{ReplacedMaterialTransitions as y}from"./ReplacedMaterialTransition.js";export const applyRemoteMaterialOverride=(e,t,a,r)=>{let n=t=>{let{offsetX:a,offsetY:r,rotation:n,rotationCenterX:o,rotationCenterY:i,repeatX:c,repeatY:p}=e.state,M=s(a)||s(r),m=s(n),d=s(c)||s(p);return M&&t.offset.set(a??0,r??0),m&&(t.rotation=n,t.center.set(o??0,i??0)),d&&(t.repeat.set(c??1,p??1),t.wrapS=l,t.wrapT=l),t},o=(e,t)=>{if(null===e)t(null);else if(e){let s=r[a.findIndex(t=>t===e)];s&&t(n(s))}};if((u(t)||h(t))&&(o(e.state.textureUrl,e=>{t.map=e}),e.state.color&&t.color.set(new i(e.state.color)),o(e.state.roughnessMapUrl,e=>{t.roughnessMap=e}),s(e.state.roughness)&&(t.roughness=e.state.roughness),o(e.state.bumpMapUrl,e=>{t.bumpMap=e}),s(e.state.bumpScale)&&(t.bumpScale=e.state.bumpScale),o(e.state.metalnessMapUrl,e=>{t.metalnessMap=e}),s(e.state.metalness)&&(t.metalness=e.state.metalness),s(e.state.envMapIntensity)&&(t.envMapIntensity=e.state.envMapIntensity),void 0!==e.state.toneMapped&&(t.toneMapped=e.state.toneMapped),void 0!==e.state.emissive&&t.emissive.set(new i(e.state.emissive)),void 0!==e.state.emissiveIntensity&&(t.emissiveIntensity=e.state.emissiveIntensity),o(e.state.alphaMapUrl,e=>{t.alphaMap=e}),void 0!==e.state.transparent&&(t.transparent=e.state.transparent),s(e.state.opacity)&&(t.opacity=e.state.opacity),o(e.state.aoMapUrl,e=>{t.aoMap=e}),s(e.state.aoMapIntensity)&&(t.aoMapIntensity=e.state.aoMapIntensity),o(e.state.displacementMapUrl,e=>{t.displacementMap=e}),s(e.state.displacementScale)&&(t.displacementScale=e.state.displacementScale),o(e.state.lightMapUrl,e=>{t.lightMap=e}),s(e.state.lightMapIntensity)&&(t.lightMapIntensity=e.state.lightMapIntensity),o(e.state.envMapUrl,e=>{t.envMap=e}),s(e.state.envMapIntensity)&&(t.envMapIntensity=e.state.envMapIntensity),s(e.state.blendingMode)&&(t.blending=e.state.blendingMode),o(e.state.normalMapUrl,e=>{t.normalMap=e}),s(e.state.normalScale)&&t.normalScale.set(e.state.normalScale,e.state.normalScale),void 0!==e.state.wireframe&&(t.wireframe=e.state.wireframe)),h(t)){void 0!==e.state.clearcoat&&(t.clearcoat=e.state.clearcoat),void 0!==e.state.clearcoatRoughness&&(t.clearcoatRoughness=e.state.clearcoatRoughness),void 0!==e.state.iridescence&&(t.iridescence=e.state.iridescence),void 0!==e.state.iridescenceIor&&(t.iridescenceIOR=e.state.iridescenceIor),s(e.state.sheen)&&(t.sheen=e.state.sheen),void 0!==e.state.sheenColor&&v(t)&&t.sheenColor.set(new i(e.state.sheenColor)),s(e.state.sheenRoughness)&&(t.sheenRoughness=e.state.sheenRoughness),o(e.state.anisotropyMapUrl,e=>{t.anisotropyMap=e}),s(e.state.anisotropyStrength)&&(t.anisotropy=e.state.anisotropyStrength),s(e.state.anisotropyRotation)&&(t.anisotropyRotation=e.state.anisotropyRotation),s(e.state.ior)&&(t.ior=e.state.ior),s(e.state.reflectivity)&&(t.reflectivity=e.state.reflectivity),s(e.state.transmission)&&(t.transmission=e.state.transmission),s(e.state.thickness)&&(t.thickness=e.state.thickness),s(e.state.attenuationDistance)&&(t.attenuationDistance=e.state.attenuationDistance),void 0!==e.state.attenuationColor&&t.attenuationColor.set(new i(e.state.attenuationColor)),s(e.state.specularIntensity)&&(t.specularIntensity=e.state.specularIntensity),void 0!==e.state.specularColor&&t.specularColor.set(new i(e.state.specularColor)),o(e.state.specularIntensityMapUrl,e=>{t.specularIntensityMap=e}),o(e.state.specularColorMapUrl,e=>{t.specularColorMap=e}),o(e.state.clearcoatNormalMapUrl,e=>{t.clearcoatNormalMap=e}),s(e.state.clearcoatNormalScale)&&t.clearcoatNormalScale.set(e.state.clearcoatNormalScale,e.state.clearcoatNormalScale),o(e.state.clearcoatMapUrl,e=>{t.clearcoatMap=e}),o(e.state.clearcoatRoughnessMapUrl,e=>{t.clearcoatRoughnessMap=e}),o(e.state.iridescenceMapUrl,e=>{t.iridescenceMap=e});let[a,r]=e.state.iridescenceThicknessRange??[];void 0!==a&&void 0!==r&&(t.iridescenceThicknessRange=[a,r]),o(e.state.iridescenceThicknessMapUrl,e=>{t.iridescenceThicknessMap=e}),o(e.state.sheenColorMapUrl,e=>{t.sheenColorMap=e}),o(e.state.sheenRoughnessMapUrl,e=>{t.sheenRoughnessMap=e}),o(e.state.transmissionMapUrl,e=>{t.transmissionMap=e}),o(e.state.thicknessMapUrl,e=>{t.thicknessMap=e})}if(u(t)&&!h(t)){let a=[void 0!==e.state.clearcoat?"clearcoat":"",void 0!==e.state.clearcoatRoughness?"clearcoatRoughness":"",void 0!==e.state.iridescence?"iridescence":"",void 0!==e.state.iridescenceIor?"iridescenceIor":"",void 0!==e.state.sheen?"sheen":"",void 0!==e.state.sheenColor?"sheenColor":"",void 0!==e.state.sheenRoughness?"sheenRoughness":"",void 0!==e.state.anisotropyMapUrl?"anisotropyMapUrl":"",void 0!==e.state.anisotropyStrength?"anisotropyStrength":"",void 0!==e.state.anisotropyRotation?"anisotropyRotation":"",void 0!==e.state.ior?"ior":"",void 0!==e.state.reflectivity?"reflectivity":"",void 0!==e.state.transmission?"transmission":"",void 0!==e.state.thickness?"thickness":"",void 0!==e.state.attenuationDistance?"attenuationDistance":"",void 0!==e.state.attenuationColor?"attenuationColor":"",void 0!==e.state.specularIntensity?"specularIntensity":"",void 0!==e.state.specularColor?"specularColor":"",void 0!==e.state.specularIntensityMapUrl?"specularIntensityMapUrl":"",void 0!==e.state.specularColorMapUrl?"specularColorMapUrl":"",void 0!==e.state.clearcoatNormalMapUrl?"clearcoatNormalMapUrl":"",void 0!==e.state.clearcoatNormalScale?"clearcoatNormalScale":"",void 0!==e.state.clearcoatMapUrl?"clearcoatMapUrl":"",void 0!==e.state.clearcoatRoughnessMapUrl?"clearcoatRoughnessMapUrl":"",void 0!==e.state.iridescenceMapUrl?"iridescenceMapUrl":"",void 0!==e.state.iridescenceThicknessRange?"iridescenceThicknessRange":"",void 0!==e.state.iridescenceThicknessMapUrl?"iridescenceThicknessMapUrl":"",void 0!==e.state.sheenColorMapUrl?"sheenColorMapUrl":"",void 0!==e.state.sheenRoughnessMapUrl?"sheenRoughnessMapUrl":"",void 0!==e.state.transmissionMapUrl?"transmissionMapUrl":"",void 0!==e.state.thicknessMapUrl?"thicknessMapUrl":""].filter(Boolean);a.length>0&&console.warn(`[Phoenix] Material override properties [${a.join(", ")}] were ignored because the target material "${t.name}" is a MeshStandardMaterial, not a MeshPhysicalMaterial. These properties require MeshPhysicalMaterial. Ensure the source material in the override file uses a physical property (e.g. clearcoat) to trigger MeshPhysicalMaterial.`)}};let g=["textureUrl","roughnessMapUrl","bumpMapUrl","metalnessMapUrl","anisotropyMapUrl","normalMapUrl","alphaMapUrl","aoMapUrl","displacementMapUrl","lightMapUrl","envMapUrl","specularIntensityMapUrl","specularColorMapUrl","clearcoatNormalMapUrl","clearcoatMapUrl","clearcoatRoughnessMapUrl","iridescenceMapUrl","iridescenceThicknessMapUrl","sheenColorMapUrl","sheenRoughnessMapUrl","transmissionMapUrl","thicknessMapUrl"];export const getMaterialOverrideTextureNames=e=>g.flatMap(t=>{let a=e.state[t];return"string"==typeof a&&""!==a?[a]:[]});export const RemoteReplacedMaterial=r(s=>{let{overrideComponent:r,original:i,object:l}=s,{getResourceUrl:h}=p(),u=o(()=>[r].reduce((e,t)=>(c(t)&&e.push(t.state.fileUrl),e),[]),[r]),v=o(()=>getMaterialOverrideTextureNames(r),[r]),g=m(u.map(h)),{createTextureQuery:f}=d(),R=M(v.map(f)),I=o(()=>R.map(e=>e.clone()),[R]),C=o(()=>{let e=g[u.findIndex(e=>e===r.state.fileUrl)],t=e?.materials[r.state.materialName];if(null==t)throw Error(`Material with name '${r.state.materialName}' not found in '${r.state.fileUrl}'`);let a=t.clone();return applyRemoteMaterialOverride(r,a,v,I),a},[r,u,g,v,I]);return n(()=>(l.material=C,l.material.name=i.name,()=>{l.material=i}),[l,i,C]),t(a,{children:[e(U,{material:C,instanceName:r.componentInstance.instanceName}),e(y,{material:C,instanceName:r.componentInstance.instanceName})]})});
@@ -29,7 +29,7 @@ export interface SceneEntityTextDecalV2Props {
29
29
  text: string;
30
30
  textureUrl?: string | undefined;
31
31
  roughnessMapUrl?: string | undefined;
32
- preloadFonts?: string[] | undefined;
32
+ preloadFonts?: readonly string[] | undefined;
33
33
  invertedBump?: boolean | undefined;
34
34
  }
35
35
  export interface SceneEntityObjectTextDecalProps {
@@ -3,9 +3,15 @@ export interface AssistantToolChipsProps {
3
3
  readonly tools: readonly AssistantToolItem[];
4
4
  /** True while the reply runs and this row is its newest block: the assistant is at work on it. */
5
5
  readonly isActive: boolean;
6
+ /** True when the row offers Undo: no reply runs, and the step of the undo history the configuration is at is one of its changes. */
7
+ readonly canUndo: boolean;
8
+ /** Undoes the changes of the given tool calls while one of them is the step the configuration is at. */
9
+ readonly onUndo: (toolCallIds: ReadonlySet<string>) => void;
6
10
  }
7
11
  /**
8
12
  * A row of notes on what the assistant did in a reply, one per tool call. A click on a note logs
9
- * the input and the result of its call to the console.
13
+ * the input and the result of its call to the console. While one of the row's changes is the step
14
+ * of the undo history the configuration is at, an Undo after the notes takes the row's changes
15
+ * back, up to a change the user made in between.
10
16
  */
11
- export declare const AssistantToolChips: import("react").MemoExoticComponent<({ tools, isActive }: AssistantToolChipsProps) => import("react/jsx-runtime").JSX.Element>;
17
+ export declare const AssistantToolChips: import("react").MemoExoticComponent<({ tools, isActive, canUndo, onUndo }: AssistantToolChipsProps) => import("react/jsx-runtime").JSX.Element>;
@@ -1 +1 @@
1
- import{jsx as t,jsxs as e}from"react/jsx-runtime";import{Tooltip as a,styled as i}from"@mui/material";import{memo as s,useCallback as o}from"react";import{match as n}from"ts-pattern";import{useLocalizable as r}from"#package/react-sdk";import{PhxIcon as l}from"#package/ui-sdk";import{AssistantPanelName as d}from"./theme.js";let m={id:"sdk.assistant.tool.updateDesign.label",message:"Update design"},c={id:"sdk.assistant.tool.readDesign.label",message:"Read design"},p={id:"sdk.assistant.tool.mistake.hint",message:"The assistant made a mistake."},h={id:"sdk.assistant.tool.cancelled.hint",message:"Stopped before it finished."},g={id:"sdk.assistant.tool.noResult.hint",message:"The result of this step was lost. It may or may not have been done."},f={id:"sdk.assistant.tool.toolBudget.hint",message:"Not done: the assistant reached its limit of steps for one message."},u=i("div",{name:d,slot:"chips"})(({theme:{palette:t,spacing:e,typography:a}})=>({...a.caption,alignItems:"start",color:t.text.secondary,display:"grid",gap:e(.75),gridTemplateColumns:"min-content minmax(0, 1fr)"})),k=i("span",{name:d,slot:"activity"})(({theme:{typography:t}})=>({blockSize:`calc(${t.caption.lineHeight} * 1em)`,display:"grid",placeItems:"center"})),x=i(l,{name:d,slot:"activityIcon"})({fontSize:14,'[data-chips="active"] &':{animation:"phx-assistant-turn 2.4s linear infinite","@media (prefers-reduced-motion: reduce)":{animation:"none"}},"@keyframes phx-assistant-turn":{to:{rotate:"360deg"}}}),w=i("span",{name:d,slot:"chip"})(({theme:{palette:t,spacing:e}})=>({cursor:"default",display:"inline-block",whiteSpace:"nowrap","&:not(:last-child)::after":{color:t.text.secondary,content:'"\xb7"',display:"inline-block",marginInline:e(.75),textDecoration:"none"},'&[data-chip="failed"]':{color:t.error.main},'&[data-chip="flawed"]':{textDecoration:"line-through",textDecorationColor:t.error.main}})),y=s(({tool:e})=>{let{chip:i,input:s,result:l}=e,d=r(m),u=r(c),k=r(p),x=r(h),y=r(g),b=r(f),v=n(i.label).with({kind:"text"},({text:t})=>t).with({kind:"updateDesign"},()=>d).with({kind:"readDesign"},()=>u).exhaustive(),C=o(()=>{console.info(`Assistant tool call "${v}"`,{input:s,result:l})},[s,v,l]);return t(a,{title:n(i).with({errorCode:"cancelled"},()=>x).with({errorCode:"no_result"},()=>y).with({errorCode:"tool_budget"},()=>b).with({state:"failed"},{state:"flawed"},()=>k).otherwise(()=>""),placement:"top-start",children:t(w,{onClick:C,"data-chip":i.state,children:v})})});export const AssistantToolChips=s(({tools:a,isActive:i})=>e(u,{"data-chips":i?"active":"done","aria-busy":i,children:[t(k,{children:t(x,{name:"Gear"})}),t("div",{children:a.map(e=>t(y,{tool:e},e.id))})]}));
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{ButtonBase as i,Tooltip as a,styled as n}from"@mui/material";import{memo as o,useCallback as s}from"react";import{match as r}from"ts-pattern";import{useLocalizable as d}from"#package/react-sdk";import{PhxIcon as l}from"#package/ui-sdk";import{AssistantPanelName as m}from"./theme.js";let c={id:"sdk.assistant.tool.updateDesign.label",message:"Update design"},p={id:"sdk.assistant.tool.readDesign.label",message:"Read design"},h={id:"sdk.assistant.tool.mistake.hint",message:"The assistant made a mistake."},u={id:"sdk.assistant.tool.cancelled.hint",message:"Stopped before it finished."},f={id:"sdk.assistant.tool.noResult.hint",message:"The result of this step was lost. It may or may not have been done."},g={id:"sdk.assistant.tool.toolBudget.hint",message:"Not done: the assistant reached its limit of steps for one message."},k={id:"sdk.assistant.tool.undo.label",message:"Undo"},x=n("div",{name:m,slot:"chips"})(({theme:{palette:e,spacing:t,typography:i}})=>({...i.caption,alignItems:"start",color:e.text.secondary,display:"grid",gap:t(.75),gridTemplateColumns:"min-content minmax(0, 1fr)"})),y=n("span",{name:m,slot:"activity"})(({theme:{typography:e}})=>({blockSize:`calc(${e.caption.lineHeight} * 1em)`,display:"grid",placeItems:"center"})),w=n(l,{name:m,slot:"activityIcon"})({fontSize:14,'[data-chips="active"] &':{animation:"phx-assistant-turn 2.4s linear infinite","@media (prefers-reduced-motion: reduce)":{animation:"none"}},"@keyframes phx-assistant-turn":{to:{rotate:"360deg"}}}),b=n("span",{name:m,slot:"chip"})(({theme:{palette:e,spacing:t}})=>({cursor:"default",display:"inline-block",whiteSpace:"nowrap","&:not(:last-of-type)::after":{color:e.text.secondary,content:'"\xb7"',display:"inline-block",marginInline:t(.75),textDecoration:"none"},'&[data-chip="failed"]':{color:e.error.main},'&[data-chip="flawed"]':{textDecoration:"line-through",textDecorationColor:e.error.main}})),v=n(i,{name:m,slot:"undoButton"})(({theme:{palette:e,shape:t,spacing:i}})=>({alignItems:"center",animation:"phx-assistant-undo-in 150ms ease-out",borderRadius:t.borderRadius,color:e.primary.main,display:"inline-flex",font:"inherit",gap:i(.5),marginInlineStart:i(1),verticalAlign:"top","&:hover":{textDecoration:"underline"},"@media (prefers-reduced-motion: reduce)":{animation:"none"},"@keyframes phx-assistant-undo-in":{from:{opacity:0}}})),C=o(({tool:t})=>{let{chip:i,input:n,result:o}=t,l=d(c),m=d(p),k=d(h),x=d(u),y=d(f),w=d(g),v=r(i.label).with({kind:"text"},({text:e})=>e).with({kind:"updateDesign"},()=>l).with({kind:"readDesign"},()=>m).exhaustive(),C=s(()=>{console.info(`Assistant tool call "${v}"`,{input:n,result:o})},[n,v,o]);return e(a,{title:r(i).with({errorCode:"cancelled"},()=>x).with({errorCode:"no_result"},()=>y).with({errorCode:"tool_budget"},()=>w).with({state:"failed"},{state:"flawed"},()=>k).otherwise(()=>""),placement:"top-start",children:e(b,{onClick:C,"data-chip":i.state,children:v})})});export const AssistantToolChips=o(({tools:i,isActive:a,canUndo:n,onUndo:o})=>{let r=d(k),m=s(()=>{o(new Set(i.map(({id:e})=>e)))},[o,i]);return t(x,{"data-chips":a?"active":"done","aria-busy":a,children:[e(y,{children:e(w,{name:"Gear"})}),t("div",{children:[i.map(t=>e(C,{tool:t},t.id)),n&&t(v,{onClick:m,children:[e(l,{name:"ArrowCounterClockwise",fontSize:"inherit"}),r]})]})]})});
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * The message input of the panel. Enter sends and Shift+Enter adds a line. While a reply runs the
3
3
  * send control is a Stop control and the input stays editable, so the next message can be written.
4
- * A thread this session may not continue disables the input and says why.
4
+ * A thread this session may not continue takes a message like any other: it is resumed first, with
5
+ * the input read-only meanwhile, and the message stays in the input when that fails.
5
6
  */
6
7
  export declare const AssistantComposer: () => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Trans as i}from"@lingui/react";import{IconButton as o,InputBase as r,Tooltip as t,styled as n}from"@mui/material";import{useCallback as s,useRef as d,useState as l}from"react";import{useEagerObservableSelector as m,useLocalizable as c}from"#package/react-sdk";import{PhxIcon as p,useResponsive as u}from"#package/ui-sdk";import{useConfigurator as b}from"../../application-runtime/index.js";import{AssistantPanelName as g}from"./theme.js";let h={id:"sdk.assistant.composer.placeholder",message:"Ask or tell me what to change…"},k={id:"sdk.assistant.composer.send.label",message:"Send"},f={id:"sdk.assistant.composer.stop.label",message:"Stop"},x=n("form",{name:g,slot:"composer"})(({theme:{palette:e,spacing:a}})=>({borderBlockStart:`1px solid ${e.divider}`,display:"grid",gap:a(.75),paddingBlock:a(1.25),paddingInline:`var(--phx-sidebar-padding, ${a(2)})`})),y=n("div",{name:g,slot:"inputFrame"})(({theme:{palette:e,spacing:a}})=>({alignItems:"flex-end",border:`1px solid ${e.divider}`,borderRadius:12,display:"flex",gap:a(1),paddingBlock:a(.5),paddingInline:`${a(1.5)} ${a(.5)}`,"&:focus-within":{borderColor:e.primary.main},"&:has(textarea:disabled)":{background:e.action.disabledBackground}})),v=n(r,{name:g,slot:"input"})(({theme:{spacing:e,typography:a}})=>({...a.body2,flex:1,paddingBlock:e(.75)})),B=n(o,{name:g,slot:"sendButton"})(({theme:{palette:e}})=>({background:e.primary.main,borderRadius:8,color:e.primary.contrastText,"&:hover":{background:e.primary.dark},"&.Mui-disabled":{background:e.action.disabledBackground,color:e.action.disabled}})),C=n(o,{name:g,slot:"stopButton"})(({theme:{palette:e}})=>({background:e.text.primary,borderRadius:8,color:e.background.paper,"&:hover":{background:e.text.secondary}})),R=n("span")({background:"currentColor",blockSize:10,borderRadius:2,inlineSize:10,margin:5}),S=n("div",{name:g,slot:"hint"})(({theme:{palette:e,typography:a}})=>({...a.caption,color:e.text.secondary}));export const AssistantComposer=()=>{let{assistantSystem:o}=b(),[r,n]=l(""),g=d(null),{isDesktop:I}=u(),$=c(h),j=c(k),w=c(f),{isReplying:z,isContinuable:F}=m(o.chat$,e=>({isReplying:e.isLoading,isContinuable:e.isContinuable}),[]),A=r.trim(),D=F&&!z&&A.length>0,P=s(()=>{D&&(n(""),o.send(A),I||g.current?.blur())},[o,D,A,I]),T=s(e=>{e.preventDefault(),P()},[P]),E=s(e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),P())},[P]),K=s(()=>{o.stop()},[o]);return a(x,{onSubmit:T,children:[!F&&e(S,{role:"status",children:e(i,{id:"sdk.assistant.composer.notContinuable",message:"This conversation can be read here, but it can no longer be continued."})}),a(y,{children:[e(v,{multiline:!0,maxRows:6,placeholder:$,value:r,disabled:!F,inputRef:g,onChange:e=>n(e.target.value),onKeyDown:E,onFocus:()=>o.setInputFocused(!0),onBlur:()=>o.setInputFocused(!1),inputProps:{"aria-label":$}}),z?e(t,{title:w,placement:"top",children:e(C,{size:"small","aria-label":w,onClick:K,children:e(R,{})})}):e(t,{title:j,placement:"top",children:e("span",{children:e(B,{type:"submit",size:"small","aria-label":j,disabled:!D,children:e(p,{name:"PaperPlaneRightBold",fontSize:"small"})})})})]}),e(S,{children:e(i,{id:"sdk.assistant.composer.disclaimer",message:"AI can be wrong. Check the result."})})]})};
1
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Trans as r}from"@lingui/react";import{IconButton as i,InputBase as o,Tooltip as t,styled as n}from"@mui/material";import{useCallback as s,useRef as l,useState as d}from"react";import{useEagerObservableSelector as m,useLocalizable as p}from"#package/react-sdk";import{PhxIcon as c,useResponsive as u}from"#package/ui-sdk";import{useConfigurator as g}from"../../application-runtime/index.js";import{AssistantPanelName as h}from"./theme.js";let b={id:"sdk.assistant.composer.placeholder",message:"Ask or tell me what to change…"},k={id:"sdk.assistant.composer.send.label",message:"Send"},f={id:"sdk.assistant.composer.stop.label",message:"Stop"},y=n("form",{name:h,slot:"composer"})(({theme:{palette:e,spacing:a}})=>({borderBlockStart:`1px solid ${e.divider}`,display:"grid",gap:a(.75),paddingBlock:a(1.25),paddingInline:`var(--phx-sidebar-padding, ${a(2)})`})),x=n("div",{name:h,slot:"inputFrame"})(({theme:{palette:e,spacing:a}})=>({alignItems:"flex-end",border:`1px solid ${e.divider}`,borderRadius:12,display:"flex",gap:a(1),paddingBlock:a(.5),paddingInline:`${a(1.5)} ${a(.5)}`,"&:focus-within":{borderColor:e.primary.main}})),v=n(o,{name:h,slot:"input"})(({theme:{spacing:e,typography:a}})=>({...a.body2,flex:1,paddingBlock:e(.75)})),R=n(i,{name:h,slot:"sendButton"})(({theme:{palette:e}})=>({background:e.primary.main,borderRadius:8,color:e.primary.contrastText,"&:hover":{background:e.primary.dark},"&.Mui-disabled":{background:e.action.disabledBackground,color:e.action.disabled}})),B=n(i,{name:h,slot:"stopButton"})(({theme:{palette:e}})=>({background:e.text.primary,borderRadius:8,color:e.background.paper,"&:hover":{background:e.text.secondary}})),C=n("span")({background:"currentColor",blockSize:10,borderRadius:2,inlineSize:10,margin:5}),S=n("div",{name:h,slot:"hint"})(({theme:{palette:e,typography:a}})=>({...a.caption,color:e.text.secondary}));export const AssistantComposer=()=>{let{assistantSystem:i}=g(),[o,n]=d(""),h=l(null),{isDesktop:w}=u(),I=p(b),$=p(k),j=p(f),{isReplying:z,isResuming:F}=m(i.chat$,e=>({isReplying:e.isLoading,isResuming:e.isResuming}),[]),A=o.trim(),D=!z&&!F&&A.length>0,P=s(async()=>{!D||(w||h.current?.blur(),await i.resume()&&(n(""),i.send(A)))},[i,D,A,w]),E=s(e=>{e.preventDefault(),P()},[P]),K=s(e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),P())},[P]),T=s(()=>{i.stop()},[i]);return a(y,{onSubmit:E,children:[a(x,{children:[e(v,{multiline:!0,maxRows:6,placeholder:I,value:o,readOnly:F,inputRef:h,onChange:e=>n(e.target.value),onKeyDown:K,onFocus:()=>i.setInputFocused(!0),onBlur:()=>i.setInputFocused(!1),inputProps:{"aria-label":I}}),z?e(t,{title:j,placement:"top",children:e(B,{size:"small","aria-label":j,onClick:T,children:e(C,{})})}):e(t,{title:$,placement:"top",children:e("span",{children:e(R,{type:"submit",size:"small","aria-label":$,disabled:!D,children:e(c,{name:"PaperPlaneRightBold",fontSize:"small"})})})})]}),e(S,{children:e(r,{id:"sdk.assistant.composer.disclaimer",message:"AI can be wrong. Check the result."})})]})};
@@ -3,5 +3,5 @@ export interface AssistantMarkdownProps {
3
3
  /** True while the text is still arriving, so markup the model has not finished is completed. */
4
4
  readonly isStreaming: boolean;
5
5
  }
6
- /** Assistant text of the thread: Markdown with lists, tables, links and code, without a bubble. */
6
+ /** Assistant text of the thread: Markdown with lists, tables, links, entity links and code, without a bubble. */
7
7
  export declare const AssistantMarkdown: import("react").MemoExoticComponent<({ markdown, isStreaming }: AssistantMarkdownProps) => import("react/jsx-runtime").JSX.Element>;
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{styled as e}from"@mui/material";import{memo as o}from"react";import a from"react-markdown";import i from"remark-gfm";import{completeStreamedMarkdown as n}from"./streamed-markdown.js";import{AssistantPanelName as t}from"./theme.js";let l=e("div",{name:t,slot:"assistantMessage"})(({theme:{palette:r,shape:e,spacing:o,typography:a}})=>({overflowWrap:"anywhere","& > :first-child":{marginBlockStart:0},"& > :last-child":{marginBlockEnd:0},"p, ul, ol, pre, blockquote":{marginBlock:o(1)},"h1, h2, h3, h4, h5, h6":{...a.subtitle2,marginBlock:o(1.5,.5)},"ul, ol":{paddingInlineStart:o(2.5)},a:{color:r.primary.main},code:{background:r.action.hover,borderRadius:e.borderRadius/2,fontFamily:"ui-monospace, Menlo, monospace",fontSize:"0.9em",paddingInline:o(.5)},pre:{background:r.action.hover,borderRadius:e.borderRadius,overflowX:"auto",padding:o(1),code:{background:"none",padding:0}},blockquote:{borderInlineStart:`2px solid ${r.divider}`,color:r.text.secondary,marginInline:0,paddingInlineStart:o(1.5)},"th, td":{borderBlockEnd:`1px solid ${r.divider}`,padding:o(.5,1),textAlign:"start",verticalAlign:"top"}})),d=e("div")({overflowX:"auto",table:{borderCollapse:"collapse",inlineSize:"100%"}}),m={a:({node:e,children:o,...a})=>r("a",{...a,target:"_blank",rel:"noopener noreferrer",children:o}),table:({node:e,children:o,...a})=>r(d,{children:r("table",{...a,children:o})})},s=[i],c=["img"];export const AssistantMarkdown=o(({markdown:e,isStreaming:o})=>r(l,{children:r(a,{components:m,remarkPlugins:s,disallowedElements:c,children:o?n(e):e})}));
1
+ import{jsx as r,Fragment as e}from"react/jsx-runtime";import{styled as o}from"@mui/material";import{memo as n}from"react";import i,{defaultUrlTransform as a}from"react-markdown";import t from"remark-gfm";import{AssistantEntityLink as l,isEntityLinkHref as d,parseEntityLinkTarget as m}from"./entity-link/index.js";import{completeStreamedMarkdown as s}from"./streamed-markdown.js";import{AssistantPanelName as c}from"./theme.js";let p=o("div",{name:c,slot:"assistantMessage"})(({theme:{palette:r,shape:e,spacing:o,typography:n}})=>({overflowWrap:"anywhere","& > :first-child":{marginBlockStart:0},"& > :last-child":{marginBlockEnd:0},"p, ul, ol, pre, blockquote":{marginBlock:o(1)},"h1, h2, h3, h4, h5, h6":{...n.subtitle2,marginBlock:o(1.5,.5)},"ul, ol":{paddingInlineStart:o(2.5)},a:{color:r.primary.main},code:{background:r.action.hover,borderRadius:e.borderRadius/2,fontFamily:"ui-monospace, Menlo, monospace",fontSize:"0.9em",paddingInline:o(.5)},pre:{background:r.action.hover,borderRadius:e.borderRadius,overflowX:"auto",padding:o(1),code:{background:"none",padding:0}},blockquote:{borderInlineStart:`2px solid ${r.divider}`,color:r.text.secondary,marginInline:0,paddingInlineStart:o(1.5)},"th, td":{borderBlockEnd:`1px solid ${r.divider}`,padding:o(.5,1),textAlign:"start",verticalAlign:"top"}})),u=o("div")({overflowX:"auto",table:{borderCollapse:"collapse",inlineSize:"100%"}}),g={a:({node:o,children:n,href:i,...a})=>{if(null==i||!d(i))return r("a",{...a,href:i,target:"_blank",rel:"noopener noreferrer",children:n});let t=m(i);return null==t?r(e,{children:n}):r(l,{id:t,children:n})},table:({node:e,children:o,...n})=>r(u,{children:r("table",{...n,children:o})})},h=[t],f=r=>d(r)?r:a(r),b=["img"];export const AssistantMarkdown=n(({markdown:e,isStreaming:o})=>r(p,{children:r(i,{components:g,remarkPlugins:h,disallowedElements:b,urlTransform:f,children:o?s(e):e})}));
@@ -1,6 +1,10 @@
1
1
  /**
2
2
  * The conversation: user bubbles, assistant Markdown, tool chips, and what the panel
3
- * has to say itself, which is a greeting for an empty thread, a "Thinking…" line and a failure with
4
- * its way out. It follows a streaming reply until the user scrolls up.
3
+ * has to say itself, which is a line while the thread loads, a greeting for an empty thread, a
4
+ * "Thinking…" line and a failure with its way out. It follows a streaming reply until the user scrolls up.
5
+ *
6
+ * A conversation the assistant continued from a summary is painted whole: the threads that were
7
+ * closed come first, each ended by a separator, and the ones still on the server are loaded one at a
8
+ * time from a control above them.
5
9
  */
6
10
  export declare const AssistantThread: () => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- import{jsx as e,jsxs as i}from"react/jsx-runtime";import{Trans as a}from"@lingui/react";import{Button as t,styled as s}from"@mui/material";import{useMemo as r}from"react";import{match as n}from"ts-pattern";import{useEagerObservableValue as o}from"#package/react-sdk";import{PhxIcon as l}from"#package/ui-sdk";import{useConfigurator as d}from"../../application-runtime/index.js";import{AssistantToolChips as m}from"./AssistantChips.js";import{AssistantMarkdown as p}from"./AssistantMarkdown.js";import{describeAssistantFailure as c}from"./assistant-failure.js";import{AssistantPanelName as h}from"./theme.js";import{buildThreadView as g}from"./thread-items.js";import{useFollowStream as u}from"./use-follow-stream.js";let f=s("div",{name:h,slot:"thread"})({display:"grid",position:"relative"}),k=s("div",{name:h,slot:"messages"})(({theme:{spacing:e,typography:i}})=>({...i.body2,display:"flex",flexDirection:"column",gap:e(1.5),overflowY:"auto",overscrollBehavior:"contain",paddingBlock:e(2),paddingInline:`var(--phx-sidebar-padding, ${e(2)})`,"& > :first-child":{marginBlockStart:"auto"}})),v=s("div",{name:h,slot:"userMessage"})(({theme:{palette:e,spacing:i}})=>({alignSelf:"flex-end",background:`hsl(from ${e.primary.main} h s l / 12%)`,borderRadius:"14px 14px 4px 14px",maxInlineSize:"85%",overflowWrap:"anywhere",paddingBlock:i(1),paddingInline:i(1.5),whiteSpace:"pre-wrap"})),w=s("div",{name:h,slot:"greeting"})({}),b=s("div",{name:h,slot:"status"})(({theme:{palette:e,typography:i}})=>({...i.caption,color:e.text.secondary})),x=s("div",{name:h,slot:"notice"})(({theme:{palette:e,shape:i,spacing:a}})=>({alignItems:"center",background:e.action.hover,borderRadius:i.borderRadius,display:"flex",flexWrap:"wrap",gap:a(1),justifyContent:"space-between",paddingBlock:a(1),paddingInline:a(1.5)})),y=s(t,{name:h,slot:"newReplyButton"})(({theme:{palette:e,spacing:i}})=>({background:e.text.primary,borderRadius:"calc(infinity * 1px)",color:e.background.paper,insetBlockEnd:i(1),insetInlineStart:"50%",position:"absolute",translate:"-50% 0","&:hover":{background:e.text.secondary}})),j=({item:i,isActive:a})=>n(i).with({kind:"user"},({text:i})=>e(v,{children:i})).with({kind:"text"},({markdown:i,isStreaming:a})=>e(p,{markdown:i,isStreaming:a})).with({kind:"tools"},({tools:i})=>e(m,{tools:i,isActive:a})).exhaustive();export const AssistantThread=()=>{let{assistantSystem:s}=d(),m=o(s.chat$),{messages:p,isLoading:h}=m,{items:v,isThinking:T}=r(()=>g(p,h),[p,h]),I=r(()=>v.filter(({kind:e})=>"user"===e).length,[v]),S=m.error?c(m.failedStatus):void 0,{scrollerRef:A,hasUnseenContent:B,handleScroll:R,scrollToEnd:C}=u(r(()=>({messages:p,isThinking:T,failure:S?.kind}),[p,T,S?.kind]),I);return i(f,{children:[i(k,{ref:A,onScroll:R,role:"log","aria-live":"polite",children:[m.isLoaded&&0===v.length&&!h&&!S&&e(w,{children:e(a,{id:"sdk.assistant.thread.greeting",message:"Hi. I can answer questions about this design and change it with you. Tell me what you need."})}),v.map(i=>e(j,{item:i,isActive:h&&i===v.at(-1)},i.id)),T&&e(b,{children:e(a,{id:"sdk.assistant.thread.thinking",message:"Thinking…"})}),S&&i(x,{role:"alert",children:[e("span",{children:n(S.kind).with("notAvailable",()=>e(a,{id:"sdk.assistant.failure.notAvailable",message:"The assistant is not available here."})).with("busy",()=>e(a,{id:"sdk.assistant.failure.busy",message:"The assistant is still working on an earlier message."})).with("unavailable",()=>e(a,{id:"sdk.assistant.failure.unavailable",message:"The assistant is unavailable right now."})).exhaustive()}),S.canRetry&&e(t,{size:"small",variant:"outlined",color:"inherit",onClick:s.reloadThread,children:e(a,{id:"sdk.assistant.failure.retry.label",message:"Try again"})})]})]}),B&&e(y,{size:"small",onClick:C,endIcon:e(l,{name:"CaretDown"}),children:e(a,{id:"sdk.assistant.thread.newReply.label",message:"New reply"})})]})};
1
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Trans as i}from"@lingui/react";import{Button as t,styled as s}from"@mui/material";import{useCallback as r,useMemo as n}from"react";import{match as o}from"ts-pattern";import{useEagerObservableValue as l}from"#package/react-sdk";import{PhxIcon as d}from"#package/ui-sdk";import{useConfigurator as m}from"../../application-runtime/index.js";import{AssistantToolChips as c}from"./AssistantChips.js";import{AssistantMarkdown as h}from"./AssistantMarkdown.js";import{describeAssistantFailure as p}from"./assistant-failure.js";import{EntityLinkSelectionProvider as g,useCreateEntityLinkSelection as u}from"./entity-link/index.js";import{AssistantPanelName as k}from"./theme.js";import{buildEarlierThreadItems as f,buildThreadView as v}from"./thread-items.js";import{useFollowStream as b}from"./use-follow-stream.js";let w=s("div",{name:k,slot:"thread"})({display:"grid",position:"relative"}),x=s("div",{name:k,slot:"messages"})(({theme:{spacing:e,typography:a}})=>({...a.body2,display:"flex",flexDirection:"column",gap:e(1.5),overflowY:"auto",overscrollBehavior:"contain",paddingBlock:e(2),paddingInline:`var(--phx-sidebar-padding, ${e(2)})`,"& > :first-child":{marginBlockStart:"auto"}})),y=s("div",{name:k,slot:"userMessage"})(({theme:{palette:e,spacing:a}})=>({alignSelf:"flex-end",background:`hsl(from ${e.primary.main} h s l / 12%)`,borderRadius:"14px 14px 4px 14px",maxInlineSize:"85%",overflowWrap:"anywhere",paddingBlock:a(1),paddingInline:a(1.5),whiteSpace:"pre-wrap"})),T=s("div",{name:k,slot:"greeting"})({}),C=s("div",{name:k,slot:"status"})(({theme:{palette:e,typography:a}})=>({...a.caption,color:e.text.secondary})),S=s("div",{name:k,slot:"separator"})(({theme:{palette:e,spacing:a,typography:i}})=>({...i.caption,alignItems:"center",color:e.text.secondary,display:"flex",gap:a(1),"&::before, &::after":{borderBlockStart:`1px solid ${e.divider}`,content:'""',flex:1}})),j=s(t,{name:k,slot:"earlierButton"})({alignSelf:"center"}),I=s("div",{name:k,slot:"notice"})(({theme:{palette:e,shape:a,spacing:i}})=>({alignItems:"center",background:e.action.hover,borderRadius:a.borderRadius,display:"flex",flexWrap:"wrap",gap:i(1),justifyContent:"space-between",paddingBlock:i(1),paddingInline:i(1.5)})),B=s(t,{name:k,slot:"newReplyButton"})(({theme:{palette:e,spacing:a}})=>({background:e.text.primary,borderRadius:"calc(infinity * 1px)",color:e.background.paper,insetBlockEnd:a(1),insetInlineStart:"50%",position:"absolute",translate:"-50% 0","&:hover":{background:e.text.secondary}})),E=({item:a,isActive:t,undoableToolCallId:s,onUndo:r})=>o(a).with({kind:"user"},({text:a})=>e(y,{children:a})).with({kind:"text"},({markdown:a,isStreaming:i})=>e(h,{markdown:a,isStreaming:i})).with({kind:"tools"},({tools:a})=>e(c,{tools:a,isActive:t,canUndo:a.some(({id:e})=>e===s),onUndo:r})).with({kind:"separator"},()=>e(S,{role:"separator",children:e(i,{id:"sdk.assistant.thread.earlierSummarized",message:"Earlier conversation summarized"})})).exhaustive();export const AssistantThread=()=>{let{assistantSystem:s}=m(),c=l(s.chat$),{messages:h,isLoading:k,isResuming:y,earlierThreads:S}=c,A=l(s.undoTipToolCallId$),R=k?void 0:A,{items:L,isThinking:z}=n(()=>v(h,k),[h,k]),$=n(()=>f(S),[S]),U=n(()=>L.filter(({kind:e})=>"user"===e).length,[L]),D=c.error?p(c.failedStatus):void 0,{scrollerRef:M,hasUnseenContent:W,handleScroll:q,scrollToEnd:H}=b(n(()=>({messages:h,isThinking:z,isResuming:y,failure:D?.kind}),[h,z,y,D?.kind]),U),N=u(),Y=r(e=>{e.target instanceof Element&&e.target.closest('a, button, input, select, textarea, [role="button"]')||window.getSelection()?.isCollapsed!==!1&&N.release()},[N]),F=!c.isLoaded&&0===$.length&&!y&&!D;return a(w,{children:[e(g,{selection:N,children:a(x,{ref:M,onScroll:q,onClick:Y,role:"log","aria-live":"polite",children:[c.isLoaded&&0===L.length&&0===$.length&&!k&&!y&&!D&&e(T,{children:e(i,{id:"sdk.assistant.thread.greeting",message:"Hi. I can answer questions about this design and change it with you. Tell me what you need."})}),F&&e(C,{children:e(i,{id:"sdk.assistant.thread.loading",message:"Loading the conversation…"})}),c.isLoadingEarlierThread&&e(C,{children:e(i,{id:"sdk.assistant.thread.loadingEarlier",message:"Loading the earlier conversation…"})}),c.hasEarlierThread&&!c.isLoadingEarlierThread&&e(j,{size:"small",color:"inherit",onClick:s.loadEarlierThread,children:e(i,{id:"sdk.assistant.thread.showEarlier.label",message:"Show earlier conversation"})}),$.map(a=>e(E,{item:a,isActive:!1,undoableToolCallId:R,onUndo:s.undoToolCalls},a.id)),L.map(a=>e(E,{item:a,isActive:k&&a===L.at(-1),undoableToolCallId:R,onUndo:s.undoToolCalls},a.id)),y&&e(C,{children:e(i,{id:"sdk.assistant.thread.resuming",message:"Resuming the conversation…"})}),z&&e(C,{children:e(i,{id:"sdk.assistant.thread.thinking",message:"Thinking…"})}),D&&a(I,{role:"alert",children:[e("span",{children:o(D.kind).with("notAvailable",()=>e(i,{id:"sdk.assistant.failure.notAvailable",message:"The assistant is not available here."})).with("busy",()=>e(i,{id:"sdk.assistant.failure.busy",message:"The assistant is still working on an earlier message."})).with("unavailable",()=>e(i,{id:"sdk.assistant.failure.unavailable",message:"The assistant is unavailable right now."})).exhaustive()}),D.canRetry&&e(t,{size:"small",variant:"outlined",color:"inherit",onClick:s.reloadThread,children:e(i,{id:"sdk.assistant.failure.retry.label",message:"Try again"})})]})]})}),W&&e(B,{size:"small",onClick:H,endIcon:e(d,{name:"CaretDown"}),children:e(i,{id:"sdk.assistant.thread.newReply.label",message:"New reply"})})]})};
@@ -0,0 +1,13 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type DomainEntityId } from '#package/domain';
3
+ export interface AssistantEntityLinkProps {
4
+ readonly id: DomainEntityId<string>;
5
+ /** The text the assistant gave the link; the id itself is never shown. */
6
+ readonly children: ReactNode;
7
+ }
8
+ /**
9
+ * An entity the assistant named in a reply, shown as its label. It follows the configurator live:
10
+ * a click selects the entity when the scene can select it, the link shows when the entity is
11
+ * selected or hovered in the scene, and it is struck out once the entity is gone.
12
+ */
13
+ export declare const AssistantEntityLink: import("react").MemoExoticComponent<({ id, children }: AssistantEntityLinkProps) => import("react/jsx-runtime").JSX.Element>;
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{alpha as t,styled as i}from"@mui/material";import{memo as n,useCallback as r,useEffect as o,useRef as a}from"react";import{sceneEntitySelectHotspotComponent as l,selectableComponent as c}from"#package/domain";import{useDomain as d,useFirstRenderedComponent as s,useHoveredDomainEntityId as m,useRenderedSelector as u,useSelectEntity as p,useSelectedDomainEntityId as k,useStoreSelector as y}from"#package/react-sdk";import{FrontendAnalyticsFactory as h}from"../../../common/index.js";import{AssistantPanelName as b}from"../theme.js";import{useEntityLinkSelection as g}from"./entity-link-selection.js";import{resolveEntityLinkState as f}from"./entity-link-state.js";let v=({theme:{palette:e,shape:i,spacing:n}})=>({background:e.action.hover,border:"none",borderRadius:i.borderRadius/2,boxDecorationBreak:"clone",color:"inherit",font:"inherit",margin:0,paddingBlock:0,paddingInline:n(.5),textAlign:"inherit",WebkitBoxDecorationBreak:"clone",'&[data-entity-link="interactive"]':{background:t(e.primary.main,e.action.hoverOpacity),color:e.primary.main,cursor:"pointer",'&:hover, &:focus-visible, &[data-hovered="true"]':{background:t(e.primary.main,e.action.focusOpacity)},"&:focus-visible":{outline:`2px solid ${e.primary.main}`,outlineOffset:1}},'&[data-entity-link="missing"]':{background:"none",color:e.text.disabled,paddingInline:0,textDecoration:"line-through"},'&[data-selected="true"]':{boxShadow:`inset 0 0 0 1px ${e.primary.main}`}}),x=i("span",{name:b,slot:"entityLink"})(v),S=i("button",{name:b,slot:"entityLink"})(v),j=({kind:t,isSelected:i,children:n})=>e(x,{"data-entity-link":t,"data-selected":i,children:n}),T=({id:t,isSelected:i,children:n})=>{let{navigationSystem:u}=d(),k=s({entityIds:[t],componentTypes:[c]}),y=s({entityIds:[t],componentTypes:[l]}),{kind:b,canHover:v}=f({isSelectable:null!=k,isHoverDisabled:k?.state.hoverable===!1,hasSelectHotspot:null!=y}),x=m()===t,T=p(h.AssistantEntityLinkClicked),B=g(),E=r(()=>{B?.remember(t),T(t)},[t,B,T]),L=a(!1),D=r(()=>{v&&(L.current=!0,u.debouncedToggleHover(t))},[v,t,u]),H=r(()=>{L.current&&(L.current=!1,u.debouncedToggleHover(null))},[u]),I=r(e=>{"touch"!==e.pointerType&&D()},[D]),A=r(e=>{e.currentTarget.matches(":focus-visible")&&D()},[D]);return(o(()=>H,[v,H,t]),"interactive"!==b)?e(j,{kind:b,isSelected:i,children:n}):e(S,{type:"button","data-entity-link":b,"data-selected":i,"data-hovered":v&&x,"aria-current":i?"true":void 0,onClick:E,onPointerEnter:I,onPointerLeave:H,onFocus:A,onBlur:H,children:n})};export const AssistantEntityLink=n(({id:t,children:i})=>{let{domain:n}=d(),r=y(e=>null!=n.getEntity(t,e.state),[n,t]),o=u(e=>null!=n.getEntity(t,e.state),[n,t]),a=k()===t;return r?o?e(T,{id:t,isSelected:a,children:i}):e(j,{kind:"plain",isSelected:a,children:i}):e(j,{kind:"missing",isSelected:!1,children:i})});
@@ -0,0 +1,22 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { DomainEntityId } from '#package/domain';
3
+ /**
4
+ * The selection an entity link made, held for the thread the links are in. A click elsewhere in
5
+ * the thread takes back what a link selected, so a user can look at an entity and let it go again.
6
+ * A selection made anywhere else, in the scene, a hotspot or the sidebar, is never taken back.
7
+ */
8
+ export interface EntityLinkSelection {
9
+ /** Records that a link is selecting this entity; call it before the select update is committed. */
10
+ readonly remember: (id: DomainEntityId<string>) => void;
11
+ /** Deselects the entity a link selected, when it is still the selected one, and forgets it. */
12
+ readonly release: () => void;
13
+ }
14
+ /** Creates the selection the entity links of one thread share; the thread provides it to them. */
15
+ export declare const useCreateEntityLinkSelection: () => EntityLinkSelection;
16
+ export interface EntityLinkSelectionProviderProps {
17
+ readonly selection: EntityLinkSelection;
18
+ readonly children: ReactNode;
19
+ }
20
+ export declare const EntityLinkSelectionProvider: ({ selection, children }: EntityLinkSelectionProviderProps) => import("react/jsx-runtime").JSX.Element;
21
+ /** The selection of the thread the link is in, or `null` for a link rendered outside a thread. */
22
+ export declare const useEntityLinkSelection: () => EntityLinkSelection | null;
@@ -0,0 +1 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{createContext as e,useCallback as r,useContext as n,useEffect as l,useMemo as c,useRef as i}from"react";import{useDeselect as o,useDomain as u,useSelectedDomainEntityId as a}from"#package/react-sdk";let s=e(null);export const useCreateEntityLinkSelection=()=>{let{storeSystem:t,navigationSystem:e}=u(),n=o(),s=a(),m=i(null);l(()=>{s!==m.current&&(m.current=null)},[s]);let p=r(t=>{m.current=t},[]),S=r(()=>{let r=m.current;m.current=null,null!=r&&e.getActiveSelectionState(t.stateSlices.committed.value.state)===r&&n()},[n,e,t]);return c(()=>({remember:p,release:S}),[p,S])};export const EntityLinkSelectionProvider=({selection:e,children:r})=>t(s.Provider,{value:e,children:r});export const useEntityLinkSelection=()=>n(s);