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

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 (617) hide show
  1. package/dist/application/index.d.ts +1 -0
  2. package/dist/application/index.js +1 -1
  3. package/dist/application/mount-application.d.ts +1 -1
  4. package/dist/application/mount-application.js +1 -1
  5. package/dist/application/mount-configurator.d.ts +19 -0
  6. package/dist/application/mount-configurator.js +1 -0
  7. package/dist/application/mounted-application-runtime.d.ts +4 -0
  8. package/dist/application/mounted-application-runtime.js +1 -0
  9. package/dist/application/register-web-component.d.ts +2 -0
  10. package/dist/application/register-web-component.js +1 -0
  11. package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
  12. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  13. package/dist/application-spec/errors/diagnostic-messages.d.ts +10 -1
  14. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  15. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  16. package/dist/application-spec/generate-application/code/templates/application-types.js +6 -6
  17. package/dist/application-spec/generate-application/code/templates/common/doc-comment.d.ts +2 -0
  18. package/dist/application-spec/generate-application/code/templates/common/doc-comment.js +1 -0
  19. package/dist/application-spec/generate-application/code/templates/configurator-globals.d.ts +2 -1
  20. package/dist/application-spec/generate-application/code/templates/configurator-globals.js +19 -6
  21. package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.js +7 -7
  22. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.d.ts +12 -0
  23. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.js +7 -0
  24. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.js +24 -22
  25. package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +1 -0
  26. package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
  27. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +13 -6
  28. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  29. package/dist/application-spec/generate-application/implementations/phx-application-types.d.ts +25 -0
  30. package/dist/application-spec/generate-application/implementations/phx-application-types.js +1 -0
  31. package/dist/application-spec/generate-application/implementations/phx-domain.d.ts +36 -0
  32. package/dist/application-spec/generate-application/implementations/phx-domain.js +1 -0
  33. package/dist/application-spec/generate-application/implementations/phx-model.d.ts +24 -0
  34. package/dist/application-spec/generate-application/implementations/phx-model.js +1 -0
  35. package/dist/application-spec/generate-application/implementations/phx.d.ts +22 -0
  36. package/dist/application-spec/generate-application/implementations/phx.js +1 -0
  37. package/dist/application-spec/generate-application/index.d.ts +2 -0
  38. package/dist/application-spec/generate-application/index.js +1 -1
  39. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.d.ts +3 -3
  40. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +7 -4
  41. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
  42. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-spec-runtime.d.ts +16 -0
  43. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-spec-runtime.js +1 -0
  44. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +17 -4
  45. package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
  46. package/dist/application-spec/generate-application/runtime/application-spec-slice.d.ts +71 -0
  47. package/dist/application-spec/generate-application/runtime/application-spec-slice.js +1 -0
  48. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.d.ts +3 -3
  49. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +7 -5
  50. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  51. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-spec-runtime.d.ts +16 -0
  52. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-spec-runtime.js +1 -0
  53. package/dist/application-spec/generate-application/runtime/create-application.d.ts +57 -0
  54. package/dist/application-spec/generate-application/runtime/create-application.js +1 -0
  55. package/dist/application-spec/generate-application/runtime/index.d.ts +8 -0
  56. package/dist/application-spec/generate-application/runtime/index.js +1 -0
  57. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.d.ts +9 -3
  58. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  59. package/dist/application-spec/generate-application/runtime/spec-runtime.d.ts +21 -0
  60. package/dist/application-spec/generate-application/runtime/spec-runtime.js +1 -0
  61. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.d.ts +3 -2
  62. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.d.ts +44 -9
  63. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.js +1 -1
  64. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +33 -3
  65. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  66. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.d.ts +9 -0
  67. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.js +1 -0
  68. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +4 -1
  69. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  70. package/dist/configurator/ConfiguratorApp.js +1 -1
  71. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.d.ts +2 -0
  72. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.js +5 -0
  73. package/dist/configurator/app-loader-content/index.d.ts +1 -0
  74. package/dist/configurator/app-loader-content/index.js +1 -0
  75. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  76. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +4 -3
  77. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  78. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +33 -7
  79. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  80. package/dist/configurator/application-runtime/extensions/systems/camera-control-system/camera-control-system.d.ts +1 -1
  81. package/dist/configurator/application-runtime/extensions/systems/canvas-system.d.ts +8 -0
  82. package/dist/configurator/application-runtime/extensions/systems/canvas-system.js +1 -1
  83. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.d.ts +8 -0
  84. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.js +1 -0
  85. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.d.ts +23 -1
  86. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.js +1 -1
  87. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +14 -1
  88. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  89. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +45 -4
  90. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  91. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.d.ts +14 -5
  92. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.js +1 -1
  93. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  94. package/dist/configurator/common/configurator-interface.d.ts +111 -5
  95. package/dist/configurator/common/configurator-interface.js +1 -1
  96. package/dist/configurator/configuration-not-found-page/BuiltInConfigurationNotFoundPage.d.ts +5 -0
  97. package/dist/configurator/configuration-not-found-page/BuiltInConfigurationNotFoundPage.js +1 -0
  98. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.d.ts +0 -6
  99. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.js +1 -1
  100. package/dist/configurator/configuration-not-found-page/index.d.ts +2 -1
  101. package/dist/configurator/configuration-not-found-page/index.js +1 -1
  102. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.d.ts +12 -0
  103. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.js +1 -0
  104. package/dist/configurator/configurator-context/PreviewContextProvider.js +1 -1
  105. package/dist/configurator/configurator-context/ViewportStateSync.d.ts +2 -2
  106. package/dist/configurator/configurator-context/ViewportStateSync.js +1 -1
  107. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +10 -0
  108. package/dist/configurator/configurator-context/configurator-routing/ConfiguratorRoutingProvider.js +1 -1
  109. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.d.ts +6 -0
  110. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.js +1 -0
  111. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.d.ts +7 -0
  112. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.js +1 -0
  113. package/dist/configurator/configurator-error-page/index.d.ts +2 -0
  114. package/dist/configurator/configurator-error-page/index.js +1 -0
  115. package/dist/configurator/index.d.ts +10 -0
  116. package/dist/configurator/index.js +1 -1
  117. package/dist/configurator/pages/ConfiguratorErrorPage.d.ts +0 -1
  118. package/dist/configurator/pages/ConfiguratorErrorPage.js +1 -1
  119. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  120. package/dist/configurator/pages/PresetCreationErrorPage.d.ts +1 -1
  121. package/dist/configurator/pages/PresetCreationErrorPage.js +1 -1
  122. package/dist/configurator/pages/default-configurator-elements.d.ts +4 -2
  123. package/dist/configurator/pages/default-configurator-elements.js +1 -1
  124. package/dist/configurator/pages/default-elements/index.d.ts +1 -0
  125. package/dist/configurator/pages/default-elements/index.js +1 -1
  126. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.d.ts +3 -0
  127. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.js +1 -0
  128. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.d.ts +3 -0
  129. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.js +1 -0
  130. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.d.ts +3 -0
  131. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.js +1 -0
  132. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.d.ts +3 -0
  133. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.js +1 -0
  134. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.d.ts +3 -0
  135. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.js +1 -0
  136. package/dist/configurator/pages/default-elements/scene-controls/index.d.ts +6 -0
  137. package/dist/configurator/pages/default-elements/scene-controls/index.js +1 -0
  138. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.d.ts +6 -0
  139. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.js +1 -0
  140. package/dist/configurator/pages/error-boundaries/GeneralErrorBoundary.js +1 -1
  141. package/dist/configurator/pages/error-boundaries/LoadingErrorBoundary.js +1 -1
  142. package/dist/configurator/scene/index.d.ts +1 -0
  143. package/dist/configurator/scene/index.js +1 -1
  144. package/dist/configurator/scene/scene-controls/ToolFab.d.ts +4 -0
  145. package/dist/configurator/scene/scene-controls/ToolFab.js +1 -1
  146. package/dist/configurator/scene/scene-controls/use-scene-control-tooltip.d.ts +2 -1
  147. package/dist/configurator/scene/scene-entity/scene-controls/SceneEntityHtmlHotspots.js +1 -1
  148. package/dist/configurator/toolbar-actions/index.d.ts +3 -0
  149. package/dist/configurator/toolbar-actions/index.js +1 -0
  150. package/dist/configurator/toolbar-actions/use-assistant-panel.d.ts +18 -0
  151. package/dist/configurator/toolbar-actions/use-assistant-panel.js +1 -0
  152. package/dist/configurator/toolbar-actions/use-measurements.d.ts +35 -0
  153. package/dist/configurator/toolbar-actions/use-measurements.js +1 -0
  154. package/dist/configurator/toolbar-actions/use-toolbar-actions.d.ts +100 -0
  155. package/dist/configurator/toolbar-actions/use-toolbar-actions.js +1 -0
  156. package/dist/configurator/toolbar-actions/use-toolbar-help.d.ts +7 -0
  157. package/dist/configurator/toolbar-actions/use-toolbar-help.js +1 -0
  158. package/dist/configurator/ui/assistant/AssistantChips.d.ts +3 -2
  159. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  160. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  161. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  162. package/dist/configurator/ui/assistant/alert/AssistantAlert.d.ts +8 -0
  163. package/dist/configurator/ui/assistant/alert/AssistantAlert.js +1 -0
  164. package/dist/configurator/ui/assistant/alert/index.d.ts +2 -0
  165. package/dist/configurator/ui/assistant/alert/index.js +1 -0
  166. package/dist/configurator/ui/assistant/alert/remark-alerts.d.ts +10 -0
  167. package/dist/configurator/ui/assistant/alert/remark-alerts.js +1 -0
  168. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -1
  169. package/dist/configurator/ui/assistant/form/compose-answer.d.ts +1 -1
  170. package/dist/configurator/ui/assistant/form/compose-answer.js +1 -1
  171. package/dist/configurator/ui/assistant/form/form-model.d.ts +3 -4
  172. package/dist/configurator/ui/assistant/form/form-state.d.ts +1 -1
  173. package/dist/configurator/ui/assistant/form/index.d.ts +2 -0
  174. package/dist/configurator/ui/assistant/form/index.js +1 -1
  175. package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +3 -2
  176. package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -1
  177. package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +1 -1
  178. package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -1
  179. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.d.ts +3 -0
  180. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.js +1 -0
  181. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.d.ts +31 -0
  182. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.js +1 -0
  183. package/dist/configurator/ui/assistant/form/{form-element-definition.d.ts → registry/form-element-definition.d.ts} +3 -1
  184. package/dist/configurator/ui/assistant/form/registry/form-element-definition.js +1 -0
  185. package/dist/configurator/ui/assistant/form/{form-registry.d.ts → registry/form-registry.d.ts} +2 -2
  186. package/dist/configurator/ui/assistant/form/registry/form-registry.js +1 -0
  187. package/dist/configurator/ui/assistant/form/registry/index.d.ts +6 -0
  188. package/dist/configurator/ui/assistant/form/registry/index.js +1 -0
  189. package/dist/configurator/ui/assistant/form/registry/use-form-registry.d.ts +8 -0
  190. package/dist/configurator/ui/assistant/form/registry/use-form-registry.js +1 -0
  191. package/dist/configurator/ui/assistant/form-elements/FormCard.d.ts +9 -0
  192. package/dist/configurator/ui/assistant/form-elements/FormCard.js +1 -0
  193. package/dist/configurator/ui/assistant/form-elements/FormConfirm.d.ts +9 -0
  194. package/dist/configurator/ui/assistant/form-elements/FormConfirm.js +1 -0
  195. package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +4 -1
  196. package/dist/configurator/ui/assistant/form-elements/FormNumber.d.ts +9 -0
  197. package/dist/configurator/ui/assistant/form-elements/FormNumber.js +1 -0
  198. package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +4 -1
  199. package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +4 -1
  200. package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -1
  201. package/dist/configurator/ui/assistant/form-elements/FormSwatch.d.ts +10 -0
  202. package/dist/configurator/ui/assistant/form-elements/FormSwatch.js +1 -0
  203. package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +4 -1
  204. package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -1
  205. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.d.ts +10 -0
  206. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.js +1 -0
  207. package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +20 -16
  208. package/dist/configurator/ui/assistant/form-elements/index.d.ts +4 -0
  209. package/dist/configurator/ui/assistant/form-elements/index.js +1 -1
  210. package/dist/configurator/ui/assistant/index.d.ts +3 -0
  211. package/dist/configurator/ui/assistant/index.js +1 -1
  212. package/dist/configurator/ui/assistant/resource-image/index.d.ts +1 -1
  213. package/dist/configurator/ui/assistant/resource-image/index.js +1 -1
  214. package/dist/configurator/ui/assistant/resource-image/resource-path.d.ts +0 -9
  215. package/dist/configurator/ui/assistant/resource-image/resource-path.js +1 -1
  216. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.d.ts +9 -0
  217. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.js +1 -0
  218. package/dist/configurator/ui/assistant/screenshots/index.d.ts +2 -0
  219. package/dist/configurator/ui/assistant/screenshots/index.js +1 -0
  220. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.d.ts +14 -0
  221. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.js +1 -0
  222. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +2 -2
  223. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
  224. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  225. package/dist/configurator/ui/configurator-layout/slots/canvas/LayoutCanvas.js +1 -1
  226. package/dist/configurator/ui/configurator-layout/slots/canvas/SharedCanvas.js +1 -1
  227. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.d.ts +5 -0
  228. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.js +1 -0
  229. package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
  230. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +1 -1
  231. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -1
  232. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +1 -1
  233. package/dist/configurator/ui/index.d.ts +1 -0
  234. package/dist/configurator/ui/index.js +1 -1
  235. package/dist/configurator/ui/legacy/layout/common/ReactiveInterfaceLayout.js +1 -1
  236. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.d.ts +0 -7
  237. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.js +2 -6
  238. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.js +1 -1
  239. package/dist/configurator/ui/phoenix-layout-elements/LanguageMenuAction.js +1 -1
  240. package/dist/configurator/ui/phoenix-layout-elements/LanguageToolbarButton.js +1 -1
  241. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsMenuAction.js +1 -1
  242. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsToolbarButton.js +1 -1
  243. package/dist/configurator/ui/phoenix-layout-elements/ShareToolbarButton.js +1 -1
  244. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.d.ts +1 -1
  245. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.js +1 -1
  246. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -8
  247. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.js +1 -1
  248. package/dist/configurator/ui/phoenix-layout-elements/index.d.ts +8 -1
  249. package/dist/configurator/ui/phoenix-layout-elements/index.js +1 -1
  250. package/dist/configurator/ui/phoenix-layout-elements/measurements/DimensionUnitSelector.js +1 -1
  251. package/dist/configurator/ui/phoenix-layout-elements/measurements/MeasurementsIndicatorsSwitch.js +1 -1
  252. package/dist/configurator/ui/phoenix-layout-elements/share/ShareModal.js +1 -1
  253. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.d.ts +7 -8
  254. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.js +1 -1
  255. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/FinalizeActions.js +1 -1
  256. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/NextStepButton.js +1 -1
  257. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/PreviousStepButton.js +1 -1
  258. package/dist/configurator/ui/preset-layout/PresetUi.d.ts +0 -2
  259. package/dist/configurator/ui/preset-layout/PresetUi.js +1 -1
  260. package/dist/configurator/ui/preset-layout/index.d.ts +6 -1
  261. package/dist/configurator/ui/preset-layout/index.js +1 -1
  262. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.js +1 -1
  263. package/dist/docs/complex-use-cases/focus-mode.mdx +2 -0
  264. package/dist/docs/fabs/basic.mdx +4 -0
  265. package/dist/docs/index.json +95 -1
  266. package/dist/docs/integrations/webcomponent-api/basics.mdx +2 -0
  267. package/dist/docs/layouts/custom-layout.mdx +321 -159
  268. package/dist/docs/layouts/gallery/ardent-compressor.mdx +3516 -0
  269. package/dist/docs/layouts/gallery/corvid-drone.mdx +3428 -0
  270. package/dist/docs/layouts/gallery/fenwick-window.mdx +2803 -0
  271. package/dist/docs/layouts/gallery/ferrule-bar-station.mdx +6567 -0
  272. package/dist/docs/layouts/gallery/kestrel-kettle.mdx +1858 -0
  273. package/dist/docs/layouts/gallery/nightjar-guitar.mdx +3698 -0
  274. package/dist/docs/layouts/gallery/sunfold-solar.mdx +2683 -0
  275. package/dist/docs/layouts/gallery/tidepool-aquascape.mdx +5203 -0
  276. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  277. package/dist/docs/other-features/error-5xx.mdx +1 -1
  278. package/dist/docs/other-features/navigation-hotspot.mdx +2 -0
  279. package/dist/docs/other-features/not-found-404.mdx +1 -1
  280. package/dist/docs/phoenix/configurator-interface.mdx +202 -67
  281. package/dist/docs/phoenix/finalization.mdx +1 -1
  282. package/dist/docs/phoenix/layout-slots.mdx +5 -5
  283. package/dist/docs/phoenix/sdk-builder-workflow.mdx +1 -1
  284. package/dist/docs/phoenix/sessions-and-access.mdx +2 -0
  285. package/dist/docs/phoenix/testing.mdx +2 -2
  286. package/dist/docs/selection-and-highlight/hotspots.mdx +2 -0
  287. package/dist/domain/application/assistant/assistant-manifest.d.ts +16 -1
  288. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +8 -1
  289. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  290. package/dist/domain/application/assistant/form/assistant-form-element-name.d.ts +11 -0
  291. package/dist/domain/application/assistant/form/assistant-form-element-name.js +8 -0
  292. package/dist/domain/application/assistant/form/assistant-form-elements.d.ts +174 -0
  293. package/dist/domain/application/assistant/form/assistant-form-elements.js +1 -0
  294. package/dist/domain/application/assistant/form/assistant-resource-path.d.ts +10 -0
  295. package/dist/domain/application/assistant/form/assistant-resource-path.js +1 -0
  296. package/dist/domain/application/assistant/form/index.d.ts +4 -0
  297. package/dist/domain/application/assistant/form/index.js +1 -0
  298. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  299. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  300. package/dist/domain/application/assistant/index.d.ts +2 -3
  301. package/dist/domain/application/assistant/index.js +1 -1
  302. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -1
  303. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +2 -0
  304. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -1
  305. package/dist/domain/application/configurator-builder.d.ts +7 -1
  306. package/dist/domain/application/configurator-builder.js +1 -1
  307. package/dist/domain/application/index.d.ts +1 -1
  308. package/dist/domain/application/index.js +1 -1
  309. package/dist/domain/application/standard-properties.js +1 -1
  310. package/dist/domain/application/web-component-property.d.ts +3 -1
  311. package/dist/domain/application/web-component-property.js +1 -1
  312. package/dist/domain/available-system-components.d.ts +1 -1
  313. package/dist/domain/available-system-components.js +1 -1
  314. package/dist/domain/domain-builder.d.ts +9 -3
  315. package/dist/domain/domain-builder.js +1 -1
  316. package/dist/domain/domain-context/store-system/store-system.d.ts +5 -0
  317. package/dist/domain/domain-context/store-system/store-system.js +1 -1
  318. package/dist/domain/domain-runtime/application.d.ts +39 -0
  319. package/dist/domain/domain-runtime/application.js +1 -0
  320. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +1 -0
  321. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  322. package/dist/domain/domain-runtime/domain-runtime.d.ts +44 -4
  323. package/dist/domain/domain-runtime/domain-runtime.js +1 -1
  324. package/dist/domain/domain-runtime/environment/initialize.d.ts +1 -1
  325. package/dist/domain/domain-runtime/environment/types.d.ts +1 -1
  326. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +2 -0
  327. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -1
  328. package/dist/domain/domain-runtime/index.d.ts +2 -1
  329. package/dist/domain/domain-runtime/index.js +1 -1
  330. package/dist/domain/domain-runtime/spec/index.d.ts +1 -1
  331. package/dist/domain/domain-runtime/spec/index.js +1 -1
  332. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  333. package/dist/domain/domain-runtime/spec/module-checks/element-registration.d.ts +15 -1
  334. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -1
  335. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.d.ts +12 -0
  336. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.js +1 -0
  337. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +3 -1
  338. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -1
  339. package/dist/domain/domain-runtime/spec/module-checks/merge-expression-modules.d.ts +23 -0
  340. package/dist/domain/domain-runtime/spec/module-checks/merge-expression-modules.js +1 -0
  341. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.d.ts +3 -4
  342. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -1
  343. package/dist/domain/domain-runtime/spec/selectors.d.ts +3 -1
  344. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  345. package/dist/domain/domain-runtime/web-component/actions.d.ts +3 -0
  346. package/dist/domain/domain-runtime/web-component/actions.js +1 -1
  347. package/dist/domain/domain-runtime/web-component/initialize.d.ts +1 -0
  348. package/dist/domain/domain-runtime/web-component/initialize.js +1 -1
  349. package/dist/domain/domain-runtime/web-component/selectors.d.ts +2 -0
  350. package/dist/domain/domain-runtime/web-component/selectors.js +1 -1
  351. package/dist/domain/domain-runtime/web-component/types.d.ts +6 -3
  352. package/dist/domain/extensions/export-images/agent-screenshot.d.ts +24 -0
  353. package/dist/domain/extensions/export-images/agent-screenshot.js +1 -0
  354. package/dist/domain/extensions/{client-side-image.d.ts → export-images/client-side-image.d.ts} +2 -2
  355. package/dist/domain/extensions/export-images/client-side-image.js +1 -0
  356. package/dist/domain/extensions/export-images/index.d.ts +3 -0
  357. package/dist/domain/extensions/export-images/index.js +1 -0
  358. package/dist/domain/extensions/{save-template-thumbnail.d.ts → export-images/save-template-thumbnail.d.ts} +2 -2
  359. package/dist/domain/extensions/export-images/save-template-thumbnail.js +1 -0
  360. package/dist/domain/extensions/index.d.ts +1 -2
  361. package/dist/domain/extensions/index.js +1 -1
  362. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +9 -0
  363. package/dist/editor/domain-editors/DomainSpecContext.js +1 -1
  364. package/dist/editor/domain-editors/apply-spec-update.d.ts +10 -2
  365. package/dist/editor/domain-editors/apply-spec-update.js +1 -1
  366. package/dist/editor/domain-editors/use-implementation-files.d.ts +6 -14
  367. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  368. package/dist/editor/screenshot/ScreenshotHandler.js +1 -1
  369. package/dist/i18n/locales/cs/messages.js +1 -1
  370. package/dist/i18n/locales/da/messages.js +1 -1
  371. package/dist/i18n/locales/de/messages.js +1 -1
  372. package/dist/i18n/locales/de-AT/messages.js +1 -1
  373. package/dist/i18n/locales/en/messages.js +1 -1
  374. package/dist/i18n/locales/en-AU/messages.js +1 -1
  375. package/dist/i18n/locales/en-GB/messages.js +1 -1
  376. package/dist/i18n/locales/es/messages.js +1 -1
  377. package/dist/i18n/locales/fr/messages.js +1 -1
  378. package/dist/i18n/locales/hu/messages.js +1 -1
  379. package/dist/i18n/locales/it/messages.js +1 -1
  380. package/dist/i18n/locales/nl/messages.js +1 -1
  381. package/dist/i18n/locales/pl/messages.js +1 -1
  382. package/dist/i18n/locales/pt/messages.js +1 -1
  383. package/dist/i18n/locales/ro/messages.js +1 -1
  384. package/dist/i18n/locales/sk/messages.js +1 -1
  385. package/dist/i18n/locales/tr/messages.js +1 -1
  386. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  387. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  388. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +16 -0
  389. package/dist/legacy/domain-spec/spec/domain-spec.js +1 -1
  390. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  391. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  392. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  393. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +11 -5
  394. package/dist/react-sdk/application-runtime/common-services/analytics/analytics-service.d.ts +1 -1
  395. package/dist/react-sdk/application-runtime/common-services/analytics/frontend-analytics.d.ts +4 -0
  396. package/dist/react-sdk/application-runtime/common-services/initialize.d.ts +2 -2
  397. package/dist/react-sdk/application-runtime/hooks/index.d.ts +2 -0
  398. package/dist/react-sdk/application-runtime/hooks/index.js +1 -1
  399. package/dist/react-sdk/application-runtime/hooks/loading/index.d.ts +5 -0
  400. package/dist/react-sdk/application-runtime/hooks/loading/index.js +1 -0
  401. package/dist/react-sdk/application-runtime/hooks/loading/loader-host-context.d.ts +11 -0
  402. package/dist/react-sdk/application-runtime/hooks/loading/loader-host-context.js +1 -0
  403. package/dist/react-sdk/application-runtime/hooks/loading/use-is-awaiting-loading-phase.d.ts +8 -0
  404. package/dist/react-sdk/application-runtime/hooks/loading/use-is-awaiting-loading-phase.js +1 -0
  405. package/dist/react-sdk/application-runtime/hooks/loading/use-is-loader-hosted.d.ts +7 -0
  406. package/dist/react-sdk/application-runtime/hooks/loading/use-is-loader-hosted.js +1 -0
  407. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-actions.d.ts +9 -0
  408. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-actions.js +1 -0
  409. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-application.d.ts +24 -0
  410. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-application.js +1 -0
  411. package/dist/react-sdk/application-runtime/hooks/responsive/index.d.ts +3 -0
  412. package/dist/react-sdk/application-runtime/hooks/responsive/index.js +1 -0
  413. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.d.ts +9 -0
  414. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.js +1 -0
  415. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.d.ts +26 -0
  416. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.js +1 -0
  417. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.d.ts +10 -0
  418. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.js +1 -0
  419. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.d.ts +24 -0
  420. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.js +1 -0
  421. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +5 -0
  422. package/dist/react-sdk/application-runtime/hooks/use-access-service.js +1 -1
  423. package/dist/react-sdk/application-runtime/hooks/use-phoenix-element-slots.d.ts +2 -1
  424. package/dist/react-sdk/application-runtime/hooks/use-web-component-readonly-sync.d.ts +4 -11
  425. package/dist/react-sdk/application-runtime/hooks/use-web-component-readonly-sync.js +1 -1
  426. package/dist/react-sdk/application-runtime/hooks/use-web-component.d.ts +5 -0
  427. package/dist/react-sdk/application-runtime/hooks/use-web-component.js +1 -1
  428. package/dist/react-sdk/application-runtime/host-properties/actions.d.ts +15 -0
  429. package/dist/react-sdk/application-runtime/host-properties/actions.js +1 -0
  430. package/dist/react-sdk/application-runtime/host-properties/connect-host-properties.d.ts +30 -0
  431. package/dist/react-sdk/application-runtime/host-properties/connect-host-properties.js +1 -0
  432. package/dist/react-sdk/application-runtime/host-properties/domain-host-properties.d.ts +7 -0
  433. package/dist/react-sdk/application-runtime/host-properties/domain-host-properties.js +1 -0
  434. package/dist/react-sdk/application-runtime/host-properties/host-property-descriptors.d.ts +21 -0
  435. package/dist/react-sdk/application-runtime/host-properties/host-property-descriptors.js +1 -0
  436. package/dist/react-sdk/application-runtime/host-properties/host-property-scopes.d.ts +42 -0
  437. package/dist/react-sdk/application-runtime/host-properties/host-property-scopes.js +1 -0
  438. package/dist/react-sdk/application-runtime/host-properties/index.d.ts +8 -0
  439. package/dist/react-sdk/application-runtime/host-properties/index.js +1 -0
  440. package/dist/react-sdk/application-runtime/host-properties/initialize.d.ts +7 -0
  441. package/dist/react-sdk/application-runtime/host-properties/initialize.js +1 -0
  442. package/dist/react-sdk/application-runtime/host-properties/selectors.d.ts +54 -0
  443. package/dist/react-sdk/application-runtime/host-properties/selectors.js +1 -0
  444. package/dist/react-sdk/application-runtime/host-properties/types.d.ts +18 -0
  445. package/dist/react-sdk/application-runtime/index.d.ts +3 -0
  446. package/dist/react-sdk/application-runtime/integration/initialize.d.ts +7 -6
  447. package/dist/react-sdk/application-runtime/integration/initialize.js +1 -1
  448. package/dist/react-sdk/application-runtime/integration/selectors.d.ts +11 -2
  449. package/dist/react-sdk/application-runtime/integration/selectors.js +1 -1
  450. package/dist/react-sdk/application-runtime/integration/types.d.ts +5 -2
  451. package/dist/react-sdk/application-runtime/loading/actions.d.ts +45 -0
  452. package/dist/react-sdk/application-runtime/loading/actions.js +1 -0
  453. package/dist/react-sdk/application-runtime/loading/index.d.ts +4 -0
  454. package/dist/react-sdk/application-runtime/loading/index.js +1 -0
  455. package/dist/react-sdk/application-runtime/loading/initialize.d.ts +3 -0
  456. package/dist/react-sdk/application-runtime/loading/initialize.js +1 -0
  457. package/dist/react-sdk/application-runtime/loading/selectors.d.ts +18 -0
  458. package/dist/react-sdk/application-runtime/loading/selectors.js +1 -0
  459. package/dist/react-sdk/application-runtime/loading/types.d.ts +59 -0
  460. package/dist/react-sdk/application-runtime/loading/types.js +1 -0
  461. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  462. package/dist/react-sdk/application-runtime/provider/ApplicationRuntime.d.ts +6 -0
  463. package/dist/react-sdk/application-runtime/provider/ApplicationRuntime.js +1 -1
  464. package/dist/react-sdk/application-runtime/provider/ApplicationType.d.ts +7 -0
  465. package/dist/react-sdk/application-runtime/provider/ApplicationType.js +1 -1
  466. package/dist/react-sdk/application-runtime/responsive/actions.d.ts +47 -0
  467. package/dist/react-sdk/application-runtime/responsive/actions.js +1 -0
  468. package/dist/react-sdk/application-runtime/responsive/index.d.ts +4 -0
  469. package/dist/react-sdk/application-runtime/responsive/index.js +1 -0
  470. package/dist/react-sdk/application-runtime/responsive/initialize.d.ts +3 -0
  471. package/dist/react-sdk/application-runtime/responsive/initialize.js +1 -0
  472. package/dist/react-sdk/application-runtime/responsive/selectors.d.ts +20 -0
  473. package/dist/react-sdk/application-runtime/responsive/selectors.js +1 -0
  474. package/dist/react-sdk/application-runtime/responsive/types.d.ts +104 -0
  475. package/dist/react-sdk/application-runtime/responsive/types.js +1 -0
  476. package/dist/react-sdk/application-runtime/routing/routing-service.d.ts +34 -2
  477. package/dist/react-sdk/application-runtime/routing/routing-service.js +1 -1
  478. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +313 -10
  479. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  480. package/dist/react-sdk/domain-application-context/BackendDataProvider.js +1 -1
  481. package/dist/react-sdk/domain-application-context/FrontendDataProvider.js +1 -1
  482. package/dist/react-sdk/domain-application-context/PublishedDataProvider.js +1 -1
  483. package/dist/react-sdk/domain-context/common-hooks/index.d.ts +9 -0
  484. package/dist/react-sdk/domain-context/common-hooks/index.js +1 -0
  485. package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.d.ts +23 -0
  486. package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.js +1 -0
  487. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +1 -0
  488. package/dist/react-sdk/domain-context/component-hooks/index.d.ts +1 -0
  489. package/dist/react-sdk/domain-context/component-hooks/index.js +1 -0
  490. package/dist/react-sdk/domain-context/component-hooks/use-component.js +1 -1
  491. package/dist/react-sdk/domain-context/entity-hooks/use-domain-entity-state.js +1 -1
  492. package/dist/react-sdk/domain-context/entity-hooks/use-entity-price.js +1 -1
  493. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-id.js +1 -1
  494. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-state.js +1 -1
  495. package/dist/react-sdk/domain-context/index.d.ts +5 -0
  496. package/dist/react-sdk/domain-context/index.js +1 -1
  497. package/dist/react-sdk/domain-context/system-hooks/composition-hooks.js +1 -1
  498. package/dist/react-sdk/domain-context/system-hooks/dimension-hooks.js +1 -1
  499. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.d.ts +8 -0
  500. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.js +1 -0
  501. package/dist/react-sdk/domain-context/system-hooks/hover-hooks.js +1 -1
  502. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.d.ts +24 -0
  503. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.js +1 -0
  504. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  505. package/dist/react-sdk/domain-context/system-hooks/selection-hooks.js +1 -1
  506. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.d.ts +32 -0
  507. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.js +1 -0
  508. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.d.ts +57 -0
  509. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.js +1 -0
  510. package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.js +1 -1
  511. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.js +1 -1
  512. package/dist/react-sdk/handlers/FinalizeActionRunner.d.ts +13 -0
  513. package/dist/react-sdk/handlers/FinalizeActionRunner.js +1 -0
  514. package/dist/react-sdk/handlers/FinalizeActionsHost.d.ts +10 -0
  515. package/dist/react-sdk/handlers/FinalizeActionsHost.js +1 -0
  516. package/dist/react-sdk/handlers/FinalizeActionsProvider.d.ts +11 -0
  517. package/dist/react-sdk/handlers/FinalizeActionsProvider.js +1 -0
  518. package/dist/react-sdk/handlers/finalize-actions-context.d.ts +6 -0
  519. package/dist/react-sdk/handlers/finalize-actions-context.js +1 -0
  520. package/dist/react-sdk/handlers/finalize-actions-store.d.ts +23 -0
  521. package/dist/react-sdk/handlers/finalize-actions-store.js +1 -0
  522. package/dist/react-sdk/handlers/index.d.ts +5 -0
  523. package/dist/react-sdk/handlers/index.js +1 -1
  524. package/dist/react-sdk/handlers/use-finalize-action.d.ts +3 -2
  525. package/dist/react-sdk/handlers/use-finalize-action.js +1 -1
  526. package/dist/react-sdk/handlers/use-finalize-actions.d.ts +53 -0
  527. package/dist/react-sdk/handlers/use-finalize-actions.js +1 -0
  528. package/dist/react-sdk/index.d.ts +2 -0
  529. package/dist/react-sdk/index.js +1 -1
  530. package/dist/react-sdk/loading-state/LoaderHost.d.ts +20 -0
  531. package/dist/react-sdk/loading-state/LoaderHost.js +1 -0
  532. package/dist/react-sdk/loading-state/built-in-loading-phase.d.ts +9 -0
  533. package/dist/react-sdk/loading-state/built-in-loading-phase.js +1 -0
  534. package/dist/react-sdk/loading-state/create-app-loader.d.ts +18 -0
  535. package/dist/react-sdk/loading-state/create-app-loader.js +1 -0
  536. package/dist/react-sdk/loading-state/index.d.ts +4 -2
  537. package/dist/react-sdk/loading-state/index.js +1 -1
  538. package/dist/react-sdk/loading-state/{LoadingStateProvider.d.ts → loading-state-hooks.d.ts} +3 -12
  539. package/dist/react-sdk/loading-state/loading-state-hooks.js +1 -0
  540. package/dist/react-sdk/page-elements/ConfigurationNotFoundPagePropsProvider.d.ts +17 -0
  541. package/dist/react-sdk/page-elements/ConfigurationNotFoundPagePropsProvider.js +1 -0
  542. package/dist/react-sdk/page-elements/ConfiguratorErrorPagePropsProvider.d.ts +17 -0
  543. package/dist/react-sdk/page-elements/ConfiguratorErrorPagePropsProvider.js +1 -0
  544. package/dist/react-sdk/page-elements/configurator-error-page-props.d.ts +20 -0
  545. package/dist/react-sdk/page-elements/configurator-error-page-props.js +1 -0
  546. package/dist/react-sdk/page-elements/create-configuration-not-found-page.d.ts +15 -0
  547. package/dist/react-sdk/page-elements/create-configuration-not-found-page.js +1 -0
  548. package/dist/react-sdk/page-elements/create-configurator-error-page.d.ts +14 -0
  549. package/dist/react-sdk/page-elements/create-configurator-error-page.js +1 -0
  550. package/dist/react-sdk/page-elements/create-preset-ui.d.ts +9 -0
  551. package/dist/react-sdk/page-elements/create-preset-ui.js +1 -0
  552. package/dist/react-sdk/page-elements/index.d.ts +6 -0
  553. package/dist/react-sdk/page-elements/index.js +1 -0
  554. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.d.ts +36 -0
  555. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.js +1 -0
  556. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.d.ts +44 -0
  557. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.js +1 -0
  558. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.d.ts +38 -0
  559. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.js +1 -0
  560. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.d.ts +30 -0
  561. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.js +1 -0
  562. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.d.ts +30 -0
  563. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.js +1 -0
  564. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.d.ts +9 -0
  565. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.js +1 -0
  566. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.d.ts +9 -0
  567. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.js +1 -0
  568. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.d.ts +10 -0
  569. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.js +1 -0
  570. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.d.ts +9 -0
  571. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.js +1 -0
  572. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.d.ts +9 -0
  573. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.js +1 -0
  574. package/dist/react-sdk/scene-control-elements/index.d.ts +11 -0
  575. package/dist/react-sdk/scene-control-elements/index.js +1 -0
  576. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.d.ts +5 -0
  577. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.js +1 -0
  578. package/dist/react-sdk/session/SessionServiceProvider.js +1 -1
  579. package/dist/react-sdk/web-component/create-web-component.js +1 -1
  580. package/dist/react-sdk/web-component/god-mode/god-mode-registry.d.ts +30 -0
  581. package/dist/react-sdk/web-component/god-mode/god-mode-registry.js +1 -0
  582. package/dist/react-sdk/web-component/god-mode/index.d.ts +1 -0
  583. package/dist/react-sdk/web-component/god-mode/index.js +1 -0
  584. package/dist/ui-sdk/icons/__generated/Lightbulb.d.ts +3 -0
  585. package/dist/ui-sdk/icons/__generated/Lightbulb.js +1 -0
  586. package/dist/ui-sdk/icons/__generated/XCircle.d.ts +3 -0
  587. package/dist/ui-sdk/icons/__generated/XCircle.js +1 -0
  588. package/dist/ui-sdk/icons/__generated/index.d.ts +4 -0
  589. package/dist/ui-sdk/icons/__generated/index.js +1 -1
  590. package/dist/ui-sdk/icons/icons-registry.js +1 -1
  591. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.d.ts +9 -0
  592. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.js +1 -1
  593. package/dist/ui-sdk/responsive-application/index.d.ts +1 -0
  594. package/dist/ui-sdk/responsive-application/responsive-state-store.d.ts +59 -0
  595. package/dist/ui-sdk/responsive-application/responsive-state-store.js +1 -0
  596. package/dist/ui-sdk/responsive-application/use-store-responsive-info.d.ts +7 -0
  597. package/dist/ui-sdk/responsive-application/use-store-responsive-info.js +1 -0
  598. package/dist/ui-sdk/theme/types.d.ts +5 -1
  599. package/package.json +13 -3
  600. package/schema/domain-spec.json +140 -0
  601. package/dist/configurator/ui/assistant/form/built-in-form-registry.d.ts +0 -10
  602. package/dist/configurator/ui/assistant/form/built-in-form-registry.js +0 -1
  603. package/dist/configurator/ui/assistant/form/form-registry.js +0 -8
  604. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.d.ts +0 -4
  605. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.js +0 -1
  606. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.d.ts +0 -4
  607. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.js +0 -1
  608. package/dist/domain/application/assistant/assistant-form-elements.d.ts +0 -28
  609. package/dist/domain/application/assistant/assistant-form-elements.js +0 -1
  610. package/dist/domain/extensions/client-side-image.js +0 -1
  611. package/dist/domain/extensions/save-template-thumbnail.js +0 -1
  612. package/dist/react-sdk/application-runtime/runtime/god-mode.d.ts +0 -19
  613. package/dist/react-sdk/application-runtime/runtime/god-mode.js +0 -1
  614. package/dist/react-sdk/loading-state/LoadingStateProvider.js +0 -1
  615. package/dist/react-sdk/loading-state/loading-state-manager.d.ts +0 -32
  616. package/dist/react-sdk/loading-state/loading-state-manager.js +0 -1
  617. /package/dist/{configurator/ui/assistant/form/form-element-definition.js → react-sdk/application-runtime/host-properties/types.js} +0 -0
