@salsita-ai/sdk 0.50.0-develop.f81ab6ac76 → 0.50.0-develop.fbe43b9a2d

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 (430) hide show
  1. package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
  2. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  3. package/dist/application-spec/errors/diagnostic-messages.d.ts +10 -1
  4. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  5. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  6. package/dist/application-spec/generate-application/code/templates/application-types.js +6 -6
  7. package/dist/application-spec/generate-application/code/templates/common/doc-comment.d.ts +2 -0
  8. package/dist/application-spec/generate-application/code/templates/common/doc-comment.js +1 -0
  9. package/dist/application-spec/generate-application/code/templates/configurator-globals.d.ts +2 -1
  10. package/dist/application-spec/generate-application/code/templates/configurator-globals.js +19 -6
  11. package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.js +7 -7
  12. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.d.ts +12 -0
  13. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.js +7 -0
  14. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.js +24 -22
  15. package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +1 -0
  16. package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
  17. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +2 -1
  18. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  19. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +33 -3
  20. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  21. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.d.ts +9 -0
  22. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.js +1 -0
  23. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +4 -1
  24. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  25. package/dist/configurator/ConfiguratorApp.js +1 -1
  26. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.d.ts +2 -0
  27. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.js +5 -0
  28. package/dist/configurator/app-loader-content/app-loader-content-name.d.ts +5 -0
  29. package/dist/configurator/app-loader-content/app-loader-content-name.js +1 -0
  30. package/dist/configurator/app-loader-content/index.d.ts +2 -0
  31. package/dist/configurator/app-loader-content/index.js +1 -0
  32. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  33. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  34. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +12 -2
  35. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  36. package/dist/configurator/application-runtime/extensions/systems/camera-control-system/camera-control-system.d.ts +1 -1
  37. package/dist/configurator/application-runtime/extensions/systems/canvas-system.d.ts +8 -0
  38. package/dist/configurator/application-runtime/extensions/systems/canvas-system.js +1 -1
  39. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.d.ts +8 -0
  40. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.js +1 -0
  41. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.d.ts +23 -1
  42. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.js +1 -1
  43. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +14 -1
  44. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  45. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +45 -4
  46. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  47. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.d.ts +14 -5
  48. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.js +1 -1
  49. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  50. package/dist/configurator/common/configurator-interface.d.ts +107 -4
  51. package/dist/configurator/common/configurator-interface.js +1 -1
  52. package/dist/configurator/configuration-not-found-page/create-configuration-not-found-page.d.ts +9 -0
  53. package/dist/configurator/configuration-not-found-page/create-configuration-not-found-page.js +1 -0
  54. package/dist/configurator/configuration-not-found-page/index.d.ts +1 -0
  55. package/dist/configurator/configuration-not-found-page/index.js +1 -1
  56. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.d.ts +12 -0
  57. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.js +1 -0
  58. package/dist/configurator/configurator-context/PreviewContextProvider.js +1 -1
  59. package/dist/configurator/configurator-context/ViewportStateSync.d.ts +2 -2
  60. package/dist/configurator/configurator-context/ViewportStateSync.js +1 -1
  61. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +10 -0
  62. package/dist/configurator/configurator-context/configurator-routing/ConfiguratorRoutingProvider.js +1 -1
  63. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.d.ts +6 -0
  64. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.js +1 -0
  65. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.d.ts +12 -0
  66. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.js +1 -0
  67. package/dist/configurator/configurator-error-page/create-configurator-error-page.d.ts +9 -0
  68. package/dist/configurator/configurator-error-page/create-configurator-error-page.js +1 -0
  69. package/dist/configurator/configurator-error-page/index.d.ts +3 -0
  70. package/dist/configurator/configurator-error-page/index.js +1 -0
  71. package/dist/configurator/index.d.ts +3 -0
  72. package/dist/configurator/index.js +1 -1
  73. package/dist/configurator/pages/ConfiguratorErrorPage.d.ts +0 -1
  74. package/dist/configurator/pages/ConfiguratorErrorPage.js +1 -1
  75. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  76. package/dist/configurator/pages/PresetCreationErrorPage.d.ts +1 -1
  77. package/dist/configurator/pages/PresetCreationErrorPage.js +1 -1
  78. package/dist/configurator/pages/default-configurator-elements.d.ts +4 -2
  79. package/dist/configurator/pages/default-configurator-elements.js +1 -1
  80. package/dist/configurator/pages/default-elements/index.d.ts +1 -0
  81. package/dist/configurator/pages/default-elements/index.js +1 -1
  82. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.d.ts +3 -0
  83. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.js +1 -0
  84. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.d.ts +3 -0
  85. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.js +1 -0
  86. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.d.ts +3 -0
  87. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.js +1 -0
  88. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.d.ts +3 -0
  89. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.js +1 -0
  90. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.d.ts +3 -0
  91. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.js +1 -0
  92. package/dist/configurator/pages/default-elements/scene-controls/index.d.ts +6 -0
  93. package/dist/configurator/pages/default-elements/scene-controls/index.js +1 -0
  94. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.d.ts +6 -0
  95. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.js +1 -0
  96. package/dist/configurator/pages/error-boundaries/GeneralErrorBoundary.js +1 -1
  97. package/dist/configurator/scene/index.d.ts +1 -0
  98. package/dist/configurator/scene/index.js +1 -1
  99. package/dist/configurator/scene/scene-controls/ToolFab.d.ts +4 -0
  100. package/dist/configurator/scene/scene-controls/ToolFab.js +1 -1
  101. package/dist/configurator/scene/scene-controls/use-scene-control-tooltip.d.ts +2 -1
  102. package/dist/configurator/scene/scene-entity/scene-controls/SceneEntityHtmlHotspots.js +1 -1
  103. package/dist/configurator/toolbar-actions/index.d.ts +3 -0
  104. package/dist/configurator/toolbar-actions/index.js +1 -0
  105. package/dist/configurator/toolbar-actions/use-assistant-panel.d.ts +18 -0
  106. package/dist/configurator/toolbar-actions/use-assistant-panel.js +1 -0
  107. package/dist/configurator/toolbar-actions/use-measurements.d.ts +35 -0
  108. package/dist/configurator/toolbar-actions/use-measurements.js +1 -0
  109. package/dist/configurator/toolbar-actions/use-toolbar-actions.d.ts +100 -0
  110. package/dist/configurator/toolbar-actions/use-toolbar-actions.js +1 -0
  111. package/dist/configurator/toolbar-actions/use-toolbar-help.d.ts +7 -0
  112. package/dist/configurator/toolbar-actions/use-toolbar-help.js +1 -0
  113. package/dist/configurator/ui/assistant/AssistantChips.d.ts +3 -2
  114. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  115. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  116. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  117. package/dist/configurator/ui/assistant/alert/AssistantAlert.d.ts +8 -0
  118. package/dist/configurator/ui/assistant/alert/AssistantAlert.js +1 -0
  119. package/dist/configurator/ui/assistant/alert/index.d.ts +2 -0
  120. package/dist/configurator/ui/assistant/alert/index.js +1 -0
  121. package/dist/configurator/ui/assistant/alert/remark-alerts.d.ts +10 -0
  122. package/dist/configurator/ui/assistant/alert/remark-alerts.js +1 -0
  123. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -1
  124. package/dist/configurator/ui/assistant/form/compose-answer.d.ts +1 -1
  125. package/dist/configurator/ui/assistant/form/compose-answer.js +1 -1
  126. package/dist/configurator/ui/assistant/form/form-model.d.ts +3 -4
  127. package/dist/configurator/ui/assistant/form/form-state.d.ts +1 -1
  128. package/dist/configurator/ui/assistant/form/index.d.ts +2 -0
  129. package/dist/configurator/ui/assistant/form/index.js +1 -1
  130. package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +3 -2
  131. package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -1
  132. package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +1 -1
  133. package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -1
  134. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.d.ts +3 -0
  135. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.js +1 -0
  136. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.d.ts +31 -0
  137. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.js +1 -0
  138. package/dist/configurator/ui/assistant/form/{form-element-definition.d.ts → registry/form-element-definition.d.ts} +3 -1
  139. package/dist/configurator/ui/assistant/form/registry/form-element-definition.js +1 -0
  140. package/dist/configurator/ui/assistant/form/{form-registry.d.ts → registry/form-registry.d.ts} +2 -2
  141. package/dist/configurator/ui/assistant/form/registry/form-registry.js +1 -0
  142. package/dist/configurator/ui/assistant/form/registry/index.d.ts +6 -0
  143. package/dist/configurator/ui/assistant/form/registry/index.js +1 -0
  144. package/dist/configurator/ui/assistant/form/registry/use-form-registry.d.ts +8 -0
  145. package/dist/configurator/ui/assistant/form/registry/use-form-registry.js +1 -0
  146. package/dist/configurator/ui/assistant/form-elements/FormCard.d.ts +9 -0
  147. package/dist/configurator/ui/assistant/form-elements/FormCard.js +1 -0
  148. package/dist/configurator/ui/assistant/form-elements/FormConfirm.d.ts +9 -0
  149. package/dist/configurator/ui/assistant/form-elements/FormConfirm.js +1 -0
  150. package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +4 -1
  151. package/dist/configurator/ui/assistant/form-elements/FormNumber.d.ts +9 -0
  152. package/dist/configurator/ui/assistant/form-elements/FormNumber.js +1 -0
  153. package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +4 -1
  154. package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +4 -1
  155. package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -1
  156. package/dist/configurator/ui/assistant/form-elements/FormSwatch.d.ts +10 -0
  157. package/dist/configurator/ui/assistant/form-elements/FormSwatch.js +1 -0
  158. package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +4 -1
  159. package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -1
  160. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.d.ts +10 -0
  161. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.js +1 -0
  162. package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +20 -16
  163. package/dist/configurator/ui/assistant/form-elements/index.d.ts +4 -0
  164. package/dist/configurator/ui/assistant/form-elements/index.js +1 -1
  165. package/dist/configurator/ui/assistant/index.d.ts +3 -0
  166. package/dist/configurator/ui/assistant/index.js +1 -1
  167. package/dist/configurator/ui/assistant/resource-image/index.d.ts +1 -1
  168. package/dist/configurator/ui/assistant/resource-image/index.js +1 -1
  169. package/dist/configurator/ui/assistant/resource-image/resource-path.d.ts +0 -9
  170. package/dist/configurator/ui/assistant/resource-image/resource-path.js +1 -1
  171. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.d.ts +9 -0
  172. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.js +1 -0
  173. package/dist/configurator/ui/assistant/screenshots/index.d.ts +2 -0
  174. package/dist/configurator/ui/assistant/screenshots/index.js +1 -0
  175. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.d.ts +14 -0
  176. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.js +1 -0
  177. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +2 -2
  178. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
  179. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  180. package/dist/configurator/ui/configurator-layout/slots/canvas/LayoutCanvas.js +1 -1
  181. package/dist/configurator/ui/configurator-layout/slots/canvas/SharedCanvas.js +1 -1
  182. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.d.ts +5 -0
  183. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.js +1 -0
  184. package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
  185. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +1 -1
  186. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -1
  187. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +1 -1
  188. package/dist/configurator/ui/index.d.ts +1 -0
  189. package/dist/configurator/ui/index.js +1 -1
  190. package/dist/configurator/ui/legacy/layout/common/ReactiveInterfaceLayout.js +1 -1
  191. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.js +2 -6
  192. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.js +1 -1
  193. package/dist/configurator/ui/phoenix-layout-elements/LanguageMenuAction.js +1 -1
  194. package/dist/configurator/ui/phoenix-layout-elements/LanguageToolbarButton.js +1 -1
  195. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsMenuAction.js +1 -1
  196. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsToolbarButton.js +1 -1
  197. package/dist/configurator/ui/phoenix-layout-elements/ShareToolbarButton.js +1 -1
  198. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.d.ts +1 -1
  199. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.js +1 -1
  200. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -8
  201. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.js +1 -1
  202. package/dist/configurator/ui/phoenix-layout-elements/measurements/DimensionUnitSelector.js +1 -1
  203. package/dist/configurator/ui/phoenix-layout-elements/measurements/MeasurementsIndicatorsSwitch.js +1 -1
  204. package/dist/configurator/ui/phoenix-layout-elements/share/ShareModal.js +1 -1
  205. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.d.ts +7 -8
  206. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.js +1 -1
  207. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/FinalizeActions.js +1 -1
  208. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/NextStepButton.js +1 -1
  209. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/PreviousStepButton.js +1 -1
  210. package/dist/docs/complex-use-cases/focus-mode.mdx +2 -0
  211. package/dist/docs/fabs/basic.mdx +4 -0
  212. package/dist/docs/index.json +62 -1
  213. package/dist/docs/layouts/custom-layout.mdx +4 -2
  214. package/dist/docs/layouts/gallery/ardent-compressor.mdx +3515 -0
  215. package/dist/docs/layouts/gallery/fenwick-window.mdx +2732 -0
  216. package/dist/docs/layouts/gallery/ferrule-bar-station.mdx +6567 -0
  217. package/dist/docs/layouts/gallery/kestrel-kettle.mdx +1858 -0
  218. package/dist/docs/layouts/gallery/sunfold-solar.mdx +2671 -0
  219. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  220. package/dist/docs/other-features/error-5xx.mdx +1 -1
  221. package/dist/docs/other-features/navigation-hotspot.mdx +2 -0
  222. package/dist/docs/other-features/not-found-404.mdx +1 -1
  223. package/dist/docs/phoenix/configurator-interface.mdx +199 -66
  224. package/dist/docs/phoenix/finalization.mdx +1 -1
  225. package/dist/docs/phoenix/layout-slots.mdx +5 -5
  226. package/dist/docs/phoenix/sdk-builder-workflow.mdx +1 -1
  227. package/dist/docs/phoenix/testing.mdx +2 -2
  228. package/dist/docs/selection-and-highlight/hotspots.mdx +2 -0
  229. package/dist/domain/application/assistant/assistant-manifest.d.ts +16 -1
  230. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +8 -1
  231. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  232. package/dist/domain/application/assistant/form/assistant-form-element-name.d.ts +11 -0
  233. package/dist/domain/application/assistant/form/assistant-form-element-name.js +8 -0
  234. package/dist/domain/application/assistant/form/assistant-form-elements.d.ts +174 -0
  235. package/dist/domain/application/assistant/form/assistant-form-elements.js +1 -0
  236. package/dist/domain/application/assistant/form/assistant-resource-path.d.ts +10 -0
  237. package/dist/domain/application/assistant/form/assistant-resource-path.js +1 -0
  238. package/dist/domain/application/assistant/form/index.d.ts +4 -0
  239. package/dist/domain/application/assistant/form/index.js +1 -0
  240. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  241. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  242. package/dist/domain/application/assistant/index.d.ts +2 -3
  243. package/dist/domain/application/assistant/index.js +1 -1
  244. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -1
  245. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +2 -0
  246. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -1
  247. package/dist/domain/available-system-components.d.ts +1 -1
  248. package/dist/domain/available-system-components.js +1 -1
  249. package/dist/domain/domain-context/store-system/store-system.d.ts +5 -0
  250. package/dist/domain/domain-context/store-system/store-system.js +1 -1
  251. package/dist/domain/domain-runtime/domain-runtime.d.ts +4 -0
  252. package/dist/domain/domain-runtime/environment/types.d.ts +1 -1
  253. package/dist/domain/domain-runtime/spec/index.d.ts +1 -1
  254. package/dist/domain/domain-runtime/spec/index.js +1 -1
  255. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  256. package/dist/domain/domain-runtime/spec/module-checks/element-registration.d.ts +15 -1
  257. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -1
  258. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.d.ts +12 -0
  259. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.js +1 -0
  260. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +2 -1
  261. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -1
  262. package/dist/domain/domain-runtime/spec/selectors.d.ts +3 -1
  263. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  264. package/dist/domain/extensions/export-images/agent-screenshot.d.ts +24 -0
  265. package/dist/domain/extensions/export-images/agent-screenshot.js +1 -0
  266. package/dist/domain/extensions/{client-side-image.d.ts → export-images/client-side-image.d.ts} +2 -2
  267. package/dist/domain/extensions/export-images/client-side-image.js +1 -0
  268. package/dist/domain/extensions/export-images/index.d.ts +3 -0
  269. package/dist/domain/extensions/export-images/index.js +1 -0
  270. package/dist/domain/extensions/{save-template-thumbnail.d.ts → export-images/save-template-thumbnail.d.ts} +2 -2
  271. package/dist/domain/extensions/export-images/save-template-thumbnail.js +1 -0
  272. package/dist/domain/extensions/index.d.ts +1 -2
  273. package/dist/domain/extensions/index.js +1 -1
  274. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +2 -0
  275. package/dist/editor/domain-editors/DomainSpecContext.js +1 -1
  276. package/dist/editor/domain-editors/apply-spec-update.d.ts +8 -1
  277. package/dist/editor/domain-editors/apply-spec-update.js +1 -1
  278. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  279. package/dist/editor/screenshot/ScreenshotHandler.js +1 -1
  280. package/dist/i18n/locales/cs/messages.js +1 -1
  281. package/dist/i18n/locales/da/messages.js +1 -1
  282. package/dist/i18n/locales/de/messages.js +1 -1
  283. package/dist/i18n/locales/de-AT/messages.js +1 -1
  284. package/dist/i18n/locales/en/messages.js +1 -1
  285. package/dist/i18n/locales/en-AU/messages.js +1 -1
  286. package/dist/i18n/locales/en-GB/messages.js +1 -1
  287. package/dist/i18n/locales/es/messages.js +1 -1
  288. package/dist/i18n/locales/fr/messages.js +1 -1
  289. package/dist/i18n/locales/hu/messages.js +1 -1
  290. package/dist/i18n/locales/it/messages.js +1 -1
  291. package/dist/i18n/locales/nl/messages.js +1 -1
  292. package/dist/i18n/locales/pl/messages.js +1 -1
  293. package/dist/i18n/locales/pt/messages.js +1 -1
  294. package/dist/i18n/locales/ro/messages.js +1 -1
  295. package/dist/i18n/locales/sk/messages.js +1 -1
  296. package/dist/i18n/locales/tr/messages.js +1 -1
  297. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +16 -0
  298. package/dist/legacy/domain-spec/spec/domain-spec.js +1 -1
  299. package/dist/react-sdk/application-runtime/common-services/analytics/frontend-analytics.d.ts +4 -0
  300. package/dist/react-sdk/application-runtime/hooks/use-phoenix-element-slots.d.ts +2 -1
  301. package/dist/react-sdk/application-runtime/integration/initialize.d.ts +7 -6
  302. package/dist/react-sdk/application-runtime/integration/initialize.js +1 -1
  303. package/dist/react-sdk/application-runtime/integration/selectors.d.ts +11 -2
  304. package/dist/react-sdk/application-runtime/integration/selectors.js +1 -1
  305. package/dist/react-sdk/application-runtime/integration/types.d.ts +5 -2
  306. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  307. package/dist/react-sdk/application-runtime/routing/routing-service.d.ts +34 -2
  308. package/dist/react-sdk/application-runtime/routing/routing-service.js +1 -1
  309. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +4 -2
  310. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  311. package/dist/react-sdk/domain-context/common-hooks/index.d.ts +8 -0
  312. package/dist/react-sdk/domain-context/common-hooks/index.js +1 -0
  313. package/dist/react-sdk/domain-context/component-hooks/index.d.ts +1 -0
  314. package/dist/react-sdk/domain-context/component-hooks/index.js +1 -0
  315. package/dist/react-sdk/domain-context/component-hooks/use-component.js +1 -1
  316. package/dist/react-sdk/domain-context/entity-hooks/use-domain-entity-state.js +1 -1
  317. package/dist/react-sdk/domain-context/entity-hooks/use-entity-price.js +1 -1
  318. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-id.js +1 -1
  319. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-state.js +1 -1
  320. package/dist/react-sdk/domain-context/index.d.ts +4 -0
  321. package/dist/react-sdk/domain-context/index.js +1 -1
  322. package/dist/react-sdk/domain-context/system-hooks/composition-hooks.js +1 -1
  323. package/dist/react-sdk/domain-context/system-hooks/dimension-hooks.js +1 -1
  324. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.d.ts +8 -0
  325. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.js +1 -0
  326. package/dist/react-sdk/domain-context/system-hooks/hover-hooks.js +1 -1
  327. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.d.ts +24 -0
  328. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.js +1 -0
  329. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  330. package/dist/react-sdk/domain-context/system-hooks/selection-hooks.js +1 -1
  331. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.d.ts +32 -0
  332. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.js +1 -0
  333. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.d.ts +57 -0
  334. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.js +1 -0
  335. package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.js +1 -1
  336. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.js +1 -1
  337. package/dist/react-sdk/elements/configurator-error-page-props.d.ts +20 -0
  338. package/dist/react-sdk/elements/index.d.ts +1 -0
  339. package/dist/react-sdk/handlers/FinalizeActionRunner.d.ts +13 -0
  340. package/dist/react-sdk/handlers/FinalizeActionRunner.js +1 -0
  341. package/dist/react-sdk/handlers/FinalizeActionsHost.d.ts +10 -0
  342. package/dist/react-sdk/handlers/FinalizeActionsHost.js +1 -0
  343. package/dist/react-sdk/handlers/FinalizeActionsProvider.d.ts +11 -0
  344. package/dist/react-sdk/handlers/FinalizeActionsProvider.js +1 -0
  345. package/dist/react-sdk/handlers/finalize-actions-context.d.ts +6 -0
  346. package/dist/react-sdk/handlers/finalize-actions-context.js +1 -0
  347. package/dist/react-sdk/handlers/finalize-actions-store.d.ts +23 -0
  348. package/dist/react-sdk/handlers/finalize-actions-store.js +1 -0
  349. package/dist/react-sdk/handlers/index.d.ts +5 -0
  350. package/dist/react-sdk/handlers/index.js +1 -1
  351. package/dist/react-sdk/handlers/use-finalize-action.d.ts +3 -2
  352. package/dist/react-sdk/handlers/use-finalize-action.js +1 -1
  353. package/dist/react-sdk/handlers/use-finalize-actions.d.ts +53 -0
  354. package/dist/react-sdk/handlers/use-finalize-actions.js +1 -0
  355. package/dist/react-sdk/index.d.ts +2 -0
  356. package/dist/react-sdk/index.js +1 -1
  357. package/dist/react-sdk/loading-state/loading-state-manager.d.ts +5 -0
  358. package/dist/react-sdk/loading-state/loading-state-manager.js +1 -1
  359. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.d.ts +25 -0
  360. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.js +1 -0
  361. package/dist/react-sdk/responsive-state/canvas-padding.d.ts +14 -0
  362. package/dist/react-sdk/responsive-state/canvas-padding.js +1 -0
  363. package/dist/react-sdk/responsive-state/index.d.ts +5 -0
  364. package/dist/react-sdk/responsive-state/index.js +1 -0
  365. package/dist/react-sdk/responsive-state/responsive-state-manager.d.ts +111 -0
  366. package/dist/react-sdk/responsive-state/responsive-state-manager.js +1 -0
  367. package/dist/react-sdk/responsive-state/use-responsive-state-manager.d.ts +10 -0
  368. package/dist/react-sdk/responsive-state/use-responsive-state-manager.js +1 -0
  369. package/dist/react-sdk/responsive-state/use-responsive-state.d.ts +11 -0
  370. package/dist/react-sdk/responsive-state/use-responsive-state.js +1 -0
  371. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.d.ts +36 -0
  372. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.js +1 -0
  373. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.d.ts +44 -0
  374. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.js +1 -0
  375. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.d.ts +38 -0
  376. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.js +1 -0
  377. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.d.ts +30 -0
  378. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.js +1 -0
  379. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.d.ts +30 -0
  380. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.js +1 -0
  381. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.d.ts +9 -0
  382. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.js +1 -0
  383. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.d.ts +9 -0
  384. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.js +1 -0
  385. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.d.ts +10 -0
  386. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.js +1 -0
  387. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.d.ts +9 -0
  388. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.js +1 -0
  389. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.d.ts +9 -0
  390. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.js +1 -0
  391. package/dist/react-sdk/scene-control-elements/index.d.ts +11 -0
  392. package/dist/react-sdk/scene-control-elements/index.js +1 -0
  393. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.d.ts +5 -0
  394. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.js +1 -0
  395. package/dist/react-sdk/web-component/create-web-component.js +1 -1
  396. package/dist/react-sdk/web-component/god-mode/god-mode-registry.d.ts +30 -0
  397. package/dist/react-sdk/web-component/god-mode/god-mode-registry.js +1 -0
  398. package/dist/react-sdk/web-component/god-mode/index.d.ts +1 -0
  399. package/dist/react-sdk/web-component/god-mode/index.js +1 -0
  400. package/dist/ui-sdk/icons/__generated/Lightbulb.d.ts +3 -0
  401. package/dist/ui-sdk/icons/__generated/Lightbulb.js +1 -0
  402. package/dist/ui-sdk/icons/__generated/XCircle.d.ts +3 -0
  403. package/dist/ui-sdk/icons/__generated/XCircle.js +1 -0
  404. package/dist/ui-sdk/icons/__generated/index.d.ts +4 -0
  405. package/dist/ui-sdk/icons/__generated/index.js +1 -1
  406. package/dist/ui-sdk/icons/icons-registry.js +1 -1
  407. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.d.ts +9 -0
  408. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.js +1 -1
  409. package/dist/ui-sdk/responsive-application/index.d.ts +1 -0
  410. package/dist/ui-sdk/responsive-application/responsive-state-store.d.ts +57 -0
  411. package/dist/ui-sdk/responsive-application/responsive-state-store.js +1 -0
  412. package/dist/ui-sdk/responsive-application/use-store-responsive-info.d.ts +7 -0
  413. package/dist/ui-sdk/responsive-application/use-store-responsive-info.js +1 -0
  414. package/dist/ui-sdk/theme/types.d.ts +5 -1
  415. package/package.json +13 -3
  416. package/schema/domain-spec.json +140 -0
  417. package/dist/configurator/ui/assistant/form/built-in-form-registry.d.ts +0 -10
  418. package/dist/configurator/ui/assistant/form/built-in-form-registry.js +0 -1
  419. package/dist/configurator/ui/assistant/form/form-registry.js +0 -8
  420. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.d.ts +0 -4
  421. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.js +0 -1
  422. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.d.ts +0 -4
  423. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.js +0 -1
  424. package/dist/domain/application/assistant/assistant-form-elements.d.ts +0 -28
  425. package/dist/domain/application/assistant/assistant-form-elements.js +0 -1
  426. package/dist/domain/extensions/client-side-image.js +0 -1
  427. package/dist/domain/extensions/save-template-thumbnail.js +0 -1
  428. package/dist/react-sdk/application-runtime/runtime/god-mode.d.ts +0 -19
  429. package/dist/react-sdk/application-runtime/runtime/god-mode.js +0 -1
  430. /package/dist/{configurator/ui/assistant/form/form-element-definition.js → react-sdk/elements/configurator-error-page-props.js} +0 -0
