@salsita-ai/sdk 0.50.0-develop.78a839cc7b → 0.50.0-develop.7c472a27fe

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 (371) hide show
  1. package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
  2. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  3. package/dist/application-spec/errors/diagnostic-messages.d.ts +10 -1
  4. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  5. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  6. package/dist/application-spec/generate-application/code/templates/application-types.js +6 -6
  7. package/dist/application-spec/generate-application/code/templates/common/doc-comment.d.ts +2 -0
  8. package/dist/application-spec/generate-application/code/templates/common/doc-comment.js +1 -0
  9. package/dist/application-spec/generate-application/code/templates/configurator-globals.d.ts +2 -1
  10. package/dist/application-spec/generate-application/code/templates/configurator-globals.js +19 -6
  11. package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.js +7 -7
  12. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.d.ts +12 -0
  13. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.js +7 -0
  14. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.js +24 -22
  15. package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +1 -0
  16. package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
  17. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +13 -6
  18. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  19. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +3 -2
  20. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
  21. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +12 -4
  22. package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
  23. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +3 -3
  24. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  25. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.d.ts +9 -3
  26. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  27. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +33 -3
  28. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  29. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.d.ts +9 -0
  30. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.js +1 -0
  31. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +4 -1
  32. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  33. package/dist/configurator/ConfiguratorApp.js +1 -1
  34. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  35. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +4 -3
  36. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  37. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +33 -7
  38. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  39. package/dist/configurator/application-runtime/extensions/systems/canvas-system.d.ts +8 -0
  40. package/dist/configurator/application-runtime/extensions/systems/canvas-system.js +1 -1
  41. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.d.ts +8 -0
  42. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.js +1 -0
  43. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.d.ts +23 -1
  44. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.js +1 -1
  45. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +14 -1
  46. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  47. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +45 -4
  48. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  49. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.d.ts +14 -5
  50. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.js +1 -1
  51. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  52. package/dist/configurator/common/configurator-interface.d.ts +12 -2
  53. package/dist/configurator/common/configurator-interface.js +1 -1
  54. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.d.ts +3 -3
  55. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.js +1 -1
  56. package/dist/configurator/configurator-context/PreviewContextProvider.js +1 -1
  57. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +4 -0
  58. package/dist/configurator/configurator-context/configurator-routing/ConfiguratorRoutingProvider.js +1 -1
  59. package/dist/configurator/pages/error-boundaries/LoadingErrorBoundary.js +1 -1
  60. package/dist/configurator/toolbar-actions/index.d.ts +1 -0
  61. package/dist/configurator/toolbar-actions/index.js +1 -1
  62. package/dist/configurator/toolbar-actions/use-toolbar-actions.d.ts +100 -0
  63. package/dist/configurator/toolbar-actions/use-toolbar-actions.js +1 -0
  64. package/dist/configurator/toolbar-actions/use-toolbar-help.d.ts +7 -0
  65. package/dist/configurator/toolbar-actions/use-toolbar-help.js +1 -0
  66. package/dist/configurator/ui/assistant/AssistantChips.d.ts +3 -2
  67. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  68. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
  69. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  70. package/dist/configurator/ui/assistant/alert/AssistantAlert.d.ts +8 -0
  71. package/dist/configurator/ui/assistant/alert/AssistantAlert.js +1 -0
  72. package/dist/configurator/ui/assistant/alert/index.d.ts +2 -0
  73. package/dist/configurator/ui/assistant/alert/index.js +1 -0
  74. package/dist/configurator/ui/assistant/alert/remark-alerts.d.ts +10 -0
  75. package/dist/configurator/ui/assistant/alert/remark-alerts.js +1 -0
  76. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -1
  77. package/dist/configurator/ui/assistant/form/compose-answer.d.ts +1 -1
  78. package/dist/configurator/ui/assistant/form/compose-answer.js +1 -1
  79. package/dist/configurator/ui/assistant/form/form-model.d.ts +3 -4
  80. package/dist/configurator/ui/assistant/form/form-state.d.ts +1 -1
  81. package/dist/configurator/ui/assistant/form/index.d.ts +2 -0
  82. package/dist/configurator/ui/assistant/form/index.js +1 -1
  83. package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +3 -2
  84. package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -1
  85. package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +1 -1
  86. package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -1
  87. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.d.ts +3 -0
  88. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.js +1 -0
  89. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.d.ts +31 -0
  90. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.js +1 -0
  91. package/dist/configurator/ui/assistant/form/{form-element-definition.d.ts → registry/form-element-definition.d.ts} +3 -1
  92. package/dist/configurator/ui/assistant/form/registry/form-element-definition.js +1 -0
  93. package/dist/configurator/ui/assistant/form/{form-registry.d.ts → registry/form-registry.d.ts} +2 -2
  94. package/dist/configurator/ui/assistant/form/registry/form-registry.js +1 -0
  95. package/dist/configurator/ui/assistant/form/registry/index.d.ts +6 -0
  96. package/dist/configurator/ui/assistant/form/registry/index.js +1 -0
  97. package/dist/configurator/ui/assistant/form/registry/use-form-registry.d.ts +8 -0
  98. package/dist/configurator/ui/assistant/form/registry/use-form-registry.js +1 -0
  99. package/dist/configurator/ui/assistant/form-elements/FormCard.d.ts +9 -0
  100. package/dist/configurator/ui/assistant/form-elements/FormCard.js +1 -0
  101. package/dist/configurator/ui/assistant/form-elements/FormConfirm.d.ts +9 -0
  102. package/dist/configurator/ui/assistant/form-elements/FormConfirm.js +1 -0
  103. package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +4 -1
  104. package/dist/configurator/ui/assistant/form-elements/FormNumber.d.ts +9 -0
  105. package/dist/configurator/ui/assistant/form-elements/FormNumber.js +1 -0
  106. package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +4 -1
  107. package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +4 -1
  108. package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -1
  109. package/dist/configurator/ui/assistant/form-elements/FormSwatch.d.ts +10 -0
  110. package/dist/configurator/ui/assistant/form-elements/FormSwatch.js +1 -0
  111. package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +4 -1
  112. package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -1
  113. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.d.ts +10 -0
  114. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.js +1 -0
  115. package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +20 -16
  116. package/dist/configurator/ui/assistant/form-elements/index.d.ts +4 -0
  117. package/dist/configurator/ui/assistant/form-elements/index.js +1 -1
  118. package/dist/configurator/ui/assistant/index.d.ts +3 -0
  119. package/dist/configurator/ui/assistant/index.js +1 -1
  120. package/dist/configurator/ui/assistant/resource-image/index.d.ts +1 -1
  121. package/dist/configurator/ui/assistant/resource-image/index.js +1 -1
  122. package/dist/configurator/ui/assistant/resource-image/resource-path.d.ts +0 -9
  123. package/dist/configurator/ui/assistant/resource-image/resource-path.js +1 -1
  124. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.d.ts +9 -0
  125. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.js +1 -0
  126. package/dist/configurator/ui/assistant/screenshots/index.d.ts +2 -0
  127. package/dist/configurator/ui/assistant/screenshots/index.js +1 -0
  128. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.d.ts +14 -0
  129. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.js +1 -0
  130. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +2 -2
  131. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
  132. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  133. package/dist/configurator/ui/configurator-layout/slots/canvas/LayoutCanvas.js +1 -1
  134. package/dist/configurator/ui/configurator-layout/slots/canvas/SharedCanvas.js +1 -1
  135. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.d.ts +5 -0
  136. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.js +1 -0
  137. package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
  138. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -1
  139. package/dist/configurator/ui/index.d.ts +1 -0
  140. package/dist/configurator/ui/index.js +1 -1
  141. package/dist/configurator/ui/legacy/layout/common/ReactiveInterfaceLayout.js +1 -1
  142. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.js +2 -2
  143. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.js +1 -1
  144. package/dist/docs/index.json +62 -1
  145. package/dist/docs/integrations/webcomponent-api/basics.mdx +2 -0
  146. package/dist/docs/layouts/custom-layout.mdx +318 -158
  147. package/dist/docs/layouts/gallery/ardent-compressor.mdx +3516 -0
  148. package/dist/docs/layouts/gallery/fenwick-window.mdx +2803 -0
  149. package/dist/docs/layouts/gallery/ferrule-bar-station.mdx +6567 -0
  150. package/dist/docs/layouts/gallery/kestrel-kettle.mdx +1858 -0
  151. package/dist/docs/layouts/gallery/sunfold-solar.mdx +2683 -0
  152. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  153. package/dist/docs/phoenix/configurator-interface.mdx +12 -10
  154. package/dist/docs/phoenix/sdk-builder-workflow.mdx +1 -1
  155. package/dist/docs/phoenix/sessions-and-access.mdx +2 -0
  156. package/dist/domain/application/assistant/assistant-manifest.d.ts +16 -1
  157. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +8 -1
  158. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  159. package/dist/domain/application/assistant/form/assistant-form-element-name.d.ts +11 -0
  160. package/dist/domain/application/assistant/form/assistant-form-element-name.js +8 -0
  161. package/dist/domain/application/assistant/form/assistant-form-elements.d.ts +174 -0
  162. package/dist/domain/application/assistant/form/assistant-form-elements.js +1 -0
  163. package/dist/domain/application/assistant/form/assistant-resource-path.d.ts +10 -0
  164. package/dist/domain/application/assistant/form/assistant-resource-path.js +1 -0
  165. package/dist/domain/application/assistant/form/index.d.ts +4 -0
  166. package/dist/domain/application/assistant/form/index.js +1 -0
  167. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  168. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  169. package/dist/domain/application/assistant/index.d.ts +2 -3
  170. package/dist/domain/application/assistant/index.js +1 -1
  171. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -1
  172. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +2 -0
  173. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -1
  174. package/dist/domain/application/web-component-property.d.ts +3 -1
  175. package/dist/domain/application/web-component-property.js +1 -1
  176. package/dist/domain/available-system-components.d.ts +1 -1
  177. package/dist/domain/available-system-components.js +1 -1
  178. package/dist/domain/domain-builder.d.ts +9 -3
  179. package/dist/domain/domain-builder.js +1 -1
  180. package/dist/domain/domain-context/store-system/store-system.d.ts +5 -0
  181. package/dist/domain/domain-context/store-system/store-system.js +1 -1
  182. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +1 -0
  183. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  184. package/dist/domain/domain-runtime/domain-runtime.d.ts +8 -0
  185. package/dist/domain/domain-runtime/environment/types.d.ts +1 -1
  186. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +2 -0
  187. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -1
  188. package/dist/domain/domain-runtime/index.d.ts +1 -1
  189. package/dist/domain/domain-runtime/index.js +1 -1
  190. package/dist/domain/domain-runtime/spec/index.d.ts +1 -1
  191. package/dist/domain/domain-runtime/spec/index.js +1 -1
  192. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  193. package/dist/domain/domain-runtime/spec/module-checks/element-registration.d.ts +15 -1
  194. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -1
  195. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.d.ts +12 -0
  196. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.js +1 -0
  197. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +3 -1
  198. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -1
  199. package/dist/domain/domain-runtime/spec/module-checks/merge-expression-modules.d.ts +23 -0
  200. package/dist/domain/domain-runtime/spec/module-checks/merge-expression-modules.js +1 -0
  201. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.d.ts +3 -4
  202. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -1
  203. package/dist/domain/domain-runtime/spec/selectors.d.ts +3 -1
  204. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  205. package/dist/domain/extensions/export-images/agent-screenshot.d.ts +24 -0
  206. package/dist/domain/extensions/export-images/agent-screenshot.js +1 -0
  207. package/dist/domain/extensions/{client-side-image.d.ts → export-images/client-side-image.d.ts} +2 -2
  208. package/dist/domain/extensions/export-images/client-side-image.js +1 -0
  209. package/dist/domain/extensions/export-images/index.d.ts +3 -0
  210. package/dist/domain/extensions/export-images/index.js +1 -0
  211. package/dist/domain/extensions/{save-template-thumbnail.d.ts → export-images/save-template-thumbnail.d.ts} +2 -2
  212. package/dist/domain/extensions/export-images/save-template-thumbnail.js +1 -0
  213. package/dist/domain/extensions/index.d.ts +1 -2
  214. package/dist/domain/extensions/index.js +1 -1
  215. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +4 -0
  216. package/dist/editor/domain-editors/DomainSpecContext.js +1 -1
  217. package/dist/editor/domain-editors/apply-spec-update.d.ts +8 -1
  218. package/dist/editor/domain-editors/apply-spec-update.js +1 -1
  219. package/dist/editor/domain-editors/use-implementation-files.d.ts +6 -11
  220. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  221. package/dist/editor/screenshot/ScreenshotHandler.js +1 -1
  222. package/dist/i18n/locales/cs/messages.js +1 -1
  223. package/dist/i18n/locales/da/messages.js +1 -1
  224. package/dist/i18n/locales/de/messages.js +1 -1
  225. package/dist/i18n/locales/de-AT/messages.js +1 -1
  226. package/dist/i18n/locales/en/messages.js +1 -1
  227. package/dist/i18n/locales/en-AU/messages.js +1 -1
  228. package/dist/i18n/locales/en-GB/messages.js +1 -1
  229. package/dist/i18n/locales/es/messages.js +1 -1
  230. package/dist/i18n/locales/fr/messages.js +1 -1
  231. package/dist/i18n/locales/hu/messages.js +1 -1
  232. package/dist/i18n/locales/it/messages.js +1 -1
  233. package/dist/i18n/locales/nl/messages.js +1 -1
  234. package/dist/i18n/locales/pl/messages.js +1 -1
  235. package/dist/i18n/locales/pt/messages.js +1 -1
  236. package/dist/i18n/locales/ro/messages.js +1 -1
  237. package/dist/i18n/locales/sk/messages.js +1 -1
  238. package/dist/i18n/locales/tr/messages.js +1 -1
  239. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  240. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  241. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +16 -0
  242. package/dist/legacy/domain-spec/spec/domain-spec.js +1 -1
  243. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  244. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  245. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  246. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +11 -5
  247. package/dist/react-sdk/application-runtime/hooks/index.d.ts +2 -0
  248. package/dist/react-sdk/application-runtime/hooks/index.js +1 -1
  249. package/dist/react-sdk/application-runtime/hooks/loading/index.d.ts +5 -0
  250. package/dist/react-sdk/application-runtime/hooks/loading/index.js +1 -0
  251. package/dist/react-sdk/application-runtime/hooks/loading/loader-host-context.d.ts +11 -0
  252. package/dist/react-sdk/application-runtime/hooks/loading/loader-host-context.js +1 -0
  253. package/dist/react-sdk/application-runtime/hooks/loading/use-is-awaiting-loading-phase.d.ts +8 -0
  254. package/dist/react-sdk/application-runtime/hooks/loading/use-is-awaiting-loading-phase.js +1 -0
  255. package/dist/react-sdk/application-runtime/hooks/loading/use-is-loader-hosted.d.ts +7 -0
  256. package/dist/react-sdk/application-runtime/hooks/loading/use-is-loader-hosted.js +1 -0
  257. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-actions.d.ts +9 -0
  258. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-actions.js +1 -0
  259. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-application.d.ts +24 -0
  260. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-application.js +1 -0
  261. package/dist/react-sdk/application-runtime/hooks/responsive/index.d.ts +3 -0
  262. package/dist/react-sdk/application-runtime/hooks/responsive/index.js +1 -0
  263. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.d.ts +9 -0
  264. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.js +1 -0
  265. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.d.ts +26 -0
  266. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.js +1 -0
  267. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.d.ts +10 -0
  268. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.js +1 -0
  269. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.d.ts +24 -0
  270. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.js +1 -0
  271. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +5 -0
  272. package/dist/react-sdk/application-runtime/hooks/use-access-service.js +1 -1
  273. package/dist/react-sdk/application-runtime/hooks/use-phoenix-element-slots.d.ts +2 -1
  274. package/dist/react-sdk/application-runtime/index.d.ts +2 -0
  275. package/dist/react-sdk/application-runtime/integration/initialize.d.ts +7 -6
  276. package/dist/react-sdk/application-runtime/integration/initialize.js +1 -1
  277. package/dist/react-sdk/application-runtime/integration/selectors.d.ts +11 -2
  278. package/dist/react-sdk/application-runtime/integration/selectors.js +1 -1
  279. package/dist/react-sdk/application-runtime/integration/types.d.ts +5 -2
  280. package/dist/react-sdk/application-runtime/loading/actions.d.ts +45 -0
  281. package/dist/react-sdk/application-runtime/loading/actions.js +1 -0
  282. package/dist/react-sdk/application-runtime/loading/index.d.ts +4 -0
  283. package/dist/react-sdk/application-runtime/loading/index.js +1 -0
  284. package/dist/react-sdk/application-runtime/loading/initialize.d.ts +3 -0
  285. package/dist/react-sdk/application-runtime/loading/initialize.js +1 -0
  286. package/dist/react-sdk/application-runtime/loading/selectors.d.ts +18 -0
  287. package/dist/react-sdk/application-runtime/loading/selectors.js +1 -0
  288. package/dist/react-sdk/application-runtime/loading/types.d.ts +59 -0
  289. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  290. package/dist/react-sdk/application-runtime/provider/ApplicationRuntime.d.ts +6 -0
  291. package/dist/react-sdk/application-runtime/provider/ApplicationRuntime.js +1 -1
  292. package/dist/react-sdk/application-runtime/provider/ApplicationType.d.ts +7 -0
  293. package/dist/react-sdk/application-runtime/provider/ApplicationType.js +1 -1
  294. package/dist/react-sdk/application-runtime/responsive/actions.d.ts +47 -0
  295. package/dist/react-sdk/application-runtime/responsive/actions.js +1 -0
  296. package/dist/react-sdk/application-runtime/responsive/index.d.ts +4 -0
  297. package/dist/react-sdk/application-runtime/responsive/index.js +1 -0
  298. package/dist/react-sdk/application-runtime/responsive/initialize.d.ts +3 -0
  299. package/dist/react-sdk/application-runtime/responsive/initialize.js +1 -0
  300. package/dist/react-sdk/application-runtime/responsive/selectors.d.ts +20 -0
  301. package/dist/react-sdk/application-runtime/responsive/selectors.js +1 -0
  302. package/dist/react-sdk/application-runtime/responsive/types.d.ts +104 -0
  303. package/dist/react-sdk/application-runtime/routing/routing-service.d.ts +34 -2
  304. package/dist/react-sdk/application-runtime/routing/routing-service.js +1 -1
  305. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +164 -3
  306. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  307. package/dist/react-sdk/domain-application-context/BackendDataProvider.js +1 -1
  308. package/dist/react-sdk/domain-application-context/FrontendDataProvider.js +1 -1
  309. package/dist/react-sdk/domain-application-context/PublishedDataProvider.js +1 -1
  310. package/dist/react-sdk/domain-context/common-hooks/index.d.ts +1 -0
  311. package/dist/react-sdk/domain-context/common-hooks/index.js +1 -1
  312. package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.d.ts +23 -0
  313. package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.js +1 -0
  314. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +1 -0
  315. package/dist/react-sdk/domain-context/index.d.ts +1 -0
  316. package/dist/react-sdk/domain-context/index.js +1 -1
  317. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.js +1 -1
  318. package/dist/react-sdk/index.d.ts +0 -1
  319. package/dist/react-sdk/index.js +1 -1
  320. package/dist/react-sdk/loading-state/LoaderHost.d.ts +20 -0
  321. package/dist/react-sdk/loading-state/LoaderHost.js +1 -0
  322. package/dist/react-sdk/loading-state/built-in-loading-phase.d.ts +9 -0
  323. package/dist/react-sdk/loading-state/built-in-loading-phase.js +1 -0
  324. package/dist/react-sdk/loading-state/index.d.ts +3 -2
  325. package/dist/react-sdk/loading-state/index.js +1 -1
  326. package/dist/react-sdk/loading-state/{LoadingStateProvider.d.ts → loading-state-hooks.d.ts} +3 -12
  327. package/dist/react-sdk/loading-state/loading-state-hooks.js +1 -0
  328. package/dist/react-sdk/session/SessionServiceProvider.js +1 -1
  329. package/dist/react-sdk/web-component/create-web-component.js +1 -1
  330. package/dist/react-sdk/web-component/god-mode/god-mode-registry.d.ts +30 -0
  331. package/dist/react-sdk/web-component/god-mode/god-mode-registry.js +1 -0
  332. package/dist/react-sdk/web-component/god-mode/index.d.ts +1 -0
  333. package/dist/react-sdk/web-component/god-mode/index.js +1 -0
  334. package/dist/ui-sdk/icons/__generated/Lightbulb.d.ts +3 -0
  335. package/dist/ui-sdk/icons/__generated/Lightbulb.js +1 -0
  336. package/dist/ui-sdk/icons/__generated/XCircle.d.ts +3 -0
  337. package/dist/ui-sdk/icons/__generated/XCircle.js +1 -0
  338. package/dist/ui-sdk/icons/__generated/index.d.ts +4 -0
  339. package/dist/ui-sdk/icons/__generated/index.js +1 -1
  340. package/dist/ui-sdk/icons/icons-registry.js +1 -1
  341. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.d.ts +2 -2
  342. package/dist/ui-sdk/responsive-application/responsive-state-store.d.ts +11 -9
  343. package/dist/ui-sdk/responsive-application/use-store-responsive-info.js +1 -1
  344. package/dist/ui-sdk/theme/types.d.ts +5 -1
  345. package/package.json +13 -3
  346. package/schema/domain-spec.json +140 -0
  347. package/dist/configurator/ui/assistant/form/built-in-form-registry.d.ts +0 -10
  348. package/dist/configurator/ui/assistant/form/built-in-form-registry.js +0 -1
  349. package/dist/configurator/ui/assistant/form/form-registry.js +0 -8
  350. package/dist/domain/application/assistant/assistant-form-elements.d.ts +0 -28
  351. package/dist/domain/application/assistant/assistant-form-elements.js +0 -1
  352. package/dist/domain/extensions/client-side-image.js +0 -1
  353. package/dist/domain/extensions/save-template-thumbnail.js +0 -1
  354. package/dist/react-sdk/application-runtime/runtime/god-mode.d.ts +0 -19
  355. package/dist/react-sdk/application-runtime/runtime/god-mode.js +0 -1
  356. package/dist/react-sdk/loading-state/LoadingStateProvider.js +0 -1
  357. package/dist/react-sdk/loading-state/loading-state-manager.d.ts +0 -37
  358. package/dist/react-sdk/loading-state/loading-state-manager.js +0 -1
  359. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.d.ts +0 -25
  360. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.js +0 -1
  361. package/dist/react-sdk/responsive-state/canvas-padding.d.ts +0 -14
  362. package/dist/react-sdk/responsive-state/index.d.ts +0 -5
  363. package/dist/react-sdk/responsive-state/index.js +0 -1
  364. package/dist/react-sdk/responsive-state/responsive-state-manager.d.ts +0 -111
  365. package/dist/react-sdk/responsive-state/responsive-state-manager.js +0 -1
  366. package/dist/react-sdk/responsive-state/use-responsive-state-manager.d.ts +0 -10
  367. package/dist/react-sdk/responsive-state/use-responsive-state-manager.js +0 -1
  368. package/dist/react-sdk/responsive-state/use-responsive-state.d.ts +0 -11
  369. package/dist/react-sdk/responsive-state/use-responsive-state.js +0 -1
  370. /package/dist/{configurator/ui/assistant/form/form-element-definition.js → react-sdk/application-runtime/loading/types.js} +0 -0
  371. /package/dist/react-sdk/{responsive-state/canvas-padding.js → application-runtime/responsive/types.js} +0 -0
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{useQuery as t}from"@tanstack/react-query";import r from"lodash-es/uniq.js";import{useCallback as a,useMemo as i}from"react";import{SYSTEM_CHUNK_KEY as n}from"#package/domain";import{Loader as s}from"#package/ui-sdk";import{PublishedDataValueProvider as o}from"../application-runtime/hooks/data/index.js";import{useApplicationRuntime as l,useApplicationRuntimeSelector as d,useAuthenticatedClient as u,useConfiguratorDomainFactory as h,useDomainDataActions as c,useLogger as p,usePersistenceConfig as m,useSession as f,useSpecChunks as b,useSpecInitialPublishedData as y,useSpecPublishedDataHash as k}from"../application-runtime/index.js";import{BuiltInLoadingPhase as g,useLoadingPhase as P,useLoadingStateManager as w}from"../loading-state/index.js";import{FilterPublishedChunksHandlerBoundary as D,useFilterPublishedChunksHandler as v}from"./FilterPublishedChunksHandler.js";export const getAccessibleChunkKeys=(e,t)=>{let r=new Set((t??[]).map(String));return Object.keys(e).filter(t=>{if(t===n)return!0;let a=e[t];return null!=a&&r.has(a.scope)})};export const resolveChunkKeysToFetch=e=>{let{chunksSpec:t,chunkScopes:a,filteredChunkKeys:i}=e,s=i??getAccessibleChunkKeys(t,a);if(null!=i){let e=i.filter(e=>e!==n&&null==t[e]);if(e.length>0)throw Error(`createFilterPublishedChunksHandler returned unknown chunk keys: ${e.join(", ")}.`)}return r([...s,n].map(String))};let j=t=>e(o,{publishedData:d(l().selectors.domainData.getConfiguratorPublishedData),publishedDataLoadKey:t.publishedDataLoadKey,children:t.children}),F=r=>{let n=f(),o=p(),l=m(),d=b(),D=k(),F=y(),C=u(),E=h(),x=c();if(!E)throw Error("DomainFactory is not available in the runtime registry. Ensure replaceDomainRuntime() is called with domainFactory before rendering PublishedDataProvider.");let S=v(),K=n.sessionPayload?.chunkScopes,O=i(()=>{if(null==d||0===Object.keys(d).length)return;if(null==D)throw Error("publishedDataHash is required when chunks are defined. Use withPublishedDataHash() in ConfiguratorBuilder.");let e=S?.();return resolveChunkKeysToFetch({chunksSpec:d,chunkScopes:K,filteredChunkKeys:e})},[d,K,S,D]),A=i(()=>JSON.stringify(O??null),[O]),R=i(()=>JSON.stringify(F),[F]),q=a(async e=>{let t=await Promise.all(e.map(async e=>{try{let t=await C.getPublishedChunk(e,D);if(null==t){let t=F[e];if(t&&"object"==typeof t)return{key:e,data:t};return{key:e,data:{}}}return{key:e,data:t}}catch(t){return o.error("Failed to fetch published chunk",{key:e},t instanceof Error?t:Error(String(t))),{key:e,data:{}}}})),r={};for(let e of t)r[e.key]=e.data;return{success:!0,data:r}},[C,o,F,D]),H=a(async()=>{if("memory"===l.type||"local-storage"===l.type)return{success:!0,data:F};if(null!=O)return 0===O.length?{success:!0,data:{}}:q(O);let e=n.sessionPayload?.publishedAdminRevisionPath;if(null==e)return{success:!1};try{let t=await fetch(e);return{success:!0,data:await t.json()}}catch(r){let t=r instanceof Error?r:Error(`Unknown error ${r}`);return o.warn("Failed to fetch published data, the published data endpoint returned an error, have you published data from the admin? Check if the published data is accessible.",{path:e},t),{success:!1}}},[o,l,F,n.sessionPayload?.publishedAdminRevisionPath,O,q]),L=a(async e=>{let t=await H();if(e.throwIfAborted(),!t.success)return x.setPublishedData(F),F;try{let e=E.parsePublishedData(t.data);return o.debug("Fetched published admin revision data:",e),x.setPublishedData(e),e}catch(r){let e=r instanceof Error?r:Error(`Unknown error ${r}`);return o.error("Failed to parse published data, the data structure does not match the expected schema, does the published data match the publishedData schema defined in your domain?",{json:t},e),x.setPublishedData(F),F}},[o,E,H,F,x]),J=i(()=>["get-published-admin-data",n.sessionPayload?.publishedAdminRevisionPath,A,D,R],[A,R,D,n.sessionPayload?.publishedAdminRevisionPath]),N=i(()=>JSON.stringify(J),[J]),{data:U,error:$,isFetching:T}=t({queryKey:J,queryFn:({signal:e})=>L(e),refetchOnMount:"always",refetchOnWindowFocus:!1,refetchOnReconnect:!1}),B=null!==w();if(P({id:g.PublishedData,label:"Loading published data…"},(void 0===U||T)&&!$),$)throw $;return void 0===U||T?B?null:e(s,{}):e(j,{publishedDataLoadKey:N,children:r.children},N)};export const PublishedDataProvider=t=>e(D,{children:e(F,{...t})});
1
+ import{jsx as e}from"react/jsx-runtime";import{useQuery as t}from"@tanstack/react-query";import r from"lodash-es/uniq.js";import{useCallback as a,useMemo as i}from"react";import{SYSTEM_CHUNK_KEY as s}from"#package/domain";import{Loader as n}from"#package/ui-sdk";import{PublishedDataValueProvider as o}from"../application-runtime/hooks/data/index.js";import{useApplicationRuntime as l,useApplicationRuntimeSelector as d,useAuthenticatedClient as u,useConfiguratorDomainFactory as h,useDomainDataActions as c,useIsLoaderHosted as p,useLogger as m,usePersistenceConfig as f,useSession as b,useSpecChunks as y,useSpecInitialPublishedData as k,useSpecPublishedDataHash as g}from"../application-runtime/index.js";import{BuiltInLoadingPhase as P,useLoadingPhase as w}from"../loading-state/index.js";import{FilterPublishedChunksHandlerBoundary as D,useFilterPublishedChunksHandler as v}from"./FilterPublishedChunksHandler.js";export const getAccessibleChunkKeys=(e,t)=>{let r=new Set((t??[]).map(String));return Object.keys(e).filter(t=>{if(t===s)return!0;let a=e[t];return null!=a&&r.has(a.scope)})};export const resolveChunkKeysToFetch=e=>{let{chunksSpec:t,chunkScopes:a,filteredChunkKeys:i}=e,n=i??getAccessibleChunkKeys(t,a);if(null!=i){let e=i.filter(e=>e!==s&&null==t[e]);if(e.length>0)throw Error(`createFilterPublishedChunksHandler returned unknown chunk keys: ${e.join(", ")}.`)}return r([...n,s].map(String))};let j=t=>e(o,{publishedData:d(l().selectors.domainData.getConfiguratorPublishedData),publishedDataLoadKey:t.publishedDataLoadKey,children:t.children}),F=r=>{let s=b(),o=m(),l=f(),d=y(),D=g(),F=k(),C=u(),E=h(),x=c();if(!E)throw Error("DomainFactory is not available in the runtime registry. Ensure replaceDomainRuntime() is called with domainFactory before rendering PublishedDataProvider.");let S=v(),K=s.sessionPayload?.chunkScopes,O=i(()=>{if(null==d||0===Object.keys(d).length)return;if(null==D)throw Error("publishedDataHash is required when chunks are defined. Use withPublishedDataHash() in ConfiguratorBuilder.");let e=S?.();return resolveChunkKeysToFetch({chunksSpec:d,chunkScopes:K,filteredChunkKeys:e})},[d,K,S,D]),A=i(()=>JSON.stringify(O??null),[O]),R=i(()=>JSON.stringify(F),[F]),q=a(async e=>{let t=await Promise.all(e.map(async e=>{try{let t=await C.getPublishedChunk(e,D);if(null==t){let t=F[e];if(t&&"object"==typeof t)return{key:e,data:t};return{key:e,data:{}}}return{key:e,data:t}}catch(t){return o.error("Failed to fetch published chunk",{key:e},t instanceof Error?t:Error(String(t))),{key:e,data:{}}}})),r={};for(let e of t)r[e.key]=e.data;return{success:!0,data:r}},[C,o,F,D]),H=a(async()=>{if("memory"===l.type||"local-storage"===l.type)return{success:!0,data:F};if(null!=O)return 0===O.length?{success:!0,data:{}}:q(O);let e=s.sessionPayload?.publishedAdminRevisionPath;if(null==e)return{success:!1};try{let t=await fetch(e);return{success:!0,data:await t.json()}}catch(r){let t=r instanceof Error?r:Error(`Unknown error ${r}`);return o.warn("Failed to fetch published data, the published data endpoint returned an error, have you published data from the admin? Check if the published data is accessible.",{path:e},t),{success:!1}}},[o,l,F,s.sessionPayload?.publishedAdminRevisionPath,O,q]),L=a(async e=>{let t=await H();if(e.throwIfAborted(),!t.success)return x.setPublishedData(F),F;try{let e=E.parsePublishedData(t.data);return o.debug("Fetched published admin revision data:",e),x.setPublishedData(e),e}catch(r){let e=r instanceof Error?r:Error(`Unknown error ${r}`);return o.error("Failed to parse published data, the data structure does not match the expected schema, does the published data match the publishedData schema defined in your domain?",{json:t},e),x.setPublishedData(F),F}},[o,E,H,F,x]),J=i(()=>["get-published-admin-data",s.sessionPayload?.publishedAdminRevisionPath,A,D,R],[A,R,D,s.sessionPayload?.publishedAdminRevisionPath]),N=i(()=>JSON.stringify(J),[J]),{data:U,error:$,isFetching:T}=t({queryKey:J,queryFn:({signal:e})=>L(e),refetchOnMount:"always",refetchOnWindowFocus:!1,refetchOnReconnect:!1}),B=p();if(w({id:P.PublishedData,label:"Loading published data…"},(void 0===U||T)&&!$),$)throw $;return void 0===U||T?B?null:e(n,{}):e(j,{publishedDataLoadKey:N,children:r.children},N)};export const PublishedDataProvider=t=>e(D,{children:e(F,{...t})});
@@ -1,3 +1,4 @@
1
+ export * from './use-configuration-save-state.js';
1
2
  export * from './use-configurator-messages.js';