@@ -0,0 +1,23 @@
1
+ import { type ConfigurationPersistSystemFailure } from '../../application-runtime/index.js';
2
+ /**
3
+ * The save status of the configuration, as `useConfigurationSaveState()` returns it.
4
+ */
5
+ export interface ConfigurationSaveState {
6
+ /** The revision the configuration is at: the loaded one, then the one the latest save created. */
7
+ readonly revisionId: string;
8
+ /** Whether a save is running. */
9
+ readonly isSaving: boolean;
10
+ /**
11
+ * The latest failed save, `{ error, timestamp }` with `timestamp` in milliseconds since the epoch, or `null` once a
12
+ * later save succeeds or another configuration loads.
13
+ */
14
+ readonly failure: ConfigurationPersistSystemFailure | null;
15
+ }
16
+ export type UseConfigurationSaveState = () => ConfigurationSaveState;
17
+ /**
18
+ * The save status of the configuration of the application this component is mounted in, read from its persist system:
19
+ * `revisionId`, `isSaving` and `failure`. An editable configuration saves committed changes on its own, three seconds
20
+ * after the last one; a read-only one never saves. Loading a configuration resets the status. Re-renders when any of
21
+ * the three changes; the returned object keeps its identity otherwise.
22
+ */
23
+ export declare const useConfigurationSaveState: UseConfigurationSaveState;
@@ -0,0 +1 @@
1
+ import{useMemo as e}from"react";import{useDomainApplication as r}from"../../application-runtime/index.js";import{useEagerObservableValue as o}from"./use-observable-selector.js";export const useConfigurationSaveState=()=>{let{configurationPersistSystem:t}=r(),i=o(t.revisionId$),a=o(t.saving$),n=o(t.failure$);return e(()=>({revisionId:i,isSaving:a,failure:n}),[i,a,n])};
@@ -69,6 +69,7 @@ export declare const useDomainContextSelectors: () => {
69
69
  getMigrate: () => import("#package/domain").MigrateFunction<DomainEntity<string>>;
70
70
  getActiveMode: () => import("#package/domain").DomainMode;
71
71
  getIsInitialized: () => boolean;
72
+ getIsViewMode: () => boolean;
72
73
  getComponentReaderIndexes: () => import("#package/domain").ComponentReaderIndexes;
73
74
  getStoreRuntimeDependencies: () => {
74
75
  componentReaderIndexes: import("#package/domain").ComponentReaderIndexes;
@@ -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])};
@@ -2,6 +2,7 @@ export { useDomain, type UseDomainContext } from './common-hooks/use-domain-cont
2
2
  export { useStoreSelector, useRenderedSelector, useRenderedSelector$, useStoreSelector$, type UseSynchronizedSelector, type UseSynchronizedSelector$, } from './common-hooks/use-store-selector.js';