@@ -1 +1 @@
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 g,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,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,useFinalizeAction as es,useFinalizeViolations as ea,useFirstComponent as em,useFirstRenderedComponent as en,useFirstRootComponent as ep,useFirstRootRenderedComponent as eu,useFrontendData as ec,useGenericDimension as ed,useGroupedRecipeOptions as ef,useHoveredDomainEntityId as ej,useHoveredEntity as eg,useHoveredEntityId as el,useIntegrationService as ex,useIntegrationState as ey,useIsFullscreenActive as ek,useLoadedData as eh,useLoadingState as eS,useLoadingStateValue as eE,useMapViolationHints as eI,useNavigate as eq,usePopNavigate as eA,usePresetEmbeddedState as eB,usePublishedData as eC,usePushNavigate as eP,useRecipeEmbeddedState as eR,useRenderedComponent as eU,useRenderedComponents as eb,useRenderedEntitySelector as ev,useRenderedRootEntitySelector as ew,useRenderedSelector as ez,useRenderedSelector$ as eD,useRenderedSlice as eF,useRenderedState as eG,useReplaceEntityRecipeOptions as eH,useRootComponents as eJ,useRootEntityId as eK,useRootEntityPrice as eL,useRootEntityRenderedId as eM,useRootEntityRenderedState as eN,useRootEntitySelector as eO,useRootEntityState as eQ,useRootRenderedComponents as eT,useSelectEntity as eV,useSelectParent as eW,useSelectedDomainEntityId as eX,useSelectedEntity as eY,useSelectedEntityId as eZ,useSession as e$,useSessionRole as e_,useSessionService as e0,useSetFullscreen as e1,useSetViewState as e2,useStateValidity as e3,useStoreSelector as e4,useStoreSelector$ as e5,useSwatchSelection as e6,useTabNavigation as e7,useTextValue as e8,useUndoRedo as e9,useUpdateControl as re,useUpdatedControl as rr}from"#package/react-sdk";import{createPhoenixIconSet as rt}from"#package/ui-sdk";import{useConfigurator as ro}from"../application-runtime/index.js";import{createOnApplicationStartProvider as ri,createOnBackendDataReadyProvider as rs,createOnConfiguratorReadyProvider as ra,createOnFrontendDataReadyProvider as rm,createOnGoToIndexHandler as rn,createOnPresetLoadedHandler as rp,createOnPublishedDataReadyProvider as ru,createOnRoutingReadyProvider as rc,createOnSessionReadyProvider as rd,useConfiguratorRouting as rf,usePresetSelection as rj,usePropertyPageStack as rg,usePropertyPageState as rl}from"../configurator-context/index.js";import{createGetTextureProcessingMapHandler as rx}from"../scene/index.js";import{useUpdateEntityObjectSelection as ry}from"../scene/scene-entity/drag-and-drop/use-updated-selection.js";import{createAppLoader as rk,createCanvasLoader as rh,createLayoutAdminUi as rS,createLayoutCustomOwnerUi as rE,createLayoutCustomReadUi as rI,createLayoutDialog as rq,createLayoutFooter as rA,createLayoutToolbarDesktop as rB,createLayoutToolbarDesktopFullScreen as rC,createLayoutToolbarReadDesktop as rP,createLayoutToolbarReadDesktopFullScreen as rR,createLayoutUserUi as rU,createToolbarHelp as rb}from"../ui/index.js";import{useGenerateShareLink as rv}from"../ui/phoenix-layout-elements/share/use-share.js";import{createPresetDeviceNotSupported as rw,createPresetPageAction as rz,createPresetUi as rD}from"../ui/preset-layout/PresetUi.js";import{useResetCamera as rF}from"./use-reset-camera.js";export const createConfiguratorInterface=rG=>({updates:m(),getIdSequence:n,createGetWebComponentOptionsHandler:o,createGetThemeHandler:t,createPhoenixHandler:i,createCustomPhoenixEntityElement:e,createCustomPhoenixLayoutElement:r,createPhoenixIconSet:rt,createGetTextureProcessingMapHandler:rx,createCollectFrontendDataHandler:c,createFilterPublishedChunksHandler:d,createOnGoToIndexHandler:rn,createOnApplicationStartProvider:ri,createOnSessionReadyProvider:rd,createOnPublishedDataReadyProvider:ru,createOnFrontendDataReadyProvider:rm,createOnBackendDataReadyProvider:rs,createOnRoutingReadyProvider:rc,createOnConfiguratorReadyProvider:ra,createOnPresetLoadedHandler:rp,createPresetUi:rD,createPresetPageAction:rz,createPresetDeviceNotSupported:rw,createLayoutFooter:rA,createAppLoader:rk,createCanvasLoader:rh,createLayoutDialog:rq,createLayoutToolbarDesktop:rB,createLayoutToolbarDesktopFullScreen:rC,createLayoutToolbarReadDesktop:rP,createLayoutToolbarReadDesktopFullScreen:rR,createLayoutCustomOwnerUi:rE,createLayoutCustomReadUi:rI,createLayoutAdminUi:rS,createLayoutUserUi:rU,createToolbarHelp:rb,createNotAuthenticatedPage:f,createTransformer:s,transformerBuilder:a(),useAnalytics:B,useAuthenticatedClient:U,useAuthorizedClient:b,useCreateAuthorizedClient:T,useAccessService:E,useConfigurationId:J,useSession:e$,useSessionRole:e_,useSessionService:e0,useDomain:$,useDomainApplication:_,useConfigurator:ro,useConfiguratorRouting:rf,usePresetSelection:rj,usePublishedData:eC,useFrontendData:ec,useBackendData:v,useDomainApplicationProps:ee,useLoadedData:eh,useIntegrationService:ex,useIntegrationState:ey,usePresetEmbeddedState:eB,useRecipeEmbeddedState:eR,useCommittedSlice:z,useRenderedSlice:eF,useCommittedState:D,useRenderedState:eG,useStoreSelector:e4,useRenderedSelector:ez,useStoreSelector$:e5,useRenderedSelector$:eD,useEntitySelector:ei,useRenderedEntitySelector:ev,useRootEntitySelector:eO,useRenderedRootEntitySelector:ew,useStateValidity:e3,useMapViolationHints:eI,useNavigate:eq,usePopNavigate:eA,usePushNavigate:eP,useControlViolations:L,useFinalizeViolations:ea,useConfiguratorMessages:K,useFinalizeAction:es,useComponent:F,useRenderedComponent:eU,useComponents:G,useRenderedComponents:eb,useFirstComponent:em,useFirstRenderedComponent:en,useRootComponents:eJ,useRootRenderedComponents:eT,useFirstRootComponent:ep,useFirstRootRenderedComponent:eu,useEntityState:et,useEntityRenderedState:er,useRootEntityState:eQ,useRootEntityRenderedState:eN,useRootEntityId:eK,useRootEntityRenderedId:eM,useEntityPrice:eo,useRootEntityPrice:eL,useSelectedEntity:eY,useSelectedEntityId:eZ,useSelectedDomainEntityId:eX,useSelectEntity:eV,useDeselect:X,useSelectParent:eW,useHoveredEntity:eg,useHoveredEntityId:el,useHoveredDomainEntityId:ej,useActiveNavigationState:I,useActiveViewState:A,useSetViewState:e2,useActiveToolState:q,useIsFullscreenActive:ek,useSetFullscreen:e1,useResetCamera:rF,useUndoRedo:e9,useTabNavigation:e7,useComposition:H,useUpdateControl:re,useUpdatedControl:rr,useCookRecipes:M,useCookedRecipes:O,useCookReplaceRecipes:N,useCookedReplaceRecipes:Q,useDeleteEntity:V,useDeletedEntity:W,useSwatchSelection:e6,useTextValue:e8,useAttributeSelection:P,useAttributeSwitch:R,useDistanceDimension:Y,useDistanceDimensionSelection:Z,useGenericDimension:ed,useAngleDimension:C,useChildEntitySelection:w,useGroupedRecipeOptions:ef,useReplaceEntityRecipeOptions:eH,useUpdateEntityObjectSelection:ry,useGenerateShareLink:rv,useLoadingState:eS,useLoadingStateValue:eE,usePropertyPageStack:rg,usePropertyPageState:rl,isCreateEntityUpdate:p,isReplaceEntityUpdate:u,isDeleteEntityUpdate:x,isAngleDimensionUpdate:j,isDistanceDimensionUpdate:y,isGenericDimensionUpdate:k,isAttributeSelectionUpdate:g,isAttributeSwitchUpdate:l,isTextValueUpdate:S,isSwatchSelectionUpdate:h});
1
+ import{createCustomPhoenixEntityElement as e,createCustomPhoenixLayoutElement as o,createGetThemeHandler as r,createGetWebComponentOptionsHandler as t,createPhoenixHandler as i,createTransformer as n,createTransformerBuilder as s,createUpdateFactory as a,getIdSequence as m,isCreateEntityUpdate as p,isReplaceEntityUpdate as d}from"#package/domain";import{createAddEntityFab as f,createCollectFrontendDataHandler as u,createDeleteEntityFab as c,createFilterPublishedChunksHandler as g,createNavigationHotspot as l,createNotAuthenticatedPage as j,createSelectionHotspot as x,createToolMenuFab as k,isAngleDimensionUpdate as y,isAttributeSelectionUpdate as I,isAttributeSwitchUpdate as A,isDeleteEntityUpdate as C,isDistanceDimensionUpdate as S,isGenericDimensionUpdate as w,isSwatchSelectionUpdate as E,isTextValueUpdate as b,useAccessService as q,useActiveNavigationState as B,useActiveToolState as P,useActiveViewState as R,useActiveViewports as U,useAnalyticsService as h,useAngleDimension as v,useAttributeSelection as z,useAttributeSwitch as D,useAuthenticatedClient as F,useAuthorizedClient as G,useBackendData as H,useChildEntitySelection as J,useCommittedSlice as K,useCommittedState as L,useComponent as M,useComponents as N,useComposition as O,useConfigurationId as Q,useConfiguratorMessages as T,useControlViolations as V,useCookRecipes as W,useCookReplaceRecipes as X,useCookedRecipes as Y,useCookedReplaceRecipes as Z,useCreateAuthorizedClient as $,useDeleteEntity as _,useDeletedEntity as ee,useDeselect as eo,useDistanceDimension as er,useDistanceDimensionSelection as et,useDomain as ei,useDomainApplication as en,useDomainApplicationProps as es,useDomainEntityRenderedState as ea,useDomainEntityState as em,useEntityPrice as ep,useEntitySelector as ed,useFinalizeAction as ef,useFinalizeActions as eu,useFinalizeViolations as ec,useFirstComponent as eg,useFirstRenderedComponent as el,useFirstRootComponent as ej,useFirstRootRenderedComponent as ex,useFrontendData as ek,useGenerateShareLink as ey,useGenericDimension as eI,useGroupedRecipeOptions as eA,useHoveredDomainEntityId as eC,useHoveredEntity as eS,useHoveredEntityId as ew,useIntegrationService as eE,useIntegrationState as eb,useIsFullscreenActive as eq,useLoadedData as eB,useLoadingState as eP,useLoadingStateValue as eR,useLocaleSwitch as eU,useLocalizable as eh,useMapViolationHints as ev,useNavigate as ez,usePopNavigate as eD,usePresetEmbeddedState as eF,usePublishedData as eG,usePushNavigate as eH,useRecipeEmbeddedState as eJ,useRenderedComponent as eK,useRenderedComponents as eL,useRenderedEntitySelector as eM,useRenderedRootEntitySelector as eN,useRenderedSelector as eO,useRenderedSelector$ as eQ,useRenderedSlice as eT,useRenderedState as eV,useReplaceEntityRecipeOptions as eW,useResolveLocalizable as eX,useRootComponents as eY,useRootEntityId as eZ,useRootEntityPrice as e$,useRootEntityRenderedId as e_,useRootEntityRenderedState as e0,useRootEntitySelector as e1,useRootEntityState as e2,useRootRenderedComponents as e3,useSelectEntity as e4,useSelectParent as e5,useSelectedDomainEntityId as e6,useSelectedEntity as e7,useSelectedEntityId as e8,useSession as e9,useSessionRole as oe,useSessionService as oo,useSetFullscreen as or,useSetViewState as ot,useShareLinks as oi,useStateValidity as on,useStepNavigation as os,useStoreSelector as oa,useStoreSelector$ as om,useSwatchSelection as op,useTabNavigation as od,useTextValue as of,useUndoRedo as ou,useUpdateControl as oc,useUpdatedControl as og}from"#package/react-sdk";import{createPhoenixIconSet as ol}from"#package/ui-sdk";import{useConfigurator as oj}from"../application-runtime/index.js";import{createConfigurationNotFoundPage as ox}from"../configuration-not-found-page/index.js";import{createOnApplicationStartProvider as ok,createOnBackendDataReadyProvider as oy,createOnConfiguratorReadyProvider as oI,createOnFrontendDataReadyProvider as oA,createOnGoToIndexHandler as oC,createOnPresetLoadedHandler as oS,createOnPublishedDataReadyProvider as ow,createOnRoutingReadyProvider as oE,createOnSessionReadyProvider as ob,useConfiguratorRouting as oq,usePresetSelection as oB,usePreview as oP,usePropertyPageStack as oR,usePropertyPageState as oU}from"../configurator-context/index.js";import{createConfiguratorErrorPage as oh}from"../configurator-error-page/index.js";import{useCloseAction as ov}from"../integration/index.js";import{createGetTextureProcessingMapHandler as oz}from"../scene/index.js";import{useUpdateEntityObjectSelection as oD}from"../scene/scene-entity/drag-and-drop/use-updated-selection.js";import{useAssistantPanel as oF,useMeasurements as oG,useToolbarActions as oH}from"../toolbar-actions/index.js";import{LayoutSlots as oJ,createAppLoader as oK,createCanvasLoader as oL,createLayoutAdminUi as oM,createLayoutCustomOwnerUi as oN,createLayoutCustomReadUi as oO,createLayoutDialog as oQ,createLayoutFooter as oT,createLayoutToolbarDesktop as oV,createLayoutToolbarDesktopFullScreen as oW,createLayoutToolbarReadDesktop as oX,createLayoutToolbarReadDesktopFullScreen as oY,createLayoutUserUi as oZ,createToolbarHelp as o$,useSceneSafeArea as o_}from"../ui/index.js";import{createPresetDeviceNotSupported as o0,createPresetPageAction as o1,createPresetUi as o2}from"../ui/preset-layout/PresetUi.js";import{useResetCamera as o3}from"./use-reset-camera.js";export const createConfiguratorInterface=o4=>({updates:a(),getIdSequence:m,createGetWebComponentOptionsHandler:t,createGetThemeHandler:r,createPhoenixHandler:i,createCustomPhoenixEntityElement:e,createCustomPhoenixLayoutElement:o,createPhoenixIconSet:ol,createGetTextureProcessingMapHandler:oz,createCollectFrontendDataHandler:u,createFilterPublishedChunksHandler:g,createOnGoToIndexHandler:oC,createOnApplicationStartProvider:ok,createOnSessionReadyProvider:ob,createOnPublishedDataReadyProvider:ow,createOnFrontendDataReadyProvider:oA,createOnBackendDataReadyProvider:oy,createOnRoutingReadyProvider:oE,createOnConfiguratorReadyProvider:oI,createOnPresetLoadedHandler:oS,createPresetUi:o2,createPresetPageAction:o1,createPresetDeviceNotSupported:o0,createLayoutFooter:oT,createAppLoader:oK,createCanvasLoader:oL,createLayoutDialog:oQ,createLayoutToolbarDesktop:oV,createLayoutToolbarDesktopFullScreen:oW,createLayoutToolbarReadDesktop:oX,createLayoutToolbarReadDesktopFullScreen:oY,createLayoutCustomOwnerUi:oN,createLayoutCustomReadUi:oO,createLayoutAdminUi:oM,createLayoutUserUi:oZ,createToolbarHelp:o$,createNotAuthenticatedPage:j,createConfigurationNotFoundPage:ox,createConfiguratorErrorPage:oh,createAddEntityFab:f,createDeleteEntityFab:c,createSelectionHotspot:x,createNavigationHotspot:l,createToolMenuFab:k,createTransformer:n,transformerBuilder:s(),useAnalytics:h,useAuthenticatedClient:F,useAuthorizedClient:G,useCreateAuthorizedClient:$,useAccessService:q,useConfigurationId:Q,useSession:e9,useSessionRole:oe,useSessionService:oo,useDomain:ei,useDomainApplication:en,useConfigurator:oj,useConfiguratorRouting:oq,usePresetSelection:oB,usePublishedData:eG,useFrontendData:ek,useBackendData:H,useDomainApplicationProps:es,useLoadedData:eB,useIntegrationService:eE,useIntegrationState:eb,usePresetEmbeddedState:eF,useRecipeEmbeddedState:eJ,useCommittedSlice:K,useRenderedSlice:eT,useCommittedState:L,useRenderedState:eV,useStoreSelector:oa,useRenderedSelector:eO,useStoreSelector$:om,useRenderedSelector$:eQ,useEntitySelector:ed,useRenderedEntitySelector:eM,useRootEntitySelector:e1,useRenderedRootEntitySelector:eN,useStateValidity:on,useMapViolationHints:ev,useNavigate:ez,usePopNavigate:eD,usePushNavigate:eH,useControlViolations:V,useFinalizeViolations:ec,useConfiguratorMessages:T,useFinalizeAction:ef,useFinalizeActions:eu,useComponent:M,useRenderedComponent:eK,useComponents:N,useRenderedComponents:eL,useFirstComponent:eg,useFirstRenderedComponent:el,useRootComponents:eY,useRootRenderedComponents:e3,useFirstRootComponent:ej,useFirstRootRenderedComponent:ex,useEntityState:em,useEntityRenderedState:ea,useRootEntityState:e2,useRootEntityRenderedState:e0,useRootEntityId:eZ,useRootEntityRenderedId:e_,useEntityPrice:ep,useRootEntityPrice:e$,useSelectedEntity:e7,useSelectedEntityId:e8,useSelectedDomainEntityId:e6,useSelectEntity:e4,useDeselect:eo,useSelectParent:e5,useHoveredEntity:eS,useHoveredEntityId:ew,useHoveredDomainEntityId:eC,useActiveNavigationState:B,useActiveViewState:R,useSetViewState:ot,useActiveToolState:P,useIsFullscreenActive:eq,useSetFullscreen:or,useResetCamera:o3,useUndoRedo:ou,useTabNavigation:od,useStepNavigation:os,useSceneSafeArea:o_,useActiveViewports:U,usePreview:oP,useCloseAction:ov,useIsCloningAllowed:oJ.useIsCloningAllowed,useResolveLocalizable:eX,useLocalizable:eh,useToolbarActions:oH,useMeasurements:oG,useLocaleSwitch:eU,useShareLinks:oi,useAssistantPanel:oF,useComposition:O,useUpdateControl:oc,useUpdatedControl:og,useCookRecipes:W,useCookedRecipes:Y,useCookReplaceRecipes:X,useCookedReplaceRecipes:Z,useDeleteEntity:_,useDeletedEntity:ee,useSwatchSelection:op,useTextValue:of,useAttributeSelection:z,useAttributeSwitch:D,useDistanceDimension:er,useDistanceDimensionSelection:et,useGenericDimension:eI,useAngleDimension:v,useChildEntitySelection:J,useGroupedRecipeOptions:eA,useReplaceEntityRecipeOptions:eW,useUpdateEntityObjectSelection:oD,useGenerateShareLink:ey,useLoadingState:eP,useLoadingStateValue:eR,usePropertyPageStack:oR,usePropertyPageState:oU,isCreateEntityUpdate:p,isReplaceEntityUpdate:d,isDeleteEntityUpdate:C,isAngleDimensionUpdate:y,isDistanceDimensionUpdate:S,isGenericDimensionUpdate:w,isAttributeSelectionUpdate:I,isAttributeSwitchUpdate:A,isTextValueUpdate:b,isSwatchSelectionUpdate:E});
@@ -0,0 +1,9 @@
1
+ import { type PhoenixLayoutElementRegistration } from '#package/domain';
2
+ import type { ConfigurationNotFoundPageProps } from '#package/react-sdk';
3
+ /**
4
+ * Registers a project's "configuration not accessible" page as the `ConfigurationNotFoundPage`
5
+ * element, with its props typed. Registering a layout element under that name with
6
+ * `createCustomPhoenixLayoutElement` works too, but its component is typed as taking only `children`.
7
+ */
8
+ export declare const createConfigurationNotFoundPage: (Element: (props: ConfigurationNotFoundPageProps) => JSX.Element) => PhoenixLayoutElementRegistration;
9
+ export type CreateConfigurationNotFoundPage = (Element: (props: ConfigurationNotFoundPageProps) => JSX.Element) => PhoenixLayoutElementRegistration;
@@ -0,0 +1 @@
1
+ import{createCustomPhoenixLayoutElement as o}from"#package/domain";import{ConfigurationNotFoundPageName as t}from"./ConfigurationNotFoundPageElement.js";export const createConfigurationNotFoundPage=n=>o(t,n);
@@ -1 +1,2 @@
1
1
  export { ConfigurationNotFoundPageElement, ConfigurationNotFoundPageName } from './ConfigurationNotFoundPageElement.js';
