@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
@@ -93,6 +93,7 @@ export declare function createApplicationRuntimeSlices<State extends Application
93
93
  selectElementSlots: import("@salsita-ai/common/utils").Selector<import("#package/domain").SpecSelectorState, {
94
94
  entityElements: Record<string, (props: import("#package/domain").CustomPhoenixEntityElementProps) => JSX.Element>;
95
95
  layoutElements: Record<string, (props: import("react").PropsWithChildren) => JSX.Element>;
96
+ assistantFormElements: Record<string, import("react").ComponentType<never>>;
96
97
  hashes: Record<string, string>;
97
98
  }>;
98
99
  selectDataConfig: import("@salsita-ai/common/utils").Selector<import("#package/domain").SpecSelectorState, import("#package/domain").DataSpec | null>;
@@ -136,6 +137,7 @@ export declare function createApplicationRuntimeSlices<State extends Application
136
137
  getElementSlots: () => {
137
138
  entityElements: Record<string, (props: import("#package/domain").CustomPhoenixEntityElementProps) => JSX.Element>;
138
139
  layoutElements: Record<string, (props: import("react").PropsWithChildren) => JSX.Element>;
140
+ assistantFormElements: Record<string, import("react").ComponentType<never>>;
139
141
  hashes: Record<string, string>;
140
142
  };
141
143
  getDataConfig: () => import("#package/domain").DataSpec | null;
@@ -596,7 +598,6 @@ export declare function createApplicationRuntimeSlices<State extends Application
596
598
  getUnauthenticatedClient: () => import("../../../client/contract.js").UnauthenticatedPhoenixApiClient;
597
599
  };
598
600
  integration: {
599
- selectAdminIntegrationService: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, import("../index.js").AdminIntegrationService>;
600
601
  selectIntegrationState: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, IntegrationState>;
601
602
  selectEmbeddedView: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, import("../index.js").EmbeddedView>;
602
603
  selectPresetEmbeddedState: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, import("../index.js").PresetEmbeddedView | null>;
@@ -761,6 +762,7 @@ declare const createApplicationRuntimeImpl: <EXTENSIONS extends readonly AnyAppl
761
762
  selectElementSlots: import("@salsita-ai/common/utils").Selector<import("#package/domain").SpecSelectorState, {
762
763
  entityElements: Record<string, (props: import("#package/domain").CustomPhoenixEntityElementProps) => JSX.Element>;
763
764
  layoutElements: Record<string, (props: import("react").PropsWithChildren) => JSX.Element>;
765
+ assistantFormElements: Record<string, import("react").ComponentType<never>>;
764
766
  hashes: Record<string, string>;
765
767
  }>;
766
768
  selectDataConfig: import("@salsita-ai/common/utils").Selector<import("#package/domain").SpecSelectorState, import("#package/domain").DataSpec | null>;
@@ -804,6 +806,7 @@ declare const createApplicationRuntimeImpl: <EXTENSIONS extends readonly AnyAppl
804
806
  getElementSlots: () => {
805
807
  entityElements: Record<string, (props: import("#package/domain").CustomPhoenixEntityElementProps) => JSX.Element>;
806
808
  layoutElements: Record<string, (props: import("react").PropsWithChildren) => JSX.Element>;
809
+ assistantFormElements: Record<string, import("react").ComponentType<never>>;
807
810
  hashes: Record<string, string>;
808
811
  };
809
812
  getDataConfig: () => import("#package/domain").DataSpec | null;
@@ -1264,7 +1267,6 @@ declare const createApplicationRuntimeImpl: <EXTENSIONS extends readonly AnyAppl
1264
1267
  getUnauthenticatedClient: () => import("../../../client/contract.js").UnauthenticatedPhoenixApiClient;
1265
1268
  };