2
3
  export * from './use-domain-context.js';
3
4
  export * from './use-entity-selector.js';
@@ -1 +1 @@
1
- export*from"./use-configurator-messages.js";export*from"./use-domain-context.js";export*from"./use-entity-selector.js";export*from"./use-observable-selector.js";export*from"./use-slices.js";export*from"./use-state-slice.js";export*from"./use-state-validity.js";export*from"./use-store-selector.js";
1
+ export*from"./use-configuration-save-state.js";export*from"./use-configurator-messages.js";export*from"./use-domain-context.js";export*from"./use-entity-selector.js";export*from"./use-observable-selector.js";export*from"./use-slices.js";export*from"./use-state-slice.js";export*from"./use-state-validity.js";export*from"./use-store-selector.js";
@@ -0,0 +1,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;
@@ -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';
@@ -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{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
+ 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{useCallback as o}from"react";import{FrontendAnalyticsFactory as n,useAnalyticsService as e}from"../../application-runtime/index.js";import{useDomain as d,useEagerObservableValue as t}from"../common-hooks/index.js";export const useUndoRedo=()=>{let r=e(),{undoSystem:i}=d(),{canUndo:c,canRedo:m}=t(i.can$);return{canUndo:c,canRedo:m,undo:o(()=>{i.canUndo()&&(r.push(n.UndoButtonClicked()),i.undo())},[r,i]),redo:o(()=>{i.canRedo()&&(r.push(n.RedoButtonClicked()),i.redo())},[r,i])}};
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])};
@@ -8,7 +8,6 @@ export * from './invalid-deployment/index.js';
8
8
  export * from './web-component/index.js';