2
+ export { createConfigurationNotFoundPage, type CreateConfigurationNotFoundPage, } from './create-configuration-not-found-page.js';
@@ -1 +1 @@
1
- export{ConfigurationNotFoundPageElement,ConfigurationNotFoundPageName}from"./ConfigurationNotFoundPageElement.js";
1
+ export{ConfigurationNotFoundPageElement,ConfigurationNotFoundPageName}from"./ConfigurationNotFoundPageElement.js";export{createConfigurationNotFoundPage}from"./create-configuration-not-found-page.js";
@@ -0,0 +1,12 @@
1
+ import { type ReactNode } from 'react';
2
+ interface ConfiguratorResponsiveProviderProps {
3
+ readonly children: ReactNode;
4
+ readonly containerZIndex: number;
5
+ }
6
+ /**
7
+ * Gives the configurator its responsive state for as long as it is mounted, and renders the root
8
+ * container that measures itself into that state. The lifecycle reads the state from the runtime
9
+ * provider, the UI through `useResponsive()`.
10
+ */
11
+ export declare const ConfiguratorResponsiveProvider: (props: ConfiguratorResponsiveProviderProps) => import("react/jsx-runtime").JSX.Element;
12
+ export {};
@@ -0,0 +1 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{useState as e}from"react";import{ResponsiveStateManager as o,ResponsiveStateProvider as t}from"#package/react-sdk";import{ResponsiveApplicationProvider as a}from"#package/ui-sdk";export const ConfiguratorResponsiveProvider=i=>{let{children:n,containerZIndex:m}=i,[c]=e(()=>new o);return r(t,{manager:c,children:r(a,{containerZIndex:m,store:c,children:n})})};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{createContext as r,useCallback as t,useContext as o,useEffect as i,useMemo as a,useState as n}from"react";import{match as s}from"ts-pattern";import{standardWebComponentProperties as d}from"#package/domain";import{useWebComponentPropertyState as m,useWebComponentPropertyValue as p}from"#package/react-sdk";import{useResponsive as u}from"#package/ui-sdk";let w=r(null);export const PreviewContextProvider=r=>{let{children:o,preview:h,alwaysExpand:v}=r,[c,f]=n(!0),[x,l]=m(d.expanded),P=p(d.mode),g=p(d.power),{isMobile:k,expand:C,collapse:b,show:j,hide:y}=u(),E=t(()=>{f(!1),(v||k)&&l(!0)},[k,v,l]),q=t(()=>{f(!0),l(!1)},[l]),z=a(()=>!!x||"configurator"===P&&s(h).with("hide",()=>!1).with("never",()=>!1).with("always",()=>!0).with("auto",()=>k).exhaustive(),[h,x,k,P]),A=!x&&z&&c,B="hide"===h&&!x&&"configurator"===P,D=a(()=>({isPreview:A,isExpanded:x,enter:E,leave:q,isPreviewEnabled:z,isHidden:B}),[A,x,E,q,z,B]),F=s(g).with("on",()=>!0).with("standby","off",()=>!1).exhaustive();return i(()=>{x&&F?C():b()},[x,C,b,F]),i(()=>{B?y():j()},[B,y,j]),e(w.Provider,{value:D,children:o})};export const usePreview=()=>{let e=o(w);if(!e)throw Error("Context was not provided - usePreview must be used inside PreviewContext provider");return e};
1
+ import{jsx as e}from"react/jsx-runtime";import{createContext as r,useCallback as t,useContext as o,useEffect as i,useMemo as a,useState as n}from"react";import{match as s}from"ts-pattern";import{standardWebComponentProperties as d}from"#package/domain";import{useResponsiveState as m,useResponsiveStateManager as p,useWebComponentPropertyState as u,useWebComponentPropertyValue as w}from"#package/react-sdk";let h=r(null);export const PreviewContextProvider=r=>{let{children:o,preview:v,alwaysExpand:c}=r,[f,x]=n(!0),[l,P]=u(d.expanded),g=w(d.mode),k=w(d.power),{isMobile:C}=m(),{expand:b,collapse:j,show:y,hide:E}=p(),q=t(()=>{x(!1),(c||C)&&P(!0)},[C,c,P]),z=t(()=>{x(!0),P(!1)},[P]),A=a(()=>!!l||"configurator"===g&&s(v).with("hide",()=>!1).with("never",()=>!1).with("always",()=>!0).with("auto",()=>C).exhaustive(),[v,l,C,g]),B=!l&&A&&f,D="hide"===v&&!l&&"configurator"===g,F=a(()=>({isPreview:B,isExpanded:l,enter:q,leave:z,isPreviewEnabled:A,isHidden:D}),[B,l,q,z,A,D]),G=s(k).with("on",()=>!0).with("standby","off",()=>!1).exhaustive();return i(()=>{l&&G?b():j()},[l,b,j,G]),i(()=>{D?E():y()},[D,E,y]),e(h.Provider,{value:F,children:o})};export const usePreview=()=>{let e=o(h);if(!e)throw Error("Context was not provided - usePreview must be used inside PreviewContext provider");return e};
@@ -1,6 +1,6 @@
1
1
  import type { Viewport } from '#package/domain';