3
3
  export { useEagerObservableSelector, usePatientObservableSelector, usePatientObservableValue, useEagerObservableValue, } from './common-hooks/use-observable-selector.js';
4
4
  export { useStateValidity, type UseStateValidity, useMapViolationHints, type UseMapViolationHints, useControlViolations, type UseControlViolations, useFinalizeViolations, type UseFinalizeViolations, } from './common-hooks/use-state-validity.js';
5
+ export { useConfigurationSaveState, type UseConfigurationSaveState, type ConfigurationSaveState, } from './common-hooks/use-configuration-save-state.js';
5
6
  export { useConfiguratorMessages, type UseConfiguratorMessages, type ConfiguratorMessage, } from './common-hooks/use-configurator-messages.js';
6
7
  export { useComponent, useRenderedComponent, type UseComponent, useComponents, useDynamicComponents, useRenderedComponents, type UseComponents, useRootComponents, useRootRenderedComponents, type UseRootComponents, useFirstComponent, useFirstRenderedComponent, type UseFirstComponent, useFirstRootComponent, useFirstRootRenderedComponent, type UseFirstRootComponent, } from './component-hooks/use-component.js';
7
8
  export { useCommittedState, useCommittedSlice, useRenderedSlice, useRenderedState, type UseSlice, type UseState, } from './common-hooks/use-slices.js';