9
9
  export * from './localizable/index.js';
10
10
  export * from './loading-state/index.js';
11
- export * from './responsive-state/index.js';
12
11
  export * from './elements/index.js';
13
12
  export * from './scene-control-elements/index.js';
14
13
  export * from './handlers/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"./responsive-state/index.js";export*from"./elements/index.js";export*from"./scene-control-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"./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};
@@ -0,0 +1,9 @@
1
+ /** The ids of the loading phases the SDK reports itself. A project reports its own under other ids. */
2
+ export declare enum BuiltInLoadingPhase {
3
+ SessionAuth = "session-auth",
4
+ PublishedData = "published-data",
5
+ FrontendData = "frontend-data",
6
+ BackendData = "backend-data",
7
+ DataFetch = "data-fetch",
8
+ SceneAssets = "scene-assets"
9
+ }
@@ -0,0 +1 @@
1
+ var a;export var BuiltInLoadingPhase=((a={}).SessionAuth="session-auth",a.PublishedData="published-data",a.FrontendData="frontend-data",a.BackendData="backend-data",a.DataFetch="data-fetch",a.SceneAssets="scene-assets",a);
@@ -1,2 +1,3 @@
1
- export { BuiltInLoadingPhase, type LoadingPhase, type LoadingState, LoadingStateManager, } from './loading-state-manager.js';
2
- export { LoadingStateProvider, useLoadingState, type UseLoadingState, useLoadingStateManager, useLoadingStateValue, useLoadingPhase, useExpectPhase, useLoadingError, } from './LoadingStateProvider.js';
1
+ export { BuiltInLoadingPhase } from './built-in-loading-phase.js';
2
+ export { LoaderHost } from './LoaderHost.js';
3
+ export { useLoadingState, type UseLoadingState, useLoadingStateValue, useLoadingPhase, useExpectPhase, useLoadingError, } from './loading-state-hooks.js';
@@ -1 +1 @@
1
- export{BuiltInLoadingPhase,LoadingStateManager}from"./loading-state-manager.js";export{LoadingStateProvider,useLoadingState,useLoadingStateManager,useLoadingStateValue,useLoadingPhase,useExpectPhase,useLoadingError}from"./LoadingStateProvider.js";
1
+ export{BuiltInLoadingPhase}from"./built-in-loading-phase.js";export{LoaderHost}from"./LoaderHost.js";export{useLoadingState,useLoadingStateValue,useLoadingPhase,useExpectPhase,useLoadingError}from"./loading-state-hooks.js";
@@ -1,22 +1,13 @@
1
- import type { ReactNode } from 'react';
2
- import { type LoadingPhase, type LoadingState, LoadingStateManager } from './loading-state-manager.js';
3
- export declare const LoadingStateProvider: ({ children }: {
4
- readonly children: ReactNode;
5
- }) => import("react/jsx-runtime").JSX.Element;
6
- /**
7
- * Returns the loading state manager if available.
8
- * Returns `null` when used outside of `LoadingStateProvider` (e.g. in admin app).
9
- */
10
- export declare const useLoadingStateManager: () => LoadingStateManager | null;
1
+ import { type LoadingPhase, type LoadingState } from '../application-runtime/index.js';
11
2
  /**
12
3
  * Subscribe to the current aggregated loading state.
13
- * Returns the default (not loading) state when used outside of `LoadingStateProvider`.
4
+ * Returns the default (not loading) state outside the application's loader host.
14
5
  */