2
- import { type ResponsiveInfo } from '#package/ui-sdk';
3
- type ViewportFlags = Pick<ResponsiveInfo, 'isPhone' | 'isMobile' | 'isTablet' | 'isDesktop' | 'isLandscape' | 'isPortrait'>;
2
+ import { type ResponsiveState } from '#package/react-sdk';
3
+ type ViewportFlags = Pick<ResponsiveState, 'isPhone' | 'isMobile' | 'isTablet' | 'isDesktop' | 'isLandscape' | 'isPortrait'>;
4
4
  /**
5
5
  * Maps the responsive flags of the configurator container to the viewport classes stored in the domain.
6
6
  */
@@ -1 +1 @@
1
- import{useEffect as t,useRef as e}from"react";import{useDomain as r}from"#package/react-sdk";import{useResponsive as o}from"#package/ui-sdk";let i=[["isPhone","phone"],["isMobile","mobile"],["isTablet","tablet"],["isDesktop","desktop"],["isLandscape","landscape"],["isPortrait","portrait"]];export const getActiveViewports=t=>i.filter(([e])=>t[e]).map(([,t])=>t);export const ViewportStateSync=()=>{let{storeSystem:i,navigationSystem:p}=r(),{isPhone:a,isMobile:l,isTablet:n,isDesktop:s,isLandscape:c,isPortrait:m}=o(),g=e(null);return t(()=>{let t,e=getActiveViewports({isPhone:a,isMobile:l,isTablet:n,isDesktop:s,isLandscape:c,isPortrait:m});0===e.length||(t=g.current,null!==t&&t.length===e.length&&t.every((t,r)=>t===e[r]))||(g.current=e,i.stageAndCommit([p.getViewportUpdate(e)]))},[a,l,n,s,c,m,i,p]),null};
1
+ import{useEffect as t,useRef as e}from"react";import{useDomain as r,useResponsiveState as o}from"#package/react-sdk";let i=[["isPhone","phone"],["isMobile","mobile"],["isTablet","tablet"],["isDesktop","desktop"],["isLandscape","landscape"],["isPortrait","portrait"]];export const getActiveViewports=t=>i.filter(([e])=>t[e]).map(([,t])=>t);export const ViewportStateSync=()=>{let{storeSystem:i,navigationSystem:l}=r(),{isPhone:n,isMobile:p,isTablet:a,isDesktop:s,isLandscape:c,isPortrait:g}=o(),m=e(null);return t(()=>{let t,e=getActiveViewports({isPhone:n,isMobile:p,isTablet:a,isDesktop:s,isLandscape:c,isPortrait:g});0===e.length||(t=m.current,null!==t&&t.length===e.length&&t.every((t,r)=>t===e[r]))||(m.current=e,i.stageAndCommit([l.getViewportUpdate(e)]))},[n,p,a,s,c,g,i,l]),null};
@@ -39,10 +39,17 @@ export declare const useSidebarContents: () => {
39
39
  };
40
40
  export declare const useSidebarGoBack: () => () => void;
41
41
  export declare const useHasSidebarSummary: () => boolean;
42
+ /**
43
+ * @deprecated Use `useToolbarActions()` instead, or mount `LayoutSlots.DesktopToolbar` to keep project element
44
+ * overrides. This API will be removed in a future version.
45
+ */
42
46
  export declare const useToolbarState: () => import("#package/domain").ToolbarComponentState;
43
47
  export declare const useEmbeddedModeActive: () => boolean;
44
48
  export declare const usePresetEmbeddedModeActive: () => boolean;
45
49
  export declare const useBackToPresetEnabled: () => boolean;