1266
1269
  integration: {
1267
- selectAdminIntegrationService: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, import("../index.js").AdminIntegrationService>;
1268
1270
  selectIntegrationState: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, IntegrationState>;
1269
1271
  selectEmbeddedView: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, import("../index.js").EmbeddedView>;
1270
1272
  selectPresetEmbeddedState: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, import("../index.js").PresetEmbeddedView | null>;
@@ -1 +1 @@
1
- import{BehaviorSubject as e}from"rxjs";import{memoOnce as t}from"@salsita-ai/common/utils";import{createDomainRuntimeSlices as i,resolveIsDev as n}from"#package/domain";import{initializeAnalyticsService as o}from"../common-services/analytics/analytics-service.js";import{initializeI18n as s,initializeLogger as r}from"../common-services/initialize.js";import{createCommonServicesSelectors as a}from"../common-services/selectors.js";import{createDomainApplicationContextSelectors as c}from"../domain-application-context/index.js";import{createIntegrationActions as m,createIntegrationSelectors as l,initializeIntegration as p}from"../integration/index.js";import{createRoutingActions as u,createRoutingSelectors as d,initializeRouting as g}from"../routing/index.js";import{SessionService as S,createSessionRuntimeActions as v,createSessionRuntimeSelectors as x,initializeSessionRuntime as f}from"../session/index.js";import{registerGodModeGlobal as C}from"./god-mode.js";export function createApplicationRuntimeSlices(e){let{config:y,bootConfig:A,getSubject:b,getConfiguratorExtensions:j}=e,w=n(y),R=r(y,w),I={analyticsService:o(y,R,w),i18n:s(y),logger:R},{initialize:E,selectors:h,actions:z}=i({config:y,services:I,getSubject:b,getExtensionSystems:e=>J[e].getInitializableSystems()}),D=E(),T=m({setIntegration:e=>{let t=b(),i=e(t.value.integration);t.next({...t.value,integration:i})}}),L=l({getState:()=>b().value}),O=p({actions:T}),U=u({setRouting:e=>{let t=b(),i=e(t.value.routing);t.next({...t.value,routing:i})}}),k=d({getState:()=>b().value,actions:U,accessActions:z.access,loadedDataActions:z.loadedData,domainServicesSelectors:h.domainServices,overridesSelectors:h.overrides}),G=g(),$=a({getState:()=>b().value,environmentSelectors:h.environment,specSelectors:h.spec,accessSelectors:h.access,domainServicesSelectors:h.domainServices,webComponentOptions:A.webComponentOptions,webComponentApi:A.webComponentApi,getSessionService:()=>H(),routingSelectors:k}),q=v({setSessionRuntime:e=>{let t=b(),i=e(t.value.session);t.next({...t.value,session:i})}}),B=x({getState:()=>b().value,sessionContextSelectors:h.sessionContext}),F=f(),H=t(()=>new S({getLogger:()=>h.domainServices.getLogger(),getAnalyticsService:()=>h.domainServices.getAnalyticsService(),getUnauthenticatedClient:$.getUnauthenticatedClient,environmentSelectors:h.environment,sessionActions:q,setSessionContext:z.sessionContext.setSessionContext,sessionSelectors:B,specSelectors:h.spec})),J={configurator:c({applicationType:"configurator",commonServicesSelectors:$,domainServicesSelectors:h.domainServices,domainContextSelectors:h.domainContext.configurator,getApplicationRuntimeExtensions:j}),admin:c({applicationType:"admin",commonServicesSelectors:$,domainServicesSelectors:h.domainServices,domainContextSelectors:h.domainContext.admin,getApplicationRuntimeExtensions:()=>[]})};return C({environmentActions:z.environment}),R.info(`Configurator Application loaded with deployment ID: ${y.deploymentId}!`),R.appendToGlobalContext({deploymentId:y.deploymentId}),{getState:()=>b().value,initialize:()=>({...D,integration:O,routing:G,session:F}),selectors:{...h,commonServices:$,integration:L,routing:k,session:B,domainApplicationContext:J},actions:{...z,integration:T,routing:U,session:q}}}export function createApplicationRuntime(t,i,n){return((t,i,n)=>{let o=null,s=null,r=()=>{if(!o)throw Error("Subject not yet initialized!");return o},{initialize:a,...c}=createApplicationRuntimeSlices({config:t,bootConfig:i,getSubject:r,getConfiguratorExtensions:()=>s});return s=n?n(c):[],c.selectors.domainApplicationContext.configurator.getSystems(),o=new e(a()),{...c,getState:()=>r().value,subscribe:e=>{let t=r().subscribe(()=>e());return()=>t.unsubscribe()}}})(t,i,n)}
1
+ import{BehaviorSubject as e}from"rxjs";import{memoOnce as t}from"@salsita-ai/common/utils";import{ImplementationErrors as i,createDomainRuntimeSlices as n,findAssistantFormElementErrors as o,resolveIsDev as s}from"#package/domain";import{initializeAnalyticsService as r}from"../common-services/analytics/analytics-service.js";import{initializeI18n as a,initializeLogger as c}from"../common-services/initialize.js";import{createCommonServicesSelectors as l}from"../common-services/selectors.js";import{createDomainApplicationContextSelectors as m}from"../domain-application-context/index.js";import{createIntegrationActions as p,createIntegrationSelectors as u,initializeIntegration as g}from"../integration/index.js";import{createRoutingActions as d,createRoutingSelectors as S,initializeRouting as v}from"../routing/index.js";import{SessionService as x,createSessionRuntimeActions as f,createSessionRuntimeSelectors as C,initializeSessionRuntime as y}from"../session/index.js";export function createApplicationRuntimeSlices(e){let{config:A,bootConfig:b,getSubject:w,getConfiguratorExtensions:j}=e,R=s(A),h=c(A,R),E={analyticsService:r(A,h,R),i18n:a(A),logger:h},{initialize:I,selectors:z,actions:D}=n({config:A,services:E,getSubject:w,getExtensionSystems:e=>P[e].getInitializableSystems()}),T=I(),{assistant:L,elements:O}=T.spec.configurator,U=o(L?.formElements??[],O);if(U.length>0)throw new i(U);let k=p({setIntegration:e=>{let t=w(),i=e(t.value.integration);t.next({...t.value,integration:i})}}),G=u({getState:()=>w().value,actions:k}),$=g(),q=d({setRouting:e=>{let t=w(),i=e(t.value.routing);t.next({...t.value,routing:i})}}),B=S({getState:()=>w().value,actions:q,accessActions:D.access,loadedDataActions:D.loadedData,domainServicesSelectors:z.domainServices,overridesSelectors:z.overrides}),F=v(),H=l({getState:()=>w().value,environmentSelectors:z.environment,specSelectors:z.spec,accessSelectors:z.access,domainServicesSelectors:z.domainServices,webComponentOptions:b.webComponentOptions,webComponentApi:b.webComponentApi,getSessionService:()=>N(),routingSelectors:B}),J=f({setSessionRuntime:e=>{let t=w(),i=e(t.value.session);t.next({...t.value,session:i})}}),K=C({getState:()=>w().value,sessionContextSelectors:z.sessionContext}),M=y(),N=t(()=>new x({getLogger:()=>z.domainServices.getLogger(),getAnalyticsService:()=>z.domainServices.getAnalyticsService(),getUnauthenticatedClient:H.getUnauthenticatedClient,environmentSelectors:z.environment,sessionActions:J,setSessionContext:D.sessionContext.setSessionContext,sessionSelectors:K,specSelectors:z.spec})),P={configurator:m({applicationType:"configurator",commonServicesSelectors:H,domainServicesSelectors:z.domainServices,domainContextSelectors:z.domainContext.configurator,getApplicationRuntimeExtensions:j}),admin:m({applicationType:"admin",commonServicesSelectors:H,domainServicesSelectors:z.domainServices,domainContextSelectors:z.domainContext.admin,getApplicationRuntimeExtensions:()=>[]})};return h.info(`Configurator Application loaded with deployment ID: ${A.deploymentId}!`),h.appendToGlobalContext({deploymentId:A.deploymentId}),{getState:()=>w().value,initialize:()=>({...T,integration:$,routing:F,session:M}),selectors:{...z,commonServices:H,integration:G,routing:B,session:K,domainApplicationContext:P},actions:{...D,integration:k,routing:q,session:J}}}export function createApplicationRuntime(t,i,n){return((t,i,n)=>{let o=null,s=null,r=()=>{if(!o)throw Error("Subject not yet initialized!");return o},{initialize:a,...c}=createApplicationRuntimeSlices({config:t,bootConfig:i,getSubject:r,getConfiguratorExtensions:()=>s});return s=n?n(c):[],c.selectors.domainApplicationContext.configurator.getSystems(),o=new e(a()),{...c,getState:()=>r().value,subscribe:e=>{let t=r().subscribe(()=>e());return()=>t.unsubscribe()}}})(t,i,n)}
@@ -0,0 +1,8 @@
1
+ export * from './use-configurator-messages.js';
2
+ export * from './use-domain-context.js';
3
+ export * from './use-entity-selector.js';
4
+ export * from './use-observable-selector.js';
5
+ export * from './use-slices.js';
6
+ export * from './use-state-slice.js';
7
+ export * from './use-state-validity.js';
8
+ export * from './use-store-selector.js';
@@ -0,0 +1 @@
1
+ export*from"./use-configurator-messages.js";export*from"./use-domain-context.js";export*from"./use-entity-selector.js";export*from"./use-observable-selector.js";export*from"./use-slices.js";export*from"./use-state-slice.js";export*from"./use-state-validity.js";export*from"./use-store-selector.js";
@@ -0,0 +1 @@
1
+ export * from './use-component.js';
@@ -0,0 +1 @@
1
+ export*from"./use-component.js";
@@ -1 +1 @@
1
- import{useMemo as t}from"react";import{useApplicationRuntimeSelector as e}from"../../application-runtime/index.js";import{useDomainContextSelectors as n}from"../common-hooks/use-domain-context.js";import{useRenderedSelector as o,useStoreSelector as r}from"../common-hooks/use-store-selector.js";let s=t=>[t.componentType,t.entityId,t.instanceName,t.componentTypes?.length,...t.componentTypes??[],t.entityIds?.length,...t.entityIds??[],t.instanceNames?.length,...t.instanceNames??[]],a=o=>{let r=n(),{componentReader:a}=r.getDomainSystems(),p=t(()=>a.isComponentTypeAttached(o),[a,e(r.getComponentReaderIndexes),...s(o)]);return{componentReader:a,isActive:p}};export const useComponent=t=>{let{entityId:e,componentType:n,instanceName:o}=t,{componentReader:s,isActive:p}=a({entityId:e,componentType:n,instanceName:o}),m=r(t=>s.readOneComponent({entityId:e,componentType:n,instanceName:o},t.state),[s,e,n,o],p);return null===m?null:m?.state};export const useRenderedComponent=t=>{let{entityId:e,componentType:n,instanceName:r}=t,{componentReader:s,isActive:p}=a({entityId:e,componentType:n,instanceName:r}),m=o(t=>s.readOneComponent({entityId:e,componentType:n,instanceName:r},t.state),[s,e,n,r],p);return null===m?null:m?.state};export const useComponents=t=>{let{entityIds:e,componentTypes:n,instanceNames:o}=t,{componentReader:p,isActive:m}=a({entityIds:e,componentTypes:n,instanceNames:o});return r(t=>p.readManyComponents({entityIds:e,componentTypes:n,instanceNames:o},t.state),[p,...s({entityIds:e,componentTypes:n,instanceNames:o})],m)};export const useDynamicComponents=t=>{let{entityIds:e,componentTypes:n,instanceNames:o}=t,{componentReader:s,isActive:p}=a({entityIds:e,componentTypes:n,instanceNames:o});return r(t=>s.readManyComponents({entityIds:e,componentTypes:n,instanceNames:o},t.state),[s,n,e,o],p)};export const useRenderedComponents=t=>{let{entityIds:e,componentTypes:n,instanceNames:r}=t,{componentReader:p,isActive:m}=a({entityIds:e,componentTypes:n,instanceNames:r});return o(t=>p.readManyComponents({entityIds:e,componentTypes:n,instanceNames:r},t.state),[p,...s({entityIds:e,componentTypes:n,instanceNames:r})],m)};export const useFirstComponent=t=>{let{entityIds:e,componentTypes:n,instanceNames:o}=t,{componentReader:p,isActive:m}=a({entityIds:e,componentTypes:n,instanceNames:o});return r(t=>p.readFirstComponent({entityIds:e,componentTypes:n,instanceNames:o},t.state),[p,...s({entityIds:e,componentTypes:n,instanceNames:o})],m)};export const useFirstRenderedComponent=t=>{let{entityIds:e,componentTypes:n,instanceNames:r}=t,{componentReader:p,isActive:m}=a({entityIds:e,componentTypes:n,instanceNames:r});return o(t=>p.readFirstComponent({entityIds:e,componentTypes:n,instanceNames:r},t.state),[p,...s({entityIds:e,componentTypes:n,instanceNames:r})],m)};export const useRootComponents=e=>{let n=t(()=>Array.isArray(e)?e:[e],[e]),{componentReader:o,isActive:p}=a({componentTypes:n});return r(t=>o.readManyComponents({componentTypes:n,entityIds:[t.state.rootEntityId]},t.state),[o,...s({componentTypes:n})],p)};export const useRootRenderedComponents=e=>{let n=t(()=>Array.isArray(e)?e:[e],[e]),{componentReader:r,isActive:p}=a({componentTypes:n});return o(t=>r.readManyComponents({componentTypes:n,entityIds:[t.state.rootEntityId]},t.state),[r,...s({componentTypes:n})],p)};export const useFirstRootComponent=e=>{let n=t(()=>Array.isArray(e)?e:[e],[e]),{componentReader:o,isActive:p}=a({componentTypes:n});return r(t=>o.readFirstRootComponent({componentTypes:n},t.state),[o,...s({componentTypes:n})],p)};export const useFirstRootRenderedComponent=e=>{let n=t(()=>Array.isArray(e)?e:[e],[e]),{componentReader:r,isActive:p}=a({componentTypes:n});return o(t=>r.readFirstRootComponent({componentTypes:n},t.state),[r,...s({componentTypes:n})],p)};
1
+ import{useMemo as t}from"react";import{useApplicationRuntimeSelector as e}from"../../application-runtime/index.js";import{useDomainContextSelectors as n,useRenderedSelector as o,useStoreSelector as r}from"../common-hooks/index.js";let s=t=>[t.componentType,t.entityId,t.instanceName,t.componentTypes?.length,...t.componentTypes??[],t.entityIds?.length,...t.entityIds??[],t.instanceNames?.length,...t.instanceNames??[]],a=o=>{let r=n(),{componentReader:a}=r.getDomainSystems(),p=t(()=>a.isComponentTypeAttached(o),[a,e(r.getComponentReaderIndexes),...s(o)]);return{componentReader:a,isActive:p}};export const useComponent=t=>{let{entityId:e,componentType:n,instanceName:o}=t,{componentReader:s,isActive:p}=a({entityId:e,componentType:n,instanceName:o}),m=r(t=>s.readOneComponent({entityId:e,componentType:n,instanceName:o},t.state),[s,e,n,o],p);return null===m?null:m?.state};export const useRenderedComponent=t=>{let{entityId:e,componentType:n,instanceName:r}=t,{componentReader:s,isActive:p}=a({entityId:e,componentType:n,instanceName:r}),m=o(t=>s.readOneComponent({entityId:e,componentType:n,instanceName:r},t.state),[s,e,n,r],p);return null===m?null:m?.state};export const useComponents=t=>{let{entityIds:e,componentTypes:n,instanceNames:o}=t,{componentReader:p,isActive:m}=a({entityIds:e,componentTypes:n,instanceNames:o});return r(t=>p.readManyComponents({entityIds:e,componentTypes:n,instanceNames:o},t.state),[p,...s({entityIds:e,componentTypes:n,instanceNames:o})],m)};export const useDynamicComponents=t=>{let{entityIds:e,componentTypes:n,instanceNames:o}=t,{componentReader:s,isActive:p}=a({entityIds:e,componentTypes:n,instanceNames:o});return r(t=>s.readManyComponents({entityIds:e,componentTypes:n,instanceNames:o},t.state),[s,n,e,o],p)};export const useRenderedComponents=t=>{let{entityIds:e,componentTypes:n,instanceNames:r}=t,{componentReader:p,isActive:m}=a({entityIds:e,componentTypes:n,instanceNames:r});return o(t=>p.readManyComponents({entityIds:e,componentTypes:n,instanceNames:r},t.state),[p,...s({entityIds:e,componentTypes:n,instanceNames:r})],m)};export const useFirstComponent=t=>{let{entityIds:e,componentTypes:n,instanceNames:o}=t,{componentReader:p,isActive:m}=a({entityIds:e,componentTypes:n,instanceNames:o});return r(t=>p.readFirstComponent({entityIds:e,componentTypes:n,instanceNames:o},t.state),[p,...s({entityIds:e,componentTypes:n,instanceNames:o})],m)};export const useFirstRenderedComponent=t=>{let{entityIds:e,componentTypes:n,instanceNames:r}=t,{componentReader:p,isActive:m}=a({entityIds:e,componentTypes:n,instanceNames:r});return o(t=>p.readFirstComponent({entityIds:e,componentTypes:n,instanceNames:r},t.state),[p,...s({entityIds:e,componentTypes:n,instanceNames:r})],m)};export const useRootComponents=e=>{let n=t(()=>Array.isArray(e)?e:[e],[e]),{componentReader:o,isActive:p}=a({componentTypes:n});return r(t=>o.readManyComponents({componentTypes:n,entityIds:[t.state.rootEntityId]},t.state),[o,...s({componentTypes:n})],p)};export const useRootRenderedComponents=e=>{let n=t(()=>Array.isArray(e)?e:[e],[e]),{componentReader:r,isActive:p}=a({componentTypes:n});return o(t=>r.readManyComponents({componentTypes:n,entityIds:[t.state.rootEntityId]},t.state),[r,...s({componentTypes:n})],p)};export const useFirstRootComponent=e=>{let n=t(()=>Array.isArray(e)?e:[e],[e]),{componentReader:o,isActive:p}=a({componentTypes:n});return r(t=>o.readFirstRootComponent({componentTypes:n},t.state),[o,...s({componentTypes:n})],p)};export const useFirstRootRenderedComponent=e=>{let n=t(()=>Array.isArray(e)?e:[e],[e]),{componentReader:r,isActive:p}=a({componentTypes:n});return o(t=>r.readFirstRootComponent({componentTypes:n},t.state),[r,...s({componentTypes:n})],p)};
@@ -1 +1 @@
1
- import{useDomain as t}from"../common-hooks/use-domain-context.js";import{useRenderedSelector as e,useStoreSelector as o}from"../common-hooks/use-store-selector.js";export const useDomainEntityState=e=>{let{domain:n}=t();return o(t=>n.get$Entity(e,t.state),[n,e])};export const useDomainEntityRenderedState=o=>{let{domain:n}=t();return e(t=>n.get$Entity(o,t.state),[n,o])};
1
+ import{useDomain as t,useRenderedSelector as e,useStoreSelector as n}from"../common-hooks/index.js";export const useDomainEntityState=e=>{let{domain:o}=t();return n(t=>o.get$Entity(e,t.state),[o,e])};export const useDomainEntityRenderedState=n=>{let{domain:o}=t();return e(t=>o.get$Entity(n,t.state),[o,n])};
@@ -1 +1 @@
1
- import{useLingui as t}from"@lingui/react";import{priceComponent as e}from"#package/domain";import{useFirstComponent as o}from"../component-hooks/use-component.js";import{useRootEntityId as r}from"./use-root-entity-id.js";export const useEntityPrice=r=>{let n=o({componentTypes:[e],entityIds:[r]}),{i18n:i}=t(),c=n?.state?.currency??"USD",s=n?.state.price;return void 0===s?null:i.number(s,{style:"currency",currency:c})};export const useRootEntityPrice=()=>{let t=r();return useEntityPrice(t)};
1
+ import{useLingui as t}from"@lingui/react";import{priceComponent as e}from"#package/domain";import{useFirstComponent as r}from"../component-hooks/index.js";import{useRootEntityId as o}from"./use-root-entity-id.js";export const useEntityPrice=o=>{let n=r({componentTypes:[e],entityIds:[o]}),{i18n:i}=t(),c=n?.state?.currency??"USD",s=n?.state.price;return void 0===s?null:i.number(s,{style:"currency",currency:c})};export const useRootEntityPrice=()=>{let t=o();return useEntityPrice(t)};
@@ -1 +1 @@
1
- import{useRenderedSelector as t,useStoreSelector as o}from"../common-hooks/use-store-selector.js";export const useRootEntityId=()=>o(t=>t.state.rootEntityId,[]);export const useRootEntityRenderedId=()=>t(t=>t.state.rootEntityId,[]);
1
+ import{useRenderedSelector as t,useStoreSelector as o}from"../common-hooks/index.js";export const useRootEntityId=()=>o(t=>t.state.rootEntityId,[]);export const useRootEntityRenderedId=()=>t(t=>t.state.rootEntityId,[]);
@@ -1 +1 @@
1
- import{useDomain as t}from"../common-hooks/use-domain-context.js";import{useRenderedSelector as o,useStoreSelector as e}from"../common-hooks/use-store-selector.js";export const useRootEntityState=()=>{let{domain:o}=t();return e(t=>o.getRoot$Entity(t.state),[o])};export const useRootEntityRenderedState=()=>{let{domain:e}=t();return o(t=>e.getRoot$Entity(t.state),[e])};
1
+ import{useDomain as t,useRenderedSelector as e,useStoreSelector as o}from"../common-hooks/index.js";export const useRootEntityState=()=>{let{domain:e}=t();return o(t=>e.getRoot$Entity(t.state),[e])};export const useRootEntityRenderedState=()=>{let{domain:o}=t();return e(t=>o.getRoot$Entity(t.state),[o])};
@@ -12,6 +12,10 @@ export { useActiveNavigationState, type UseActiveNavigationState, useActiveViewS
12
12
  export { useComposition, type UseComposition } from './system-hooks/composition-hooks.js';
13
13
  export { useUndoRedo, type UseUndoRedo, type UseUndoRedoResult } from './system-hooks/undo-redo-hooks.js';
14
14
  export { useTabNavigation, type TabEntry, type TabSource, type UseTabNavigation, type UseTabNavigationOptions, type UseTabNavigationResult, } from './system-hooks/tab-navigation-hooks.js';
15
+ export { useStepNavigation, type NavigationStepEntry, type StepStatus, type UseStepNavigation, type UseStepNavigationResult, } from './system-hooks/step-navigation-hooks.js';
16
+ export { useLocaleSwitch, type UseLocaleSwitch, type UseLocaleSwitchResult, type LocaleOption, } from './system-hooks/locale-switch-hooks.js';
17
+ export { useGenerateShareLink, type GenerateShareLinkOptions } from './system-hooks/generate-share-link-hooks.js';
18
+ export { useShareLinks, type UseShareLinks, type UseShareLinksOptions, type UseShareLinksResult, } from './system-hooks/share-links-hooks.js';
15
19
  export { useHoveredDomainEntityId, useHoveredEntity, useHoveredEntityId, type UseHoveredDomainEntityId, type UseHoveredEntity, type UseHoveredEntityId, } from './system-hooks/hover-hooks.js';
16
20
  export { type UseRootEntityState, useRootEntityState, useRootEntityRenderedState, } from './entity-hooks/use-root-entity-state.js';
17
21
  export { type UseRootEntityId, useRootEntityId, useRootEntityRenderedId } from './entity-hooks/use-root-entity-id.js';
@@ -1 +1 @@
1
- export{useDomain}from"./common-hooks/use-domain-context.js";export{useStoreSelector,useRenderedSelector,useRenderedSelector$,useStoreSelector$}from"./common-hooks/use-store-selector.js";export{useEagerObservableSelector,usePatientObservableSelector,usePatientObservableValue,useEagerObservableValue}from"./common-hooks/use-observable-selector.js";export{useStateValidity,useMapViolationHints,useControlViolations,useFinalizeViolations}from"./common-hooks/use-state-validity.js";export{useConfiguratorMessages}from"./common-hooks/use-configurator-messages.js";export{useComponent,useRenderedComponent,useComponents,useDynamicComponents,useRenderedComponents,useRootComponents,useRootRenderedComponents,useFirstComponent,useFirstRenderedComponent,useFirstRootComponent,useFirstRootRenderedComponent}from"./component-hooks/use-component.js";export{useCommittedState,useCommittedSlice,useRenderedSlice,useRenderedState}from"./common-hooks/use-slices.js";export{useDomainEntityState,useDomainEntityRenderedState}from"./entity-hooks/use-domain-entity-state.js";export{useEntityPrice,useRootEntityPrice}from"./entity-hooks/use-entity-price.js";export{useSelectEntity,useSelectedEntity,useSelectedEntityId,useSelectedDomainEntityId,useDeselect,useSelectParent}from"./system-hooks/selection-hooks.js";export{useActiveNavigationState,useActiveViewState,useSetViewState,useActiveToolState,useIsFullscreenActive,useSetFullscreen,useActiveViewports,useDraggedDomainEntityId,useNavigate,usePushNavigate,usePopNavigate}from"./system-hooks/navigation-hooks.js";export{useComposition}from"./system-hooks/composition-hooks.js";export{useUndoRedo}from"./system-hooks/undo-redo-hooks.js";export{useTabNavigation}from"./system-hooks/tab-navigation-hooks.js";export{useHoveredDomainEntityId,useHoveredEntity,useHoveredEntityId}from"./system-hooks/hover-hooks.js";export{useRootEntityState,useRootEntityRenderedState}from"./entity-hooks/use-root-entity-state.js";export{useRootEntityId,useRootEntityRenderedId}from"./entity-hooks/use-root-entity-id.js";export{useEntitySelector,useRootEntitySelector,useRenderedEntitySelector,useRenderedRootEntitySelector}from"./common-hooks/use-entity-selector.js";export{useDimensionState,useDimensions,useDimensionConfig}from"./system-hooks/dimension-hooks.js";
1
+ export{useDomain}from"./common-hooks/use-domain-context.js";export{useStoreSelector,useRenderedSelector,useRenderedSelector$,useStoreSelector$}from"./common-hooks/use-store-selector.js";export{useEagerObservableSelector,usePatientObservableSelector,usePatientObservableValue,useEagerObservableValue}from"./common-hooks/use-observable-selector.js";export{useStateValidity,useMapViolationHints,useControlViolations,useFinalizeViolations}from"./common-hooks/use-state-validity.js";export{useConfiguratorMessages}from"./common-hooks/use-configurator-messages.js";export{useComponent,useRenderedComponent,useComponents,useDynamicComponents,useRenderedComponents,useRootComponents,useRootRenderedComponents,useFirstComponent,useFirstRenderedComponent,useFirstRootComponent,useFirstRootRenderedComponent}from"./component-hooks/use-component.js";export{useCommittedState,useCommittedSlice,useRenderedSlice,useRenderedState}from"./common-hooks/use-slices.js";export{useDomainEntityState,useDomainEntityRenderedState}from"./entity-hooks/use-domain-entity-state.js";export{useEntityPrice,useRootEntityPrice}from"./entity-hooks/use-entity-price.js";export{useSelectEntity,useSelectedEntity,useSelectedEntityId,useSelectedDomainEntityId,useDeselect,useSelectParent}from"./system-hooks/selection-hooks.js";export{useActiveNavigationState,useActiveViewState,useSetViewState,useActiveToolState,useIsFullscreenActive,useSetFullscreen,useActiveViewports,useDraggedDomainEntityId,useNavigate,usePushNavigate,usePopNavigate}from"./system-hooks/navigation-hooks.js";export{useComposition}from"./system-hooks/composition-hooks.js";export{useUndoRedo}from"./system-hooks/undo-redo-hooks.js";export{useTabNavigation}from"./system-hooks/tab-navigation-hooks.js";export{useStepNavigation}from"./system-hooks/step-navigation-hooks.js";export{useLocaleSwitch}from"./system-hooks/locale-switch-hooks.js";export{useGenerateShareLink}from"./system-hooks/generate-share-link-hooks.js";export{useShareLinks}from"./system-hooks/share-links-hooks.js";export{useHoveredDomainEntityId,useHoveredEntity,useHoveredEntityId}from"./system-hooks/hover-hooks.js";export{useRootEntityState,useRootEntityRenderedState}from"./entity-hooks/use-root-entity-state.js";export{useRootEntityId,useRootEntityRenderedId}from"./entity-hooks/use-root-entity-id.js";export{useEntitySelector,useRootEntitySelector,useRenderedEntitySelector,useRenderedRootEntitySelector}from"./common-hooks/use-entity-selector.js";export{useDimensionState,useDimensions,useDimensionConfig}from"./system-hooks/dimension-hooks.js";
@@ -1 +1 @@
1
- import{useDomain as o}from"../common-hooks/use-domain-context.js";import{useRenderedSelector as e}from"../common-hooks/use-store-selector.js";export const useComposition=()=>{let{compositionProjections:t}=o();return e(o=>t.getTree(o.state),[t])};
1
+ import{useDomain as o,useRenderedSelector as e}from"../common-hooks/index.js";export const useComposition=()=>{let{compositionProjections:t}=o();return e(o=>t.getTree(o.state),[t])};
@@ -1 +1 @@
1
- import{useCallback as t}from"react";import{useDomain as e}from"../common-hooks/use-domain-context.js";import{useStoreSelector as o}from"../common-hooks/use-store-selector.js";export const useDimensionConfig=()=>{let{dimensionSystem:t}=e();return o(e=>t.getDimensionConfig(e.state),[t])};export const useDimensionState=()=>{let{dimensionSystem:t}=e();return o(e=>t.state.get(e.state),[t])};export const useDimensions=()=>{let{dimensionSystem:o}=e(),{storeSystem:s}=e();return{setGlobalUnit:t(t=>{let e=o.getSetGlobalUnitUpdates(t,s.stateSlices.committed.value.state);s.stageAndCommit(e)},[o,s])}};
1
+ import{useCallback as t}from"react";import{useDomain as e,useStoreSelector as o}from"../common-hooks/index.js";export const useDimensionConfig=()=>{let{dimensionSystem:t}=e();return o(e=>t.getDimensionConfig(e.state),[t])};export const useDimensionState=()=>{let{dimensionSystem:t}=e();return o(e=>t.state.get(e.state),[t])};export const useDimensions=()=>{let{dimensionSystem:o}=e(),{storeSystem:s}=e();return{setGlobalUnit:t(t=>{let e=o.getSetGlobalUnitUpdates(t,s.stateSlices.committed.value.state);s.stageAndCommit(e)},[o,s])}};
@@ -0,0 +1,8 @@
1
+ import type { AccessLevel } from '@salsita-ai/contracts/api';
2
+ export interface GenerateShareLinkOptions {
3
+ access: AccessLevel;
4
+ expiration?: number;
5
+ }
6
+ export declare const useGenerateShareLink: () => (options: GenerateShareLinkOptions) => Promise<{
7
+ readonly link: string;
8
+ }>;
@@ -0,0 +1 @@
1
+ import{useCallback as e}from"react";import{match as r}from"ts-pattern";import{applicationConfigComponent as t}from"#package/domain";import{useAuthorizedClient as a,useConfigurationId as o,useDomainApplication as i}from"../../application-runtime/index.js";import{useFirstRootComponent as n}from"../component-hooks/index.js";export const useGenerateShareLink=()=>{let s=n(t),m=s?.state.shareStrategy??"deployment-registered",{configurationPersistSystem:c}=i(),d=o(),p=a();return e(async e=>{let t=r(m).with("deployment-registered",()=>void 0).with("current-frontend",()=>{let e=new URL(window.location.href);return e.searchParams.delete("cid"),e.searchParams.delete("ca"),e.toString()}).exhaustive(),a=await c.save();return p.generateShareLink(d,"rr"===e.access?a:void 0,e.expiration,e.access,t)},[m,c,p,d])};
@@ -1 +1 @@
1
- import{useDomain as t}from"../common-hooks/use-domain-context.js";import{useRenderedSelector as e}from"../common-hooks/use-store-selector.js";export const useHoveredDomainEntityId=()=>{let{navigationSystem:o}=t();return e(t=>o.getActiveHoverState(t.state),[o])};export const useHoveredEntityId=t=>{let e=useHoveredDomainEntityId();return e&&t?.isId(e)?e:null};export const useHoveredEntity=o=>{let r=useHoveredEntityId(o),{domain:n}=t();return e(t=>r?n.get$Entity(r,t.state):null,[n,r])};
1
+ import{useDomain as t,useRenderedSelector as e}from"../common-hooks/index.js";export const useHoveredDomainEntityId=()=>{let{navigationSystem:o}=t();return e(t=>o.getActiveHoverState(t.state),[o])};export const useHoveredEntityId=t=>{let e=useHoveredDomainEntityId();return e&&t?.isId(e)?e:null};export const useHoveredEntity=o=>{let n=useHoveredEntityId(o),{domain:r}=t();return e(t=>n?r.get$Entity(n,t.state):null,[r,n])};
@@ -0,0 +1,24 @@
1
+ /** A language the configurator offers, with its name in that language. */
2
+ export interface LocaleOption {
3
+ readonly locale: string;
4
+ readonly displayName: string;
5
+ }
6
+ /**
7
+ * What a project layout needs to offer a language switch.
8
+ * - `locales`: the spec's `applicationConfig.availableLocales` (`['en']` without it), each with its own name.
9
+ * - `locale`: the active locale.
10
+ * - `setLocale`: activates a locale, falling back to a supported one as `useLinguiActivate` does.
11
+ * - `available`: whether there is more than one locale to choose from, the built-in rule for showing the switch.
12
+ */
13
+ export interface UseLocaleSwitchResult {
14
+ readonly locales: readonly LocaleOption[];
15
+ readonly locale: string;
16
+ readonly setLocale: (locale: string) => void;
17
+ readonly available: boolean;
18
+ }
19
+ export type UseLocaleSwitch = () => UseLocaleSwitchResult;
20
+ /**
21
+ * Hook to list the languages the configurator offers and switch between them, as the built-in toolbar's language
22
+ * button and the menu's language action do. It re-renders when the language changes.
23
+ */
24
+ export declare const useLocaleSwitch: UseLocaleSwitch;
@@ -0,0 +1 @@
1
+ import{useLingui as e}from"@lingui/react";import{useMemo as a}from"react";import{applicationConfigComponent as o}from"#package/domain";import{useLinguiActivate as l}from"../../localizable/index.js";import{useFirstRootComponent as t}from"../component-hooks/index.js";export const useLocaleSwitch=()=>{let{i18n:r}=e(),i=t(o),m=l(),n=i?.state.availableLocales,c=a(()=>(n??["en"]).map(e=>{let a=new Intl.DisplayNames([e],{type:"language",fallback:"code"});return{locale:e,displayName:a.of(e)??e}}),[n]),p=r.locale;return a(()=>({locales:c,locale:p,setLocale:e=>{m(e)},available:c.length>1}),[c,p,m])};
@@ -1 +1 @@
1
- import{useCallback as t}from"react";import{useDomain as e}from"../common-hooks/use-domain-context.js";import{useStoreSelector as o}from"../common-hooks/use-store-selector.js";export const useActiveNavigationState=()=>{let{navigationSystem:t}=e();return o(e=>t.getActiveNavigationState(e.state),[t])};export const useActiveViewState=()=>{let{navigationSystem:t}=e();return o(e=>t.getActiveViewState(e.state),[t])};export const useSetViewState=()=>{let{storeSystem:o,navigationSystem:s}=e();return t(t=>{o.stageAndCommit([s.getViewUpdate(t)])},[o,s])};export const useActiveToolState=()=>{let{navigationSystem:t}=e();return o(e=>t.getActiveToolState(e.state),[t])};export const useIsFullscreenActive=()=>{let{navigationSystem:t}=e();return o(e=>t.getActiveFullscreenState(e.state),[t])};export const useSetFullscreen=()=>{let{storeSystem:o,navigationSystem:s}=e();return t(t=>{o.stageAndCommit([s.getFullscreenUpdate(t)])},[o,s])};export const useDraggedDomainEntityId=()=>{let{navigationSystem:t}=e();return o(e=>t.getActiveDragState(e.state),[t])};export const useActiveViewports=()=>{let{navigationSystem:t}=e();return o(e=>t.getActiveViewportState(e.state),[t])};export const useNavigate=()=>{let{storeSystem:o,navigationSystem:s}=e();return t(t=>{o.stageAndCommit([s.getNavigationUpdate(t)])},[o,s])};export const usePushNavigate=()=>{let{storeSystem:o,navigationSystem:s}=e();return t(t=>{o.stageAndCommit([s.getPushNavigationUpdate(t,o.stateSlices.committed.value.state)])},[o,s])};export const usePopNavigate=()=>{let{storeSystem:o,navigationSystem:s}=e();return t(()=>{let t=s.getPopNavigationUpdate(o.stateSlices.committed.value.state);t&&o.stageAndCommit([t])},[o,s])};
1
+ import{useCallback as t}from"react";import{useDomain as e,useStoreSelector as a}from"../common-hooks/index.js";export const useActiveNavigationState=()=>{let{navigationSystem:t}=e();return a(e=>t.getActiveNavigationState(e.state),[t])};export const useActiveViewState=()=>{let{navigationSystem:t}=e();return a(e=>t.getActiveViewState(e.state),[t])};export const useSetViewState=()=>{let{storeSystem:a,navigationSystem:o}=e();return t(t=>{a.stageAndCommit([o.getViewUpdate(t)])},[a,o])};export const useActiveToolState=()=>{let{navigationSystem:t}=e();return a(e=>t.getActiveToolState(e.state),[t])};export const useIsFullscreenActive=()=>{let{navigationSystem:t}=e();return a(e=>t.getActiveFullscreenState(e.state),[t])};export const useSetFullscreen=()=>{let{storeSystem:a,navigationSystem:o}=e();return t(t=>{a.stageAndCommit([o.getFullscreenUpdate(t)])},[a,o])};export const useDraggedDomainEntityId=()=>{let{navigationSystem:t}=e();return a(e=>t.getActiveDragState(e.state),[t])};export const useActiveViewports=()=>{let{navigationSystem:t}=e();return a(e=>t.getActiveViewportState(e.state),[t])};export const useNavigate=()=>{let{storeSystem:a,navigationSystem:o}=e();return t(t=>{a.stageAndCommit([o.getNavigationUpdate(t)])},[a,o])};export const usePushNavigate=()=>{let{storeSystem:a,navigationSystem:o}=e();return t(t=>{a.stageAndCommit([o.getPushNavigationUpdate(t,a.stateSlices.committed.value.state)])},[a,o])};export const usePopNavigate=()=>{let{storeSystem:a,navigationSystem:o}=e();return t(()=>{let t=o.getPopNavigationUpdate(a.stateSlices.committed.value.state);t&&a.stageAndCommit([t])},[a,o])};
@@ -1 +1 @@
1
- import{useCallback as e}from"react";import{useAnalyticsService as t}from"../../application-runtime/index.js";import{useDomain as o}from"../common-hooks/use-domain-context.js";import{useStoreSelector as n}from"../common-hooks/use-store-selector.js";export const useSelectedDomainEntityId=()=>{let{navigationSystem:e}=o();return n(t=>e.getActiveSelectionState(t.state),[e])};export const useSelectedEntityId=e=>{let t=useSelectedDomainEntityId();return e?.isId(t)?t:null};export const useSelectEntity=n=>{let{storeSystem:s,navigationSystem:r}=o(),i=t();return e(e=>{s.stageAndCommit([r.getSelectUpdate(e)]),n&&i.push(n(e))},[s,r,n,i])};export const useSelectParent=(n,s,r)=>{let{storeSystem:i,navigationSystem:c,compositionProjections:l}=o(),m=t();return e(()=>{let e=l.getTree(i.stateSlices.committed.value.state).map.get(n);if(e?.parent){i.stageAndCommit([c.getSelectUpdate(e.parent.id)]),r&&m.push(r(e.parent.id));return}s&&(i.stageAndCommit([c.getSelectUpdate(s)]),r&&m.push(r(s)))},[i,c,n,l,s,r,m])};export const useDeselect=n=>{let{storeSystem:s,navigationSystem:r}=o(),i=t();return e(()=>{s.stageAndCommit([r.getDeselectUpdate()]),n&&i.push(n())},[s,r,n,i])};export const useSelectedEntity=e=>{let t=useSelectedEntityId(e),{domain:s}=o();return n(e=>t?s.get$Entity(t,e.state):null,[s,t])};
1
+ import{useCallback as e}from"react";import{useAnalyticsService as t}from"../../application-runtime/index.js";import{useDomain as n,useStoreSelector as r}from"../common-hooks/index.js";export const useSelectedDomainEntityId=()=>{let{navigationSystem:e}=n();return r(t=>e.getActiveSelectionState(t.state),[e])};export const useSelectedEntityId=e=>{let t=useSelectedDomainEntityId();return e?.isId(t)?t:null};export const useSelectEntity=r=>{let{storeSystem:s,navigationSystem:o}=n(),i=t();return e(e=>{s.stageAndCommit([o.getSelectUpdate(e)]),r&&i.push(r(e))},[s,o,r,i])};export const useSelectParent=(r,s,o)=>{let{storeSystem:i,navigationSystem:l,compositionProjections:c}=n(),a=t();return e(()=>{let e=c.getTree(i.stateSlices.committed.value.state).map.get(r);if(e?.parent){i.stageAndCommit([l.getSelectUpdate(e.parent.id)]),o&&a.push(o(e.parent.id));return}s&&(i.stageAndCommit([l.getSelectUpdate(s)]),o&&a.push(o(s)))},[i,l,r,c,s,o,a])};export const useDeselect=r=>{let{storeSystem:s,navigationSystem:o}=n(),i=t();return e(()=>{s.stageAndCommit([o.getDeselectUpdate()]),r&&i.push(r())},[s,o,r,i])};export const useSelectedEntity=e=>{let t=useSelectedEntityId(e),{domain:s}=n();return r(e=>t?s.get$Entity(t,e.state):null,[s,t])};
@@ -0,0 +1,32 @@
1
+ export interface UseShareLinksOptions {
2
+ /** Whether the links are generated; `true` by default. A layout passes whether its share dialog is open. */
3
+ readonly enabled?: boolean;
4
+ }
5
+ /**
6
+ * What a project layout needs to share the configuration.
7
+ * - `available`: whether sharing is offered, that is `applicationConfig.shareDisabled` is not set and at least one
8
+ * kind of link is enabled; the built-in share button renders nothing otherwise.
9
+ * - `ownerLinkAvailable` and `readLinkAvailable`: whether each kind of link is enabled
10
+ * (`applicationConfig.shareOwnerLinkDisabled`, `applicationConfig.shareReadRevisionLinkDisabled`).
11
+ * - `ownerLink`: a link that opens the configuration for editing, or `null` while it loads, is disabled or the
12
+ * hook is not `enabled`.
13
+ * - `readLink`: a link that opens the current revision of the configuration for viewing, `null` in the same cases.
14
+ * The configuration is saved before the link is generated; while the hook is enabled, each commit of the
15
+ * configuration generates a new link, and `readLink` is `null` again until it arrives.
16
+ * - `isLoading`: whether an enabled link is still being generated.
17
+ */
18
+ export interface UseShareLinksResult {
19
+ readonly available: boolean;
20
+ readonly ownerLinkAvailable: boolean;
21
+ readonly readLinkAvailable: boolean;
22
+ readonly ownerLink: string | null;
23
+ readonly readLink: string | null;
24
+ readonly isLoading: boolean;
25
+ }
26
+ export type UseShareLinks = (options?: UseShareLinksOptions) => UseShareLinksResult;
27
+ /**
28
+ * Hook to generate the links that share the configuration, as the built-in share dialog does. The links expire
29
+ * after `applicationConfig.shareExpiration` hours, or never without it. Generating a link saves the configuration,
30
+ * so a layout enables the hook only while its share dialog is open. It does not check read mode.
31
+ */
32
+ export declare const useShareLinks: UseShareLinks;
@@ -0,0 +1 @@
1
+ import{useQuery as e}from"@tanstack/react-query";import{useMemo as t}from"react";import{applicationConfigComponent as i}from"#package/domain";import{useConfigurationId as r}from"../../application-runtime/index.js";import{useStoreSelector as a}from"../common-hooks/index.js";import{useFirstRootComponent as n}from"../component-hooks/index.js";import{useGenerateShareLink as s}from"./generate-share-link-hooks.js";export const useShareLinks=(o={})=>{let{enabled:l=!0}=o,d=n(i),m=s(),c=r(),h=d?.state.shareExpiration,k=d?.state.shareDisabled??!1,p=!k&&!d?.state.shareOwnerLinkDisabled,u=!k&&!d?.state.shareReadRevisionLinkDisabled,y=l&&u,f=a(e=>({entities:e.state.entities,rootEntityId:e.state.rootEntityId}),[],y),b=e({queryKey:["share-owner-link",c],staleTime:1/0,queryFn:()=>m({access:"o",expiration:h}),enabled:l&&p}),q=e({queryKey:y?["share-revision-link",c,f.entities,f.rootEntityId]:["share-revision-link",c,"disabled"],queryFn:()=>m({access:"rr",expiration:h}),enabled:y}),x=l&&p&&b.data?.link||null,F=y&&q.isFetchedAfterMount&&q.data?.link||null,g=l&&p&&b.isLoading||y&&q.isFetching&&!q.isFetchedAfterMount;return t(()=>({available:p||u,ownerLinkAvailable:p,readLinkAvailable:u,ownerLink:x,readLink:F,isLoading:g}),[p,u,x,F,g])};
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Where a step stands relative to the active step: before it, the active step itself, or after it.
3
+ */
4
+ export type StepStatus = 'complete' | 'active' | 'upcoming';
5
+ /**
6
+ * One step of the spec, ready to render.
7
+ */
8
+ export interface NavigationStepEntry<NAVIGATION_STATE extends string = string> {
9
+ /** Position of the step in `steps`; what `goTo` takes */
10
+ readonly index: number;
11
+ /** The step's label, resolved for the active locale */
12
+ readonly label: string;
13
+ /** The step's navigation states; the step is active while one of them is */
14
+ readonly navigationStates: readonly NAVIGATION_STATE[];
15
+ /** `navigationStates[0]`, the state `goTo`, `next` and `previous` enter */
16
+ readonly state: NAVIGATION_STATE;
17
+ /** Before, at or after the active step; `'upcoming'` for every step while no step is active */
18
+ readonly status: StepStatus;
19
+ }
20
+ /**
21
+ * The steps of the spec and the means to move between them.
22
+ * - `steps`: the steps in spec order. `activeStep` and `activeIndex`: the first step whose navigation states include
23
+ * the active one, or `null` and -1 while the active navigation state belongs to no step.
24
+ * - `isFirst` and `isLast`: whether the active step is the first or the last one; a single step is both.
25
+ * - `canGoNext` and `canGoPrevious`: whether a step follows or precedes the active one. While no step is active, the
26
+ * next step is the first one and there is no previous step.
27
+ * - `next` and `previous`: enter the following or preceding step; each does nothing without one.
28
+ * - `goTo`: enters a step, given by its index or by any of its navigation states; an unknown step does nothing.
29
+ */
30
+ export interface UseStepNavigationResult<NAVIGATION_STATE extends string = string> {
31
+ readonly steps: readonly NavigationStepEntry<NAVIGATION_STATE>[];
32
+ readonly activeStep: NavigationStepEntry<NAVIGATION_STATE> | null;
33
+ readonly activeIndex: number;
34
+ readonly isFirst: boolean;
35
+ readonly isLast: boolean;
36
+ readonly canGoNext: boolean;
37
+ readonly canGoPrevious: boolean;
38
+ readonly next: () => void;
39
+ readonly previous: () => void;
40
+ readonly goTo: (step: number | NAVIGATION_STATE) => void;
41
+ }
42
+ export type UseStepNavigation<NAVIGATION_STATE extends string> = () => UseStepNavigationResult<NAVIGATION_STATE>;
43
+ /**
44
+ * Hook to read the steps the spec declares in `navigationSteps` and to move between them, as the built-in step
45
+ * buttons and the header's stepper do.
46
+ * - It reads the first active `navigationSteps` instance on the root entity, the one the built-in layout shows, so
47
+ * several instances can be switched with `$filter`. Without one, `steps` is empty, `activeIndex` is -1 and the
48
+ * actions do nothing.
49
+ * - A step without navigation states cannot be entered and is left out, with a warning in development.
50
+ * - `next` and `previous` read the committed state when they are called, so a second call before React renders
51
+ * again moves one step further from where the first one arrived, never skipping a step on stale state.
52
+ * - Each action that enters a step pushes the analytics event of the built-in control: the next-step button's,
53
+ * the previous-step button's, or the header stepper's for `goTo`. An action that does nothing pushes nothing.
54
+ *
55
+ * It enforces no order (`goTo` enters any step) and does not check read mode.
56
+ */
57
+ export declare const useStepNavigation: () => UseStepNavigationResult;
@@ -0,0 +1 @@
1
+ import{useCallback as t,useEffect as e,useMemo as a}from"react";import{navigationStepsComponent as o}from"#package/domain";import{FrontendAnalyticsFactory as i,useAnalyticsService as n,useIsDev as s}from"../../application-runtime/index.js";import{useResolveLocalizable as l}from"../../localizable/index.js";import{useDomain as p}from"../common-hooks/use-domain-context.js";import{useFirstRootComponent as m}from"../component-hooks/use-component.js";import{useActiveNavigationState as r}from"./navigation-hooks.js";let v=t=>t.flatMap(t=>{let e=t.navigationStates[0];return void 0===e?[]:[{step:t,state:e}]});export const useStepNavigation=()=>{var g,c;let d,u=m(o),S=r(),f=l(),h=n(),{componentReader:x,navigationSystem:N,storeSystem:k}=p(),j=a(()=>u?.state.steps??[],[u]),C=j.filter(t=>0===t.navigationStates.length);g=C.length>0,c=`The navigationSteps ${C.map(t=>`"${f(t.label)}"`).join(", ")} have no navigation states, so useStepNavigation leaves them out. Give each step at least one navigation state.`,e(()=>{d&&g&&console.warn(c)},[d=s(),g,c]);let b=a(()=>v(j),[j]),A=b.findIndex(({step:t})=>t.navigationStates.includes(S)),G=a(()=>b.map(({step:t,state:e},a)=>{let o=a<A?"complete":a===A?"active":"upcoming";return{index:a,label:f(t.label),navigationStates:t.navigationStates,state:e,status:o}}),[b,A,f]),T=t((t,e)=>{let a=k.stateSlices.committed.value.state,i=x.readFirstRootComponent({componentTypes:[o]},a),n=v(i?.state.steps??[]),s=N.getActiveNavigationState(a),l=n.findIndex(({step:t})=>t.navigationStates.includes(s)),p=n[l+t]?.state;void 0!==p&&(h.push(e()),k.stageAndCommit([N.getNavigationUpdate(p)]))},[h,x,N,k]),y=t(()=>T(1,i.NextStepButtonClicked),[T]),B=t(()=>T(-1,i.PreviousStepButtonClicked),[T]),F=t(t=>{let e="number"==typeof t?G[t]:G.find(e=>e.navigationStates.includes(t));e&&(h.push(i.TopNavigationStepClicked(e.state)),k.stageAndCommit([N.getNavigationUpdate(e.state)]))},[G,h,k,N]);return{steps:G,activeStep:G[A]??null,activeIndex:A,isFirst:0===A,isLast:-1!==A&&A===G.length-1,canGoNext:A+1<G.length,canGoPrevious:A>0,next:y,previous:B,goTo:F}};
@@ -1 +1 @@
1
- import{useCallback as t,useEffect as o,useMemo as a}from"react";import{horizontalTabsComponent as e,sidebarTabsComponent as i}from"#package/domain";import{FrontendAnalyticsFactory as n,useAnalyticsService as s,useIsDev as r}from"../../application-runtime/index.js";import{useResolveLocalizable as l}from"../../localizable/index.js";import{useDomain as m}from"../common-hooks/use-domain-context.js";import{useComponents as c}from"../component-hooks/use-component.js";import{useActiveNavigationState as p}from"./navigation-hooks.js";import{useSelectedDomainEntityId as b}from"./selection-hooks.js";let h=(t,a)=>{let e=r();o(()=>{e&&t&&console.warn(a)},[e,t,a])};export const useTabNavigation=(o={})=>{let{source:r="auto",entityId:v}=o,g=p(),d=b(),f=l(),u=s(),{navigationSystem:T,storeSystem:z}=m(),S=c({componentTypes:[i],entityIds:[v??d]}),j=c({componentTypes:[e]}),N="horizontalTabs"!==r&&S.length>0,k="sidebarTabs"!==r&&j.length>0,y=N?"sidebarTabs":k?"horizontalTabs":null;h(N&&k,"Both sidebarTabs and horizontalTabs are active, so useTabNavigation shows the sidebarTabs. Remove one of them from the spec, or pass `source` to choose."),h("horizontalTabs"===y&&j.length>1,"Several horizontalTabs are active, so useTabNavigation shows the first one. Keep one active, for example with $filter.");let x=a(()=>"sidebarTabs"===y?S.flatMap(t=>t.state.tabs):"horizontalTabs"===y?j[0]?.state.tabs??[]:[],[y,S,j]),w=x.filter(t=>0===t.navigationStates.length);h(w.length>0,`The ${y} tabs ${w.map(t=>`"${f(t.label)}"`).join(", ")} have no navigation states, so useTabNavigation leaves them out. Give each tab at least one navigation state.`);let $=a(()=>x.flatMap(t=>{let o=t.navigationStates[0];return void 0===o?[]:[{tab:t,state:o}]}).map(({tab:t,state:o},a)=>({index:a,label:f(t.label),icon:"string"==typeof t.icon?t.icon:void 0,iconNode:"string"==typeof t.icon||null===t.icon?void 0:t.icon,navigationStates:t.navigationStates,state:o,isActive:t.navigationStates.includes(g)})),[x,g,f]),A=$.find(t=>t.isActive)??null,C=t(t=>{let o="number"==typeof t?$[t]:$.find(o=>o.navigationStates.includes(t));o&&("horizontalTabs"===y&&u.push(n.TopNavigationStepClicked(o.state)),z.stageAndCommit([T.getNavigationUpdate(o.state)]))},[$,y,u,z,T]);return{source:y,tabs:$,activeTab:A,select:C}};
1
+ import{useCallback as t,useEffect as a,useMemo as o}from"react";import{horizontalTabsComponent as e,sidebarTabsComponent as i}from"#package/domain";import{FrontendAnalyticsFactory as n,useAnalyticsService as s,useIsDev as r}from"../../application-runtime/index.js";import{useResolveLocalizable as l}from"../../localizable/index.js";import{useDomain as m}from"../common-hooks/index.js";import{useComponents as p}from"../component-hooks/index.js";import{useActiveNavigationState as c}from"./navigation-hooks.js";import{useSelectedDomainEntityId as b}from"./selection-hooks.js";let h=(t,o)=>{let e=r();a(()=>{e&&t&&console.warn(o)},[e,t,o])};export const useTabNavigation=(a={})=>{let{source:r="auto",entityId:v}=a,g=c(),d=b(),f=l(),T=s(),{navigationSystem:u,storeSystem:z}=m(),S=p({componentTypes:[i],entityIds:[v??d]}),j=p({componentTypes:[e]}),N="horizontalTabs"!==r&&S.length>0,k="sidebarTabs"!==r&&j.length>0,x=N?"sidebarTabs":k?"horizontalTabs":null;h(N&&k,"Both sidebarTabs and horizontalTabs are active, so useTabNavigation shows the sidebarTabs. Remove one of them from the spec, or pass `source` to choose."),h("horizontalTabs"===x&&j.length>1,"Several horizontalTabs are active, so useTabNavigation shows the first one. Keep one active, for example with $filter.");let y=o(()=>"sidebarTabs"===x?S.flatMap(t=>t.state.tabs):"horizontalTabs"===x?j[0]?.state.tabs??[]:[],[x,S,j]),w=y.filter(t=>0===t.navigationStates.length);h(w.length>0,`The ${x} tabs ${w.map(t=>`"${f(t.label)}"`).join(", ")} have no navigation states, so useTabNavigation leaves them out. Give each tab at least one navigation state.`);let $=o(()=>y.flatMap(t=>{let a=t.navigationStates[0];return void 0===a?[]:[{tab:t,state:a}]}).map(({tab:t,state:a},o)=>({index:o,label:f(t.label),icon:"string"==typeof t.icon?t.icon:void 0,iconNode:"string"==typeof t.icon||null===t.icon?void 0:t.icon,navigationStates:t.navigationStates,state:a,isActive:t.navigationStates.includes(g)})),[y,g,f]),A=$.find(t=>t.isActive)??null,C=t(t=>{let a="number"==typeof t?$[t]:$.find(a=>a.navigationStates.includes(t));a&&("horizontalTabs"===x&&T.push(n.TopNavigationStepClicked(a.state)),z.stageAndCommit([u.getNavigationUpdate(a.state)]))},[$,x,T,z,u]);return{source:x,tabs:$,activeTab:A,select:C}};
@@ -1 +1 @@
1
- import{useCallback as o}from"react";import{FrontendAnalyticsFactory as e,useAnalyticsService as n}from"../../application-runtime/index.js";import{useDomain as t}from"../common-hooks/use-domain-context.js";import{useEagerObservableValue as r}from"../common-hooks/use-observable-selector.js";export const useUndoRedo=()=>{let d=n(),{undoSystem:m}=t(),{canUndo:s,canRedo:c}=r(m.can$);return{canUndo:s,canRedo:c,undo:o(()=>{m.canUndo()&&(d.push(e.UndoButtonClicked()),m.undo())},[d,m]),redo:o(()=>{m.canRedo()&&(d.push(e.RedoButtonClicked()),m.redo())},[d,m])}};
1
+ import{useCallback as o,useMemo as n}from"react";import{FrontendAnalyticsFactory as e,useAnalyticsService as t}from"../../application-runtime/index.js";import{useDomain as d,useEagerObservableValue as r}from"../common-hooks/index.js";export const useUndoRedo=()=>{let i=t(),{undoSystem:c}=d(),{canUndo:m,canRedo:p}=r(c.can$),u=o(()=>{c.canUndo()&&(i.push(e.UndoButtonClicked()),c.undo())},[i,c]),s=o(()=>{c.canRedo()&&(i.push(e.RedoButtonClicked()),c.redo())},[i,c]);return n(()=>({canUndo:m,canRedo:p,undo:u,redo:s}),[m,p,u,s])};
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Why the configurator shows its error page:
3
+ * - `uncaughtError`: rendering the configurator failed with an error nothing else handled;
4
+ * - `presetCreationFailed`: starting a configuration from a preset failed on a start screen that has
5
+ * no preset grid to return to (a single preset).
6
+ */
7
+ export type ConfiguratorErrorReason = 'uncaughtError' | 'presetCreationFailed';
8
+ /**
9
+ * The props of the `ConfiguratorErrorPage` element, the page the configurator shows in production
10
+ * when it cannot go on; a project registers its page with `createConfiguratorErrorPage`. In
11
+ * development the configurator shows its detailed error pages instead.
12
+ */
13
+ export interface ConfiguratorErrorPageProps {
14
+ readonly reason: ConfiguratorErrorReason;
15
+ /**
16
+ * Tries again: after an `uncaughtError` it renders the configurator again, after
17
+ * `presetCreationFailed` it reloads the page.
18
+ */
19
+ readonly onRetry: () => void;
20
+ }
@@ -1,2 +1,3 @@
1
+ export type { ConfiguratorErrorPageProps, ConfiguratorErrorReason } from './configurator-error-page-props.js';
1
2
  export { PhoenixEntityElement, PhoenixEntityElements, PhoenixEntityElementWithChildren, type PhoenixEntityElementProps, type PhoenixEntityElementsProps, type PhoenixEntityElementWithChildrenProps, } from './PhoenixEntityElement.js';
2
3
  export { PhoenixLayoutElement, PhoenixLayoutElements, PhoenixLayoutElementWithChildren, usePhoenixLayoutElementExists, type PhoenixLayoutElementProps, type PhoenixLayoutElementsProps, type PhoenixLayoutElementWithChildrenProps, } from './PhoenixLayoutElement.js';
@@ -0,0 +1,13 @@
1
+ import type { FinalizeActionsStore } from './finalize-actions-store.js';
2
+ interface FinalizeActionRunnerProps {
3
+ /** The component key of the `finalizeAction` the runner runs */
4
+ readonly actionKey: string;
5
+ readonly handler: string;
6
+ readonly store: FinalizeActionsStore;
7
+ }
8
+ /**
9
+ * The hidden runner of one `finalizeAction`. `PhoenixHandlerBoundary` remounts it, its error boundary included,
10
+ * when the handler's source changes, so an edited or fixed handler takes effect without a reload.
11
+ */
12
+ export declare const FinalizeActionRunner: (props: FinalizeActionRunnerProps) => import("react/jsx-runtime").JSX.Element;
13
+ export {};
@@ -0,0 +1 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{useLayoutEffect as e}from"react";import{ErrorBoundary as n}from"react-error-boundary";import{useLogger as i}from"../application-runtime/index.js";import{PhoenixHandlerBoundary as o}from"./PhoenixHandlerBoundary.js";import{useFinalizeAction as a}from"./use-finalize-action.js";let t=({actionKey:r,handler:n,store:i})=>{let o=a(n);return e(()=>{i.publish(r,{status:"ready",action:o})}),e(()=>()=>i.remove(r),[r,i]),null},l=({actionKey:r,handler:n,store:o,error:a})=>{let t=i();return e(()=>{let e=a instanceof Error?a:Error(String(a??"The finalize handler failed."),{cause:a});return t.error(`The finalize handler "${n}" failed to load, so its finalize action cannot run.`,{error:e.message}),o.publish(r,{status:"failed",error:e}),()=>o.remove(r)},[r,a,n,t,o]),null};export const FinalizeActionRunner=e=>r(o,{name:e.handler,children:r(n,{fallbackRender:({error:n})=>r(l,{...e,error:n}),children:r(t,{...e})})});
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Runs the spec's finalize actions for `useFinalizeActions()`. For every active `finalizeAction` component it
3
+ * mounts a hidden runner, which calls `useFinalizeAction` with the component's handler and publishes its state into
4
+ * the enclosing `FinalizeActionsProvider`. It renders nothing.
5
+ *
6
+ * The configurator mounts it once beside the configurator layout, inside its `ModalProvider`, so a handler can use
7
+ * `useModal`; a project does not mount it. The handlers' hooks run here, outside the layout, so a handler uses only
8
+ * what the configurator provides above its layout.
9
+ */
10
+ export declare const FinalizeActionsHost: () => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1 @@
1
+ import{jsx as n,Fragment as i}from"react/jsx-runtime";import{useContext as t,useEffect as o}from"react";import{finalizeActionComponent as e,getComponentSnapshotKey as r}from"#package/domain";import{useLogger as a}from"../application-runtime/index.js";import{useComponents as s}from"../domain-context/index.js";import{FinalizeActionRunner as m}from"./FinalizeActionRunner.js";import{FinalizeActionsContext as l}from"./finalize-actions-context.js";export const FinalizeActionsHost=()=>{let c=t(l),p=s({componentTypes:[e]}),u=a(),d=null!==c;return(o(()=>{d||u.warn("FinalizeActionsHost is mounted outside a FinalizeActionsProvider, so it runs no finalize actions.")},[d,u]),null===c)?null:n(i,{children:p.map(i=>{let t=r(i);return n(m,{actionKey:t,handler:i.state.handler,store:c},t)})})};
@@ -0,0 +1,11 @@
1
+ import { type ReactNode } from 'react';
2
+ /**
3
+ * Holds the state of the spec's finalize actions for `useFinalizeActions()` in its children; the runners of
4
+ * `FinalizeActionsHost`, mounted somewhere inside it, publish into it.
5
+ *
6
+ * The configurator mounts it once above its `ModalProvider`, so a dialog a layout opens with `useModal` sees the
7
+ * actions too; a project does not mount it.
8
+ */
9
+ export declare const FinalizeActionsProvider: ({ children }: {
10
+ readonly children: ReactNode;
11
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{useState as i}from"react";import{FinalizeActionsContext as o}from"./finalize-actions-context.js";import{createFinalizeActionsStore as t}from"./finalize-actions-store.js";export const FinalizeActionsProvider=({children:e})=>{let[n]=i(t);return r(o.Provider,{value:n,children:e})};
@@ -0,0 +1,6 @@
1
+ import type { FinalizeActionsStore } from './finalize-actions-store.js';
2
+ /**
3
+ * The store of the enclosing `FinalizeActionsProvider`, or `null` outside one. The built-in finalize buttons read
4
+ * the outcome of a run from it, which outlives the button; a layout uses `useFinalizeActions()` instead.
5
+ */
6
+ export declare const FinalizeActionsContext: import("react").Context<FinalizeActionsStore | null>;
@@ -0,0 +1 @@
1
+ import{createContext as t}from"react";export const FinalizeActionsContext=t(null);
@@ -0,0 +1,23 @@
1
+ import type { UseFinalizeActionResult } from './use-finalize-action.js';
2
+ /**
3
+ * What the hidden runner of one `finalizeAction` publishes: the state of its `useFinalizeAction` call, or the error
4
+ * its handler threw while it was resolved, in which case the action cannot run.
5
+ */
6
+ export type FinalizeActionRunnerState = {
7
+ readonly status: 'ready';
8
+ readonly action: UseFinalizeActionResult;
9
+ } | {
10
+ readonly status: 'failed';
11
+ readonly error: Error;
12
+ };
13
+ /**
14
+ * The runner states of the active `finalizeAction` components, by component key. `FinalizeActionsProvider` owns
15
+ * one; the runners of `FinalizeActionsHost` publish into it and `useFinalizeActions()` reads it.
16
+ */
17
+ export interface FinalizeActionsStore {
18
+ readonly subscribe: (listener: () => void) => () => void;
19
+ readonly getSnapshot: () => ReadonlyMap<string, FinalizeActionRunnerState>;
20
+ readonly publish: (key: string, state: FinalizeActionRunnerState) => void;
21
+ readonly remove: (key: string) => void;
22
+ }
23
+ export declare const createFinalizeActionsStore: () => FinalizeActionsStore;
@@ -0,0 +1 @@
1
+ export const createFinalizeActionsStore=()=>{let t=new Map,e=new Set,a=a=>{t=a,e.forEach(t=>t())};return{subscribe:t=>(e.add(t),()=>{e.delete(t)}),getSnapshot:()=>t,publish:(e,i)=>{var n;n=t.get(e),(void 0===n||n.status!==i.status||("failed"===n.status||"failed"===i.status?"failed"!==n.status||"failed"!==i.status||n.error!==i.error:n.action.run!==i.action.run||n.action.isPending!==i.action.isPending||n.action.error!==i.action.error||n.action.disabled!==i.action.disabled||n.action.hints!==i.action.hints))&&a(new Map(t).set(e,i))},remove:e=>{if(!t.has(e))return;let i=new Map(t);i.delete(e),a(i)}}};
@@ -1,3 +1,8 @@
1
1
  export { usePhoenixHandler, useSystemPhoenixHandler, useSystemPhoenixAsyncHandler } from './PhoenixHandler.js';
2
2
  export { PhoenixHandlerBoundary } from './PhoenixHandlerBoundary.js';
3
3
  export { type UseFinalizeAction, type UseFinalizeActionResult, useFinalizeAction } from './use-finalize-action.js';
4
+ export { FinalizeActionsHost } from './FinalizeActionsHost.js';
5
+ export { FinalizeActionsProvider } from './FinalizeActionsProvider.js';
6
+ export { FinalizeActionsContext } from './finalize-actions-context.js';
7
+ export { type FinalizeActionRunnerState, type FinalizeActionsStore } from './finalize-actions-store.js';
8
+ export { type FinalizeActionEntry, type UseFinalizeActions, type UseFinalizeActionsResult, useFinalizeActions, } from './use-finalize-actions.js';
@@ -1 +1 @@
1
- export{usePhoenixHandler,useSystemPhoenixHandler,useSystemPhoenixAsyncHandler}from"./PhoenixHandler.js";export{PhoenixHandlerBoundary}from"./PhoenixHandlerBoundary.js";export{useFinalizeAction}from"./use-finalize-action.js";
1
+ export{usePhoenixHandler,useSystemPhoenixHandler,useSystemPhoenixAsyncHandler}from"./PhoenixHandler.js";export{PhoenixHandlerBoundary}from"./PhoenixHandlerBoundary.js";export{useFinalizeAction}from"./use-finalize-action.js";export{FinalizeActionsHost}from"./FinalizeActionsHost.js";export{FinalizeActionsProvider}from"./FinalizeActionsProvider.js";export{FinalizeActionsContext}from"./finalize-actions-context.js";export{useFinalizeActions}from"./use-finalize-actions.js";
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * What a project layout needs to show and run one `finalizeAction` of the spec.
3
3
  * - `run`: pushes the finalize-button analytics event, then runs the action's handler. Does nothing while
4
- * `disabled` or `isPending`.
4
+ * `disabled` or `isPending`. The promise it returns never rejects: it resolves after the handler has settled and
5
+ * React has had the chance to render the outcome, or at once when the run does nothing; a failure is `error`.
5
6
  * - `isPending`: the handler is running.
6
7
  * - `error`: what the handler's last run rejected with, `null` after a run that resolved and while a new run is
7
8
  * pending. A rejection that is not an `Error` is wrapped in one, with the rejected value as its `cause`. No snackbar
@@ -13,7 +14,7 @@
13
14
  * running, and a component mounted afterwards starts with `isPending` false and no `error`.
14
15
  */
15
16
  export interface UseFinalizeActionResult {
16
- readonly run: () => void;
17
+ readonly run: () => Promise<void>;
17
18
  readonly isPending: boolean;
18
19
  readonly error: Error | null;
19
20
  readonly disabled: boolean;
@@ -1 +1 @@
1
- import{useMutation as r}from"@tanstack/react-query";import{useCallback as e,useRef as n}from"react";import{FrontendAnalyticsFactory as t,useAnalyticsService as o,useLogger as i}from"../application-runtime/index.js";import{useFinalizeViolations as a}from"../domain-context/index.js";import{usePhoenixHandler as c}from"./PhoenixHandler.js";export const useFinalizeAction=l=>{let{handler:m}=c(l),s=o(),u=i(),{disabled:f,hints:d}=a(),p=n(!1),{mutate:h,isPending:x,error:y}=r({mutationFn:async()=>{try{await m()}catch(r){throw r instanceof Error?r:Error(null==r?"The finalize handler failed without a reason.":String(r),{cause:r})}finally{p.current=!1}},onError:r=>{u.error("Failed to finalize",{error:r.message})}});return{run:e(()=>{f||p.current||(p.current=!0,s.push(t.FinalizeButtonClicked()),h())},[s,f,h]),isPending:x,error:y,disabled:f,hints:d}};
1
+ import{useMutation as r}from"@tanstack/react-query";import{useCallback as t,useRef as e}from"react";import{FrontendAnalyticsFactory as n,useAnalyticsService as i,useLogger as a}from"../application-runtime/index.js";import{useFinalizeViolations as o}from"../domain-context/index.js";import{usePhoenixHandler as c}from"./PhoenixHandler.js";export const useFinalizeAction=s=>{let{handler:l}=c(s),m=i(),u=a(),{disabled:f,hints:d}=o(),h=e(!1),{mutateAsync:p,isPending:w,error:y}=r({mutationFn:async()=>{try{await l()}catch(r){throw r instanceof Error?r:Error(null==r?"The finalize handler failed without a reason.":String(r),{cause:r})}finally{h.current=!1}},onError:r=>{u.error("Failed to finalize",{error:r.message})}});return{run:t(async()=>{if(!f&&!h.current){h.current=!0,m.push(n.FinalizeButtonClicked());try{await p()}catch{}await new Promise(r=>setTimeout(r,0))}},[m,f,p]),isPending:w,error:y,disabled:f,hints:d}};