15
6
  export declare const useLoadingStateValue: () => LoadingState;
16
7
  export type UseLoadingState = typeof useLoadingState;
17
8
  /**
18
9
  * Returns loading phase control functions.
19
- * Returns `null` when used outside of `LoadingStateProvider`.
10
+ * Returns `null` outside the application's loader host.
20
11
  */
21
12
  export declare const useLoadingState: () => {
22
13
  startPhase: (phase: LoadingPhase) => void;
@@ -0,0 +1 @@
1
+ import{useEffect as e,useMemo as t,useRef as r,useSyncExternalStore as n}from"react";import{useIsLoaderHosted as s,useLoadingActions as a,useLoadingApplication as o,useOptionalApplicationRuntime as u}from"../application-runtime/index.js";let c={isLoading:!1,hasError:!1,phases:[],expectedPhaseIds:new Set},l=()=>c,i=()=>()=>{};export const useLoadingStateValue=()=>{let e=o(),t=s(),r=u(),a=n(r?.subscribe??i,e?.selectors.getLoadingState??l);return t?a:c};export const useLoadingState=()=>{let e=a();return t(()=>e?{startPhase:e.startPhase,endPhase:e.endPhase}:null,[e])};export const useLoadingPhase=(t,n)=>{let s=a(),o=r(t);o.current=t;let u=r(null);e(()=>{if(s)return n?(u.current=o.current.id,s.startPhase(o.current)):null!==u.current&&(s.endPhase(u.current),u.current=null),()=>{null!==u.current&&(s.endPhase(u.current),u.current=null)}},[s,n,t.id])};export const useExpectPhase=t=>{let r=a();e(()=>{if(r)return r.expectPhase(t),()=>{r.dropExpectation(t)}},[r,t])};export const useLoadingError=t=>{let r=a();e(()=>{r&&t&&r.reportError()},[r,t])};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{useCallback as t,useEffect as o,useMemo as i}from"react";import{distinctUntilChanged as n,filter as a,skip as r}from"rxjs";import{match as s}from"ts-pattern";import{standardWebComponentEvents as l,standardWebComponentProperties as d}from"#package/domain";import{Loader as c}from"#package/ui-sdk";import{DomainSessionProvider as u,INTEGRATION_MODE_SETTINGS as h,SessionProvider as m,useApplicationRuntime as g,useApplicationRuntimeSelector as p,useDispatchWebComponentEvent as f,useLogger as S,useRawSession as k,useSessionService as v,useWebComponentProperty$ as x,useWebComponentPropertyValue as w}from"../application-runtime/index.js";import{usePatientObservableValue as T}from"../domain-context/index.js";import{BuiltInLoadingPhase as j,useLoadingPhase as b,useLoadingStateManager as C}from"../loading-state/index.js";import{NotAuthenticatedPage as A}from"./NotAuthenticatedPage.js";let U="code";export const SessionServiceProvider=E=>{let{children:P,notAuthenticatedFallback:z=A}=E,F=g(),$=S(),q=v(),M=k(),N=p(F.selectors.session.getSession),R=p(F.selectors.sessionContext.getSessionContext),y=w(d.sessionToken),L=w(d.adminSessionToken),W=w(d.refreshToken),B=x(d.integrationMode),D=x(d.authorizationCode),G=t(()=>{if(D.value){let e=B.value;"local-storage"===h[e].authenticationStorage&&$.warn(`authorizationCode WC prop used in '${e}' mode. This is discouraged — tokens stored in localStorage leak across tabs. Use 'handoff' or 'headless' mode instead.`);let t=D.value;return D.next(void 0),t}if(h[B.value].consumeCodeFromUrl){let e=new URL(window.location.href),t=e.searchParams.get(U);return e.searchParams.delete(U),history.replaceState(null,"",e),t??void 0}},[D,B,$]),H=T(i(()=>D.pipe(r(1),a(e=>void 0!==e),n()),[D]),void 0),I=h[w(d.integrationMode)].authenticationStorage,J=f(l.authenticationFailed),K=i(()=>s(I).with("local-storage",()=>localStorage).with("session-storage",()=>sessionStorage).exhaustive(),[I]);o(()=>{q.configure({initialSessionToken:y,initialAdminSessionToken:L,initialRefreshToken:W,retrieveAuthorizationCode:G,dispatchAuthenticationFailed:J,storage:K})},[q,y,L,W,G,J,K]),o(()=>{"loading"===M.authenticated&&q.requestSessionToken().catch(e=>{let t=e instanceof Error?e:Error(`Unknown error ${e}`);$.warn("Session could not be authenticated",{},t)})},[q,M.authenticated,$]),o(()=>{H&&($.debug("New authorization code received, re-authenticating session"),q.requestSessionToken().catch(e=>{let t=e instanceof Error?e:Error(`Unknown error ${e}`);$.warn("Session could not be authenticated",{},t)}))},[H,q,$]);let O=null!==C();return(b({id:j.SessionAuth,label:"Authenticating session…"},"loading"===M.authenticated),"loading"===M.authenticated)?O?null:e(c,{}):"error"===M.authenticated?e(m,{value:M,children:e(z,{})}):null===R?null:e(m,{value:N,children:e(u,{value:R,children:P})})};
1
+ import{jsx as e}from"react/jsx-runtime";import{useCallback as t,useEffect as o,useMemo as i}from"react";import{distinctUntilChanged as n,filter as a,skip as r}from"rxjs";import{match as s}from"ts-pattern";import{standardWebComponentEvents as l,standardWebComponentProperties as d}from"#package/domain";import{Loader as c}from"#package/ui-sdk";import{DomainSessionProvider as u,INTEGRATION_MODE_SETTINGS as h,SessionProvider as m,useApplicationRuntime as g,useApplicationRuntimeSelector as p,useDispatchWebComponentEvent as f,useIsLoaderHosted as S,useLogger as k,useRawSession as v,useSessionService as x,useWebComponentProperty$ as w,useWebComponentPropertyValue as T}from"../application-runtime/index.js";import{usePatientObservableValue as j}from"../domain-context/index.js";import{BuiltInLoadingPhase as b,useLoadingPhase as C}from"../loading-state/index.js";import{NotAuthenticatedPage as A}from"./NotAuthenticatedPage.js";let U="code";export const SessionServiceProvider=E=>{let{children:P,notAuthenticatedFallback:z=A}=E,F=g(),$=k(),q=x(),M=v(),N=p(F.selectors.session.getSession),R=p(F.selectors.sessionContext.getSessionContext),y=T(d.sessionToken),L=T(d.adminSessionToken),W=T(d.refreshToken),B=w(d.integrationMode),D=w(d.authorizationCode),G=t(()=>{if(D.value){let e=B.value;"local-storage"===h[e].authenticationStorage&&$.warn(`authorizationCode WC prop used in '${e}' mode. This is discouraged — tokens stored in localStorage leak across tabs. Use 'handoff' or 'headless' mode instead.`);let t=D.value;return D.next(void 0),t}if(h[B.value].consumeCodeFromUrl){let e=new URL(window.location.href),t=e.searchParams.get(U);return e.searchParams.delete(U),history.replaceState(null,"",e),t??void 0}},[D,B,$]),H=j(i(()=>D.pipe(r(1),a(e=>void 0!==e),n()),[D]),void 0),I=h[T(d.integrationMode)].authenticationStorage,J=f(l.authenticationFailed),K=i(()=>s(I).with("local-storage",()=>localStorage).with("session-storage",()=>sessionStorage).exhaustive(),[I]);o(()=>{q.configure({initialSessionToken:y,initialAdminSessionToken:L,initialRefreshToken:W,retrieveAuthorizationCode:G,dispatchAuthenticationFailed:J,storage:K})},[q,y,L,W,G,J,K]),o(()=>{"loading"===M.authenticated&&q.requestSessionToken().catch(e=>{let t=e instanceof Error?e:Error(`Unknown error ${e}`);$.warn("Session could not be authenticated",{},t)})},[q,M.authenticated,$]),o(()=>{H&&($.debug("New authorization code received, re-authenticating session"),q.requestSessionToken().catch(e=>{let t=e instanceof Error?e:Error(`Unknown error ${e}`);$.warn("Session could not be authenticated",{},t)}))},[H,q,$]);let O=S();return(C({id:b.SessionAuth,label:"Authenticating session…"},"loading"===M.authenticated),"loading"===M.authenticated)?O?null:e(c,{}):"error"===M.authenticated?e(m,{value:M,children:e(z,{})}):null===R?null:e(m,{value:N,children:e(u,{value:R,children:P})})};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{createRoot as t}from"react-dom/client";import{Subject as r,Subscription as o,filter as s,scan as i}from"rxjs";import{v4 as n}from"uuid";import{standardWebComponentEvents as a,standardWebComponentProperties as l}from"#package/domain";import{WebComponentApp as c}from"./WebComponentApp.js";import{createEventDispatcher as u,createStorage as p,createWebComponentApi as h}from"./create-web-component-api.js";import{createAttributeNameToPropertyMap as b,createEventTypeByDescriptorMap as d,deriveWebComponentContract as m}from"./web-component-contract.js";let f=Symbol("storagesByPropertyDescriptor"),y=Symbol("reactRoot"),g=Symbol("pendingDisconnection"),v=Symbol("setProperty"),j=Symbol("activeSubscriptions"),S=Symbol("propertiesWithStorages"),P=Symbol("container"),w=Symbol("applicationRuntime"),C=Symbol("webComponentApi"),A=Symbol("PreviousPropertyValues"),E=Symbol("Events"),O=Symbol("Uuid"),$=(e,t,r)=>{let o=t?.attributeParser;if(!o)throw Error("Attribute parser is not defined");try{let e=o(r);return{success:!0,data:e}}catch(t){return console.error(`Failed to parse attribute ${e}, ignoring`,t),{success:!1}}};export const createWebComponent=x=>{let{RootComponent:k,webComponentOptions:D,embeddedIntegration:B,applicationRuntimeFactory:W}=x,F=m(D),{properties:M,events:V}=F,q=b(M),N=d(V),R=class Salsita3dConfigurator extends HTMLElement{[f];[y];[g]=null;[j]=[];[S];[P];[w];[C];[A]=new Map;[E]=new r;[O]=n();get applicationRuntime(){return this[w]}static observedAttributes=Array.from(q.keys());[v](e,t,r){let o=t.schema.safeParse(r);if(!o.success)return void console.error(`Invalid value provided for property ${e}, ignoring`,o.error);let s=this[f].get(t);if(!s)return void console.error(`Subject not found for property descriptor of ${e}`);let i=s.isSet;s.isSet=!0,i&&s.subject.value===o.data||s.subject.next(o.data)}constructor(){super(),this[P]=this.attachShadow({mode:"closed"}),this[S]=Object.entries(M).map(([e,t])=>{if(Object.prototype.hasOwnProperty.call(this,e)){let r=t.schema.safeParse(this[e]);if(delete this[e],r.success)return{name:e,propertyDescriptor:t,storage:p(t,r.data)};console.error(`Failed to validate property ${e}, ignoring`,r.error)}if(t.attributeParser&&t.attributeNames){let r=t.attributeNames.map(e=>this.getAttribute(e)).find(e=>null!==e)??null;if(null!==r){let o=$(e,t,r);if(o.success){let r=t.schema.safeParse(o.data);if(r.success)return{name:e,propertyDescriptor:t,storage:p(t,r.data)};console.error(`Failed to validate attribute ${e}, ignoring`,r.error)}}}return{name:e,propertyDescriptor:t,storage:p(t,t.defaultValue)}}),this[f]=new Map(this[S].map(({propertyDescriptor:e,storage:t})=>[e,t])),this[C]=h({element:this,eventTypeByDescriptor:N,events:this[E],propertiesWithStorages:this[S],storagesByPropertyDescriptor:this[f]}),this[w]=W({webComponentOptions:F,webComponentApi:this[C]})}connectedCallback(){let r;if(null!==this[g]){this[g]=null,this[w].actions.webComponent.startNewGeneration();return}let n=this[w],p=this[C],h=u({element:this,eventTypeByDescriptor:N,storagesByPropertyDescriptor:this[f]},!0),b=this[S].map(({name:e,storage:t})=>t.subject.pipe(i((e,t)=>[e[1],t],[t.subject.value,t.subject.value]),s(([e,t])=>e!==t)).subscribe(([t,r])=>{h(a.propertyChanged,{name:e,oldValue:t,newValue:r})})),d=e=>{if(e)for(let[t,r]of Object.entries(e)){let e=this[S].find(({name:e})=>e===t);if(e){let{storage:o,propertyDescriptor:s}=e;this[A].has(t)||this[A].set(t,o.subject.value);let i=s.schema.safeParse(r);i.success?(o.subject.next(i.data),o.isSet=!0):console.error(`Failed to apply web component property override for "${t}":`,i.error)}}else{for(let[e,t]of this[A]){let r=this[S].find(({name:t})=>t===e);if(r){let{storage:e}=r;e.subject.next(t)}}this[A].clear()}},m=new o(n.subscribe(()=>{let e=n.selectors.overrides.getWebComponentProperties();e!==r&&(r=e,d(e))}));this[j]=[...b,m],this[y]=t(this[P]),this[y].render(e(c,{runtime:n,container:this[P],children:e(k,{})}));let v=p.getPropertyValue(l.onAttached);if(v)try{v(this)}catch(e){console.error("Error in onAttached handler",e)}this.dispatchEvent(new CustomEvent("attached",{bubbles:!0}))}disconnectedCallback(){let e={};this[g]=e,queueMicrotask(()=>{this[g]===e&&(this[g]=null,this[j].forEach(e=>{e.unsubscribe()}),this[y]?.unmount(),this[y]=void 0)})}attributeChangedCallback(e,t,r){let o=q.get(e);if(!o)throw Error(`Property descriptor not found for attribute: ${e}, despite the attribute being observed`);if(null===r)return o.required?void console.error(`Cannot unset a required attribute ${e}, ignoring`):void this[v](e,o,o.defaultValue);let s=$(e,o,r);s.success&&this[v](e,o,s.data)}};return Object.entries(M).forEach(([e,t])=>{Object.defineProperty(R.prototype,e,{enumerable:!0,configurable:!1,get(){return this[f].get(t).subject.value},set(r){this[v](e,t,r)}})}),B&&(Object.defineProperty(R.prototype,"$events",{enumerable:!1,configurable:!1,get(){return this[E]}}),Object.defineProperty(R.prototype,"uuid",{enumerable:!1,configurable:!1,get(){return this[O]}})),R};
1
+ import{jsx as e}from"react/jsx-runtime";import{createRoot as t}from"react-dom/client";import{Subject as r,Subscription as o,filter as s,scan as i}from"rxjs";import{v4 as n}from"uuid";import{standardWebComponentEvents as a,standardWebComponentProperties as l,webComponentAttributeParsers as c}from"#package/domain";import{WebComponentApp as u}from"./WebComponentApp.js";import{createEventDispatcher as p,createStorage as h,createWebComponentApi as b}from"./create-web-component-api.js";import{registerGodModeTarget as d}from"./god-mode/index.js";import{createAttributeNameToPropertyMap as m,createEventTypeByDescriptorMap as f,deriveWebComponentContract as y}from"./web-component-contract.js";let g=Symbol("storagesByPropertyDescriptor"),v=Symbol("reactRoot"),j=Symbol("pendingDisconnection"),S=Symbol("setProperty"),P=Symbol("activeSubscriptions"),w=Symbol("propertiesWithStorages"),C=Symbol("container"),A=Symbol("applicationRuntime"),x=Symbol("webComponentApi"),E=Symbol("PreviousPropertyValues"),O=Symbol("Events"),$=Symbol("Uuid"),k=(e,t,r)=>{let o=t?.attributeParser;if(!o)throw Error("Attribute parser is not defined");let s=o===c.boolean&&r===e?"":r;try{let e=o(s);return{success:!0,data:e}}catch(t){return console.error(`Failed to parse attribute ${e}, ignoring`,t),{success:!1}}};export const createWebComponent=c=>{let{RootComponent:D,webComponentOptions:B,embeddedIntegration:M,applicationRuntimeFactory:W}=c,F=y(B),{properties:V,events:q}=F,N=m(V),R=f(q),T=class Salsita3dConfigurator extends HTMLElement{[g];[v];[j]=null;[P]=[];[w];[C];[A];[x];[E]=new Map;[O]=new r;[$]=n();get applicationRuntime(){return this[A]}static observedAttributes=Array.from(N.keys());[S](e,t,r){let o=t.schema.safeParse(r);if(!o.success)return void console.error(`Invalid value provided for property ${e}, ignoring`,o.error);let s=this[g].get(t);if(!s)return void console.error(`Subject not found for property descriptor of ${e}`);let i=s.isSet;s.isSet=!0,i&&s.subject.value===o.data||s.subject.next(o.data)}constructor(){super(),this[C]=this.attachShadow({mode:"closed"}),this[w]=Object.entries(V).map(([e,t])=>{if(Object.prototype.hasOwnProperty.call(this,e)){let r=t.schema.safeParse(this[e]);if(delete this[e],r.success)return{name:e,propertyDescriptor:t,storage:h(t,r.data)};console.error(`Failed to validate property ${e}, ignoring`,r.error)}if(t.attributeParser&&t.attributeNames){let r=t.attributeNames.find(e=>this.hasAttribute(e)),o=void 0===r?null:this.getAttribute(r);if(void 0!==r&&null!==o){let s=k(r,t,o);if(s.success){let o=t.schema.safeParse(s.data);if(o.success)return{name:e,propertyDescriptor:t,storage:h(t,o.data)};console.error(`Failed to validate attribute ${r}, ignoring`,o.error)}}}return{name:e,propertyDescriptor:t,storage:h(t,t.defaultValue)}}),this[g]=new Map(this[w].map(({propertyDescriptor:e,storage:t})=>[e,t])),this[x]=b({element:this,eventTypeByDescriptor:R,events:this[O],propertiesWithStorages:this[w],storagesByPropertyDescriptor:this[g]}),this[A]=W({webComponentOptions:F,webComponentApi:this[x]})}connectedCallback(){let r;if(null!==this[j]){this[j]=null,this[A].actions.webComponent.startNewGeneration();return}let n=this[A],c=this[x],h=p({element:this,eventTypeByDescriptor:R,storagesByPropertyDescriptor:this[g]},!0),b=this[w].map(({name:e,storage:t})=>t.subject.pipe(i((e,t)=>[e[1],t],[t.subject.value,t.subject.value]),s(([e,t])=>e!==t)).subscribe(([t,r])=>{h(a.propertyChanged,{name:e,oldValue:t,newValue:r})})),m=e=>{if(e)for(let[t,r]of Object.entries(e)){let e=this[w].find(({name:e})=>e===t);if(e){let{storage:o,propertyDescriptor:s}=e;this[E].has(t)||this[E].set(t,o.subject.value);let i=s.schema.safeParse(r);i.success?(o.subject.next(i.data),o.isSet=!0):console.error(`Failed to apply web component property override for "${t}":`,i.error)}}else{for(let[e,t]of this[E]){let r=this[w].find(({name:t})=>t===e);if(r){let{storage:e}=r;e.subject.next(t)}}this[E].clear()}},f=new o(n.subscribe(()=>{let e=n.selectors.overrides.getWebComponentProperties();e!==r&&(r=e,m(e))})),y=new o(d(this,n.actions.environment.setGodMode));this[P]=[...b,f,y],this[v]=t(this[C]),this[v].render(e(u,{runtime:n,container:this[C],children:e(D,{})}));let S=c.getPropertyValue(l.onAttached);if(S)try{S(this)}catch(e){console.error("Error in onAttached handler",e)}this.dispatchEvent(new CustomEvent("attached",{bubbles:!0}))}disconnectedCallback(){let e={};this[j]=e,queueMicrotask(()=>{this[j]===e&&(this[j]=null,this[P].forEach(e=>{e.unsubscribe()}),this[v]?.unmount(),this[v]=void 0)})}attributeChangedCallback(e,t,r){let o=N.get(e);if(!o)throw Error(`Property descriptor not found for attribute: ${e}, despite the attribute being observed`);if(null===r)return o.required?void console.error(`Cannot unset a required attribute ${e}, ignoring`):void this[S](e,o,o.defaultValue);let s=k(e,o,r);s.success&&this[S](e,o,s.data)}};return Object.entries(V).forEach(([e,t])=>{Object.defineProperty(T.prototype,e,{enumerable:!0,configurable:!1,get(){return this[g].get(t).subject.value},set(r){this[S](e,t,r)}})}),M&&(Object.defineProperty(T.prototype,"$events",{enumerable:!1,configurable:!1,get(){return this[O]}}),Object.defineProperty(T.prototype,"uuid",{enumerable:!1,configurable:!1,get(){return this[$]}})),T};
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Turns god mode on or off from the browser console, for the applications mounted on the page.
3
+ *
4
+ * - `window.__salsita.setGodMode(true)` switches every mounted application and remembers the value
5
+ * for the tab's session, so applications created later, and after a reload, start with it.
6
+ * - `window.__salsita.setGodMode(true, $0)` switches only the application whose custom element is
7
+ * given, here the one selected in the browser's element inspector.
8
+ * - `window.__salsita.setGodMode(false, 'my-configurator')` switches only the application whose
9
+ * custom element is the first match of the CSS selector.
10
+ *
11
+ * A targeted call is not remembered. A target that matches no mounted application changes
12
+ * nothing and logs an error.
13
+ */
14
+ export type SetGodMode = (godMode: boolean, target?: Element | string) => void;
15
+ declare global {
16
+ interface Window {
17
+ __salsita: {
18
+ setGodMode: SetGodMode;
19
+ };
20
+ }
21
+ }
22
+ /**
23
+ * Makes a mounted application reachable through `window.__salsita.setGodMode` (see
24
+ * {@link SetGodMode}) and installs the global. Returns the function that removes the application
25
+ * again.
26
+ *
27
+ * @param element The application's custom element, which a targeted call names.
28
+ * @param setRuntimeGodMode Publishes the value to the application's own runtime.
29
+ */
30
+ export declare const registerGodModeTarget: (element: Element, setRuntimeGodMode: (godMode: boolean) => void) => (() => void);
@@ -0,0 +1 @@
1
+ import{GOD_MODE_SESSION_STORAGE_KEY as e}from"#package/domain";let t=new Map,o=(o,n)=>{if(void 0===n){sessionStorage.setItem(e,o.toString()),t.forEach(e=>{e(o)});return}let i="string"==typeof n?document.querySelector(n):n,r=null===i?void 0:t.get(i);void 0===r?console.error("setGodMode: the target is not the element of a mounted application; nothing changed.",n):r(o)};export const registerGodModeTarget=(e,n)=>(t.set(e,n),window.__salsita={...window.__salsita,setGodMode:o},()=>{t.get(e)===n&&t.delete(e)});
@@ -0,0 +1 @@
1
+ export { registerGodModeTarget, type SetGodMode } from './god-mode-registry.js';
@@ -0,0 +1 @@
1
+ export{registerGodModeTarget}from"./god-mode-registry.js";
@@ -0,0 +1,3 @@
1
+ import { type SvgIconProps } from '@mui/material';
2
+ declare const SvgLightbulb: (props: SvgIconProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default SvgLightbulb;
@@ -0,0 +1 @@
1
+ import{jsx as a}from"react/jsx-runtime";import{SvgIcon as r}from"@mui/material";export default(m=>a(r,{...m,children:a("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",viewBox:"0 0 256 256",children:a("path",{d:"M176 232a8 8 0 0 1-8 8H88a8 8 0 0 1 0-16h80a8 8 0 0 1 8 8m40-128a87.55 87.55 0 0 1-33.64 69.21A16.24 16.24 0 0 0 176 186v6a16 16 0 0 1-16 16H96a16 16 0 0 1-16-16v-6a16 16 0 0 0-6.23-12.66A87.59 87.59 0 0 1 40 104.49C39.74 56.83 78.26 17.14 125.88 16A88 88 0 0 1 216 104m-16 0a72 72 0 0 0-73.74-72c-39 .92-70.47 33.39-70.26 72.39a71.65 71.65 0 0 0 27.64 56.3A32 32 0 0 1 96 186v6h64v-6a32.15 32.15 0 0 1 12.47-25.35A71.65 71.65 0 0 0 200 104m-16.11-9.34a57.6 57.6 0 0 0-46.56-46.55 8 8 0 0 0-2.66 15.78c16.57 2.79 30.63 16.85 33.44 33.45A8 8 0 0 0 176 104a9 9 0 0 0 1.35-.11 8 8 0 0 0 6.54-9.23"})})}));
@@ -0,0 +1,3 @@
1
+ import { type SvgIconProps } from '@mui/material';
2
+ declare const SvgXCircle: (props: SvgIconProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default SvgXCircle;
@@ -0,0 +1 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{SvgIcon as a}from"@mui/material";export default(l=>r(a,{...l,children:r("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",viewBox:"0 0 256 256",children:r("path",{d:"M165.66 101.66 139.31 128l26.35 26.34a8 8 0 0 1-11.32 11.32L128 139.31l-26.34 26.35a8 8 0 0 1-11.32-11.32L116.69 128l-26.35-26.34a8 8 0 0 1 11.32-11.32L128 116.69l26.34-26.35a8 8 0 0 1 11.32 11.32M232 128A104 104 0 1 1 128 24a104.11 104.11 0 0 1 104 104m-16 0a88 88 0 1 0-88 88 88.1 88.1 0 0 0 88-88"})})}));
@@ -61,6 +61,7 @@ import ImageSquareBold from './ImageSquareBold.js';
61
61
  import Info from './Info.js';
62
62
  import InfoBold from './InfoBold.js';
63
63
  import Key from './Key.js';
64
+ import Lightbulb from './Lightbulb.js';
64
65
  import List from './List.js';
65
66
  import ListBullets from './ListBullets.js';
66
67
  import ListChecks from './ListChecks.js';
@@ -104,6 +105,7 @@ import WarningCircleDuotone from './WarningCircleDuotone.js';
104
105
  import WarningDuotone from './WarningDuotone.js';
105
106
  import X from './X.js';
106
107
  import XBold from './XBold.js';
108
+ import XCircle from './XCircle.js';
107
109
  export declare const Icon: {
108
110
  readonly Alarm: typeof Alarm;
109
111
  readonly ArrowClockwise: typeof ArrowClockwise;
@@ -168,6 +170,7 @@ export declare const Icon: {
168
170
  readonly Info: typeof Info;
169
171
  readonly InfoBold: typeof InfoBold;
170
172
  readonly Key: typeof Key;
173
+ readonly Lightbulb: typeof Lightbulb;
171
174
  readonly List: typeof List;
172
175
  readonly ListBullets: typeof ListBullets;
173
176
  readonly ListChecks: typeof ListChecks;
@@ -211,4 +214,5 @@ export declare const Icon: {
211
214
  readonly WarningDuotone: typeof WarningDuotone;
212
215
  readonly X: typeof X;
213
216
  readonly XBold: typeof XBold;
217
+ readonly XCircle: typeof XCircle;
214
218
  };
@@ -1 +1 @@
1
- import o from"./Alarm.js";import r from"./ArrowClockwise.js";import m from"./ArrowCounterClockwise.js";import t from"./ArrowLeft.js";import i from"./ArrowRight.js";import s from"./ArrowRightBold.js";import p from"./ArrowsHorizontal.js";import f from"./ArrowsIn.js";import j from"./ArrowsOut.js";import e from"./ArrowsOutCardinal.js";import l from"./Basketball.js";import a from"./BoundingBox.js";import n from"./BracketsCurly.js";import u from"./BuildingBold.js";import C from"./CameraRotate.js";import d from"./CaretDown.js";import B from"./CaretLeft.js";import c from"./CaretLeftBold.js";import g from"./CaretRight.js";import A from"./CaretRightBold.js";import h from"./Check.js";import P from"./CheckCircle.js";import w from"./CheckCircleDuotone.js";import S from"./Circle.js";import k from"./Cloud.js";import D from"./CloudArrowUp.js";import y from"./CopySimpleBold.js";import F from"./Cube.js";import L from"./CubeDuotone.js";import M from"./CurrencyDollar.js";import R from"./CurrencyEur.js";import I from"./CursorClick.js";import T from"./CustomAiAssistant.js";import O from"./CustomAiAssistantBold.js";import W from"./CustomAr.js";import x from"./CustomBigAiAssistant.js";import b from"./CustomMeasureCm.js";import E from"./CustomMeasureFt.js";import H from"./CustomMeasureIn.js";import G from"./CustomMeasureM.js";import U from"./CustomMeasureMm.js";import V from"./DotsSixVerticalBold.js";import v from"./DotsThreeVertical.js";import z from"./DotsThreeVerticalBold.js";import Q from"./Export.js";import X from"./EyeBold.js";import q from"./EyeClosedBold.js";import K from"./FileArrowUp.js";import N from"./FilePlus.js";import J from"./FileText.js";import Y from"./FireBold.js";import Z from"./Flame.js";import $ from"./FolderOpen.js";import _ from"./FolderStarBold.js";import oo from"./Gear.js";import or from"./GridFour.js";import om from"./HardDrives.js";import ot from"./House.js";import oi from"./Image.js";import os from"./ImageSquareBold.js";import op from"./Info.js";import of from"./InfoBold.js";import oj from"./Key.js";import oe from"./List.js";import ol from"./ListBullets.js";import oa from"./ListChecks.js";import on from"./Lock.js";import ou from"./MagicWand.js";import oC from"./MagnifyingGlassBold.js";import od from"./NavigationArrow.js";import oB from"./PaintBrush.js";import oc from"./Palette.js";import og from"./PaletteBold.js";import oA from"./PaperPlaneRightBold.js";import oh from"./PaperPlaneTilt.js";import oP from"./PauseBold.js";import ow from"./PencilSimpleBold.js";import oS from"./PlayBold.js";import ok from"./Plus.js";import oD from"./PlusBold.js";import oy from"./PlusCircle.js";import oF from"./PlusCircleBold.js";import oL from"./PushPin.js";import oM from"./PushPinSlash.js";import oR from"./Question.js";import oI from"./QuestionDuotone.js";import oT from"./RocketLaunchBold.js";import oO from"./SalsitaLogo.js";import oW from"./Scan.js";import ox from"./ShoppingCartSimple.js";import ob from"./SignOut.js";import oE from"./SignOutBold.js";import oH from"./SlidersBold.js";import oG from"./SlidersHorizontal.js";import oU from"./SubsetOfRaw.js";import oV from"./TagBold.js";import ov from"./Trash.js";import oz from"./TrashSimpleBold.js";import oQ from"./UsersBold.js";import oX from"./Warning.js";import oq from"./WarningCircle.js";import oK from"./WarningCircleBold.js";import oN from"./WarningCircleDuotone.js";import oJ from"./WarningDuotone.js";import oY from"./X.js";import oZ from"./XBold.js";export const Icon={Alarm:o,ArrowClockwise:r,ArrowCounterClockwise:m,ArrowLeft:t,ArrowRight:i,ArrowRightBold:s,ArrowsHorizontal:p,ArrowsIn:f,ArrowsOut:j,ArrowsOutCardinal:e,Basketball:l,BoundingBox:a,BracketsCurly:n,BuildingBold:u,CameraRotate:C,CaretDown:d,CaretLeft:B,CaretLeftBold:c,CaretRight:g,CaretRightBold:A,Check:h,CheckCircle:P,CheckCircleDuotone:w,Circle:S,Cloud:k,CloudArrowUp:D,CopySimpleBold:y,Cube:F,CubeDuotone:L,CurrencyDollar:M,CurrencyEur:R,CursorClick:I,CustomAiAssistant:T,CustomAiAssistantBold:O,CustomAr:W,CustomBigAiAssistant:x,CustomMeasureCm:b,CustomMeasureFt:E,CustomMeasureIn:H,CustomMeasureM:G,CustomMeasureMm:U,DotsSixVerticalBold:V,DotsThreeVertical:v,DotsThreeVerticalBold:z,Export:Q,EyeBold:X,EyeClosedBold:q,FileArrowUp:K,FilePlus:N,FileText:J,FireBold:Y,Flame:Z,FolderOpen:$,FolderStarBold:_,Gear:oo,GridFour:or,HardDrives:om,House:ot,Image:oi,ImageSquareBold:os,Info:op,InfoBold:of,Key:oj,List:oe,ListBullets:ol,ListChecks:oa,Lock:on,MagicWand:ou,MagnifyingGlassBold:oC,NavigationArrow:od,PaintBrush:oB,Palette:oc,PaletteBold:og,PaperPlaneRightBold:oA,PaperPlaneTilt:oh,PauseBold:oP,PencilSimpleBold:ow,PlayBold:oS,Plus:ok,PlusBold:oD,PlusCircle:oy,PlusCircleBold:oF,PushPin:oL,PushPinSlash:oM,Question:oR,QuestionDuotone:oI,RocketLaunchBold:oT,SalsitaLogo:oO,Scan:oW,ShoppingCartSimple:ox,SignOut:ob,SignOutBold:oE,SlidersBold:oH,SlidersHorizontal:oG,SubsetOfRaw:oU,TagBold:oV,Trash:ov,TrashSimpleBold:oz,UsersBold:oQ,Warning:oX,WarningCircle:oq,WarningCircleBold:oK,WarningCircleDuotone:oN,WarningDuotone:oJ,X:oY,XBold:oZ};
1
+ import o from"./Alarm.js";import r from"./ArrowClockwise.js";import m from"./ArrowCounterClockwise.js";import t from"./ArrowLeft.js";import i from"./ArrowRight.js";import s from"./ArrowRightBold.js";import p from"./ArrowsHorizontal.js";import f from"./ArrowsIn.js";import j from"./ArrowsOut.js";import e from"./ArrowsOutCardinal.js";import l from"./Basketball.js";import a from"./BoundingBox.js";import u from"./BracketsCurly.js";import n from"./BuildingBold.js";import C from"./CameraRotate.js";import d from"./CaretDown.js";import B from"./CaretLeft.js";import c from"./CaretLeftBold.js";import g from"./CaretRight.js";import h from"./CaretRightBold.js";import A from"./Check.js";import P from"./CheckCircle.js";import w from"./CheckCircleDuotone.js";import S from"./Circle.js";import k from"./Cloud.js";import D from"./CloudArrowUp.js";import L from"./CopySimpleBold.js";import y from"./Cube.js";import F from"./CubeDuotone.js";import M from"./CurrencyDollar.js";import R from"./CurrencyEur.js";import I from"./CursorClick.js";import T from"./CustomAiAssistant.js";import b from"./CustomAiAssistantBold.js";import O from"./CustomAr.js";import W from"./CustomBigAiAssistant.js";import x from"./CustomMeasureCm.js";import E from"./CustomMeasureFt.js";import H from"./CustomMeasureIn.js";import G from"./CustomMeasureM.js";import U from"./CustomMeasureMm.js";import V from"./DotsSixVerticalBold.js";import X from"./DotsThreeVertical.js";import v from"./DotsThreeVerticalBold.js";import z from"./Export.js";import Q from"./EyeBold.js";import q from"./EyeClosedBold.js";import K from"./FileArrowUp.js";import N from"./FilePlus.js";import J from"./FileText.js";import Y from"./FireBold.js";import Z from"./Flame.js";import $ from"./FolderOpen.js";import _ from"./FolderStarBold.js";import oo from"./Gear.js";import or from"./GridFour.js";import om from"./HardDrives.js";import ot from"./House.js";import oi from"./Image.js";import os from"./ImageSquareBold.js";import op from"./Info.js";import of from"./InfoBold.js";import oj from"./Key.js";import oe from"./Lightbulb.js";import ol from"./List.js";import oa from"./ListBullets.js";import ou from"./ListChecks.js";import on from"./Lock.js";import oC from"./MagicWand.js";import od from"./MagnifyingGlassBold.js";import oB from"./NavigationArrow.js";import oc from"./PaintBrush.js";import og from"./Palette.js";import oh from"./PaletteBold.js";import oA from"./PaperPlaneRightBold.js";import oP from"./PaperPlaneTilt.js";import ow from"./PauseBold.js";import oS from"./PencilSimpleBold.js";import ok from"./PlayBold.js";import oD from"./Plus.js";import oL from"./PlusBold.js";import oy from"./PlusCircle.js";import oF from"./PlusCircleBold.js";import oM from"./PushPin.js";import oR from"./PushPinSlash.js";import oI from"./Question.js";import oT from"./QuestionDuotone.js";import ob from"./RocketLaunchBold.js";import oO from"./SalsitaLogo.js";import oW from"./Scan.js";import ox from"./ShoppingCartSimple.js";import oE from"./SignOut.js";import oH from"./SignOutBold.js";import oG from"./SlidersBold.js";import oU from"./SlidersHorizontal.js";import oV from"./SubsetOfRaw.js";import oX from"./TagBold.js";import ov from"./Trash.js";import oz from"./TrashSimpleBold.js";import oQ from"./UsersBold.js";import oq from"./Warning.js";import oK from"./WarningCircle.js";import oN from"./WarningCircleBold.js";import oJ from"./WarningCircleDuotone.js";import oY from"./WarningDuotone.js";import oZ from"./X.js";import o$ from"./XBold.js";import o_ from"./XCircle.js";export const Icon={Alarm:o,ArrowClockwise:r,ArrowCounterClockwise:m,ArrowLeft:t,ArrowRight:i,ArrowRightBold:s,ArrowsHorizontal:p,ArrowsIn:f,ArrowsOut:j,ArrowsOutCardinal:e,Basketball:l,BoundingBox:a,BracketsCurly:u,BuildingBold:n,CameraRotate:C,CaretDown:d,CaretLeft:B,CaretLeftBold:c,CaretRight:g,CaretRightBold:h,Check:A,CheckCircle:P,CheckCircleDuotone:w,Circle:S,Cloud:k,CloudArrowUp:D,CopySimpleBold:L,Cube:y,CubeDuotone:F,CurrencyDollar:M,CurrencyEur:R,CursorClick:I,CustomAiAssistant:T,CustomAiAssistantBold:b,CustomAr:O,CustomBigAiAssistant:W,CustomMeasureCm:x,CustomMeasureFt:E,CustomMeasureIn:H,CustomMeasureM:G,CustomMeasureMm:U,DotsSixVerticalBold:V,DotsThreeVertical:X,DotsThreeVerticalBold:v,Export:z,EyeBold:Q,EyeClosedBold:q,FileArrowUp:K,FilePlus:N,FileText:J,FireBold:Y,Flame:Z,FolderOpen:$,FolderStarBold:_,Gear:oo,GridFour:or,HardDrives:om,House:ot,Image:oi,ImageSquareBold:os,Info:op,InfoBold:of,Key:oj,Lightbulb:oe,List:ol,ListBullets:oa,ListChecks:ou,Lock:on,MagicWand:oC,MagnifyingGlassBold:od,NavigationArrow:oB,PaintBrush:oc,Palette:og,PaletteBold:oh,PaperPlaneRightBold:oA,PaperPlaneTilt:oP,PauseBold:ow,PencilSimpleBold:oS,PlayBold:ok,Plus:oD,PlusBold:oL,PlusCircle:oy,PlusCircleBold:oF,PushPin:oM,PushPinSlash:oR,Question:oI,QuestionDuotone:oT,RocketLaunchBold:ob,SalsitaLogo:oO,Scan:oW,ShoppingCartSimple:ox,SignOut:oE,SignOutBold:oH,SlidersBold:oG,SlidersHorizontal:oU,SubsetOfRaw:oV,TagBold:oX,Trash:ov,TrashSimpleBold:oz,UsersBold:oQ,Warning:oq,WarningCircle:oK,WarningCircleBold:oN,WarningCircleDuotone:oJ,WarningDuotone:oY,X:oZ,XBold:o$,XCircle:o_};
@@ -1 +1 @@
1
- export const CustomIcons=["custom-ai-assistant","custom-ai-assistant-bold","custom-ar","custom-big-ai-assistant","custom-measure-cm","custom-measure-ft","custom-measure-in","custom-measure-m","custom-measure-mm","SalsitaLogo","subset-of-raw"];export const PhosphorIcons={bold:["arrow-right","building","caret-left","caret-right","copy-simple","dots-six-vertical","dots-three-vertical","eye-closed","eye","fire","folder-star","image-square","info","magnifying-glass","palette","paper-plane-right","pause","pencil-simple","play","plus","plus-circle","rocket-launch","sign-out","sliders","tag","trash-simple","users","warning-circle","x"],duotone:["check-circle","cube","question","warning-circle","warning"],regular:["alarm","arrow-clockwise","arrow-counter-clockwise","arrow-left","arrow-left","arrow-right","arrows-horizontal","arrows-in","arrows-out","arrows-out-cardinal","basketball","bounding-box","brackets-curly","camera-rotate","caret-down","caret-left","caret-right","check","check-circle","circle","cloud","cloud-arrow-up","cube","currency-dollar","currency-eur","cursor-click","dots-three-vertical","export","file-arrow-up","file-plus","file-text","flame","gear","folder-open","grid-four","hard-drives","house","image","info","key","list","list-bullets","list-checks","lock","magic-wand","navigation-arrow","paint-brush","palette","paper-plane-tilt","plus","plus-circle","push-pin","push-pin-slash","question","scan","shopping-cart-simple","sign-out","sliders-horizontal","trash","warning","warning-circle","x"]};
1
+ export const CustomIcons=["custom-ai-assistant","custom-ai-assistant-bold","custom-ar","custom-big-ai-assistant","custom-measure-cm","custom-measure-ft","custom-measure-in","custom-measure-m","custom-measure-mm","SalsitaLogo","subset-of-raw"];export const PhosphorIcons={bold:["arrow-right","building","caret-left","caret-right","copy-simple","dots-six-vertical","dots-three-vertical","eye-closed","eye","fire","folder-star","image-square","info","magnifying-glass","palette","paper-plane-right","pause","pencil-simple","play","plus","plus-circle","rocket-launch","sign-out","sliders","tag","trash-simple","users","warning-circle","x"],duotone:["check-circle","cube","question","warning-circle","warning"],regular:["alarm","arrow-clockwise","arrow-counter-clockwise","arrow-left","arrow-left","arrow-right","arrows-horizontal","arrows-in","arrows-out","arrows-out-cardinal","basketball","bounding-box","brackets-curly","camera-rotate","caret-down","caret-left","caret-right","check","check-circle","circle","cloud","cloud-arrow-up","cube","currency-dollar","currency-eur","cursor-click","dots-three-vertical","export","file-arrow-up","file-plus","file-text","flame","gear","folder-open","grid-four","hard-drives","house","image","info","key","lightbulb","list","list-bullets","list-checks","lock","magic-wand","navigation-arrow","paint-brush","palette","paper-plane-tilt","plus","plus-circle","push-pin","push-pin-slash","question","scan","shopping-cart-simple","sign-out","sliders-horizontal","trash","warning","warning-circle","x","x-circle"]};
@@ -6,8 +6,8 @@ export interface ResponsiveApplicationProviderProps extends PropsWithChildren {
6
6
  * Responsive state owned outside the UI. When given, the provider measures its container into
7
7
  * it and `useResponsive()` reads from it; otherwise the provider keeps the state itself.
8
8
  *
9
- * @internal Runtime plumbing for the SDK's own configurator, which passes its runtime
10
- * `ResponsiveStateManager`. A project mounting this provider leaves it out.
9
+ * @internal Runtime plumbing for the SDK's own configurator, which passes its application
10
+ * runtime's responsive state. A project mounting this provider leaves it out.
11
11
  */
12
12
  store?: ResponsiveStateStore;
13
13
  }
@@ -1,4 +1,3 @@
1
- import type { BehaviorSubject, Observable } from 'rxjs';
2
1
  import type { CanvasPadding } from './ResponsiveProvider.js';
3
2
  /**
4
3
  * The responsive state a `ResponsiveStateStore` holds.
@@ -20,9 +19,9 @@ export interface ResponsiveStateSnapshot {
20
19
  }
21
20
  /**
22
21
  * Responsive state owned outside the UI, which `ResponsiveApplicationProvider` measures its root
23
- * container into and provides to `useResponsive()`. A mounted Phoenix application passes the
24
- * `ResponsiveStateManager` of `@salsita-ai/sdk/react`, so its lifecycle reads the same state
25
- * without the UI.
22
+ * container into and provides to `useResponsive()`. A mounted Phoenix configurator passes its
23
+ * application runtime's responsive state (`useResponsiveStore()` of `@salsita-ai/sdk/react`), so
24
+ * its lifecycle reads the same state without the UI.
26
25
  *
27
26
  * Declared here by shape rather than imported, because `ui-sdk` depends on no other SDK package.
28
27
  *
@@ -30,12 +29,15 @@ export interface ResponsiveStateSnapshot {
30
29
  * `ResponsiveApplicationProvider` leaves `store` out.
31
30
  */
32
31
  export interface ResponsiveStateStore {
33
- readonly state$: Observable<ResponsiveStateSnapshot>;
34
- readonly viewport$: BehaviorSubject<{
35
- width: number;
36
- height: number;
37
- }>;
32
+ /** Calls `onChange` after every change of the store; returns the unsubscribe. */
33
+ readonly subscribe: (onChange: () => void) => () => void;
34
+ /** The same object until a value in it changes. */
38
35
  readonly getState: () => ResponsiveStateSnapshot;
36
+ /** The container's size rounded up to whole pixels; the same object until it changes. */
37
+ readonly getViewportSize: () => {
38
+ readonly width: number;
39
+ readonly height: number;
40
+ };
39
41
  readonly setViewport: (viewport: {
40
42
  readonly width: number;
41
43
  readonly height: number;
@@ -1 +1 @@
1
- import{useTheme as e}from"@mui/material";import{useCallback as t,useLayoutEffect as i,useMemo as a,useSyncExternalStore as s}from"react";import{isMobileOnly as n}from"react-device-detect";import{useResizeObserver as o}from"usehooks-ts";export const useStoreResponsiveInfo=(r,c)=>{let{sm:d,md:p,lg:l}=e().breakpoints.values,u=s(t(e=>{let t=c.state$.subscribe(e);return()=>{t.unsubscribe()}},[c]),c.getState);i(()=>{c.setBreakpoints({sm:d,md:p,lg:l})},[c,d,p,l]);let m=t(e=>{let{width:t,height:i}=e.getBoundingClientRect();c.setViewport({width:t,height:i,isLandscape:window.matchMedia("(orientation: landscape)").matches,isPortrait:window.matchMedia("(orientation: portrait)").matches})},[c]),b=t(e=>{c.setCanvasPadding("function"==typeof e?e(c.getCanvasPadding()):e)},[c]),g=t(()=>{r.current&&m(r.current)},[r,m]);return o({ref:r,onResize:()=>{null!=r.current&&m(r.current)}}),i(()=>{null!=r.current&&m(r.current)},[r,m]),a(()=>({...u,expand:c.expand,collapse:c.collapse,hide:c.hide,show:c.show,isMobileAndMobileLandscape:u.isMobile||u.isLandscape&&u.isTablet&&n,isDesktopExceptMobileLandscape:u.isDesktop&&!(u.isLandscape&&u.isTablet&&n),viewport$:c.viewport$,getCanvasPadding:c.getCanvasPadding,setCanvasPadding:b,update:g,setAnimating:c.setAnimating}),[u,c,b,g])};
1
+ import{useTheme as e}from"@mui/material";import{useCallback as t,useLayoutEffect as i,useMemo as a,useState as n,useSyncExternalStore as s}from"react";import{isMobileOnly as r}from"react-device-detect";import{BehaviorSubject as o}from"rxjs";import{useResizeObserver as c}from"usehooks-ts";export const useStoreResponsiveInfo=(p,d)=>{let{sm:l,md:u,lg:m}=e().breakpoints.values,g=s(d.subscribe,d.getState),[b]=n(()=>new o(d.getViewportSize()));i(()=>{let e=()=>{let e=d.getViewportSize();e!==b.value&&b.next(e)};return e(),d.subscribe(e)},[d,b]),i(()=>{d.setBreakpoints({sm:l,md:u,lg:m})},[d,l,u,m]);let w=t(e=>{let{width:t,height:i}=e.getBoundingClientRect();d.setViewport({width:t,height:i,isLandscape:window.matchMedia("(orientation: landscape)").matches,isPortrait:window.matchMedia("(orientation: portrait)").matches})},[d]),f=t(e=>{d.setCanvasPadding("function"==typeof e?e(d.getCanvasPadding()):e)},[d]),h=t(()=>{p.current&&w(p.current)},[p,w]);return c({ref:p,onResize:()=>{null!=p.current&&w(p.current)}}),i(()=>{null!=p.current&&w(p.current)},[p,w]),a(()=>({...g,expand:d.expand,collapse:d.collapse,hide:d.hide,show:d.show,isMobileAndMobileLandscape:g.isMobile||g.isLandscape&&g.isTablet&&r,isDesktopExceptMobileLandscape:g.isDesktop&&!(g.isLandscape&&g.isTablet&&r),viewport$:b,getCanvasPadding:d.getCanvasPadding,setCanvasPadding:f,update:h,setAnimating:d.setAnimating}),[g,d,b,f,h])};
@@ -44,7 +44,8 @@ declare module '@mui/material/styles' {
44
44
  PhxChat: 'root';
45
45
  PhxChatFooter: 'root' | 'formLayout' | 'input';
46
46
  PhxChatMessage: 'base' | 'assistant' | 'user' | 'widget' | 'error' | 'helper';
47
- PhxAssistantPanel: 'root' | 'header' | 'title' | 'closeButton' | 'thread' | 'greeting' | 'messages' | 'userMessage' | 'assistantMessage' | 'entityLink' | 'referenceLink' | 'referenceDetails' | 'image' | 'form' | 'formGroup' | 'formGroupLabel' | 'formOptions' | 'formOptionsLabel' | 'formOptionsRow' | 'formReply' | 'formText' | 'formTextInput' | 'formSubmit' | 'formNote' | 'chips' | 'activity' | 'activityIcon' | 'chip' | 'undoButton' | 'status' | 'separator' | 'earlierButton' | 'notice' | 'newReplyButton' | 'composer' | 'inputFrame' | 'input' | 'sendButton' | 'stopButton' | 'hint';
47
+ PhxAssistantPanel: 'root' | 'header' | 'title' | 'closeButton' | 'thread' | 'greeting' | 'messages' | 'userMessage' | 'assistantMessage' | 'alert' | 'entityLink' | 'referenceLink' | 'referenceDetails' | 'image' | 'screenshotsLink' | 'screenshots' | 'form' | 'formGroup' | 'formGroupLabel' | 'formOptions' | 'formOptionsLabel' | 'formOptionsRow' | 'formReply' | 'formCard' | 'formCardImage' | 'formCardLabel' | 'formCardDescription' | 'formCardCheck' | 'formSwatch' | 'formSwatchImage' | 'formSwatchCheck' | 'formText' | 'formTextInput' | 'formNumber' | 'formConfirm' | 'formConfirmButtons' | 'formConfirmButton' | 'formSubmit' | 'formNote' | 'chips' | 'activity' | 'activityIcon' | 'chip' | 'undoButton' | 'status' | 'separator' | 'earlierButton' | 'notice' | 'newReplyButton' | 'composer' | 'inputFrame' | 'input' | 'sendButton' | 'stopButton' | 'hint';
48
+ PhxExportingOverlay: 'root' | 'message';
48
49
  PhxTopNavigation: 'root' | 'stepper' | 'step';
49
50
  PhxListSelector: 'root';
50
51
  PhxListSelectorItem: 'root' | 'radio' | 'title' | 'description' | 'formControlLabel';
@@ -113,6 +114,9 @@ declare module '@mui/material/styles' {
113
114
  PhxAssistantPanel?: {
114
115
  styleOverrides?: ComponentsOverrides<Theme>['PhxAssistantPanel'];
115
116
  };
117
+ PhxExportingOverlay?: {
118
+ styleOverrides?: ComponentsOverrides<Theme>['PhxExportingOverlay'];
119
+ };
116
120
  PhxPreviewLayout?: {
117
121
  styleOverrides?: ComponentsOverrides<Theme>['PhxPreviewLayout'];
118
122
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salsita-ai/sdk",
3
- "version": "0.50.0-develop.78a839cc7b",
3
+ "version": "0.50.0-develop.7c472a27fe",
4
4
  "description": "TypeScript SDK and CLI for building, running, and deploying Phoenix configurator applications.",
5
5
  "keywords": [
6
6
  "salsita",
@@ -207,6 +207,16 @@
207
207
  "schema",
208
208
  "CHANGELOG.md"
209
209
  ],
210
+ "nx": {
211
+ "targets": {
212
+ "build": {
213
+ "outputs": [
214
+ "{projectRoot}/dist",
215
+ "{projectRoot}/src/i18n/locales/*/messages.ts"
216
+ ]
217
+ }
218
+ }
219
+ },
210
220
  "dependencies": {
211
221
  "@apidevtools/json-schema-ref-parser": "14.1.1",
212
222
  "@aws-sdk/client-s3": "3.1054.0",
@@ -298,8 +308,8 @@
298
308
  "yaml": "2.9.0",
299
309
  "yargs": "17.7.2",
300
310
  "zod": "3.25.76",
301
- "@salsita-ai/contracts": "0.50.0-develop.78a839cc7b",
302
- "@salsita-ai/common": "0.50.0-develop.78a839cc7b"
311
+ "@salsita-ai/common": "0.50.0-develop.7c472a27fe",
312
+ "@salsita-ai/contracts": "0.50.0-develop.7c472a27fe"
303
313
  },
304
314
  "devDependencies": {
305
315
  "@clerk/clerk-react": "5.61.8",