@@ -12,6 +13,10 @@ export { useActiveNavigationState, type UseActiveNavigationState, useActiveViewS
12
13
  export { useComposition, type UseComposition } from './system-hooks/composition-hooks.js';
13
14
  export { useUndoRedo, type UseUndoRedo, type UseUndoRedoResult } from './system-hooks/undo-redo-hooks.js';
14
15
  export { useTabNavigation, type TabEntry, type TabSource, type UseTabNavigation, type UseTabNavigationOptions, type UseTabNavigationResult, } from './system-hooks/tab-navigation-hooks.js';
16
+ export { useStepNavigation, type NavigationStepEntry, type StepStatus, type UseStepNavigation, type UseStepNavigationResult, } from './system-hooks/step-navigation-hooks.js';
17
+ export { useLocaleSwitch, type UseLocaleSwitch, type UseLocaleSwitchResult, type LocaleOption, } from './system-hooks/locale-switch-hooks.js';
18
+ export { useGenerateShareLink, type GenerateShareLinkOptions } from './system-hooks/generate-share-link-hooks.js';
19
+ export { useShareLinks, type UseShareLinks, type UseShareLinksOptions, type UseShareLinksResult, } from './system-hooks/share-links-hooks.js';
15
20
  export { useHoveredDomainEntityId, useHoveredEntity, useHoveredEntityId, type UseHoveredDomainEntityId, type UseHoveredEntity, type UseHoveredEntityId, } from './system-hooks/hover-hooks.js';
16
21
  export { type UseRootEntityState, useRootEntityState, useRootEntityRenderedState, } from './entity-hooks/use-root-entity-state.js';
17
22
  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{useConfigurationSaveState}from"./common-hooks/use-configuration-save-state.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,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}};
@@ -0,0 +1,53 @@
1
+ import { type FinalizeActionComponentState } from '#package/domain';
2
+ /**
3
+ * One active `finalizeAction` of the spec, ready to render and run.
4
+ * - `key`: the stable key of the component instance, for React's `key`.
5
+ * - `handler`: the name of the project handler the action runs.
6
+ * - `variant`, `label`, `title` and `icon`: the component's fields, `label` and `title` resolved to the current
7
+ * language; `icon` is a `PhxIcon` name.
8
+ * - `run`: pushes the finalize-button analytics event and runs the handler, as `useFinalizeAction(handler).run`
9
+ * does. It does nothing while `disabled` or `isPending`. The promise it returns never rejects: it resolves once
10
+ * the entry shows the outcome of the run, or at once when the run does nothing.
11
+ * - `isPending`: the handler is running.
12
+ * - `error`: what the handler's last run rejected with, as an `Error`, or `null`; cleared when the action runs
13
+ * again. It is also the error the handler threw while it was loaded, when it could not be loaded at all.
14
+ * - `disabled`: finalizing is blocked, as in `useFinalizeViolations()`, or the handler could not be loaded.
15
+ */
16
+ export interface FinalizeActionEntry {
17
+ readonly key: string;
18
+ readonly handler: string;
19
+ readonly variant: FinalizeActionComponentState['variant'];
20
+ readonly label: string;
21
+ readonly title: string;
22
+ readonly icon: string;
23
+ readonly run: () => Promise<void>;
24
+ readonly isPending: boolean;
25
+ readonly error: Error | null;
26
+ readonly disabled: boolean;
27
+ }
28
+ /**
29
+ * The spec's finalize actions for a layout.
30
+ * - `actions`: every active `finalizeAction` component, in spec order.
31
+ * - `primary`: the first `'primary'` action, else the first action, else `null`; the built-in footer's button.
32
+ * - `secondary`: the other actions, in spec order; the built-in footer's menu.
33
+ * - `disabled` and `hints`: those of `useFinalizeViolations()`.
34
+ */
35
+ export interface UseFinalizeActionsResult {
36
+ readonly actions: readonly FinalizeActionEntry[];
37
+ readonly primary: FinalizeActionEntry | null;
38
+ readonly secondary: readonly FinalizeActionEntry[];
39
+ readonly disabled: boolean;
40
+ readonly hints: string | undefined;
41
+ }
42
+ export type UseFinalizeActions = () => UseFinalizeActionsResult;
43
+ /**
44
+ * The spec's finalize actions, each with its own `run`, for a layout that renders its own finalize buttons. The
45
+ * configurator runs the handlers itself, so a layout calls this hook anywhere, as often as it likes, and renders
46
+ * the entries in a loop. To run a single action the layout already knows, `useFinalizeAction(handler)` works too.
47
+ *
48
+ * It needs the configurator's `FinalizeActionsProvider` and `FinalizeActionsHost`, which are mounted around and
49
+ * beside every configurator layout, and also reach the dialogs a layout opens with `useModal`. Outside them it
50
+ * returns no actions and logs a warning. It does not check read mode; a layout hides finalization for a
51
+ * viewer.
52
+ */
53
+ export declare const useFinalizeActions: UseFinalizeActions;
@@ -0,0 +1 @@
1
+ import{useContext as e,useEffect as i,useMemo as t,useSyncExternalStore as r}from"react";import{finalizeActionComponent as n,getComponentSnapshotKey as o}from"#package/domain";import{useLogger as a}from"../application-runtime/index.js";import{useComponents as s,useFinalizeViolations as l}from"../domain-context/index.js";import{useResolveLocalizable as u}from"../localizable/index.js";import{FinalizeActionsContext as d}from"./finalize-actions-context.js";let m=()=>Promise.resolve(),p=new Map,c=()=>()=>{},f=()=>p;export const useFinalizeActions=()=>{let p=e(d),g=r(p?.subscribe??c,p?.getSnapshot??f),b=s({componentTypes:[n]}),{disabled:y,hints:x}=l(),z=u(),j=a(),h=null!==p;return i(()=>{h||j.warn("useFinalizeActions() is used outside the configurator layout and its dialogs, so it returns no finalize actions. Call it inside a ConfiguratorLayout element or a dialog it opens.")},[h,j]),t(()=>{if(!h)return{actions:[],primary:null,secondary:[],disabled:y,hints:x};let e=b.map(e=>{let i=o(e),{variant:t,label:r,title:n,icon:a,handler:s}=e.state,l=g.get(i),u={key:i,handler:s,variant:t,label:z(r),title:z(n),icon:a};if(l?.status==="ready"){let{run:e,isPending:i,error:t,disabled:r}=l.action;return{...u,run:e,isPending:i,error:t,disabled:r}}return{...u,run:m,isPending:!1,error:l?.status==="failed"?l.error:null,disabled:!0}}),i=e.find(e=>"primary"===e.variant)??e[0]??null,t=e.filter(e=>e!==i);return{actions:e,primary:i,secondary:t,disabled:y,hints:x}},[b,y,h,x,z,g])};
@@ -9,5 +9,7 @@ export * from './web-component/index.js';
9
9
  export * from './localizable/index.js';
10
10
  export * from './loading-state/index.js';
11
11
  export * from './elements/index.js';
12
+ export * from './scene-control-elements/index.js';
13
+ export * from './page-elements/index.js';
12
14
  export * from './handlers/index.js';
13
15
  export * from './application-runtime/index.js';
@@ -1 +1 @@
1
- export*from"./theme/index.js";export*from"./utils/index.js";export*from"./session/index.js";export*from"./domain-context/index.js";export*from"./domain-application-context/index.js";export*from"./domain-controls/index.js";export*from"./invalid-deployment/index.js";export*from"./web-component/index.js";export*from"./localizable/index.js";export*from"./loading-state/index.js";export*from"./elements/index.js";export*from"./handlers/index.js";export*from"./application-runtime/index.js";
1
+ export*from"./theme/index.js";export*from"./utils/index.js";export*from"./session/index.js";export*from"./domain-context/index.js";export*from"./domain-application-context/index.js";export*from"./domain-controls/index.js";export*from"./invalid-deployment/index.js";export*from"./web-component/index.js";export*from"./localizable/index.js";export*from"./loading-state/index.js";export*from"./elements/index.js";export*from"./scene-control-elements/index.js";export*from"./page-elements/index.js";export*from"./handlers/index.js";export*from"./application-runtime/index.js";
@@ -0,0 +1,20 @@
1
+ import type { ReactNode } from 'react';
2
+ /**
3
+ * Hosts the application's loader: the loading hooks below it report to the runtime's `loading`
4
+ * slice, and the SDK's own UI below it leaves its inline loaders out (`useIsLoaderHosted()`). The
5
+ * configurator mounts the one host, inside its `ApplicationTypeProvider`, while it is powered on.
6
+ *
7
+ * It resets the slice when it mounts and not again while it stays mounted, so the loading state
8
+ * starts over at power-on and on remount, and only there.
9
+ *
10
+ * Its children mount once the reset is done, so their first render and their first phases already
11
+ * see the host, and the reset cannot wipe phases they started. The host resets in a layout effect
12
+ * and then sets local state, which React renders synchronously before the browser paints, whatever
13
+ * the lane of the first render. StrictMode repeats that layout effect before the children mount, so
14
+ * the second reset wipes nothing either.
15
+ *
16
+ * @internal Runtime plumbing for the SDK's own UI.
17
+ */
18
+ export declare const LoaderHost: ({ children }: {
19
+ readonly children: ReactNode;
20
+ }) => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1 @@
1
+ import{jsx as o}from"react/jsx-runtime";import{useLayoutEffect as r,useState as i}from"react";import{LoaderHostContext as t,useLoadingApplication as e}from"../application-runtime/index.js";export const LoaderHost=({children:n})=>{let a=e(),[p,d]=i(!1);if(null===a)throw Error("LoaderHost has no application whose loader it could host: it is mounted outside an ApplicationRuntimeProvider or an ApplicationTypeProvider. Render LoaderHost inside both an ApplicationRuntimeProvider and an ApplicationTypeProvider, as ConfiguratorApp does.");return(r(()=>{a.actions.resetSlot(),d(!0)},[a]),p)?o(t.Provider,{value:!0,children:n}):null};