50
+ /**
51
+ * @deprecated Use `phx.frontend.useStepNavigation()` instead. This API will be removed in a future version.
52
+ */
46
53
  export declare const useSteps: () => {
47
54
  currentStep: import("#package/domain").NavigationStep | undefined;
48
55
  progress: number;
@@ -51,5 +58,8 @@ export declare const useSteps: () => {
51
58
  isLastStep: boolean;
52
59
  previousStepDisabled: boolean;
53
60
  };
61
+ /**
62
+ * @deprecated Use `phx.frontend.useStepNavigation()` instead. This API will be removed in a future version.
63
+ */
54
64
  export declare const useHasSteps: () => boolean | null;
55
65
  export declare const useHeaderStyle: () => 'none' | 'floating' | 'fixed';
@@ -1 +1 @@
1
- import{jsx as t,Fragment as e}from"react/jsx-runtime";import{useCallback as o,useEffect as r,useLayoutEffect as n,useState as a}from"react";import{standardWebComponentEvents as i,standardWebComponentProperties as u}from"#package/domain";import{ApplicationRoutes as l,INTEGRATION_MODE_SETTINGS as s,setConfigurationIdQuery as d,useDispatchWebComponentEvent as g,useRoutingSelectors as m,useRoutingService as c,useWebComponentProperty$ as f,useWebComponentPropertyValue as p}from"#package/react-sdk";import{useOnGoToIndexHandler as x}from"./OnGoToIndexHandler.js";export const useConfiguratorRouting=()=>c();export const ConfiguratorRoutingProvider=T=>{let{children:v}=T,O=c(),b=m(),C=x(),I=p(u.integrationMode),h=f(u.route),j=g(i.navigated),k=o(t=>{h.next(t),s[I].writeCidToUrl&&(t.route===l.Configuration?d(t.configurationId):d(null)),j(t)},[j,I,h]),[G,R]=a(!1);return(r(()=>(O.setOnGoToIndex(C?.handler??null),()=>{O.setOnGoToIndex(null)}),[O,C?.handler]),r(()=>(O.setOnNavigated(k),()=>{O.setOnNavigated(null)}),[O,k]),n(()=>{O.routeTo(h.value),R(!0)},[O,h,I]),r(()=>{let t=h.subscribe(t=>{b.getRoutingState()!==t&&O.routeTo(t)});return()=>{t.unsubscribe()}},[O,b,h]),G)?t(e,{children:v}):null};
1
+ import{jsx as r,Fragment as t}from"react/jsx-runtime";import{useCallback as e,useEffect as o,useLayoutEffect as n,useState as i}from"react";import{standardWebComponentEvents as a,standardWebComponentProperties as u}from"#package/domain";import{ApplicationRoutes as g,INTEGRATION_MODE_SETTINGS as s,setConfigurationIdQuery as d,useDispatchWebComponentEvent as m,useRoutingSelectors as c,useRoutingService as l,useWebComponentProperty$ as f,useWebComponentPropertyValue as p}from"#package/react-sdk";import{useOnGoToIndexHandler as x}from"./OnGoToIndexHandler.js";export const useConfiguratorRouting=()=>l();export const ConfiguratorRoutingProvider=T=>{let{children:b}=T,v=l(),C=c(),j=x(),k=p(u.integrationMode),I=f(u.route),O=m(a.navigated),R=e(r=>{I.next(r),s[k].writeCidToUrl&&(r.route===g.Configuration?d(r.configurationId):d(null)),O(r)},[O,k,I]),[h,G]=i(!1),w=j?.handler;return(o(()=>{if(w)return v.registerOnGoToIndex(w)},[v,w]),o(()=>v.registerOnNavigated(R),[v,R]),n(()=>{v.routeTo(I.value),G(!0)},[v,I,k]),o(()=>{let r=I.subscribe(r=>{C.getRoutingState()!==r&&v.routeTo(r)});return()=>{r.unsubscribe()}},[v,C,I]),h)?r(t,{children:b}):null};
@@ -0,0 +1,6 @@
1
+ import type { ConfiguratorErrorPageProps } from '#package/react-sdk';
2
+ /**
3
+ * The configurator's built-in production error page, the default `ConfiguratorErrorPage`
4
+ * registration and the page shown when a project's error page throws.
5
+ */
6
+ export declare const BuiltInConfiguratorErrorPage: (props: ConfiguratorErrorPageProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{match as t}from"ts-pattern";import{ErrorPage as o}from"#package/ui-sdk";export const BuiltInConfiguratorErrorPage=r=>{let{reason:n,onRetry:i}=r;return t(n).with("presetCreationFailed",()=>e(o,{title:"Whoops, something went wrong!",message:"We couldn't start configuring from this preset. Please reload the page and try again.",buttonLabel:"Reload page",onButtonClick:i})).with("uncaughtError",()=>e(o,{title:"Whoops, something went wrong!",message:"We're experiencing some technical difficulties right now. Please try again in a few minutes. Thank you for your patience!",buttonLabel:"Try Again",onButtonClick:i})).exhaustive()};
@@ -0,0 +1,12 @@
1
+ import { type ConfiguratorErrorPageProps } from '#package/react-sdk';
2
+ /**
3
+ * The name a project registers a layout element under to replace the configurator's production error
4
+ * page. Its default, `BuiltInConfiguratorErrorPage`, is registered in `defaultConfiguratorElements`.
5
+ */
6
+ export declare const ConfiguratorErrorPageName = "ConfiguratorErrorPage";
7
+ /**
8
+ * Renders the `ConfiguratorErrorPage` element. The page is shown after something already failed, so
9
+ * a registered page that throws in turn falls back to the built-in page instead of taking the
10
+ * configurator down; a hot reload that replaces or removes that page renders the element again.
11
+ */
12
+ export declare const ConfiguratorErrorPageElement: (props: ConfiguratorErrorPageProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{useCallback as e}from"react";import{ErrorBoundary as o}from"react-error-boundary";import{PhoenixLayoutElement as t,useLogger as a,usePhoenixElementSlots as n}from"#package/react-sdk";import{BuiltInConfiguratorErrorPage as i}from"./BuiltInConfiguratorErrorPage.js";export const ConfiguratorErrorPageName="ConfiguratorErrorPage";export const ConfiguratorErrorPageElement=g=>{let m=a(),{layoutElements:s}=n(),f=e(r=>{m.error("The ConfiguratorErrorPage element threw while rendering, so the built-in error page is shown instead. Fix the error in the registered ConfiguratorErrorPage element.",{},r)},[m]);return r(o,{fallback:r(i,{...g}),onError:f,resetKeys:[s[ConfiguratorErrorPageName]],children:r(t,{name:ConfiguratorErrorPageName,elementProps:{...g}})})};
@@ -0,0 +1,9 @@
1
+ import { type PhoenixLayoutElementRegistration } from '#package/domain';
2
+ import type { ConfiguratorErrorPageProps } from '#package/react-sdk';
3
+ /**
4
+ * Registers a project's production error page as the `ConfiguratorErrorPage` element, with its props
5
+ * typed. Registering a layout element under that name with `createCustomPhoenixLayoutElement` works
6
+ * too, but its component is typed as taking only `children`.
7
+ */
8
+ export declare const createConfiguratorErrorPage: (Element: (props: ConfiguratorErrorPageProps) => JSX.Element) => PhoenixLayoutElementRegistration;
9
+ export type CreateConfiguratorErrorPage = (Element: (props: ConfiguratorErrorPageProps) => JSX.Element) => PhoenixLayoutElementRegistration;
@@ -0,0 +1 @@
1
+ import{createCustomPhoenixLayoutElement as r}from"#package/domain";import{ConfiguratorErrorPageName as o}from"./ConfiguratorErrorPageElement.js";export const createConfiguratorErrorPage=a=>r(o,a);
@@ -0,0 +1,3 @@
1
+ export { BuiltInConfiguratorErrorPage } from './BuiltInConfiguratorErrorPage.js';
2
+ export { ConfiguratorErrorPageElement, ConfiguratorErrorPageName } from './ConfiguratorErrorPageElement.js';
3
+ export { createConfiguratorErrorPage, type CreateConfiguratorErrorPage } from './create-configurator-error-page.js';
@@ -0,0 +1 @@
1
+ export{BuiltInConfiguratorErrorPage}from"./BuiltInConfiguratorErrorPage.js";export{ConfiguratorErrorPageElement,ConfiguratorErrorPageName}from"./ConfiguratorErrorPageElement.js";export{createConfiguratorErrorPage}from"./create-configurator-error-page.js";
@@ -1,6 +1,9 @@
1
1
  export { ConfiguratorApp } from './ConfiguratorApp.js';
2
+ export { createConfigurationNotFoundPage, type CreateConfigurationNotFoundPage, } from './configuration-not-found-page/index.js';
3
+ export { createConfiguratorErrorPage, type CreateConfiguratorErrorPage } from './configurator-error-page/index.js';
2
4
  export * from './application-runtime/index.js';
3
5
  export * from './common/index.js';
6
+ export * from './toolbar-actions/index.js';
4
7
  export * from './configurator-context/index.js';
5
8
  export * from './pages/index.js';
6
9
  export * from './scene/index.js';
@@ -1 +1 @@
1
- export{ConfiguratorApp}from"./ConfiguratorApp.js";export*from"./application-runtime/index.js";export*from"./common/index.js";export*from"./configurator-context/index.js";export*from"./pages/index.js";export*from"./scene/index.js";export*from"./ui/index.js";export*from"./integration/index.js";
1
+ export{ConfiguratorApp}from"./ConfiguratorApp.js";export{createConfigurationNotFoundPage}from"./configuration-not-found-page/index.js";export{createConfiguratorErrorPage}from"./configurator-error-page/index.js";export*from"./application-runtime/index.js";export*from"./common/index.js";export*from"./toolbar-actions/index.js";export*from"./configurator-context/index.js";export*from"./pages/index.js";export*from"./scene/index.js";export*from"./ui/index.js";export*from"./integration/index.js";
@@ -1,2 +1 @@
1
1
  export declare const ConfiguratorRootErrorPage: () => import("react/jsx-runtime").JSX.Element;
2
- export declare const ConfiguratorErrorPage: () => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{Trans as o}from"@lingui/react";import{ErrorPage as r}from"#package/ui-sdk";import{useConfiguratorRouting as s}from"../configurator-context/index.js";export const ConfiguratorRootErrorPage=()=>e(r,{title:e(o,{id:"sdk.messages.error.configuratorRoot.title",message:"Whoops, something went wrong!"}),message:e(o,{id:"sdk.messages.error.configuratorRoot.message",message:"We’re experiencing some technical difficulties right now. Please try again in a few minutes. Thank you for your patience!"}),buttonLabel:e(o,{id:"sdk.messages.error.configuratorRoot.backToHome.label",message:"Back to Home"})});export const ConfiguratorErrorPage=()=>e(r,{onButtonClick:s().goToIndex,title:e(o,{id:"sdk.messages.error.configurator.title",message:"Whoops, something went wrong!"}),message:e(o,{id:"sdk.messages.error.configurator.message",message:"We’re experiencing some technical difficulties right now. Please try again in a few minutes. Thank you for your patience!"}),buttonLabel:e(o,{id:"sdk.messages.error.configurator.backToHome.label",message:"Back to Home"})});
1
+ import{jsx as e}from"react/jsx-runtime";import{Trans as o}from"@lingui/react";import{ErrorPage as r}from"#package/ui-sdk";export const ConfiguratorRootErrorPage=()=>e(r,{title:e(o,{id:"sdk.messages.error.configuratorRoot.title",message:"Whoops, something went wrong!"}),message:e(o,{id:"sdk.messages.error.configuratorRoot.message",message:"We’re experiencing some technical difficulties right now. Please try again in a few minutes. Thank you for your patience!"}),buttonLabel:e(o,{id:"sdk.messages.error.configuratorRoot.backToHome.label",message:"Back to Home"})});
@@ -1 +1 @@
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 b,useSpecAssistant as y}from"#package/react-sdk";import{useConfigurator as x}from"../application-runtime/index.js";import{IntegrationSubscription as E,OnConfiguratorReadyProvider as M,ViewportStateSync as D}from"../configurator-context/index.js";import{ConfiguratorNotFoundPage as F}from"./ConfiguratorNotFoundPage.js";import{ConfiguratorLayoutName as L}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 S=i(()=>((()=>{let{assistantSystem:o}=x(),r=null!=y();t(()=>{if(r)return o.activate()},[o,r])})(),o(e,{children:o(M,{children:o(u,{name:L})})})));export const LoadedConfiguratorDetailPage=()=>{h(d.SceneAssets);let{configurationId:e,accessInfo:i}=f(),t=g(),u=b(),y=w(),x=m(),{startConfiguratorLoad:M,completeConfiguratorLoad:L,failConfiguratorLoad:V,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(()=>{M()},[M]),K=n(o=>{L({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")),y.appendToGlobalContext({configurationId:o.configurationId,revisionId:o.revisionId,mode:i.viewMode}),y.info("Configuration loaded.")},[i.viewMode,x,L,z,y]),O=n(o=>{if(V(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});y.error("Configuration loading failed because the API request did not succeed. Verify the configuration ID and access token.",{configurationId:e},r)},[i.raw,e,V,y,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(F,{}):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(D,{}),o(S,{})]})})})})})};
1
+ import{jsx as o,jsxs as r}from"react/jsx-runtime";import i from"mui-modal-provider";import{memo as e,useCallback as n,useEffect as t,useState as a}from"react";import{InvalidAccessKeyError as d}from"#package/client";import{BuiltInLoadingPhase as l,CommonAnalyticsFactory as s,DomainLifecycleBoundary as c,FinalizeActionsHost as u,FinalizeActionsProvider as f,LoadedDataProvider as m,PhoenixLayoutElement as g,useAccessService as p,useAnalyticsService as v,useAuthorizedClient as I,useConfiguratorDomainFactory as h,useConfiguratorLoadStatus as j,useConfiguratorRawLoadedData as C,useLoadedDataActions as k,useLoadingError as w,useLoadingPhase as y,useLogger as b,useRoutingService as x,useSpecAssistant as M}from"#package/react-sdk";import{useConfigurator as E}from"../application-runtime/index.js";import{IntegrationSubscription as L,OnConfiguratorReadyProvider as D,ViewportStateSync as F}from"../configurator-context/index.js";import{ConfiguratorNotFoundPage as T}from"./ConfiguratorNotFoundPage.js";import{ConfiguratorLayoutName as P}from"./configurator-layout-name.js";import{DevContextFallback as R}from"./error-boundaries/DevContextFallback.js";import{DevLoadingFallback as V}from"./error-boundaries/DevLoadingFallback.js";import{LoadingErrorBoundary as A}from"./error-boundaries/LoadingErrorBoundary.js";import{useLoad as S}from"./use-load.js";let q=({onMount:o})=>(t(()=>{o()},[o]),null),B=e(({onLayoutMount:e})=>((()=>{let{assistantSystem:o}=E(),r=null!=M();t(()=>{if(r)return o.activate()},[o,r])})(),o(f,{children:o(i,{children:r(D,{children:[o(u,{}),o(g,{name:P}),o(q,{onMount:e})]})})})));export const LoadedConfiguratorDetailPage=()=>{let[i,e]=a(!1),t=n(()=>{e(!0)},[]),{configurationId:u,accessInfo:f}=p(),g=I(),M=x(),E=b(),D=v(),{startConfiguratorLoad:P,completeConfiguratorLoad:q,failConfiguratorLoad:G,resetConfiguratorLoad:N}=k(),{isLoading:z,isError:H}=j(),J=C(),K=h(),O=n(()=>f.viewMode&&void 0!==f.revisionId?g.getConfigurationRevision(u,f.revisionId):g.getConfiguration(u),[f.revisionId,f.viewMode,g,u]),Q=n(()=>{P()},[P]),U=n(o=>{q({initialRevisionId:o.revisionId,initialEntities:o.data,modelVersion:o.modelVersion,rootEntityType:o.rootEntityType,schemaIdentity:K}),D.push(s.ConfigurationLoaded(o.configurationId,o.revisionId,f.viewMode?"read":"owner")),E.appendToGlobalContext({configurationId:o.configurationId,revisionId:o.revisionId,mode:f.viewMode}),E.info("Configuration loaded.")},[f.viewMode,D,q,K,E]),W=n(o=>{if(G(o),o instanceof d)return void M.rejectAccessToken(u,f.raw);let r=o instanceof Error?o:Error("Configuration loading failed with an unknown error.",{cause:o});E.error("Configuration loading failed because the API request did not succeed. Verify the configuration ID and access token.",{configurationId:u},r)},[f.raw,u,G,E,M]),X=n(()=>{N()},[N]);return(S({key:[g,u,f.revisionId,f.viewMode],load:O,onStart:Q,onSuccess:U,onError:W,onCleanup:X}),y({id:l.DataFetch,label:"Loading configuration…"},z||!H&&!i),w(H),H)?o(T,{}):null===J?null:o(m,{value:J,children:o(A,{fallbackRender:r=>o(V,{...r}),children:o(c,{type:"configurator",children:o(A,{FallbackComponent:R,children:r(L,{children:[o(F,{}),o(B,{onLayoutMount:t})]})})})})})};
@@ -4,7 +4,7 @@ interface PresetCreationErrorPageProps {
4
4
  /**
5
5
  * Page shown when creating a configuration from a preset fails. Renders the
6
6
  * detailed `DevErrorPage` in development (with extra guidance for known errors)
7
- * and the generic `ErrorPage` in production. The action reloads the page rather
7
+ * and the `ConfiguratorErrorPage` element in production. The action reloads the page rather
8
8
  * than retrying, since the common causes are not resolved by a retry.
9
9
  */
10
10
  export declare const PresetCreationErrorPage: (props: PresetCreationErrorPageProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Box as r,Typography as o}from"@mui/material";import{useCallback as a}from"react";import{isConfigurationSchemaMismatchError as i}from"#package/client";import{isStateMigrationError as n}from"#package/domain";import{useIsDev as s}from"#package/react-sdk";import{DevErrorPage as d,ErrorPage as l}from"#package/ui-sdk";let m=a=>{let{heading:i,details:n}=a;return t(r,{component:"div",sx:{p:2,backgroundColor:"#ffebee",borderRadius:1,borderLeft:"4px solid #f44336"},children:[e(o,{variant:"subtitle2",sx:{fontWeight:600,mb:1,color:"error.main"},children:i}),e(o,{variant:"body2",sx:{mb:1},children:"Update the preset data to match the current model, or re-register/redeploy the schema. Details:"}),e(r,{component:"pre",sx:{m:0,p:1.5,backgroundColor:"#fff",borderRadius:1,border:"1px solid #e0e0e0",fontFamily:"monospace",fontSize:"0.75rem",whiteSpace:"pre-wrap",overflowX:"auto"},children:n})]})};export const PresetCreationErrorPage=t=>{let{error:r}=t,o=s(),c=a(()=>{window.location.reload()},[]);if(!o)return e(l,{title:"Whoops, something went wrong!",message:"We couldn't start configuring from this preset. Please reload the page and try again.",buttonLabel:"Reload page",onButtonClick:c});let p=i(r)?{title:"Preset does not match the registered schema (Dev Mode)",heading:"⚠️ Preset data rejected by the configuration schema on the server",details:r.details}:n(r)?{title:"Preset could not be migrated to the current model (Dev Mode)",heading:"⚠️ Preset data is invalid for the current domain model",details:r.message}:null;return e(d,{title:p?.title??"Failed to create configuration (Dev Mode)",subtitle:"Creating a configuration from the preset failed. This detailed view is only visible in development mode.",errorName:r.name,errorMessage:r.message,errorStack:p?null:r.stack,error:r,onReset:c,resetLabel:"Reload page",children:p&&e(m,{heading:p.heading,details:p.details})})};
1
+ import{jsx as e,jsxs as r}from"react/jsx-runtime";import{Box as t,Typography as o}from"@mui/material";import{useCallback as a}from"react";import{isConfigurationSchemaMismatchError as i}from"#package/client";import{isStateMigrationError as n}from"#package/domain";import{useIsDev as d}from"#package/react-sdk";import{DevErrorPage as s}from"#package/ui-sdk";import{ConfiguratorErrorPageElement as l}from"../configurator-error-page/index.js";let m=a=>{let{heading:i,details:n}=a;return r(t,{component:"div",sx:{p:2,backgroundColor:"#ffebee",borderRadius:1,borderLeft:"4px solid #f44336"},children:[e(o,{variant:"subtitle2",sx:{fontWeight:600,mb:1,color:"error.main"},children:i}),e(o,{variant:"body2",sx:{mb:1},children:"Update the preset data to match the current model, or re-register/redeploy the schema. Details:"}),e(t,{component:"pre",sx:{m:0,p:1.5,backgroundColor:"#fff",borderRadius:1,border:"1px solid #e0e0e0",fontFamily:"monospace",fontSize:"0.75rem",whiteSpace:"pre-wrap",overflowX:"auto"},children:n})]})};export const PresetCreationErrorPage=r=>{let{error:t}=r,o=d(),c=a(()=>{window.location.reload()},[]);if(!o)return e(l,{reason:"presetCreationFailed",onRetry:c});let p=i(t)?{title:"Preset does not match the registered schema (Dev Mode)",heading:"⚠️ Preset data rejected by the configuration schema on the server",details:t.details}:n(t)?{title:"Preset could not be migrated to the current model (Dev Mode)",heading:"⚠️ Preset data is invalid for the current domain model",details:t.message}:null;return e(s,{title:p?.title??"Failed to create configuration (Dev Mode)",subtitle:"Creating a configuration from the preset failed. This detailed view is only visible in development mode.",errorName:t.name,errorMessage:t.message,errorStack:p?null:t.stack,error:t,onReset:c,resetLabel:"Reload page",children:p&&e(m,{heading:p.heading,details:p.details})})};
@@ -5,7 +5,9 @@ import { type ElementRegistration } from '#package/domain';
5
5
  * loaded configuration, `ConfigurationNotFoundPage` the page shown when a configuration cannot be
6
6
  * loaded or opened, `NotAuthenticatedPage` the page shown when session authentication fails or an
7
7
  * anonymous visitor who may not create a configuration opens the start page, `PresetUi` the preset
8
- * screen, and the others are the built-in controls, toolbar buttons, menu actions and
9
- * sidebar-footer pieces under the spec kinds that YAML names.
8
+ * screen, `ConfiguratorErrorPage` the production error page, `AppLoaderContent` what the app loader
9
+ * overlay shows, `AddEntityFab`, `DeleteEntityFab`, `SelectionHotspot`, `NavigationHotspot` and
10
+ * `ToolMenuFab` the in-scene entity controls, and the others are the built-in controls, toolbar
11
+ * buttons, menu actions and sidebar-footer pieces under the spec kinds that YAML names.
10
12
  */
11
13
  export declare const defaultConfiguratorElements: readonly ElementRegistration[];
@@ -1 +1 @@
1
- import{createCustomPhoenixLayoutElement as o}from"#package/domain";import{ConfigurationNotFoundPage as t,createNotAuthenticatedPage as r}from"#package/react-sdk";import{ConfigurationNotFoundPageName as e}from"../configuration-not-found-page/index.js";import{createPresetUi as m}from"../ui/index.js";import{DefaultConfiguratorLayout as a}from"./DefaultConfiguratorLayout.js";import{DefaultNotAuthenticatedPage as i}from"./DefaultNotAuthenticatedPage.js";import{DefaultPresetUi as f}from"./DefaultPresetUi.js";import{ConfiguratorLayoutName as n}from"./configurator-layout-name.js";import{domainControlElements as u,recipePanelElements as p,sidebarFooterElements as s,toolbarElements as d}from"./default-elements/index.js";export const defaultConfiguratorElements=[o(n,a),o(e,t),r(i),m(f),...u,...p,...d,...s];
1
+ import{createCustomPhoenixLayoutElement as o}from"#package/domain";import{ConfigurationNotFoundPage as r,createNotAuthenticatedPage as t}from"#package/react-sdk";import{AppLoaderContentName as e,DefaultAppLoaderContent as i}from"../app-loader-content/index.js";import{createConfigurationNotFoundPage as m}from"../configuration-not-found-page/index.js";import{BuiltInConfiguratorErrorPage as a,createConfiguratorErrorPage as f}from"../configurator-error-page/index.js";import{createPresetUi as n}from"../ui/index.js";import{DefaultConfiguratorLayout as p}from"./DefaultConfiguratorLayout.js";import{DefaultNotAuthenticatedPage as u}from"./DefaultNotAuthenticatedPage.js";import{DefaultPresetUi as s}from"./DefaultPresetUi.js";import{ConfiguratorLayoutName as d}from"./configurator-layout-name.js";import{domainControlElements as g,recipePanelElements as c,sceneControlElements as j,sidebarFooterElements as l,toolbarElements as x}from"./default-elements/index.js";export const defaultConfiguratorElements=[o(d,p),m(r),t(u),n(s),f(a),o(e,i),...g,...c,...j,...x,...l];
@@ -2,3 +2,4 @@ export { domainControlElements } from './domain-control-elements.js';
2
2
  export { recipePanelElements } from './recipe-panel-elements.js';
3
3
  export { sidebarFooterElements } from './sidebar-footer-elements.js';
4
4
  export { toolbarElements } from './toolbar-elements.js';
5
+ export { BuiltInAddEntityFab, BuiltInDeleteEntityFab, BuiltInNavigationHotspot, BuiltInSelectionHotspot, BuiltInToolMenuFab, sceneControlElements, } from './scene-controls/index.js';
@@ -1 +1 @@
1
- export{domainControlElements}from"./domain-control-elements.js";export{recipePanelElements}from"./recipe-panel-elements.js";export{sidebarFooterElements}from"./sidebar-footer-elements.js";export{toolbarElements}from"./toolbar-elements.js";
1
+ export{domainControlElements}from"./domain-control-elements.js";export{recipePanelElements}from"./recipe-panel-elements.js";export{sidebarFooterElements}from"./sidebar-footer-elements.js";export{toolbarElements}from"./toolbar-elements.js";export{BuiltInAddEntityFab,BuiltInDeleteEntityFab,BuiltInNavigationHotspot,BuiltInSelectionHotspot,BuiltInToolMenuFab,sceneControlElements}from"./scene-controls/index.js";
@@ -0,0 +1,3 @@
1
+ import type { AddEntityFabElementProps } from '#package/react-sdk';
2
+ /** The default of the `AddEntityFab` element: the SDK's add-entity FAB with its recipe menu. */
3
+ export declare const BuiltInAddEntityFab: (props: AddEntityFabElementProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as i}from"react/jsx-runtime";import{PhxIcon as e}from"#package/ui-sdk";import{AddEntityFab as t}from"../../../scene/index.js";export const BuiltInAddEntityFab=n=>{let{entityId:o,instanceNames:a,fixableViolations:r,icon:s,label:l,title:m,tooltipVisibility:p,skipMenuWhenOnlyOne:d,hideWhenNone:c}=n;return i(t,{parentEntityId:o,instanceNames:a,fixableViolations:r,icon:s?i(e,{name:s}):void 0,title:m,tooltipVisibility:p,label:l,skipMenuWhenOnlyOne:d,hideWhenNone:c})};
@@ -0,0 +1,3 @@
1
+ import { type DeleteEntityFabElementProps } from '#package/react-sdk';
2
+ /** The default of the `DeleteEntityFab` element: the SDK's delete-entity FAB. */
3
+ export declare const BuiltInDeleteEntityFab: (props: DeleteEntityFabElementProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{LocalizableMessage as i}from"#package/react-sdk";import{PhxIcon as t,DeleteEntityFab as o}from"#package/ui-sdk";import{useSceneControlTooltip as r}from"../../../scene/index.js";export const BuiltInDeleteEntityFab=a=>{let{icon:n,label:l,title:s,tooltipVisibility:d,onDelete:c,disabled:m,disabledHint:p,trace:b}=a,{tooltipOpen:k}=r(d);return e(o,{label:l?e(i,{children:l}):void 0,title:s?e(i,{children:s}):void 0,icon:n?e(t,{name:n}):void 0,disabled:m,disabledMessage:p,tooltipOpen:k,onClick:c,onDebugClick:b})};
@@ -0,0 +1,3 @@
1
+ import type { NavigationHotspotElementProps } from '#package/react-sdk';
2
+ /** The default of the `NavigationHotspot` element: the SDK's hotspot dot. */
3
+ export declare const BuiltInNavigationHotspot: (props: NavigationHotspotElementProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{SceneHotspot as i}from"../../../scene/index.js";export const BuiltInNavigationHotspot=o=>{let{title:e,tooltipVisibility:r,onNavigate:n}=o;return t(i,{onClick:n,title:e,tooltipVisibility:r})};
@@ -0,0 +1,3 @@
1
+ import type { SelectionHotspotElementProps } from '#package/react-sdk';
2
+ /** The default of the `SelectionHotspot` element: the SDK's hotspot dot. */
3
+ export declare const BuiltInSelectionHotspot: (props: SelectionHotspotElementProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{SceneHotspot as i}from"../../../scene/index.js";export const BuiltInSelectionHotspot=o=>{let{title:e,tooltipVisibility:r,onSelect:n}=o;return t(i,{onClick:n,title:e,tooltipVisibility:r})};
@@ -0,0 +1,3 @@
1
+ import type { ToolMenuFabElementProps } from '#package/react-sdk';
2
+ /** The default of the `ToolMenuFab` element: the SDK's FAB with its menu of tools. */
3
+ export declare const BuiltInToolMenuFab: (props: ToolMenuFabElementProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as o}from"react/jsx-runtime";import{ToolMenuFab as t}from"../../../scene/index.js";export const BuiltInToolMenuFab=i=>{let{options:e,icon:n,title:r,tooltipVisibility:l,onSelectTool:s}=i;return o(t,{options:e,icon:n,title:r,tooltipVisibility:l,onSelectTool:s})};
@@ -0,0 +1,6 @@
1
+ export { BuiltInAddEntityFab } from './BuiltInAddEntityFab.js';
2
+ export { BuiltInDeleteEntityFab } from './BuiltInDeleteEntityFab.js';
3
+ export { BuiltInNavigationHotspot } from './BuiltInNavigationHotspot.js';
4
+ export { BuiltInSelectionHotspot } from './BuiltInSelectionHotspot.js';
5
+ export { BuiltInToolMenuFab } from './BuiltInToolMenuFab.js';
6
+ export { sceneControlElements } from './scene-control-elements.js';
@@ -0,0 +1 @@
1
+ export{BuiltInAddEntityFab}from"./BuiltInAddEntityFab.js";export{BuiltInDeleteEntityFab}from"./BuiltInDeleteEntityFab.js";export{BuiltInNavigationHotspot}from"./BuiltInNavigationHotspot.js";export{BuiltInSelectionHotspot}from"./BuiltInSelectionHotspot.js";export{BuiltInToolMenuFab}from"./BuiltInToolMenuFab.js";export{sceneControlElements}from"./scene-control-elements.js";
@@ -0,0 +1,6 @@
1
+ import type { ElementRegistration } from '#package/domain';
2
+ /**
3
+ * The SDK's in-scene entity controls, registered under the element names the scene renders them by:
4
+ * `AddEntityFab`, `DeleteEntityFab`, `SelectionHotspot`, `NavigationHotspot` and `ToolMenuFab`.
5
+ */
6
+ export declare const sceneControlElements: readonly ElementRegistration[];
@@ -0,0 +1 @@
1
+ import{createAddEntityFab as t,createDeleteEntityFab as o,createNavigationHotspot as i,createSelectionHotspot as r,createToolMenuFab as n}from"#package/react-sdk";import{BuiltInAddEntityFab as e}from"./BuiltInAddEntityFab.js";import{BuiltInDeleteEntityFab as m}from"./BuiltInDeleteEntityFab.js";import{BuiltInNavigationHotspot as s}from"./BuiltInNavigationHotspot.js";import{BuiltInSelectionHotspot as l}from"./BuiltInSelectionHotspot.js";import{BuiltInToolMenuFab as p}from"./BuiltInToolMenuFab.js";export const sceneControlElements=[t(e),o(m),r(l),i(s),n(p)];
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import{Box as r,Stack as n,Typography as i}from"@mui/material";import{useApplicationRuntime as o,useIsDev as a}from"#package/react-sdk";import{DevErrorPage as l,ErrorPage as s}from"#package/ui-sdk";import{useResetOnEditorHotReload as c}from"./use-reset-on-editor-hot-reload.js";let d=()=>{let a=o();try{let o=a.selectors.domainContext.configurator;if(!o.getInitializationState().isCurrent)return null;let{storeSystem:l}=o.getDomainSystems(),s=l.stateSlices.committed.value,c=l.stateSlices.potentiallyInvalid.value,d=c.validity.valid||"uncaught"===c.validity.severity?[]:c.validity.entityViolations,m=d.length>0,p="reset"!==s.kind?s.updates:[];if(!m&&0===p.length)return null;return t(r,{component:"div",sx:{p:2,backgroundColor:m?"#ffebee":"#e3f2fd",borderRadius:1,borderLeft:m?"4px solid #f44336":"4px solid #2196f3"},children:[e(i,{variant:"subtitle2",sx:{fontWeight:600,mb:1,color:m?"error.main":"primary.main"},children:m?"⚠️ Error likely caused by invariant violations":"\uD83D\uDD04 Last state changes before error"}),m&&t(r,{component:"div",sx:{mb:2},children:[e(i,{variant:"body2",sx:{mb:1},children:"The following invariant violations were detected:"}),e(n,{component:"div",spacing:.5,children:d.map((e,r)=>t(i,{variant:"caption",sx:{fontFamily:"monospace",fontSize:"0.75rem",display:"block",pl:2},children:["• Entity ",String(e.entityId),": ",JSON.stringify(e.violation)]},r))})]}),p.length>0&&t(r,{component:"div",children:[t(i,{variant:"body2",sx:{mb:1},children:[p.length," update",1!==p.length?"s":""," applied just before the error:"]}),t(n,{component:"div",spacing:.5,children:[p.slice(0,5).map((e,r)=>{let n="";return"createDomainEntity"===e.kind?n=` (${e.entity.type})`:"deleteEntity"===e.kind||"modifyDomainEntity"===e.kind||"replaceDomainEntity"===e.kind?n=` (${e.entityId})`:("createEphemeralRecord"===e.kind||"modifyEphemeralRecord"===e.kind||"deleteEphemeralRecord"===e.kind)&&(n=` (${e.componentInstance.entityId})`),t(i,{variant:"caption",sx:{fontFamily:"monospace",fontSize:"0.75rem",display:"block",pl:2},children:["• ",e.kind,n]},r)}),p.length>5&&t(i,{variant:"caption",sx:{fontFamily:"monospace",fontSize:"0.75rem",display:"block",pl:2,fontStyle:"italic"},children:["... and ",p.length-5," more"]})]})]})]})}catch{return null}};export const DevGeneralErrorFallback=t=>{let{error:r,resetErrorBoundary:n}=t;return c(n),e(l,{title:"Application Error (Dev Mode)",subtitle:"An uncaught error occurred in the application. This detailed view is only visible in development mode.",errorName:r instanceof Error?r.name:"Error",errorMessage:r instanceof Error?r.message:String(r),errorStack:r instanceof Error?r.stack:null,error:r,onReset:n,resetLabel:"Try Again",children:e(d,{})})};export const ProdGeneralErrorFallback=t=>{let{resetErrorBoundary:r}=t;return e(s,{title:"Whoops, something went wrong!",message:"We're experiencing some technical difficulties right now. Please try again in a few minutes. Thank you for your patience!",buttonLabel:"Try Again",onButtonClick:r})};export const GeneralErrorFallback=t=>a()?e(DevGeneralErrorFallback,{...t}):e(ProdGeneralErrorFallback,{...t});
1
+ import{jsx as e,jsxs as r}from"react/jsx-runtime";import{Box as t,Stack as n,Typography as i}from"@mui/material";import{useApplicationRuntime as o,useIsDev as a}from"#package/react-sdk";import{DevErrorPage as l}from"#package/ui-sdk";import{ConfiguratorErrorPageElement as c}from"../../configurator-error-page/index.js";import{useResetOnEditorHotReload as d}from"./use-reset-on-editor-hot-reload.js";let s=()=>{let a=o();try{let o=a.selectors.domainContext.configurator;if(!o.getInitializationState().isCurrent)return null;let{storeSystem:l}=o.getDomainSystems(),c=l.stateSlices.committed.value,d=l.stateSlices.potentiallyInvalid.value,s=d.validity.valid||"uncaught"===d.validity.severity?[]:d.validity.entityViolations,m=s.length>0,p="reset"!==c.kind?c.updates:[];if(!m&&0===p.length)return null;return r(t,{component:"div",sx:{p:2,backgroundColor:m?"#ffebee":"#e3f2fd",borderRadius:1,borderLeft:m?"4px solid #f44336":"4px solid #2196f3"},children:[e(i,{variant:"subtitle2",sx:{fontWeight:600,mb:1,color:m?"error.main":"primary.main"},children:m?"⚠️ Error likely caused by invariant violations":"\uD83D\uDD04 Last state changes before error"}),m&&r(t,{component:"div",sx:{mb:2},children:[e(i,{variant:"body2",sx:{mb:1},children:"The following invariant violations were detected:"}),e(n,{component:"div",spacing:.5,children:s.map((e,t)=>r(i,{variant:"caption",sx:{fontFamily:"monospace",fontSize:"0.75rem",display:"block",pl:2},children:["• Entity ",String(e.entityId),": ",JSON.stringify(e.violation)]},t))})]}),p.length>0&&r(t,{component:"div",children:[r(i,{variant:"body2",sx:{mb:1},children:[p.length," update",1!==p.length?"s":""," applied just before the error:"]}),r(n,{component:"div",spacing:.5,children:[p.slice(0,5).map((e,t)=>{let n="";return"createDomainEntity"===e.kind?n=` (${e.entity.type})`:"deleteEntity"===e.kind||"modifyDomainEntity"===e.kind||"replaceDomainEntity"===e.kind?n=` (${e.entityId})`:("createEphemeralRecord"===e.kind||"modifyEphemeralRecord"===e.kind||"deleteEphemeralRecord"===e.kind)&&(n=` (${e.componentInstance.entityId})`),r(i,{variant:"caption",sx:{fontFamily:"monospace",fontSize:"0.75rem",display:"block",pl:2},children:["• ",e.kind,n]},t)}),p.length>5&&r(i,{variant:"caption",sx:{fontFamily:"monospace",fontSize:"0.75rem",display:"block",pl:2,fontStyle:"italic"},children:["... and ",p.length-5," more"]})]})]})]})}catch{return null}};export const DevGeneralErrorFallback=r=>{let{error:t,resetErrorBoundary:n}=r;return d(n),e(l,{title:"Application Error (Dev Mode)",subtitle:"An uncaught error occurred in the application. This detailed view is only visible in development mode.",errorName:t instanceof Error?t.name:"Error",errorMessage:t instanceof Error?t.message:String(t),errorStack:t instanceof Error?t.stack:null,error:t,onReset:n,resetLabel:"Try Again",children:e(s,{})})};export const ProdGeneralErrorFallback=r=>{let{resetErrorBoundary:t}=r;return e(c,{reason:"uncaughtError",onRetry:t})};export const GeneralErrorFallback=r=>a()?e(DevGeneralErrorFallback,{...r}):e(ProdGeneralErrorFallback,{...r});
@@ -32,6 +32,7 @@ export { usePixelWorldSize } from './three/use-pixel-world-size.js';
32
32
  export { addSceneDebugNode } from './SceneDebugNodes.js';
33
33
  export * from './scene-html/index.js';
34
34
  export * from './scene-controls/index.js';
35
+ export { createAddEntityFab, createDeleteEntityFab, createNavigationHotspot, createSelectionHotspot, createToolMenuFab, type AddEntityFabElementProps, type CreateAddEntityFab, type CreateDeleteEntityFab, type CreateNavigationHotspot, type CreateSelectionHotspot, type CreateToolMenuFab, type DeleteEntityFabElementProps, type NavigationHotspotElementProps, type SelectionHotspotElementProps, type ToolMenuFabElementProps, } from '#package/react-sdk';
35
36
  export * from './postprocessing/index.js';
36
37
  export * from './sketching/index.js';
37
38
  export * from './export/index.js';
@@ -1 +1 @@
1
- export{Scene}from"./Scene.js";export{SceneEnvironment}from"./SceneEnvironment.js";export{CameraControls}from"./cameras/CameraControls.js";export{CameraPadding}from"./cameras/CameraPadding.js";export{useEntityCameraDrivenOpacity}from"./cameras/use-entity-camera-driven-opacity.js";export{Animations}from"./animations/Animations.js";export{SceneEntityDimensionIndicators}from"./scene-entity/dimension-indicators/SceneEntityDimensionIndicators.js";export{DimensionIndicator}from"./scene-entity/dimension-indicators/DimensionIndicator.js";export{SceneEntityHtmlHotspots}from"./scene-entity/scene-controls/SceneEntityHtmlHotspots.js";export{SceneEntityControls}from"./scene-entity/scene-controls/SceneEntityControls.js";export{SceneEntity}from"./scene-entity/SceneEntity.js";export{SceneEntityHighlightedObject}from"./scene-entity/objects/SceneEntityHighlightedObject.js";export{SceneEntityObject}from"./scene-entity/objects/SceneEntityObject.js";export{SceneEntityObjectClip}from"./scene-entity/objects/SceneEntityObjectClip.js";export{SceneEntityObjectDecal}from"./scene-entity/objects/SceneEntityObjectDecal.js";export{SceneEntityObjectTextDecal}from"./scene-entity/objects/SceneEntityObjectTextDecal.js";export{SceneEntityPrimitiveObject}from"./scene-entity/objects/SceneEntityPrimitiveObject.js";export{SceneEntityRemoteObject}from"./scene-entity/objects/SceneEntityRemoteObject.js";export{SceneRootEntity}from"./scene-entity/SceneRootEntity.js";export{SceneEntityObjectTransformer}from"./scene-entity/objects/SceneEntityObjectTransformer.js";export{SceneEntityObjectMaterials}from"./scene-entity/materials/SceneEntityObjectMaterials.js";export{ReplacedMaterialTransition}from"./scene-entity/materials/ReplacedMaterialTransition.js";export{ReplacedMaterialTransformer}from"./scene-entity/materials/ReplacedMaterialTransformer.js";export{useSceneEntityHighlight}from"./scene-entity/entity-hooks/use-scene-entity-highlight.js";export{useSceneEntityObjectMorphing}from"./scene-entity/entity-hooks/use-scene-entity-object-morphing.js";export{useSceneEntityRemoteObject}from"./scene-entity/entity-hooks/use-scene-entity-remote-object.js";export{useSceneEntityInteractions}from"./scene-entity/drag-and-drop/use-scene-entity-interactions.js";export{useRotateHandle}from"./scene-entity/drag-and-drop/use-rotate-handle.js";export{isStandardMaterial,isWithMaterial}from"./three/with-material.js";export{usePixelWorldSize}from"./three/use-pixel-world-size.js";export{addSceneDebugNode}from"./SceneDebugNodes.js";export*from"./scene-html/index.js";export*from"./scene-controls/index.js";export*from"./postprocessing/index.js";export*from"./sketching/index.js";export*from"./export/index.js";export*from"./resources/index.js";export*from"./cameras/index.js";export*from"./scene-entity/index.js";
1
+ export{Scene}from"./Scene.js";export{SceneEnvironment}from"./SceneEnvironment.js";export{CameraControls}from"./cameras/CameraControls.js";export{CameraPadding}from"./cameras/CameraPadding.js";export{useEntityCameraDrivenOpacity}from"./cameras/use-entity-camera-driven-opacity.js";export{Animations}from"./animations/Animations.js";export{SceneEntityDimensionIndicators}from"./scene-entity/dimension-indicators/SceneEntityDimensionIndicators.js";export{DimensionIndicator}from"./scene-entity/dimension-indicators/DimensionIndicator.js";export{SceneEntityHtmlHotspots}from"./scene-entity/scene-controls/SceneEntityHtmlHotspots.js";export{SceneEntityControls}from"./scene-entity/scene-controls/SceneEntityControls.js";export{SceneEntity}from"./scene-entity/SceneEntity.js";export{SceneEntityHighlightedObject}from"./scene-entity/objects/SceneEntityHighlightedObject.js";export{SceneEntityObject}from"./scene-entity/objects/SceneEntityObject.js";export{SceneEntityObjectClip}from"./scene-entity/objects/SceneEntityObjectClip.js";export{SceneEntityObjectDecal}from"./scene-entity/objects/SceneEntityObjectDecal.js";export{SceneEntityObjectTextDecal}from"./scene-entity/objects/SceneEntityObjectTextDecal.js";export{SceneEntityPrimitiveObject}from"./scene-entity/objects/SceneEntityPrimitiveObject.js";export{SceneEntityRemoteObject}from"./scene-entity/objects/SceneEntityRemoteObject.js";export{SceneRootEntity}from"./scene-entity/SceneRootEntity.js";export{SceneEntityObjectTransformer}from"./scene-entity/objects/SceneEntityObjectTransformer.js";export{SceneEntityObjectMaterials}from"./scene-entity/materials/SceneEntityObjectMaterials.js";export{ReplacedMaterialTransition}from"./scene-entity/materials/ReplacedMaterialTransition.js";export{ReplacedMaterialTransformer}from"./scene-entity/materials/ReplacedMaterialTransformer.js";export{useSceneEntityHighlight}from"./scene-entity/entity-hooks/use-scene-entity-highlight.js";export{useSceneEntityObjectMorphing}from"./scene-entity/entity-hooks/use-scene-entity-object-morphing.js";export{useSceneEntityRemoteObject}from"./scene-entity/entity-hooks/use-scene-entity-remote-object.js";export{useSceneEntityInteractions}from"./scene-entity/drag-and-drop/use-scene-entity-interactions.js";export{useRotateHandle}from"./scene-entity/drag-and-drop/use-rotate-handle.js";export{isStandardMaterial,isWithMaterial}from"./three/with-material.js";export{usePixelWorldSize}from"./three/use-pixel-world-size.js";export{addSceneDebugNode}from"./SceneDebugNodes.js";export*from"./scene-html/index.js";export*from"./scene-controls/index.js";export{createAddEntityFab,createDeleteEntityFab,createNavigationHotspot,createSelectionHotspot,createToolMenuFab}from"#package/react-sdk";export*from"./postprocessing/index.js";export*from"./sketching/index.js";export*from"./export/index.js";export*from"./resources/index.js";export*from"./cameras/index.js";export*from"./scene-entity/index.js";
@@ -3,5 +3,9 @@ import { type SceneFabProps } from './SceneFab.js';
3
3
  export interface ToolMenuFabProps extends Pick<SceneFabProps, 'title' | 'tooltipVisibility'> {
4
4
  readonly options: readonly ToolMenuFabOption[];
5
5
  readonly icon?: string;
6
+ /**
7
+ * Switches to the tool state of the chosen option. Without it, the menu switches the tool itself.
8
+ */
9
+ readonly onSelectTool?: (toolState: string) => void;
6
10
  }
7
11
  export declare const ToolMenuFab: (props: ToolMenuFabProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- import{jsx as e,jsxs as o,Fragment as r}from"react/jsx-runtime";import{Trans as t}from"@lingui/react";import{ListItemIcon as i,ListSubheader as n,MenuItem as l,menuClasses as a}from"@mui/material";import{memo as c,useCallback as m,useState as s}from"react";import{LocalizableMessage as p,useDomain as g}from"#package/react-sdk";import{PhxIcon as d,ResponsiveMenu as h}from"#package/ui-sdk";import{SceneFab as u}from"./SceneFab.js";let f=c(r=>{let{options:c,title:s,open:u,anchorEl:f,onClose:k}=r,{navigationSystem:b,storeSystem:C}=g(),x=m(e=>{C.stageAndCommit([b.getToolUpdate(e.toolState)]),k()},[b,C,k]);return o(h,{closeLabel:e(t,{id:"sdk.controls.tool.close.label",message:"Close"}),open:u,anchorEl:f,onClose:k,menuProps:{anchorOrigin:{vertical:"center",horizontal:"right"},transformOrigin:{vertical:"center",horizontal:"left"},sx:{[`.${a.paper}`]:{minInlineSize:220,marginLeft:2,marginRight:1}}},children:[e(n,{children:e(p,{children:s})}),c.map(r=>o(l,{onClick:()=>{x(r)},children:[e(i,{children:r.icon&&e(d,{name:r.icon})}),e(p,{children:r.label})]},r.toolState))]})});export const ToolMenuFab=t=>{let{options:i,icon:n,title:l,tooltipVisibility:a}=t,[c,p]=s(null),g=null!==c,h=m(e=>{p(e.currentTarget),e.stopPropagation()},[]),k=m(()=>{p(null)},[]);return o(r,{children:[e(u,{title:l,icon:e(d,{name:n??"PencilSimpleBold"}),tooltipVisibility:a,onClick:h}),g&&e(f,{anchorEl:c,open:g,onClose:k,options:i,title:l})]})};
1
+ import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{Trans as r}from"@lingui/react";import{ListItemIcon as l,ListSubheader as i,MenuItem as n,menuClasses as a}from"@mui/material";import{memo as c,useCallback as m,useState as s}from"react";import{LocalizableMessage as p,useDomain as g}from"#package/react-sdk";import{PhxIcon as d,ResponsiveMenu as h}from"#package/ui-sdk";import{SceneFab as u}from"./SceneFab.js";let f=c(t=>{let{options:c,title:s,open:u,anchorEl:f,onClose:k,onSelectTool:S}=t,{navigationSystem:b,storeSystem:C}=g(),x=m(e=>{S?S(e.toolState):C.stageAndCommit([b.getToolUpdate(e.toolState)]),k()},[b,C,k,S]);return o(h,{closeLabel:e(r,{id:"sdk.controls.tool.close.label",message:"Close"}),open:u,anchorEl:f,onClose:k,menuProps:{anchorOrigin:{vertical:"center",horizontal:"right"},transformOrigin:{vertical:"center",horizontal:"left"},sx:{[`.${a.paper}`]:{minInlineSize:220,marginLeft:2,marginRight:1}}},children:[e(i,{children:e(p,{children:s})}),c.map(t=>o(n,{onClick:()=>{x(t)},children:[e(l,{children:t.icon&&e(d,{name:t.icon})}),e(p,{children:t.label})]},t.toolState))]})});export const ToolMenuFab=r=>{let{options:l,icon:i,title:n,tooltipVisibility:a,onSelectTool:c}=r,[p,g]=s(null),h=null!==p,k=m(e=>{g(e.currentTarget),e.stopPropagation()},[]),S=m(()=>{g(null)},[]);return o(t,{children:[e(u,{title:n,icon:e(d,{name:i??"PencilSimpleBold"}),tooltipVisibility:a,onClick:k}),h&&e(f,{anchorEl:p,open:h,onClose:S,options:l,title:n,onSelectTool:c})]})};
@@ -1,4 +1,5 @@
1
- export type SceneControlTooltipVisibility = 'on-hover' | 'forced' | 'forced-when-still' | 'hidden';
1
+ import type { SceneControlTooltipVisibility } from '#package/react-sdk';
2
+ export type { SceneControlTooltipVisibility };
2
3
  export interface SceneControlTooltip {
3
4
  /**
4
5
  * Whether tooltip is open (undefined = uncontrolled hover behavior)
@@ -1 +1 @@
1
- import{jsx as t,jsxs as e,Fragment as n}from"react/jsx-runtime";import{memo as o}from"react";import{match as i}from"ts-pattern";import{htmlHotspotComponent as s,isHtmlHotspotComponentSnapshot as a,isSceneEntityAddFabComponentSnapshot as c,isSceneEntityDeleteFabComponentSnapshot as l,isSceneEntityNavigationHotspotComponentSnapshot as r,isSceneEntitySelectHotspotComponentSnapshot as p,isToolMenuFabComponentSnapshot as m,sceneEntityAddFabComponent as h,sceneEntityDeleteFabComponent as d,sceneEntityNavigationHotspotComponent as f,sceneEntitySelectHotspotComponent as y,toolMenuFabComponent as u}from"#package/domain";import{PhoenixEntityElementWithChildren as w,useRenderedComponents as I}from"#package/react-sdk";import{PhxIcon as W}from"#package/ui-sdk";import{AddEntityFab as b,DeleteEntityFab as g,NavigationHotspot as V,SelectionHotspot as k,ToolMenuFab as v}from"../../scene-controls/index.js";import{SceneEntityHtml as O}from"../../scene-html/index.js";import{SuspendedBoundary as $}from"../SuspendedBoundary.js";export const SceneEntityHtmlHotspots=o(o=>{let{id:H}=o;return t(n,{children:I({entityIds:[H],componentTypes:[h,s,d,y,u,f]}).map(n=>{let o={entityId:H,showWhen:n.state.showWhen},s={offsetX:n.state.offsetX,offsetY:n.state.offsetY,offsetZ:n.state.offsetZ,screenOffsetHorizontal:n.state.screenOffsetHorizontal,screenOffsetVertical:n.state.screenOffsetVertical},h={polarAngleLimits:n.state.polarAngleLimits,azimuthAngleLimits:n.state.azimuthAngleLimits,distanceLimits:n.state.distanceLimits,minInteractiveOpacity:n.state.minInteractiveOpacity},d={hideWhileDragging:n.state.hideWhileDragging,occlude:n.state.occlude};return i(n).when(c,e=>t($,{children:t(O,{...o,...s,...h,...d,showWhen:e.state.showWhen??["selected"],controlHotspot:!0,children:t(b,{parentEntityId:H,instanceNames:e.state.instanceNames,fixableViolations:e.state.hiddenViolations,icon:e.state.icon?t(W,{name:e.state.icon}):void 0,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover",label:e.state.label,skipMenuWhenOnlyOne:e.state.skipMenuWhenOnlyOne,hideWhenNone:e.state.hideWhenNone})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(l,e=>t($,{children:t(O,{...o,...s,...h,...d,showWhen:e.state.showWhen??["selected"],controlHotspot:!0,children:t(g,{entityId:H,fixableViolations:e.state.hiddenViolations,icon:e.state.icon?t(W,{name:e.state.icon}):void 0,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover",label:e.state.label})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(p,e=>t($,{children:t(O,{...o,...s,...h,...d,showWhen:e.state.showWhen??["unselected"],controlHotspot:!1,children:t(k,{id:H,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover"})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(r,e=>t($,{children:t(O,{...o,...s,...h,...d,showWhen:e.state.showWhen??["unselected"],controlHotspot:!1,children:t(V,{navigationState:e.state.navigationState,pushToStack:e.state.pushToStack,canStackOnto:e.state.canStackOnto,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover"})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(m,e=>t($,{children:t(O,{...o,...s,...h,...d,showWhen:e.state.showWhen??["unselected"],controlHotspot:!1,children:t(v,{options:e.state.options,icon:e.state.icon,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover"})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(a,n=>t($,{children:e(O,{...o,...s,...h,...d,controlHotspot:n.state.controlHotspot,pointerEvents:n.state.inert?"none":"auto",children:[n.state.node,n.state.name&&t(w,{kind:n.state.name,entityId:H})]})},`${n.componentInstance.componentType.name}-${n.componentInstance.instanceName}`)).otherwise(()=>null)})})});
1
+ import{jsx as t,jsxs as e,Fragment as n}from"react/jsx-runtime";import{memo as o}from"react";import{match as i}from"ts-pattern";import{htmlHotspotComponent as s,isHtmlHotspotComponentSnapshot as a,isSceneEntityAddFabComponentSnapshot as c,isSceneEntityDeleteFabComponentSnapshot as l,isSceneEntityNavigationHotspotComponentSnapshot as p,isSceneEntitySelectHotspotComponentSnapshot as r,isToolMenuFabComponentSnapshot as h,sceneEntityAddFabComponent as m,sceneEntityDeleteFabComponent as d,sceneEntityNavigationHotspotComponent as y,sceneEntitySelectHotspotComponent as f,toolMenuFabComponent as I}from"#package/domain";import{AddEntityFabElement as w,DeleteEntityFabElement as u,NavigationHotspotElement as W,PhoenixEntityElementWithChildren as b,SelectionHotspotElement as V,ToolMenuFabElement as g,useRenderedComponents as O}from"#package/react-sdk";import{SceneEntityHtml as $}from"../../scene-html/index.js";import{SuspendedBoundary as H}from"../SuspendedBoundary.js";export const SceneEntityHtmlHotspots=o(o=>{let{id:k}=o;return t(n,{children:O({entityIds:[k],componentTypes:[m,s,d,f,I,y]}).map(n=>{let o={entityId:k,showWhen:n.state.showWhen},s={offsetX:n.state.offsetX,offsetY:n.state.offsetY,offsetZ:n.state.offsetZ,screenOffsetHorizontal:n.state.screenOffsetHorizontal,screenOffsetVertical:n.state.screenOffsetVertical},m={polarAngleLimits:n.state.polarAngleLimits,azimuthAngleLimits:n.state.azimuthAngleLimits,distanceLimits:n.state.distanceLimits,minInteractiveOpacity:n.state.minInteractiveOpacity},d={hideWhileDragging:n.state.hideWhileDragging,occlude:n.state.occlude};return i(n).when(c,e=>t(H,{children:t($,{...o,...s,...m,...d,showWhen:e.state.showWhen??["selected"],controlHotspot:!0,children:t(w,{entityId:k,instanceNames:e.state.instanceNames,fixableViolations:e.state.hiddenViolations,icon:e.state.icon,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover",label:e.state.label,skipMenuWhenOnlyOne:e.state.skipMenuWhenOnlyOne,hideWhenNone:e.state.hideWhenNone})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(l,e=>t(H,{children:t($,{...o,...s,...m,...d,showWhen:e.state.showWhen??["selected"],controlHotspot:!0,children:t(u,{entityId:k,fixableViolations:e.state.hiddenViolations,icon:e.state.icon,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover",label:e.state.label})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(r,e=>t(H,{children:t($,{...o,...s,...m,...d,showWhen:e.state.showWhen??["unselected"],controlHotspot:!1,children:t(V,{entityId:k,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover"})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(p,e=>t(H,{children:t($,{...o,...s,...m,...d,showWhen:e.state.showWhen??["unselected"],controlHotspot:!1,children:t(W,{entityId:k,navigationState:e.state.navigationState,pushToStack:e.state.pushToStack,canStackOnto:e.state.canStackOnto,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover"})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(h,e=>t(H,{children:t($,{...o,...s,...m,...d,showWhen:e.state.showWhen??["unselected"],controlHotspot:!1,children:t(g,{entityId:k,options:e.state.options,icon:e.state.icon,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover"})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(a,n=>t(H,{children:e($,{...o,...s,...m,...d,controlHotspot:n.state.controlHotspot,pointerEvents:n.state.inert?"none":"auto",children:[n.state.node,n.state.name&&t(b,{kind:n.state.name,entityId:k})]})},`${n.componentInstance.componentType.name}-${n.componentInstance.instanceName}`)).otherwise(()=>null)})})});
@@ -0,0 +1,3 @@
1
+ export { useMeasurements, type UseMeasurements, type UseMeasurementsOptions, type UseMeasurementsResult, } from './use-measurements.js';
2
+ export { useAssistantPanel, type UseAssistantPanel, type UseAssistantPanelResult } from './use-assistant-panel.js';
3
+ export { useToolbarActions, type UseToolbarActions, type UseToolbarActionsResult, type ToolbarAction, type ToolbarPlacement, } from './use-toolbar-actions.js';
@@ -0,0 +1 @@
1
+ export{useMeasurements}from"./use-measurements.js";export{useAssistantPanel}from"./use-assistant-panel.js";export{useToolbarActions}from"./use-toolbar-actions.js";
@@ -0,0 +1,18 @@
1
+ /**
2
+ * What a project layout needs to open and close the assistant panel.
3
+ * - `available`: whether the spec has an `assistant`; the built-in assistant button renders nothing otherwise.
4
+ * - `open` and `setOpen`: whether the panel is open, and a function that opens or closes it.
5
+ * - `hasUnreadReply`: whether the assistant replied while the panel was closed.
6
+ */
7
+ export interface UseAssistantPanelResult {
8
+ readonly available: boolean;
9
+ readonly open: boolean;
10
+ readonly hasUnreadReply: boolean;
11
+ readonly setOpen: (open: boolean) => void;
12
+ }
13
+ export type UseAssistantPanel = () => UseAssistantPanelResult;
14
+ /**
15
+ * Hook to open and close the assistant panel, as the built-in toolbar's assistant button does. The panel itself
16
+ * renders only inside `LayoutSlots.DesktopSidebar`, so a layout without it has no panel to open.
17
+ */
18
+ export declare const useAssistantPanel: UseAssistantPanel;
@@ -0,0 +1 @@
1
+ import{useMemo as e}from"react";import{useEagerObservableValue as t,useSpecAssistant as a}from"#package/react-sdk";import{useConfigurator as r}from"../application-runtime/index.js";export const useAssistantPanel=()=>{let{assistantSystem:n}=r(),p=a(),{open:i,hasUnreadReply:o}=t(n.panel$);return e(()=>({available:null!=p,open:i,hasUnreadReply:o,setOpen:n.setOpen}),[p,i,o,n])};