@salsita-ai/sdk 0.50.0-develop.f101f4c3c9 → 0.50.0-develop.f16492b14e

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 (872) hide show
  1. package/README.md +5 -1
  2. package/dist/application/index.d.ts +1 -0
  3. package/dist/application/index.js +1 -1
  4. package/dist/application/mount-application.d.ts +1 -1
  5. package/dist/application/mount-application.js +1 -1
  6. package/dist/application/mount-configurator.d.ts +19 -0
  7. package/dist/application/mount-configurator.js +1 -0
  8. package/dist/application/mounted-application-runtime.d.ts +4 -0
  9. package/dist/application/mounted-application-runtime.js +1 -0
  10. package/dist/application/register-web-component.d.ts +2 -0
  11. package/dist/application/register-web-component.js +1 -0
  12. package/dist/application-spec/core/enhanced-json-value.d.ts +2 -31
  13. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  14. package/dist/application-spec/core/index.d.ts +1 -3
  15. package/dist/application-spec/core/index.js +1 -1
  16. package/dist/application-spec/core/json-schema.d.ts +2 -52
  17. package/dist/application-spec/core/markers/index.d.ts +1 -1
  18. package/dist/application-spec/core/markers/index.js +1 -1
  19. package/dist/application-spec/core/markers/msg-marker.d.ts +2 -28
  20. package/dist/application-spec/core/markers/msg-marker.js +1 -1
  21. package/dist/application-spec/core/markers/raw-eval-write-marker.d.ts +1 -1
  22. package/dist/application-spec/core/markers/raw-eval-write-marker.js +1 -1
  23. package/dist/application-spec/core/markers/raw-read-write-marker.js +1 -1
  24. package/dist/application-spec/errors/diagnostic-codes.d.ts +17 -1
  25. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  26. package/dist/application-spec/errors/diagnostic-messages.d.ts +25 -2
  27. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  28. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  29. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  30. package/dist/application-spec/generate-application/code/templates/application-types.js +6 -6
  31. package/dist/application-spec/generate-application/code/templates/common/doc-comment.d.ts +2 -0
  32. package/dist/application-spec/generate-application/code/templates/common/doc-comment.js +1 -0
  33. package/dist/application-spec/generate-application/code/templates/configurator-globals.d.ts +2 -1
  34. package/dist/application-spec/generate-application/code/templates/configurator-globals.js +19 -6
  35. package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.js +7 -7
  36. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.d.ts +12 -0
  37. package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.js +7 -0
  38. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.js +24 -22
  39. package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +1 -0
  40. package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
  41. package/dist/application-spec/generate-application/code/templates/index.d.ts +2 -6
  42. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  43. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill-bundle.d.ts +10 -0
  44. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill-bundle.js +7 -0
  45. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  46. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +14 -7
  47. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  48. package/dist/application-spec/generate-application/implementations/phx-application-types.d.ts +25 -0
  49. package/dist/application-spec/generate-application/implementations/phx-application-types.js +1 -0
  50. package/dist/application-spec/generate-application/implementations/phx-domain.d.ts +36 -0
  51. package/dist/application-spec/generate-application/implementations/phx-domain.js +1 -0
  52. package/dist/application-spec/generate-application/implementations/phx-model.d.ts +24 -0
  53. package/dist/application-spec/generate-application/implementations/phx-model.js +1 -0
  54. package/dist/application-spec/generate-application/implementations/phx.d.ts +22 -0
  55. package/dist/application-spec/generate-application/implementations/phx.js +1 -0
  56. package/dist/application-spec/generate-application/index.d.ts +2 -0
  57. package/dist/application-spec/generate-application/index.js +1 -1
  58. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.d.ts +3 -4
  59. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +7 -4
  60. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
  61. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-spec-runtime.d.ts +16 -0
  62. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-spec-runtime.js +1 -0
  63. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +17 -4
  64. package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
  65. package/dist/application-spec/generate-application/runtime/application-spec-slice.d.ts +71 -0
  66. package/dist/application-spec/generate-application/runtime/application-spec-slice.js +1 -0
  67. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.d.ts +3 -4
  68. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +7 -5
  69. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  70. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-spec-runtime.d.ts +16 -0
  71. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-spec-runtime.js +1 -0
  72. package/dist/application-spec/generate-application/runtime/create-application.d.ts +57 -0
  73. package/dist/application-spec/generate-application/runtime/create-application.js +1 -0
  74. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.d.ts +1 -2
  75. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.d.ts +1 -1
  76. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.js +1 -1
  77. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.d.ts +1 -2
  78. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.js +1 -1
  79. package/dist/application-spec/generate-application/runtime/generate-runtime-instance.d.ts +1 -1
  80. package/dist/application-spec/generate-application/runtime/generate-runtime-instance.js +1 -1
  81. package/dist/application-spec/generate-application/runtime/index.d.ts +8 -0
  82. package/dist/application-spec/generate-application/runtime/index.js +1 -0
  83. package/dist/application-spec/generate-application/runtime/sections/actions-runtime.d.ts +1 -2
  84. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +1 -1
  85. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  86. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.d.ts +1 -1
  87. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +1 -2
  88. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.d.ts +9 -4
  89. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  90. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.d.ts +1 -2
  91. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.js +1 -1
  92. package/dist/application-spec/generate-application/runtime/sections/preset-runtime.d.ts +2 -3
  93. package/dist/application-spec/generate-application/runtime/sections/reflection-constants-runtime.d.ts +1 -1
  94. package/dist/application-spec/generate-application/runtime/spec-code/resolve-spec-code.d.ts +1 -1
  95. package/dist/application-spec/generate-application/runtime/spec-runtime.d.ts +21 -0
  96. package/dist/application-spec/generate-application/runtime/spec-runtime.js +1 -0
  97. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.d.ts +3 -2
  98. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.d.ts +124 -24
  99. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.js +1 -1
  100. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.d.ts +1 -1
  101. package/dist/application-spec/parse-application-files/merge/merged-assistant.d.ts +13 -4
  102. package/dist/application-spec/parse-application-files/merge/merged-assistant.js +1 -1
  103. package/dist/application-spec/parse-application-files/merge/merged-infra.d.ts +4 -11
  104. package/dist/application-spec/parse-application-files/merge/merged-transformers.d.ts +2 -4
  105. package/dist/application-spec/parse-application-files/parse-application-files.js +1 -1
  106. package/dist/application-spec/parse-application-files/raw-spec/raw-acl.d.ts +2 -2
  107. package/dist/application-spec/parse-application-files/raw-spec/raw-acl.js +1 -1
  108. package/dist/application-spec/parse-application-files/raw-spec/raw-admin-pages.d.ts +3 -24
  109. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +58 -23
  110. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  111. package/dist/application-spec/parse-application-files/raw-spec/raw-expressions.d.ts +1 -1
  112. package/dist/application-spec/parse-application-files/raw-spec/raw-expressions.js +1 -1
  113. package/dist/application-spec/parse-application-files/raw-spec/raw-resources.d.ts +19 -64
  114. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-pages.d.ts +3 -20
  115. package/dist/application-spec/parse-application-files/spec/application/admin-spec/states.d.ts +3 -5
  116. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/states.d.ts +3 -8
  117. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding.d.ts +3 -13
  118. package/dist/application-spec/parse-application-files/spec/components/bindings/write-binding.d.ts +4 -32
  119. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +4 -10
  120. package/dist/application-spec/parse-application-files/spec/components/components.d.ts +3 -4
  121. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -2
  122. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  123. package/dist/application-spec/parse-application-files/spec/components/sdk-component-entry.d.ts +1 -1
  124. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.d.ts +2 -3
  125. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.js +1 -1
  126. package/dist/application-spec/parse-application-files/spec/components/user-components.d.ts +2 -3
  127. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.d.ts +2 -2
  128. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +7 -29
  129. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
  130. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.d.ts +4 -71
  131. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  132. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.d.ts +2 -2
  133. package/dist/application-spec/parse-application-files/spec/invariants/invariant.d.ts +5 -21
  134. package/dist/application-spec/parse-application-files/spec/invariants/invariants.d.ts +4 -14
  135. package/dist/application-spec/parse-application-files/spec/model/aliases.d.ts +3 -9
  136. package/dist/application-spec/parse-application-files/spec/model/common-types.d.ts +6 -14
  137. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +6 -31
  138. package/dist/application-spec/parse-application-files/spec/model/entity-types.d.ts +3 -8
  139. package/dist/application-spec/parse-application-files/spec/model/model-version-key.d.ts +3 -3
  140. package/dist/application-spec/parse-application-files/spec/model/names/action-name.d.ts +3 -7
  141. package/dist/application-spec/parse-application-files/spec/model/names/alias-name.d.ts +3 -7
  142. package/dist/application-spec/parse-application-files/spec/model/names/entity-or-alias-name.d.ts +3 -8
  143. package/dist/application-spec/parse-application-files/spec/model/names/entity-type-name.d.ts +3 -8
  144. package/dist/application-spec/parse-application-files/spec/model/names/expression-name.d.ts +3 -6
  145. package/dist/application-spec/parse-application-files/spec/model/names/instance-name.d.ts +3 -7
  146. package/dist/application-spec/parse-application-files/spec/model/names/invariant-name.d.ts +3 -3
  147. package/dist/application-spec/parse-application-files/spec/model/names/shape-property-name.d.ts +3 -11
  148. package/dist/application-spec/parse-application-files/spec/model/names/violation-type-name.d.ts +3 -3
  149. package/dist/application-spec/parse-application-files/spec/model/presets.d.ts +6 -29
  150. package/dist/application-spec/parse-application-files/spec/sections/actions.d.ts +6 -23
  151. package/dist/application-spec/parse-application-files/spec/sections/app-metadata.d.ts +3 -18
  152. package/dist/application-spec/parse-application-files/spec/sections/application-version.d.ts +3 -7
  153. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.d.ts +9 -0
  154. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.js +1 -0
  155. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +4 -1
  156. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  157. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant.js +1 -1
  158. package/dist/application-spec/parse-application-files/spec/sections/data-spec/chunks.d.ts +6 -23
  159. package/dist/application-spec/parse-application-files/spec/sections/data-spec/custom-data-spec.d.ts +1 -16
  160. package/dist/application-spec/parse-application-files/spec/sections/data-spec/data-entry-key.d.ts +3 -9
  161. package/dist/application-spec/parse-application-files/spec/sections/data-spec/data-spec.d.ts +1 -10
  162. package/dist/application-spec/parse-application-files/spec/sections/data-spec/swatch-data-spec.d.ts +1 -14
  163. package/dist/application-spec/parse-application-files/spec/sections/state-value.d.ts +3 -7
  164. package/dist/application-spec/parse-application-files/spec/sections/theme.d.ts +3 -10
  165. package/dist/application-spec/parse-application-files/spec/sections/transformers.d.ts +4 -11
  166. package/dist/application-spec/parse-application-files/spec/sections/ui.d.ts +3 -12
  167. package/dist/client/authorized-client.d.ts +3 -1
  168. package/dist/client/authorized-client.js +1 -1
  169. package/dist/client/contract.d.ts +17 -0
  170. package/dist/client/index.d.ts +1 -1
  171. package/dist/client/local-authorized-client.d.ts +3 -1
  172. package/dist/client/local-authorized-client.js +1 -1
  173. package/dist/client/memory-authorized-client.d.ts +4 -1
  174. package/dist/client/memory-authorized-client.js +1 -1
  175. package/dist/client/phoenix-api.d.ts +240 -1
  176. package/dist/configurator/ConfiguratorApp.js +1 -1
  177. package/dist/configurator/app-loader-content/index.d.ts +0 -1
  178. package/dist/configurator/app-loader-content/index.js +1 -1
  179. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  180. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +17 -3
  181. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  182. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +52 -9
  183. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  184. package/dist/configurator/application-runtime/extensions/systems/canvas-system.d.ts +8 -0
  185. package/dist/configurator/application-runtime/extensions/systems/canvas-system.js +1 -1
  186. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.d.ts +8 -0
  187. package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.js +1 -0
  188. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.d.ts +23 -1
  189. package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.js +1 -1
  190. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +82 -55
  191. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  192. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +66 -4
  193. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  194. package/dist/configurator/application-runtime/extensions/systems/graphql-system/violations.d.ts +40 -0
  195. package/dist/configurator/application-runtime/extensions/systems/graphql-system/violations.js +1 -0
  196. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.d.ts +14 -5
  197. package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.js +1 -1
  198. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  199. package/dist/configurator/common/configurator-interface.d.ts +9 -6
  200. package/dist/configurator/common/configurator-interface.js +1 -1
  201. package/dist/configurator/configuration-not-found-page/BuiltInConfigurationNotFoundPage.d.ts +5 -0
  202. package/dist/configurator/configuration-not-found-page/BuiltInConfigurationNotFoundPage.js +1 -0
  203. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.d.ts +0 -6
  204. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.js +1 -1
  205. package/dist/configurator/configuration-not-found-page/index.d.ts +2 -2
  206. package/dist/configurator/configuration-not-found-page/index.js +1 -1
  207. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.d.ts +3 -3
  208. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.js +1 -1
  209. package/dist/configurator/configurator-context/PreviewContextProvider.js +1 -1
  210. package/dist/configurator/configurator-context/configurator-hooks/index.d.ts +0 -1
  211. package/dist/configurator/configurator-context/configurator-hooks/index.js +1 -1
  212. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.js +1 -1
  213. package/dist/configurator/configurator-context/index.d.ts +0 -5
  214. package/dist/configurator/configurator-context/index.js +1 -1
  215. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.d.ts +3 -3
  216. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.js +1 -1
  217. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.d.ts +0 -5
  218. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.js +1 -1
  219. package/dist/configurator/configurator-error-page/index.d.ts +1 -2
  220. package/dist/configurator/configurator-error-page/index.js +1 -1
  221. package/dist/configurator/index.d.ts +9 -2
  222. package/dist/configurator/index.js +1 -1
  223. package/dist/configurator/pages/ConfiguratorNotFoundPage.js +1 -1
  224. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  225. package/dist/configurator/pages/NewConfiguratorPage.js +1 -1
  226. package/dist/configurator/pages/default-configurator-elements.js +1 -1
  227. package/dist/configurator/pages/error-boundaries/DevContextFallback.js +1 -1
  228. package/dist/configurator/pages/error-boundaries/DevLoadingFallback.js +1 -1
  229. package/dist/configurator/pages/error-boundaries/LoadingErrorBoundary.js +1 -1
  230. package/dist/configurator/ui/assistant/AssistantChips.d.ts +3 -2
  231. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  232. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -1
  233. package/dist/configurator/ui/assistant/form/compose-answer.d.ts +1 -2
  234. package/dist/configurator/ui/assistant/form/compose-answer.js +1 -1
  235. package/dist/configurator/ui/assistant/form/form-model.d.ts +1 -3
  236. package/dist/configurator/ui/assistant/form/form-state.d.ts +1 -1
  237. package/dist/configurator/ui/assistant/form/index.d.ts +2 -0
  238. package/dist/configurator/ui/assistant/form/index.js +1 -1
  239. package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +1 -1
  240. package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -1
  241. package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +1 -1
  242. package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -1
  243. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.d.ts +3 -0
  244. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.js +1 -0
  245. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.d.ts +31 -0
  246. package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.js +1 -0
  247. package/dist/configurator/ui/assistant/form/{form-element-definition.d.ts → registry/form-element-definition.d.ts} +3 -1
  248. package/dist/configurator/ui/assistant/form/registry/form-element-definition.js +1 -0
  249. package/dist/configurator/ui/assistant/form/{form-registry.d.ts → registry/form-registry.d.ts} +1 -1
  250. package/dist/configurator/ui/assistant/form/registry/form-registry.js +1 -0
  251. package/dist/configurator/ui/assistant/form/registry/index.d.ts +6 -0
  252. package/dist/configurator/ui/assistant/form/registry/index.js +1 -0
  253. package/dist/configurator/ui/assistant/form/registry/use-form-registry.d.ts +8 -0
  254. package/dist/configurator/ui/assistant/form/registry/use-form-registry.js +1 -0
  255. package/dist/configurator/ui/assistant/form-elements/FormCard.d.ts +1 -1
  256. package/dist/configurator/ui/assistant/form-elements/FormCard.js +1 -1
  257. package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +1 -1
  258. package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -1
  259. package/dist/configurator/ui/assistant/form-elements/FormSwatch.d.ts +1 -1
  260. package/dist/configurator/ui/assistant/form-elements/FormSwatch.js +1 -1
  261. package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +5 -5
  262. package/dist/configurator/ui/assistant/index.d.ts +3 -0
  263. package/dist/configurator/ui/assistant/index.js +1 -1
  264. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.d.ts +9 -0
  265. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.js +1 -0
  266. package/dist/configurator/ui/assistant/screenshots/index.d.ts +2 -0
  267. package/dist/configurator/ui/assistant/screenshots/index.js +1 -0
  268. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.d.ts +22 -0
  269. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.js +1 -0
  270. package/dist/configurator/ui/assistant/screenshots/use-screenshot-src.d.ts +8 -0
  271. package/dist/configurator/ui/assistant/screenshots/use-screenshot-src.js +1 -0
  272. package/dist/configurator/ui/assistant/tool-chip.d.ts +19 -9
  273. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  274. package/dist/configurator/ui/configurator-layout/slots/canvas/GPUAccelerationDisabled.js +1 -1
  275. package/dist/configurator/ui/configurator-layout/slots/canvas/LayoutCanvas.js +1 -1
  276. package/dist/configurator/ui/configurator-layout/slots/canvas/SharedCanvas.js +1 -1
  277. package/dist/configurator/ui/configurator-layout/slots/canvas/WebGLNotSupported.js +1 -1
  278. package/dist/configurator/ui/configurator-layout/slots/readonly-banner/CloneToEditDialog.js +1 -1
  279. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  280. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.d.ts +5 -0
  281. package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.js +1 -0
  282. package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
  283. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  284. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -1
  285. package/dist/configurator/ui/index.d.ts +1 -0
  286. package/dist/configurator/ui/index.js +1 -1
  287. package/dist/configurator/ui/legacy/chat/MobileChat.js +1 -1
  288. package/dist/configurator/ui/legacy/layout/common/CommonTopNavigation.js +1 -1
  289. package/dist/configurator/ui/legacy/layout/common/ReactiveInterfaceLayout.js +1 -1
  290. package/dist/configurator/ui/legacy/layout/simple/SimpleSidebar.js +1 -1
  291. package/dist/configurator/ui/legacy/layout/simple/SimpleTopNavigation.js +1 -1
  292. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.js +1 -1
  293. package/dist/configurator/ui/legacy/layout/steps/StepsOwnerLayout.js +1 -1
  294. package/dist/configurator/ui/legacy/layout/steps/StepsSideBar.js +1 -1
  295. package/dist/configurator/ui/legacy/layout/tabs/TabsSidebar.js +1 -1
  296. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.d.ts +0 -7
  297. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.js +2 -2
  298. package/dist/configurator/ui/phoenix-layout-elements/header/common/back-button/use-go-back-action.js +1 -1
  299. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.js +1 -1
  300. package/dist/configurator/ui/phoenix-layout-elements/index.d.ts +8 -1
  301. package/dist/configurator/ui/phoenix-layout-elements/index.js +1 -1
  302. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/basic/use-basic-sidebar-footer.js +1 -1
  303. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/PreviousStepButton.js +1 -1
  304. package/dist/configurator/ui/preset-layout/CategoryPresetUi.js +1 -1
  305. package/dist/configurator/ui/preset-layout/PresetUi.d.ts +0 -2
  306. package/dist/configurator/ui/preset-layout/PresetUi.js +1 -1
  307. package/dist/configurator/ui/preset-layout/index.d.ts +6 -1
  308. package/dist/configurator/ui/preset-layout/index.js +1 -1
  309. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.js +1 -1
  310. package/dist/docs/3d-scene/cameras/custom.mdx +4 -2
  311. package/dist/docs/drag-and-drop/room-planner.mdx +1 -1
  312. package/dist/docs/index.json +95 -1
  313. package/dist/docs/integrations/webcomponent-api/basics.mdx +2 -0
  314. package/dist/docs/layouts/custom-layout.mdx +318 -158
  315. package/dist/docs/layouts/gallery/ardent-compressor.mdx +3516 -0
  316. package/dist/docs/layouts/gallery/corvid-drone.mdx +3428 -0
  317. package/dist/docs/layouts/gallery/fenwick-window.mdx +2803 -0
  318. package/dist/docs/layouts/gallery/ferrule-bar-station.mdx +6567 -0
  319. package/dist/docs/layouts/gallery/kestrel-kettle.mdx +1858 -0
  320. package/dist/docs/layouts/gallery/nightjar-guitar.mdx +3698 -0
  321. package/dist/docs/layouts/gallery/sunfold-solar.mdx +2683 -0
  322. package/dist/docs/layouts/gallery/tidepool-aquascape.mdx +5203 -0
  323. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  324. package/dist/docs/phoenix/configurator-interface.mdx +9 -7
  325. package/dist/docs/phoenix/domain-model.mdx +4 -1
  326. package/dist/docs/phoenix/layout-slots.mdx +21 -0
  327. package/dist/docs/phoenix/phoenix-cli.mdx +40 -7
  328. package/dist/docs/phoenix/project-structure.mdx +21 -17
  329. package/dist/docs/phoenix/sdk-builder-workflow.mdx +6 -4
  330. package/dist/docs/phoenix/sessions-and-access.mdx +2 -0
  331. package/dist/docs/phoenix/webhooks.mdx +5 -1
  332. package/dist/domain/application/application-config.d.ts +6 -24
  333. package/dist/domain/application/assistant/assistant-manifest.d.ts +29 -4
  334. package/dist/domain/application/assistant/assistant-manifest.js +1 -1
  335. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +12 -9
  336. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  337. package/dist/domain/application/assistant/build-assistant-lenses.js +1 -1
  338. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  339. package/dist/domain/application/assistant/form/assistant-form-element-name.d.ts +11 -0
  340. package/dist/domain/application/assistant/form/assistant-form-element-name.js +8 -0
  341. package/dist/domain/application/assistant/form/assistant-form-elements.d.ts +39 -28
  342. package/dist/domain/application/assistant/form/assistant-form-elements.js +1 -1
  343. package/dist/domain/application/assistant/form/index.d.ts +1 -1
  344. package/dist/domain/application/assistant/form/index.js +1 -1
  345. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +1 -1
  346. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  347. package/dist/domain/application/assistant/index.d.ts +3 -3
  348. package/dist/domain/application/assistant/index.js +1 -1
  349. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -1
  350. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +4 -4
  351. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -1
  352. package/dist/domain/application/assistant-mutations.js +1 -1
  353. package/dist/domain/application/configurator-builder.d.ts +7 -1
  354. package/dist/domain/application/configurator-builder.js +1 -1
  355. package/dist/domain/application/index.d.ts +1 -1
  356. package/dist/domain/application/index.js +1 -1
  357. package/dist/domain/application/standard-properties.js +1 -1
  358. package/dist/domain/application/web-component-property.d.ts +3 -1
  359. package/dist/domain/application/web-component-property.js +1 -1
  360. package/dist/domain/available-system-components/available-system-components.d.ts +11 -0
  361. package/dist/domain/available-system-components/available-system-components.js +1 -0
  362. package/dist/domain/available-system-components/index.d.ts +1 -0
  363. package/dist/domain/available-system-components/index.js +1 -0
  364. package/dist/domain/{domain-builder.d.ts → domain-builder/domain-builder.d.ts} +11 -5
  365. package/dist/domain/domain-builder/domain-builder.js +1 -0
  366. package/dist/domain/domain-builder/index.d.ts +1 -0
  367. package/dist/domain/domain-builder/index.js +1 -0
  368. package/dist/domain/domain-context/store-system/store-system.d.ts +5 -0
  369. package/dist/domain/domain-context/store-system/store-system.js +1 -1
  370. package/dist/domain/domain-runtime/application.d.ts +39 -0
  371. package/dist/domain/domain-runtime/application.js +1 -0
  372. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +1 -0
  373. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  374. package/dist/domain/domain-runtime/domain-runtime.d.ts +44 -4
  375. package/dist/domain/domain-runtime/domain-runtime.js +1 -1
  376. package/dist/domain/domain-runtime/environment/initialize.d.ts +1 -1
  377. package/dist/domain/domain-runtime/environment/types.d.ts +1 -1
  378. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +2 -0
  379. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -1
  380. package/dist/domain/domain-runtime/index.d.ts +2 -1
  381. package/dist/domain/domain-runtime/index.js +1 -1
  382. package/dist/domain/domain-runtime/spec/index.d.ts +1 -1
  383. package/dist/domain/domain-runtime/spec/index.js +1 -1
  384. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  385. package/dist/domain/domain-runtime/spec/module-checks/element-registration.d.ts +15 -1
  386. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -1
  387. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.d.ts +12 -0
  388. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.js +1 -0
  389. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +3 -1
  390. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -1
  391. package/dist/domain/domain-runtime/spec/module-checks/merge-expression-modules.d.ts +23 -0
  392. package/dist/domain/domain-runtime/spec/module-checks/merge-expression-modules.js +1 -0
  393. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.d.ts +3 -4
  394. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -1
  395. package/dist/domain/domain-runtime/spec/selectors.d.ts +3 -1
  396. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  397. package/dist/domain/domain-runtime/web-component/actions.d.ts +3 -0
  398. package/dist/domain/domain-runtime/web-component/actions.js +1 -1
  399. package/dist/domain/domain-runtime/web-component/initialize.d.ts +1 -0
  400. package/dist/domain/domain-runtime/web-component/initialize.js +1 -1
  401. package/dist/domain/domain-runtime/web-component/selectors.d.ts +2 -0
  402. package/dist/domain/domain-runtime/web-component/selectors.js +1 -1
  403. package/dist/domain/domain-runtime/web-component/types.d.ts +6 -3
  404. package/dist/domain/extensions/export-images/agent-screenshot.d.ts +24 -0
  405. package/dist/domain/extensions/export-images/agent-screenshot.js +1 -0
  406. package/dist/domain/extensions/{client-side-image.d.ts → export-images/client-side-image.d.ts} +2 -2
  407. package/dist/domain/extensions/export-images/client-side-image.js +1 -0
  408. package/dist/domain/extensions/export-images/index.d.ts +3 -0
  409. package/dist/domain/extensions/export-images/index.js +1 -0
  410. package/dist/domain/extensions/{save-template-thumbnail.d.ts → export-images/save-template-thumbnail.d.ts} +2 -2
  411. package/dist/domain/extensions/export-images/save-template-thumbnail.js +1 -0
  412. package/dist/domain/extensions/index.d.ts +1 -2
  413. package/dist/domain/extensions/index.js +1 -1
  414. package/dist/domain/index.d.ts +3 -2
  415. package/dist/domain/index.js +1 -1
  416. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +9 -0
  417. package/dist/domain/spec/application/admin-pages-section.d.ts +29 -0
  418. package/dist/domain/spec/application/admin-pages.d.ts +26 -0
  419. package/dist/domain/spec/application/admin-states.d.ts +5 -0
  420. package/dist/domain/spec/application/configurator-states.d.ts +8 -0
  421. package/dist/domain/spec/application/index.d.ts +5 -0
  422. package/dist/domain/spec/application/index.js +1 -0
  423. package/dist/domain/spec/components/bindings/index.d.ts +2 -0
  424. package/dist/domain/spec/components/bindings/read-binding.d.ts +13 -0
  425. package/dist/domain/spec/components/bindings/write-binding.d.ts +32 -0
  426. package/dist/domain/spec/components/bindings/write-binding.js +1 -0
  427. package/dist/{application-spec/parse-application-files → domain}/spec/components/component-entry.d.ts +3 -3
  428. package/dist/domain/spec/components/component-entry.js +1 -0
  429. package/dist/{application-spec/core → domain/spec}/components/component-filter.d.ts +3 -2
  430. package/dist/domain/spec/components/component-filters.d.ts +10 -0
  431. package/dist/domain/spec/components/component-filters.js +1 -0
  432. package/dist/domain/spec/components/components.d.ts +4 -0
  433. package/dist/domain/spec/components/components.js +1 -0
  434. package/dist/domain/spec/components/index.d.ts +6 -0
  435. package/dist/domain/spec/enhanced-json/enhanced-json-value.d.ts +30 -0
  436. package/dist/domain/spec/enhanced-json/enhanced-json-value.js +1 -0
  437. package/dist/domain/spec/enhanced-json/index.d.ts +1 -0
  438. package/dist/domain/spec/enhanced-json/index.js +1 -0
  439. package/dist/{application-spec/parse-application-files → domain}/spec/expressions/expression.d.ts +9 -3
  440. package/dist/domain/spec/expressions/expression.js +1 -0
  441. package/dist/domain/spec/expressions/expressions.d.ts +27 -0
  442. package/dist/domain/spec/expressions/expressions.js +1 -0
  443. package/dist/domain/spec/expressions/index.d.ts +5 -0
  444. package/dist/domain/spec/expressions/memo-eval-plan.d.ts +70 -0
  445. package/dist/domain/spec/expressions/memo-eval-plan.js +1 -0
  446. package/dist/domain/spec/expressions/relation-expression-params.js +1 -0
  447. package/dist/domain/spec/index.d.ts +9 -0
  448. package/dist/domain/spec/index.js +1 -0
  449. package/dist/domain/spec/invariants/index.d.ts +2 -0
  450. package/dist/domain/spec/invariants/index.js +1 -0
  451. package/dist/domain/spec/invariants/invariant.d.ts +24 -0
  452. package/dist/domain/spec/invariants/invariant.js +1 -0
  453. package/dist/domain/spec/invariants/invariants.d.ts +14 -0
  454. package/dist/domain/spec/invariants/invariants.js +1 -0
  455. package/dist/domain/spec/json-schema.d.ts +52 -0
  456. package/dist/domain/spec/json-schema.js +1 -0
  457. package/dist/domain/spec/markers/index.d.ts +3 -0
  458. package/dist/domain/spec/markers/index.js +1 -0
  459. package/dist/domain/spec/markers/msg-marker.d.ts +28 -0
  460. package/dist/domain/spec/markers/msg-marker.js +1 -0
  461. package/dist/domain/spec/model/aliases.d.ts +9 -0
  462. package/dist/domain/spec/model/aliases.js +1 -0
  463. package/dist/domain/spec/model/common-types.d.ts +15 -0
  464. package/dist/domain/spec/model/common-types.js +1 -0
  465. package/dist/domain/spec/model/defaults.d.ts +33 -0
  466. package/dist/domain/spec/model/defaults.js +1 -0
  467. package/dist/domain/spec/model/entity-types.d.ts +8 -0
  468. package/dist/domain/spec/model/entity-types.js +1 -0
  469. package/dist/domain/spec/model/index.d.ts +7 -0
  470. package/dist/domain/spec/model/index.js +1 -0
  471. package/dist/domain/spec/model/model-version-key.d.ts +3 -0
  472. package/dist/domain/spec/model/model-version-key.js +1 -0
  473. package/dist/domain/spec/model/names/action-name.d.ts +7 -0
  474. package/dist/domain/spec/model/names/action-name.js +1 -0
  475. package/dist/domain/spec/model/names/alias-name.d.ts +7 -0
  476. package/dist/domain/spec/model/names/alias-name.js +1 -0
  477. package/dist/domain/spec/model/names/entity-or-alias-name.d.ts +8 -0
  478. package/dist/domain/spec/model/names/entity-or-alias-name.js +1 -0
  479. package/dist/domain/spec/model/names/entity-type-name.d.ts +8 -0
  480. package/dist/domain/spec/model/names/entity-type-name.js +1 -0
  481. package/dist/domain/spec/model/names/expression-name.d.ts +6 -0
  482. package/dist/domain/spec/model/names/expression-name.js +1 -0
  483. package/dist/domain/spec/model/names/index.d.ts +9 -0
  484. package/dist/domain/spec/model/names/index.js +1 -0
  485. package/dist/domain/spec/model/names/instance-name.d.ts +7 -0
  486. package/dist/domain/spec/model/names/instance-name.js +1 -0
  487. package/dist/domain/spec/model/names/invariant-name.d.ts +3 -0
  488. package/dist/domain/spec/model/names/invariant-name.js +1 -0
  489. package/dist/domain/spec/model/names/shape-property-name.d.ts +11 -0
  490. package/dist/domain/spec/model/names/shape-property-name.js +1 -0
  491. package/dist/domain/spec/model/names/violation-type-name.d.ts +3 -0
  492. package/dist/domain/spec/model/names/violation-type-name.js +1 -0
  493. package/dist/domain/spec/model/presets.d.ts +30 -0
  494. package/dist/domain/spec/model/presets.js +1 -0
  495. package/dist/domain/spec/sections/actions.d.ts +23 -0
  496. package/dist/domain/spec/sections/actions.js +1 -0
  497. package/dist/domain/spec/sections/app-metadata.d.ts +18 -0
  498. package/dist/domain/spec/sections/app-metadata.js +1 -0
  499. package/dist/domain/spec/sections/application-version.d.ts +7 -0
  500. package/dist/domain/spec/sections/application-version.js +1 -0
  501. package/dist/domain/spec/sections/data-spec/chunks.d.ts +23 -0
  502. package/dist/domain/spec/sections/data-spec/chunks.js +1 -0
  503. package/dist/domain/spec/sections/data-spec/custom-data-spec-entry.d.ts +16 -0
  504. package/dist/domain/spec/sections/data-spec/custom-data-spec-entry.js +1 -0
  505. package/dist/domain/spec/sections/data-spec/data-entry-key.d.ts +9 -0
  506. package/dist/domain/spec/sections/data-spec/data-entry-key.js +1 -0
  507. package/dist/domain/spec/sections/data-spec/index.d.ts +5 -0
  508. package/dist/domain/spec/sections/data-spec/index.js +1 -0
  509. package/dist/domain/spec/sections/data-spec/parsed-data-spec-entries.d.ts +10 -0
  510. package/dist/domain/spec/sections/data-spec/parsed-data-spec-entries.js +1 -0
  511. package/dist/domain/spec/sections/data-spec/swatch-data-spec-entry.d.ts +14 -0
  512. package/dist/domain/spec/sections/data-spec/swatch-data-spec-entry.js +1 -0
  513. package/dist/domain/spec/sections/index.d.ts +9 -0
  514. package/dist/domain/spec/sections/index.js +1 -0
  515. package/dist/domain/spec/sections/infra/acl.d.ts +12 -0
  516. package/dist/domain/spec/sections/infra/acl.js +1 -0
  517. package/dist/domain/spec/sections/infra/index.d.ts +3 -0
  518. package/dist/domain/spec/sections/infra/index.js +1 -0
  519. package/dist/domain/spec/sections/infra/resource-entry.d.ts +46 -0
  520. package/dist/domain/spec/sections/infra/resource-entry.js +1 -0
  521. package/dist/domain/spec/sections/infra/resources-config.d.ts +10 -0
  522. package/dist/domain/spec/sections/infra/resources-config.js +1 -0
  523. package/dist/domain/spec/sections/state-value.d.ts +7 -0
  524. package/dist/domain/spec/sections/state-value.js +1 -0
  525. package/dist/domain/spec/sections/theme.d.ts +10 -0
  526. package/dist/domain/spec/sections/theme.js +1 -0
  527. package/dist/domain/spec/sections/transformers.d.ts +15 -0
  528. package/dist/domain/spec/sections/transformers.js +1 -0
  529. package/dist/domain/spec/sections/ui.d.ts +12 -0
  530. package/dist/domain/spec/sections/ui.js +1 -0
  531. package/dist/domain/system-definitions.js +1 -1
  532. package/dist/domain/utils/index.d.ts +2 -0
  533. package/dist/domain/utils/index.js +1 -0
  534. package/dist/editor/domain-editors/DomainSpecContext.js +1 -1
  535. package/dist/editor/domain-editors/apply-spec-update.d.ts +10 -2
  536. package/dist/editor/domain-editors/apply-spec-update.js +1 -1
  537. package/dist/editor/domain-editors/use-implementation-files.d.ts +6 -14
  538. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  539. package/dist/editor/graphql/GraphQLPanel.js +1 -1
  540. package/dist/editor/screenshot/ScreenshotHandler.js +1 -1
  541. package/dist/i18n/locales/cs/messages.js +1 -1
  542. package/dist/i18n/locales/da/messages.js +1 -1
  543. package/dist/i18n/locales/de/messages.js +1 -1
  544. package/dist/i18n/locales/de-AT/messages.js +1 -1
  545. package/dist/i18n/locales/en/messages.js +1 -1
  546. package/dist/i18n/locales/en-AU/messages.js +1 -1
  547. package/dist/i18n/locales/en-GB/messages.js +1 -1
  548. package/dist/i18n/locales/es/messages.js +1 -1
  549. package/dist/i18n/locales/fr/messages.js +1 -1
  550. package/dist/i18n/locales/hu/messages.js +1 -1
  551. package/dist/i18n/locales/it/messages.js +1 -1
  552. package/dist/i18n/locales/nl/messages.js +1 -1
  553. package/dist/i18n/locales/pl/messages.js +1 -1
  554. package/dist/i18n/locales/pt/messages.js +1 -1
  555. package/dist/i18n/locales/ro/messages.js +1 -1
  556. package/dist/i18n/locales/sk/messages.js +1 -1
  557. package/dist/i18n/locales/tr/messages.js +1 -1
  558. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  559. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  560. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +16 -0
  561. package/dist/legacy/domain-spec/spec/domain-spec.js +1 -1
  562. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  563. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  564. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  565. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +11 -5
  566. package/dist/phoenix/application-spec/generate-application-spec-project.d.ts +1 -0
  567. package/dist/phoenix/application-spec/generate-application-spec-project.js +2 -2
  568. package/dist/phoenix/application-spec/generate-project-files.d.ts +1 -0
  569. package/dist/phoenix/application-spec/index.d.ts +1 -0
  570. package/dist/phoenix/application-spec/index.js +1 -1
  571. package/dist/phoenix/application-spec/resolve-deployment-data.d.ts +11 -0
  572. package/dist/phoenix/application-spec/resolve-deployment-data.js +2 -2
  573. package/dist/phoenix/bin.js +1 -1
  574. package/dist/phoenix/cli.js +1 -1
  575. package/dist/phoenix/commands/activate-deployment.js +1 -1
  576. package/dist/phoenix/commands/build.js +1 -1
  577. package/dist/phoenix/commands/changelog.js +1 -1
  578. package/dist/phoenix/commands/check.js +1 -1
  579. package/dist/phoenix/commands/clean.js +1 -1
  580. package/dist/phoenix/commands/cleanup-environment.js +2 -2
  581. package/dist/phoenix/commands/create-environment.js +1 -1
  582. package/dist/phoenix/commands/data.js +1 -1
  583. package/dist/phoenix/commands/deploy.js +1 -1
  584. package/dist/phoenix/commands/deployment-build-envs-command.js +1 -1
  585. package/dist/phoenix/commands/dev.js +5 -5
  586. package/dist/phoenix/commands/docs.js +1 -1
  587. package/dist/phoenix/commands/finish-deployment-command.js +1 -1
  588. package/dist/phoenix/commands/fix.js +1 -1
  589. package/dist/phoenix/commands/generated-env-markers.d.ts +1 -0
  590. package/dist/phoenix/commands/generated-env-markers.js +1 -1
  591. package/dist/phoenix/commands/index.d.ts +1 -1
  592. package/dist/phoenix/commands/index.js +1 -1
  593. package/dist/phoenix/commands/inspect-assets.js +1 -1
  594. package/dist/phoenix/commands/list-environments.js +1 -1
  595. package/dist/phoenix/commands/login.d.ts +4 -1
  596. package/dist/phoenix/commands/login.js +2 -2
  597. package/dist/phoenix/commands/prepare-deployment-command.js +2 -2
  598. package/dist/phoenix/commands/register-deployment.js +1 -1
  599. package/dist/phoenix/commands/scene.js +1 -1
  600. package/dist/phoenix/commands/screenshot.js +1 -1
  601. package/dist/phoenix/commands/state.js +1 -1
  602. package/dist/phoenix/commands/story-build.js +3 -3
  603. package/dist/phoenix/commands/story-create.js +1 -1
  604. package/dist/phoenix/commands/sync.js +1 -1
  605. package/dist/phoenix/commands/variants.js +1 -1
  606. package/dist/phoenix/lingui/index.d.ts +1 -0
  607. package/dist/phoenix/lingui/index.js +1 -0
  608. package/dist/phoenix/{services → lingui}/lingui.d.ts +5 -2
  609. package/dist/phoenix/lingui/lingui.js +1 -0
  610. package/dist/phoenix/services/application-spec-project-watcher.d.ts +3 -1
  611. package/dist/phoenix/services/application-spec-project-watcher.js +2 -2
  612. package/dist/phoenix/services/cli-credentials.d.ts +3 -0
  613. package/dist/phoenix/services/cli-credentials.js +1 -1
  614. package/dist/phoenix/services/cli-exit.d.ts +5 -0
  615. package/dist/phoenix/services/cli-exit.js +1 -0
  616. package/dist/phoenix/services/index.d.ts +3 -0
  617. package/dist/phoenix/services/index.js +1 -1
  618. package/dist/phoenix/services/lingui-watcher.js +1 -1
  619. package/dist/phoenix/services/prepare-development-environment.js +1 -1
  620. package/dist/phoenix/services/telemetry/amplitude-telemetry-transport.d.ts +9 -0
  621. package/dist/phoenix/services/telemetry/amplitude-telemetry-transport.js +1 -0
  622. package/dist/phoenix/services/telemetry/index.d.ts +3 -0
  623. package/dist/phoenix/services/telemetry/index.js +1 -0
  624. package/dist/phoenix/services/telemetry/telemetry-client.d.ts +25 -0
  625. package/dist/phoenix/services/telemetry/telemetry-client.js +1 -0
  626. package/dist/phoenix/services/telemetry/telemetry-command.d.ts +2 -0
  627. package/dist/phoenix/services/telemetry/telemetry-command.js +1 -0
  628. package/dist/phoenix/services/telemetry/telemetry-event.d.ts +44 -0
  629. package/dist/phoenix/services/telemetry/telemetry-event.js +1 -0
  630. package/dist/phoenix/services/telemetry/telemetry-state.d.ts +25 -0
  631. package/dist/phoenix/services/telemetry/telemetry-state.js +2 -0
  632. package/dist/phoenix/services/vite-config.js +1 -1
  633. package/dist/react-sdk/application-runtime/common-services/analytics/analytics-service.d.ts +1 -1
  634. package/dist/react-sdk/application-runtime/common-services/initialize.d.ts +2 -2
  635. package/dist/react-sdk/application-runtime/domain-application-context/chat-system.d.ts +1 -1
  636. package/dist/react-sdk/application-runtime/hooks/index.d.ts +2 -0
  637. package/dist/react-sdk/application-runtime/hooks/index.js +1 -1
  638. package/dist/react-sdk/application-runtime/hooks/loading/index.d.ts +5 -0
  639. package/dist/react-sdk/application-runtime/hooks/loading/index.js +1 -0
  640. package/dist/react-sdk/application-runtime/hooks/loading/loader-host-context.d.ts +11 -0
  641. package/dist/react-sdk/application-runtime/hooks/loading/loader-host-context.js +1 -0
  642. package/dist/react-sdk/application-runtime/hooks/loading/use-is-awaiting-loading-phase.d.ts +8 -0
  643. package/dist/react-sdk/application-runtime/hooks/loading/use-is-awaiting-loading-phase.js +1 -0
  644. package/dist/react-sdk/application-runtime/hooks/loading/use-is-loader-hosted.d.ts +7 -0
  645. package/dist/react-sdk/application-runtime/hooks/loading/use-is-loader-hosted.js +1 -0
  646. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-actions.d.ts +9 -0
  647. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-actions.js +1 -0
  648. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-application.d.ts +24 -0
  649. package/dist/react-sdk/application-runtime/hooks/loading/use-loading-application.js +1 -0
  650. package/dist/react-sdk/application-runtime/hooks/responsive/index.d.ts +3 -0
  651. package/dist/react-sdk/application-runtime/hooks/responsive/index.js +1 -0
  652. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.d.ts +9 -0
  653. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.js +1 -0
  654. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.d.ts +26 -0
  655. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.js +1 -0
  656. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.d.ts +10 -0
  657. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.js +1 -0
  658. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.d.ts +24 -0
  659. package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.js +1 -0
  660. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +5 -0
  661. package/dist/react-sdk/application-runtime/hooks/use-access-service.js +1 -1
  662. package/dist/react-sdk/application-runtime/hooks/use-phoenix-element-slots.d.ts +2 -1
  663. package/dist/react-sdk/application-runtime/hooks/use-web-component-readonly-sync.d.ts +4 -11
  664. package/dist/react-sdk/application-runtime/hooks/use-web-component-readonly-sync.js +1 -1
  665. package/dist/react-sdk/application-runtime/hooks/use-web-component.d.ts +5 -0
  666. package/dist/react-sdk/application-runtime/hooks/use-web-component.js +1 -1
  667. package/dist/react-sdk/application-runtime/host-properties/actions.d.ts +15 -0
  668. package/dist/react-sdk/application-runtime/host-properties/actions.js +1 -0
  669. package/dist/react-sdk/application-runtime/host-properties/connect-host-properties.d.ts +30 -0
  670. package/dist/react-sdk/application-runtime/host-properties/connect-host-properties.js +1 -0
  671. package/dist/react-sdk/application-runtime/host-properties/domain-host-properties.d.ts +7 -0
  672. package/dist/react-sdk/application-runtime/host-properties/domain-host-properties.js +1 -0
  673. package/dist/react-sdk/application-runtime/host-properties/host-property-descriptors.d.ts +21 -0
  674. package/dist/react-sdk/application-runtime/host-properties/host-property-descriptors.js +1 -0
  675. package/dist/react-sdk/application-runtime/host-properties/host-property-scopes.d.ts +42 -0
  676. package/dist/react-sdk/application-runtime/host-properties/host-property-scopes.js +1 -0
  677. package/dist/react-sdk/application-runtime/host-properties/index.d.ts +8 -0
  678. package/dist/react-sdk/application-runtime/host-properties/index.js +1 -0
  679. package/dist/react-sdk/application-runtime/host-properties/initialize.d.ts +7 -0
  680. package/dist/react-sdk/application-runtime/host-properties/initialize.js +1 -0
  681. package/dist/react-sdk/application-runtime/host-properties/selectors.d.ts +54 -0
  682. package/dist/react-sdk/application-runtime/host-properties/selectors.js +1 -0
  683. package/dist/react-sdk/application-runtime/host-properties/types.d.ts +18 -0
  684. package/dist/react-sdk/application-runtime/host-properties/types.js +1 -0
  685. package/dist/react-sdk/application-runtime/index.d.ts +3 -0
  686. package/dist/react-sdk/application-runtime/integration/initialize.d.ts +7 -6
  687. package/dist/react-sdk/application-runtime/integration/initialize.js +1 -1
  688. package/dist/react-sdk/application-runtime/integration/selectors.d.ts +11 -2
  689. package/dist/react-sdk/application-runtime/integration/selectors.js +1 -1
  690. package/dist/react-sdk/application-runtime/integration/types.d.ts +5 -2
  691. package/dist/react-sdk/application-runtime/loading/actions.d.ts +45 -0
  692. package/dist/react-sdk/application-runtime/loading/actions.js +1 -0
  693. package/dist/react-sdk/application-runtime/loading/index.d.ts +4 -0
  694. package/dist/react-sdk/application-runtime/loading/index.js +1 -0
  695. package/dist/react-sdk/application-runtime/loading/initialize.d.ts +3 -0
  696. package/dist/react-sdk/application-runtime/loading/initialize.js +1 -0
  697. package/dist/react-sdk/application-runtime/loading/selectors.d.ts +18 -0
  698. package/dist/react-sdk/application-runtime/loading/selectors.js +1 -0
  699. package/dist/react-sdk/application-runtime/loading/types.d.ts +59 -0
  700. package/dist/react-sdk/application-runtime/loading/types.js +1 -0
  701. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  702. package/dist/react-sdk/application-runtime/provider/ApplicationRuntime.d.ts +6 -0
  703. package/dist/react-sdk/application-runtime/provider/ApplicationRuntime.js +1 -1
  704. package/dist/react-sdk/application-runtime/provider/ApplicationType.d.ts +7 -0
  705. package/dist/react-sdk/application-runtime/provider/ApplicationType.js +1 -1
  706. package/dist/react-sdk/application-runtime/responsive/actions.d.ts +47 -0
  707. package/dist/react-sdk/application-runtime/responsive/actions.js +1 -0
  708. package/dist/react-sdk/application-runtime/responsive/index.d.ts +4 -0
  709. package/dist/react-sdk/application-runtime/responsive/index.js +1 -0
  710. package/dist/react-sdk/application-runtime/responsive/initialize.d.ts +3 -0
  711. package/dist/react-sdk/application-runtime/responsive/initialize.js +1 -0
  712. package/dist/react-sdk/application-runtime/responsive/selectors.d.ts +20 -0
  713. package/dist/react-sdk/application-runtime/responsive/selectors.js +1 -0
  714. package/dist/react-sdk/application-runtime/responsive/types.d.ts +104 -0
  715. package/dist/react-sdk/application-runtime/responsive/types.js +1 -0
  716. package/dist/react-sdk/application-runtime/routing/routing-service.d.ts +34 -2
  717. package/dist/react-sdk/application-runtime/routing/routing-service.js +1 -1
  718. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +313 -10
  719. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  720. package/dist/{configurator/configurator-context → react-sdk}/configurator-routing/ConfiguratorRoutingProvider.d.ts +1 -1
  721. package/dist/react-sdk/configurator-routing/ConfiguratorRoutingProvider.js +1 -0
  722. package/dist/{configurator/configurator-context → react-sdk}/configurator-routing/OnGoToIndexHandler.d.ts +1 -2
  723. package/dist/react-sdk/configurator-routing/OnGoToIndexHandler.js +1 -0
  724. package/dist/react-sdk/configurator-routing/index.d.ts +3 -0
  725. package/dist/{configurator/configurator-context → react-sdk}/configurator-routing/index.js +1 -1
  726. package/dist/{configurator/configurator-context → react-sdk}/configurator-routing/use-power-routing-lifecycle.d.ts +2 -0
  727. package/dist/react-sdk/configurator-routing/use-power-routing-lifecycle.js +1 -0
  728. package/dist/react-sdk/domain-application-context/BackendDataProvider.js +1 -1
  729. package/dist/react-sdk/domain-application-context/ConfigurationPersistSystemFailureHandler.js +1 -1
  730. package/dist/react-sdk/domain-application-context/FrontendDataProvider.js +1 -1
  731. package/dist/react-sdk/domain-application-context/OnPresetLoadedHandler.js +1 -0
  732. package/dist/react-sdk/domain-application-context/PublishedDataProvider.js +1 -1
  733. package/dist/react-sdk/domain-application-context/chat-hooks.d.ts +4 -0
  734. package/dist/react-sdk/domain-application-context/chat-hooks.js +1 -0
  735. package/dist/react-sdk/domain-application-context/index.d.ts +2 -0
  736. package/dist/react-sdk/domain-application-context/index.js +1 -1
  737. package/dist/react-sdk/domain-context/common-hooks/index.d.ts +1 -0
  738. package/dist/react-sdk/domain-context/common-hooks/index.js +1 -1
  739. package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.d.ts +23 -0
  740. package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.js +1 -0
  741. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +1 -0
  742. package/dist/react-sdk/domain-context/index.d.ts +1 -0
  743. package/dist/react-sdk/domain-context/index.js +1 -1
  744. package/dist/react-sdk/elements/index.d.ts +0 -1
  745. package/dist/react-sdk/index.d.ts +6 -1
  746. package/dist/react-sdk/index.js +1 -1
  747. package/dist/react-sdk/integration/IntegrationSubscription.js +1 -0
  748. package/dist/react-sdk/integration/index.d.ts +1 -0
  749. package/dist/react-sdk/integration/index.js +1 -0
  750. package/dist/react-sdk/lifecycle-providers/ConfiguratorDataProvider.d.ts +8 -0
  751. package/dist/react-sdk/lifecycle-providers/ConfiguratorDataProvider.js +1 -0
  752. package/dist/react-sdk/lifecycle-providers/LifecycleProviders.js +1 -0
  753. package/dist/react-sdk/lifecycle-providers/index.d.ts +2 -0
  754. package/dist/react-sdk/lifecycle-providers/index.js +1 -0
  755. package/dist/react-sdk/loading-state/LoaderHost.d.ts +20 -0
  756. package/dist/react-sdk/loading-state/LoaderHost.js +1 -0
  757. package/dist/react-sdk/loading-state/built-in-loading-phase.d.ts +9 -0
  758. package/dist/react-sdk/loading-state/built-in-loading-phase.js +1 -0
  759. package/dist/react-sdk/loading-state/create-app-loader.d.ts +18 -0
  760. package/dist/react-sdk/loading-state/create-app-loader.js +1 -0
  761. package/dist/react-sdk/loading-state/index.d.ts +4 -2
  762. package/dist/react-sdk/loading-state/index.js +1 -1
  763. package/dist/react-sdk/loading-state/{LoadingStateProvider.d.ts → loading-state-hooks.d.ts} +3 -12
  764. package/dist/react-sdk/loading-state/loading-state-hooks.js +1 -0
  765. package/dist/react-sdk/notifications/index.d.ts +1 -0
  766. package/dist/react-sdk/notifications/index.js +1 -0
  767. package/dist/react-sdk/notifications/snackbar-action-button.d.ts +30 -0
  768. package/dist/react-sdk/notifications/snackbar-action-button.js +1 -0
  769. package/dist/react-sdk/page-elements/ConfigurationNotFoundPagePropsProvider.d.ts +17 -0
  770. package/dist/react-sdk/page-elements/ConfigurationNotFoundPagePropsProvider.js +1 -0
  771. package/dist/react-sdk/page-elements/ConfiguratorErrorPagePropsProvider.d.ts +17 -0
  772. package/dist/react-sdk/page-elements/ConfiguratorErrorPagePropsProvider.js +1 -0
  773. package/dist/react-sdk/page-elements/configurator-error-page-props.js +1 -0
  774. package/dist/{configurator/configuration-not-found-page → react-sdk/page-elements}/create-configuration-not-found-page.d.ts +7 -1
  775. package/dist/react-sdk/page-elements/create-configuration-not-found-page.js +1 -0
  776. package/dist/{configurator/configurator-error-page → react-sdk/page-elements}/create-configurator-error-page.d.ts +6 -1
  777. package/dist/react-sdk/page-elements/create-configurator-error-page.js +1 -0
  778. package/dist/react-sdk/page-elements/create-preset-ui.d.ts +9 -0
  779. package/dist/react-sdk/page-elements/create-preset-ui.js +1 -0
  780. package/dist/react-sdk/page-elements/index.d.ts +6 -0
  781. package/dist/react-sdk/page-elements/index.js +1 -0
  782. package/dist/react-sdk/preset-selection/PresetSelectionProvider.js +1 -0
  783. package/dist/react-sdk/preset-selection/index.d.ts +1 -0
  784. package/dist/react-sdk/preset-selection/index.js +1 -0
  785. package/dist/react-sdk/session/SessionServiceProvider.js +1 -1
  786. package/dist/react-sdk/web-component/create-web-component.js +1 -1
  787. package/dist/react-sdk/web-component/god-mode/god-mode-registry.d.ts +30 -0
  788. package/dist/react-sdk/web-component/god-mode/god-mode-registry.js +1 -0
  789. package/dist/react-sdk/web-component/god-mode/index.d.ts +1 -0
  790. package/dist/react-sdk/web-component/god-mode/index.js +1 -0
  791. package/dist/ui-sdk/components/snackbar/Snackbar.d.ts +24 -3
  792. package/dist/ui-sdk/components/snackbar/Snackbar.js +1 -1
  793. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.d.ts +2 -2
  794. package/dist/ui-sdk/responsive-application/responsive-state-store.d.ts +11 -9
  795. package/dist/ui-sdk/responsive-application/use-store-responsive-info.js +1 -1
  796. package/dist/ui-sdk/theme/types.d.ts +5 -1
  797. package/dist/watch/glob-matcher.d.ts +4 -4
  798. package/dist/watch/glob-matcher.js +1 -1
  799. package/dist/watch/watch.d.ts +4 -4
  800. package/dist/watch/watch.js +1 -1
  801. package/package.json +13 -3
  802. package/schema/domain-spec.json +140 -0
  803. package/dist/application-spec/core/components/index.d.ts +0 -2
  804. package/dist/application-spec/core/expressions/index.d.ts +0 -2
  805. package/dist/configurator/app-loader-content/app-loader-content-name.d.ts +0 -5
  806. package/dist/configurator/app-loader-content/app-loader-content-name.js +0 -1
  807. package/dist/configurator/configuration-not-found-page/create-configuration-not-found-page.js +0 -1
  808. package/dist/configurator/configurator-context/ConfiguratorDataProvider.d.ts +0 -2
  809. package/dist/configurator/configurator-context/ConfiguratorDataProvider.js +0 -1
  810. package/dist/configurator/configurator-context/IntegrationSubscription.js +0 -1
  811. package/dist/configurator/configurator-context/LifecycleProviders.js +0 -1
  812. package/dist/configurator/configurator-context/OnPresetLoadedHandler.js +0 -1
  813. package/dist/configurator/configurator-context/PresetSelectionProvider.js +0 -1
  814. package/dist/configurator/configurator-context/configurator-hooks/chat-hooks.d.ts +0 -1
  815. package/dist/configurator/configurator-context/configurator-hooks/chat-hooks.js +0 -1
  816. package/dist/configurator/configurator-context/configurator-routing/ConfiguratorRoutingProvider.js +0 -1
  817. package/dist/configurator/configurator-context/configurator-routing/OnGoToIndexHandler.js +0 -1
  818. package/dist/configurator/configurator-context/configurator-routing/index.d.ts +0 -2
  819. package/dist/configurator/configurator-context/configurator-routing/use-power-routing-lifecycle.js +0 -1
  820. package/dist/configurator/configurator-error-page/create-configurator-error-page.js +0 -1
  821. package/dist/configurator/ui/assistant/form/built-in-form-registry.d.ts +0 -10
  822. package/dist/configurator/ui/assistant/form/built-in-form-registry.js +0 -1
  823. package/dist/configurator/ui/assistant/form/form-registry.js +0 -8
  824. package/dist/domain/application/assistant/form/get-assistant-form-value-attribute.d.ts +0 -6
  825. package/dist/domain/application/assistant/form/get-assistant-form-value-attribute.js +0 -1
  826. package/dist/domain/available-system-components.d.ts +0 -11
  827. package/dist/domain/available-system-components.js +0 -1
  828. package/dist/domain/domain-builder.js +0 -1
  829. package/dist/domain/extensions/client-side-image.js +0 -1
  830. package/dist/domain/extensions/save-template-thumbnail.js +0 -1
  831. package/dist/phoenix/services/lingui.js +0 -1
  832. package/dist/react-sdk/application-runtime/runtime/god-mode.d.ts +0 -19
  833. package/dist/react-sdk/application-runtime/runtime/god-mode.js +0 -1
  834. package/dist/react-sdk/loading-state/LoadingStateProvider.js +0 -1
  835. package/dist/react-sdk/loading-state/loading-state-manager.d.ts +0 -37
  836. package/dist/react-sdk/loading-state/loading-state-manager.js +0 -1
  837. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.d.ts +0 -25
  838. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.js +0 -1
  839. package/dist/react-sdk/responsive-state/canvas-padding.d.ts +0 -14
  840. package/dist/react-sdk/responsive-state/index.d.ts +0 -5
  841. package/dist/react-sdk/responsive-state/index.js +0 -1
  842. package/dist/react-sdk/responsive-state/responsive-state-manager.d.ts +0 -111
  843. package/dist/react-sdk/responsive-state/responsive-state-manager.js +0 -1
  844. package/dist/react-sdk/responsive-state/use-responsive-state-manager.d.ts +0 -10
  845. package/dist/react-sdk/responsive-state/use-responsive-state-manager.js +0 -1
  846. package/dist/react-sdk/responsive-state/use-responsive-state.d.ts +0 -11
  847. package/dist/react-sdk/responsive-state/use-responsive-state.js +0 -1
  848. /package/dist/{application-spec/core/expressions/relation-expression-params.js → domain/spec/application/admin-pages-section.js} +0 -0
  849. /package/dist/{application-spec/parse-application-files/spec/components/component-entry.js → domain/spec/application/admin-pages.js} +0 -0
  850. /package/dist/{application-spec/parse-application-files/spec/expressions/expression.js → domain/spec/application/admin-states.js} +0 -0
  851. /package/dist/{application-spec/core → domain/spec/application}/application-instance.d.ts +0 -0
  852. /package/dist/{application-spec/core → domain/spec/application}/application-instance.js +0 -0
  853. /package/dist/{configurator/ui/assistant/form/form-element-definition.js → domain/spec/application/configurator-states.js} +0 -0
  854. /package/dist/{react-sdk/elements/configurator-error-page-props.js → domain/spec/components/bindings/index.js} +0 -0
  855. /package/dist/{react-sdk/responsive-state/canvas-padding.js → domain/spec/components/bindings/read-binding.js} +0 -0
  856. /package/dist/{application-spec/core → domain/spec}/components/component-filter.js +0 -0
  857. /package/dist/{application-spec/core → domain/spec}/components/index.js +0 -0
  858. /package/dist/{application-spec/core → domain/spec}/components/sdk-code-ref.d.ts +0 -0
  859. /package/dist/{application-spec/core → domain/spec}/components/sdk-code-ref.js +0 -0
  860. /package/dist/{application-spec/core → domain/spec}/expressions/index.js +0 -0
  861. /package/dist/{application-spec/core → domain/spec}/expressions/relation-expression-params.d.ts +0 -0
  862. /package/dist/{application-spec/core → domain/spec}/expressions/sdk-expression-implementation.d.ts +0 -0
  863. /package/dist/{application-spec/core → domain/spec}/expressions/sdk-expression-implementation.js +0 -0
  864. /package/dist/{application-spec/parse-application-files/spec/components → domain/spec/markers}/component-prop-target.d.ts +0 -0
  865. /package/dist/{application-spec/parse-application-files/spec/components → domain/spec/markers}/component-prop-target.js +0 -0
  866. /package/dist/{application-spec/core → domain/spec}/markers/eval-marker.d.ts +0 -0
  867. /package/dist/{application-spec/core → domain/spec}/markers/eval-marker.js +0 -0
  868. /package/dist/{configurator/configurator-context → react-sdk/domain-application-context}/OnPresetLoadedHandler.d.ts +0 -0
  869. /package/dist/{configurator/configurator-context → react-sdk/integration}/IntegrationSubscription.d.ts +0 -0
  870. /package/dist/{configurator/configurator-context → react-sdk/lifecycle-providers}/LifecycleProviders.d.ts +0 -0
  871. /package/dist/react-sdk/{elements → page-elements}/configurator-error-page-props.d.ts +0 -0
  872. /package/dist/{configurator/configurator-context → react-sdk/preset-selection}/PresetSelectionProvider.d.ts +0 -0
@@ -1,15 +1,36 @@
1
1
  import { type ExecutionResult } from 'graphql';
2
2
  import { type Localizable } from '@salsita-ai/common/utils';
3
- import { type $DomainEntity, type DomainContextSelectors, type DomainEntity, type DomainServicesSelectors, type DomainState, type SessionAssistantSetup, type SpecSelectors, type StateUpdateEmission } from '#package/domain';
3
+ import { type $DomainEntity, type AgentScreenshotComponent, type ComponentSnapshot, type DomainContextSelectors, type DomainEntity, type DomainServicesSelectors, type DomainState, type InitializationGeneration, type SessionAssistantSetup, type SpecSelectors, type StateUpdateEmission } from '#package/domain';
4
+ import { type AssistantWarning } from './violations.js';
4
5
  /** One single-operation GraphQL document with its own variables, as executed by {@link GraphQLSystem}. */
5
6
  export interface GraphQLOperation {
6
7
  readonly document: string;
7
8
  readonly variables?: Readonly<Record<string, unknown>>;
8
9
  readonly operationName?: string;
9
10
  }
11
+ /** A screenshot an operation took, under the label its `image` field returned. */
12
+ export interface GraphQLScreenshot {
13
+ readonly entityId: string;
14
+ readonly view: string;
15
+ /** The id the server stored the picture under, which the tool result references it by. */
16
+ readonly imageId: string;
17
+ }
10
18
  export interface GraphQLSystemContext {
11
19
  /** The assistant the initialized session runs: the operations are validated and executed against its schema. */
12
20
  readonly getAssistantSetup: () => SessionAssistantSetup;
21
+ /**
22
+ * Renders the picture an `agentScreenshot` component of a state declares, behind every export
23
+ * already queued, as a JPEG or PNG blob; `null` from an executor that renders no pictures. One of
24
+ * the two async steps of an execution, and the only one that needs a canvas.
25
+ */
26
+ readonly renderScreenshot: (component: ComponentSnapshot<AgentScreenshotComponent>, state: AnyDomainState) => Promise<Blob | null>;
27
+ /**
28
+ * Stores a rendered screenshot in the assistant thread on the server and resolves with the id the
29
+ * tool result references it by. The other async step of an execution, run right after each render.
30
+ */
31
+ readonly uploadScreenshot: (image: Blob) => Promise<{
32
+ readonly imageId: string;
33
+ }>;
13
34
  readonly specSelectors: SpecSelectors;
14
35
  readonly domainContextSelectors: DomainContextSelectors;
15
36
  readonly domainServicesSelectors: DomainServicesSelectors;
@@ -25,6 +46,8 @@ type AnyStateUpdateEmission = StateUpdateEmission<DomainEntity<string>, Record<s
25
46
  export interface PreparedOperation {
26
47
  readonly result: ExecutionResult;
27
48
  readonly emissions: readonly AnyStateUpdateEmission[];
49
+ /** The screenshots the operation took, by label, in the order they were taken. */
50
+ readonly screenshots: ReadonlyMap<string, GraphQLScreenshot>;
28
51
  }
29
52
  /**
30
53
  * What {@link GraphQLSystem.execute} returns: the results of the operations as prepared from the
@@ -39,12 +62,20 @@ export interface GraphQLExecution {
39
62
  readonly message?: string;
40
63
  /** What the configurator did, or would do, beyond what the operations asked for, in applied order. */
41
64
  readonly sideEffects: readonly string[];
65
+ /**
66
+ * The warnings and notices the prepared changes newly cause, whether or not they were committed:
67
+ * those of the prepared state that the state the operations started from did not have. Empty when
68
+ * nothing changed or an operation failed.
69
+ */
70
+ readonly warnings: readonly AssistantWarning[];
42
71
  /**
43
72
  * The state the operations prepared, when it was committed or held for the user's approval; a
44
73
  * held state is the one committed if the user approves. A caller can recognize its own change in
45
74
  * the undo history by it. It stays in the browser: nothing that leaves it may carry the state.
46
75
  */
47
76
  readonly preparedState?: AnyDomainState;
77
+ /** The screenshots the operations took, by the label their `image` field returned, in the order they were taken. */
78
+ readonly screenshots: ReadonlyMap<string, GraphQLScreenshot>;
48
79
  }
49
80
  /**
50
81
  * Resolves a localizable value, or each item of a list of them, to a string in the current locale.
@@ -73,10 +104,23 @@ export declare class GraphQLSystem {
73
104
  constructor(_context: GraphQLSystemContext);
74
105
  private readonly _get$Entity;
75
106
  private readonly _find$Entity;
107
+ private readonly _validateState;
108
+ private readonly _validateCached;
76
109
  private readonly _recipeContext;
77
110
  /** Root field resolvers, called by the executor with the field arguments and the operation context. */
78
111
  private readonly _rootValue;
79
112
  private readonly _resolveType;
113
+ private _generation;
114
+ /**
115
+ * The picture of an entity of a state from one `agentScreenshot` view, as a blob of the view's
116
+ * file format; `null` when the view is not attached to the entity there or nothing renders it.
117
+ */
118
+ private readonly _renderScreenshot;
119
+ /**
120
+ * Starts a new generation for a new configuration load. Screenshots wait on renders that take
121
+ * seconds, so an execution can outlive its configuration: one started under the ended generation
122
+ * renders no more screenshots and commits nothing, not even on a conflict retry.
123
+ */
80
124
  initialize: () => void;
81
125
  /**
82
126
  * Runs one mutation field against the working state: its implementation computes updates from the
@@ -87,6 +131,13 @@ export declare class GraphQLSystem {
87
131
  */
88
132
  private readonly _resolveMutation;
89
133
  private readonly _runMutation;
134
+ /**
135
+ * Takes a screenshot once every one asked for before it in the execution has been taken, so they
136
+ * render in document order, and uploads it as soon as it has rendered. A failure nulls only its
137
+ * own field and fails nothing else: the user kept changing the configuration, rendering failed,
138
+ * or the server did not store the picture.
139
+ */
140
+ private readonly _takeScreenshot;
90
141
  private readonly _setup;
91
142
  /**
92
143
  * Parses, validates and executes one operation document. Validation adds the rule against
@@ -98,21 +149,32 @@ export declare class GraphQLSystem {
98
149
  * Runs the operations in order through one working state that starts at `originalState`: a query
99
150
  * reads the current working state, and each mutation field advances it with its own emission.
100
151
  * The closing braces an operation's document left off are added, then the lenses it spreads are injected into it. Nothing is committed. The first operation that fails stops the list; every later one gets a
101
- * "not run" error instead.
152
+ * "not run" error instead. Screenshots render only while `generation`, the current one by
153
+ * default, is active.
102
154
  */
103
- prepare: (originalState: AnyDomainState, operations: readonly GraphQLOperation[]) => Promise<readonly PreparedOperation[]>;
155
+ prepare: (originalState: AnyDomainState, operations: readonly GraphQLOperation[], generation?: InitializationGeneration) => Promise<readonly PreparedOperation[]>;
104
156
  /**
105
157
  * The side effects of prepared operations: the hints of every update of their emissions, as the
106
158
  * agent is told them, in applied order.
107
159
  */
108
160
  readSideEffects: (prepared: readonly PreparedOperation[]) => readonly string[];
161
+ /** The screenshots of prepared operations, by label, in the order they were taken. */
162
+ readScreenshots: (prepared: readonly PreparedOperation[]) => ReadonlyMap<string, GraphQLScreenshot>;
163
+ /**
164
+ * The warnings and notices prepared operations newly cause: those of the state their last emission
165
+ * left that `originalState`, the state they were prepared from, did not have. Empty when nothing
166
+ * changed or an operation failed, so the original state is validated only for a change.
167
+ */
168
+ readWarnings: (originalState: AnyDomainState, prepared: readonly PreparedOperation[]) => readonly AssistantWarning[];
109
169
  private readonly _prepareAndCommit;
110
170
  /**
111
171
  * Prepares the operations from the committed state and commits their changes as one emission,
112
172
  * synthesized from every field emission of the list: one undo step, `onBeforeCommit` hooks run once. Nothing is committed when an operation fails or
113
173
  * none changes anything. When the committed state changed meanwhile, the operations are prepared
114
174
  * once more from the new committed state; their earlier updates are never replayed, since they
115
- * were computed from a state that is gone.
175
+ * were computed from a state that is gone. When another configuration was loaded meanwhile,
176
+ * nothing is committed or prepared again: the operations were written for the configuration
177
+ * that was left.
116
178
  */
117
179
  execute: (operations: readonly GraphQLOperation[]) => Promise<GraphQLExecution>;
118
180
  }
@@ -1 +1 @@
1
- import{GraphQLError as e,NoSchemaIntrospectionCustomRule as t,defaultFieldResolver as i,execute as o,getNamedType as n,parse as r,specifiedRules as a,validate as s,validateSchema as l}from"graphql";import{assertExistence as c,createSelector as d,isMessageDescriptor as h,isMultilingualString as u}from"@salsita-ai/common/utils";import{DomainEntityIdSchema as m,createAssistantExecutionSchema as f,findAssistantMutation as p}from"#package/domain";import{closeUnclosedBraces as g}from"./close-unclosed-braces.js";import{createEntityMeta as y}from"./entity-meta.js";import{injectAssistantLenses as v}from"./inject-assistant-lenses.js";import{readSideEffects as S}from"./side-effects.js";let _={errors:[new e("The configurator does not provide this request. This is a fault in the configurator, not in your request. Tell the user this is not available.")]},x={errors:[new e("The configuration is not loaded yet, so there is no state to query. Run the query again once the configurator has finished loading.")]},w=new RegExp(m.pattern),E=[...a,t],$=e=>"object"==typeof e&&null!==e&&"type"in e&&"string"==typeof e.type&&"id"in e&&"string"==typeof e.id,b=(e,t)=>"object"==typeof e&&null!==e?Reflect.get(e,t):void 0,T=e=>e instanceof Error?e.message:String(e),C=e=>/[.!?]$/.test(e)?e:`${e}.`,R=e=>"object"==typeof e&&null!==e&&Object.getPrototypeOf(e)===Object.prototype,j=(e,t)=>{let i=R(e)?e._raw:void 0;if($(i))return i;if(!Array.isArray(e)&&!R(e))return e;if(t.has(e))throw Error("The value contains itself.");let o=new Set([...t,e]);return Array.isArray(e)?e.map(e=>j(e,o)):Object.fromEntries(Object.entries(e).map(([e,t])=>[e,j(t,o)]))};export const localize=(e,t)=>Array.isArray(e)?e.map(e=>localize(e,t)):"string"==typeof e||h(e)||u(e)?t(e):e;let A=t=>new e(`The configurator cannot handle this request: ${C(t)} This is a fault in the configurator, not in your request. Tell the user this is not available.`),M=e=>(e.errors?.length??0)>0,z=t=>({errors:[new e(`Not run: operation ${t+1} failed, so the operations after it were skipped and no change of the list takes effect. Fix the failing operation and send the whole list again.`)]});export class GraphQLSystem{_context;_selectSchema=d([d.leaf(e=>e)],e=>{try{let t=f(e),i=l(t);return i.length>0?A(i.map(e=>e.message).join(" ")):t}catch(e){return A(T(e))}});_selectLenses=d([d.leaf(e=>e)],e=>r(e));_selectFieldResolver=d([d.leaf(e=>e)],t=>(o,r,a,s)=>{if(s.parentType===s.schema.getQueryType())return i(o,r,a,s);if(s.parentType===s.schema.getMutationType())return this._resolveMutation(s.fieldName,String(s.path.key),r,a);if(!$(o))return i(o,r,a,s);if("meta"===s.fieldName){let e;return y({entity:o,state:("object"==typeof(e=b(o,"_state"))&&null!==e&&"entities"in e&&"rootEntityId"in e?e:void 0)??a.state},{manifest:a.manifest,recipes:this._recipeContext(),prepareStateEmission:(e,t,i)=>this._context.domainContextSelectors.getStoreSystem().prepareStateEmission(e,t,i),find$Entity:(e,t)=>this._find$Entity(e,t),validateEntity:e=>this._context.domainContextSelectors.getDomain().validateEntity(e)})}let{source:l,localized:c}=t[s.parentType.name]?.[s.fieldName]??{source:s.fieldName},d=((t,i)=>{try{return b(t,i)}catch(o){throw new e(`Expression "${i}" failed on ${$(t)?t.id:"an entity"}: ${C(T(o))} This is a fault in the configurator, not in your request. Tell the user this is not available.`,{originalError:o instanceof Error?o:void 0})}})(o,l);return c?localize(d,this._context.domainServicesSelectors.getResolveLocalizable()):l.startsWith("$")&&"JSON"===n(s.returnType).name?((t,i,o)=>{try{return j(o,new Set)}catch(o){throw new e(`Expression "${i}" returned a value that is not plain serializable data on ${$(t)?t.id:"an entity"}: ${C(T(o))} This is a fault in the configurator, not in your request. Tell the user this is not available.`,{originalError:o instanceof Error?o:void 0})}})(o,l,d):d});constructor(e){this._context=e}_get$Entity=(e,t)=>this._context.domainContextSelectors.getDomain().get$Entity(e,t);_find$Entity=(e,t)=>this._context.domainContextSelectors.getDomain().getEntity(e,t)?this._get$Entity(e,t):null;_recipeContext=()=>({componentReader:this._context.domainContextSelectors.getComponentReader(),recipeCooker:this._context.domainContextSelectors.getRecipeCookerSystem(),resolveLocalizable:this._context.domainServicesSelectors.getResolveLocalizable()});_rootValue={root:(e,{state:t})=>this._get$Entity(t.rootEntityId,t),entities:({ids:t},{state:i})=>{if(null==t)return i.entities.map(e=>this._get$Entity(e.id,i));var o=i.rootEntityId;let n=t.filter(e=>!w.test(e));if(n.length>0)throw new e(`${n.map(e=>`"${e}"`).join(", ")} ${1===n.length?"is not an entity id":"are not entity ids"}. Entity ids have the form "<Type>-<number>", e.g. "${o}". Use ids as returned by the "id" field.`);return t.map(e=>w.test(e)?this._find$Entity(e,i):null)},selectedEntity:(e,{state:t})=>this._find$Entity(this._context.domainContextSelectors.getNavigationSystem().getActiveSelectionState(t),t),navigation:(e,{state:t})=>{let i=this._context.domainContextSelectors.getNavigationSystem();return{navigationState:i.getActiveNavigationState(t),viewState:i.getActiveViewState(t),toolState:i.getActiveToolState(t)}}};_resolveType=e=>$(e)?e.type:void 0;initialize=()=>{};_resolveMutation=(t,i,o,n)=>{if(void 0!==n.failedMutationField)throw new e(`Not run: the earlier field "${n.failedMutationField}" of this operation failed, so "${i}" was skipped and no change of the operation takes effect. Fix the failing field and send the operation again.`);try{return this._runMutation(t,o,n)}catch(e){throw n.failedMutationField=i,e}};_runMutation=(t,i,o)=>{let n=p(t,o.manifest);if(!n)throw new e(`The schema declares the mutation "${t}", but the configurator has no implementation for it. This is a fault in the configurator, not in your request. Tell the user this is not available.`);let r=o.state,a=n.implementation(i,r,{manifest:o.manifest,action:this._context.domainContextSelectors.getActionSystem().createContext(r),resolveLocalizable:this._context.domainServicesSelectors.getResolveLocalizable()});if(a.updates.length>0){let i=this._context.domainContextSelectors.getStoreSystem().prepareStateEmission(a.updates,r,"committed");if(!i.validity.valid)throw new e(`The changes of "${t}" were not applied, because the resulting configuration is invalid: ${(e=>{if("uncaught"===e.severity)return`validating it threw: ${C(T(e.error))}`;let t=[...new Set(e.entityViolations.filter(({violation:t})=>t.severity===e.severity).map(({entityId:e})=>e))];return`it has ${e.severity} violations on ${t.join(", ")}.`})(i.validity)} Change the request so the configuration stays valid.`);o.emissions.push(i),o.state=i.state}return a.readResult({previousState:r,state:o.state})};_setup=()=>{let{manifest:t,error:i}=this._context.getAssistantSetup();if(i)return{ready:!1,result:{errors:[new e(i.message,{originalError:i})]}};if(!t)return{ready:!1,result:_};let o=this._selectSchema(t.sdl);return o instanceof e?{ready:!1,result:{errors:[o]}}:{ready:!0,assistant:t,schema:o,lenses:t.lenses?.definitions?this._selectLenses(t.lenses.definitions):void 0,fieldResolver:this._selectFieldResolver(t.fields)}};_run=(t,i,n,a)=>{let l;try{l=r(t)}catch(t){return{errors:[t instanceof e?t:new e(T(t))]}}let c=s(n.schema,l,E);return c.length>0?{errors:c}:o({schema:n.schema,document:l,rootValue:this._rootValue,contextValue:a,variableValues:i.variables,operationName:i.operationName,fieldResolver:n.fieldResolver,typeResolver:this._resolveType})};prepare=async(t,i)=>{let o,n=this._setup();if(!n.ready)return i.map(()=>({result:n.result,emissions:[]}));let r={manifest:n.assistant,state:t,emissions:[],failedMutationField:void 0},a=[];for(let[t,s]of i.entries())if(void 0===o){let i=r.emissions.length;r.failedMutationField=void 0;let l=g(s.document),c=n.lenses?v(l,n.lenses):l,d=c instanceof e?{errors:[c]}:await this._run(c,s,n,r);a.push({result:d,emissions:r.emissions.slice(i)}),M(d)&&(o=t)}else a.push({result:z(o),emissions:[]});return a};readSideEffects=e=>{let t=this._context.domainServicesSelectors.getResolveLocalizable();return e.flatMap(({emissions:e})=>e.flatMap(e=>S(e.updates,t)))};_prepareAndCommit=async e=>{let t,i,o,n=this._context.domainContextSelectors.getStoreSystem(),r=await this.prepare(n.stateSlices.committed.value.state,e),a=r.map(({result:e})=>e),s=this.readSideEffects(r),l=r.flatMap(e=>e.emissions);if(a.some(M)||0===l.length)return{results:a,sideEffects:s,outcome:"none"};let d=(t=c(l[0]),i=c(l[l.length-1]),o=l.some(e=>void 0!==e.transformationLog),{kind:"committed",previousState:t.previousState,state:i.state,updates:l.flatMap(e=>e.updates),validity:i.validity,transformationLog:o?l.flatMap(e=>e.transformationLog??[]):void 0});return{results:a,sideEffects:s,outcome:n.commitPrepared(d),preparedState:d.state}};execute=async e=>{if(!this._context.domainContextSelectors.getStoreSystem().isInitialized)return{results:e.map(()=>x),committed:!1,sideEffects:[]};let t=await this._prepareAndCommit(e),{results:i,sideEffects:o,outcome:n,preparedState:r}="conflict"===t.outcome?await this._prepareAndCommit(e):t;return"committed"===n?{results:i,committed:!0,sideEffects:o,preparedState:r}:"held"===n?{results:i,committed:!1,message:"The changes wait for the user's approval and are not applied yet. Do not send them again; the next `[changes]` block lists them once approved.",sideEffects:o,preparedState:r}:"conflict"===n?{results:i,committed:!1,message:"The changes were not committed, because the configuration changed while they were being applied. The results describe a state that was discarded. Query the current configuration and send the operations again if they still make sense.",sideEffects:o}:{results:i,committed:!1,sideEffects:o}}}
1
+ import{GraphQLError as e,NoSchemaIntrospectionCustomRule as t,defaultFieldResolver as i,execute as n,getNamedType as o,parse as r,specifiedRules as a,validate as s,validateSchema as l}from"graphql";import{assertExistence as c,createSelector as h,isMessageDescriptor as d,isMultilingualString as u}from"@salsita-ai/common/utils";import{DomainEntityIdSchema as m,agentScreenshotComponent as f,createAssistantExecutionSchema as p,findAssistantMutation as g}from"#package/domain";import{ExportBusyError as v}from"../export-system/export-busy-error.js";import{closeUnclosedBraces as y}from"./close-unclosed-braces.js";import{createEntityMeta as S}from"./entity-meta.js";import{injectAssistantLenses as _}from"./inject-assistant-lenses.js";import{readSideEffects as w}from"./side-effects.js";import{ViolationsError as x,readStateWarnings as b,readViolationEntries as E}from"./violations.js";let $={errors:[new e("The configurator does not provide this request. This is a fault in the configurator, not in your request. Tell the user this is not available.")]},T={errors:[new e("The configuration is not loaded yet, so there is no state to query. Run the query again once the configurator has finished loading.")]},C="Not taken: another configuration was loaded while this request ran. Query the current configuration before asking for screenshots again.",M=new RegExp(m.pattern),R=[...a,t],j=e=>"object"==typeof e&&null!==e&&"type"in e&&"string"==typeof e.type&&"id"in e&&"string"==typeof e.id,k=(e,t)=>"object"==typeof e&&null!==e?Reflect.get(e,t):void 0,N=e=>e instanceof Error?e.message:String(e),A=e=>/[.!?]$/.test(e)?e:`${e}.`,z=e=>"object"==typeof e&&null!==e&&Object.getPrototypeOf(e)===Object.prototype,L=(e,t)=>{let i=z(e)?e._raw:void 0;if(j(i))return i;if(!Array.isArray(e)&&!z(e))return e;if(t.has(e))throw Error("The value contains itself.");let n=new Set([...t,e]);return Array.isArray(e)?e.map(e=>L(e,n)):Object.fromEntries(Object.entries(e).map(([e,t])=>[e,L(t,n)]))};export const localize=(e,t)=>Array.isArray(e)?e.map(e=>localize(e,t)):"string"==typeof e||d(e)||u(e)?t(e):e;let q=t=>new e(`The configurator cannot handle this request: ${A(t)} This is a fault in the configurator, not in your request. Tell the user this is not available.`),O="SCREENSHOT_NOT_TAKEN",F=(t,i)=>new e(t,{originalError:i,extensions:{code:O}}),I=e=>(e.errors??[]).some(e=>e.extensions.code!==O),V=t=>({errors:[new e(`Not run: operation ${t+1} failed, so the operations after it were skipped and no change of the list takes effect. Fix the failing operation and send the whole list again.`)]});export class GraphQLSystem{_context;_selectSchema=h([h.leaf(e=>e)],e=>{try{let t=p(e),i=l(t);return i.length>0?q(i.map(e=>e.message).join(" ")):t}catch(e){return q(N(e))}});_selectLenses=h([h.leaf(e=>e)],e=>r(e));_selectFieldResolver=h([h.leaf(e=>e)],t=>(n,r,a,s)=>{if(s.parentType===s.schema.getQueryType())return i(n,r,a,s);if(s.parentType===s.schema.getMutationType())return this._resolveMutation(s.fieldName,String(s.path.key),r,a);if(!j(n))return i(n,r,a,s);if("meta"===s.fieldName){let e;return S({entity:n,state:("object"==typeof(e=k(n,"_state"))&&null!==e&&"entities"in e&&"rootEntityId"in e?e:void 0)??a.state},{manifest:a.manifest,recipes:this._recipeContext(),prepareStateEmission:(e,t,i)=>{let n=this._context.domainContextSelectors.getStoreSystem().prepareStateEmission(e,t,i);return a.validities.set(n.state,n.validity),n},find$Entity:(e,t)=>this._find$Entity(e,t),validateEntity:e=>this._context.domainContextSelectors.getDomain().validateEntity(e),takeScreenshot:(e,t)=>this._takeScreenshot(e,t,a),validateState:e=>this._validateCached(e,a)})}let{source:l,localized:c}=t[s.parentType.name]?.[s.fieldName]??{source:s.fieldName},h=((t,i)=>{try{return k(t,i)}catch(n){throw new e(`Expression "${i}" failed on ${j(t)?t.id:"an entity"}: ${A(N(n))} This is a fault in the configurator, not in your request. Tell the user this is not available.`,{originalError:n instanceof Error?n:void 0})}})(n,l);return c?localize(h,this._context.domainServicesSelectors.getResolveLocalizable()):l.startsWith("$")&&"JSON"===o(s.returnType).name?((t,i,n)=>{try{return L(n,new Set)}catch(n){throw new e(`Expression "${i}" returned a value that is not plain serializable data on ${j(t)?t.id:"an entity"}: ${A(N(n))} This is a fault in the configurator, not in your request. Tell the user this is not available.`,{originalError:n instanceof Error?n:void 0})}})(n,l,h):h});constructor(e){this._context=e}_get$Entity=(e,t)=>this._context.domainContextSelectors.getDomain().get$Entity(e,t);_find$Entity=(e,t)=>this._context.domainContextSelectors.getDomain().getEntity(e,t)?this._get$Entity(e,t):null;_validateState=e=>this._context.domainContextSelectors.getValidationProjections().validateState(e);_validateCached=(e,{validities:t})=>{let i=t.get(e);if(i)return i;let n=this._validateState(e);return t.set(e,n),n};_recipeContext=()=>({componentReader:this._context.domainContextSelectors.getComponentReader(),recipeCooker:this._context.domainContextSelectors.getRecipeCookerSystem(),resolveLocalizable:this._context.domainServicesSelectors.getResolveLocalizable()});_rootValue={warnings:(e,t)=>b(this._validateCached(t.state,t),void 0,this._context.domainServicesSelectors.getResolveLocalizable()),root:(e,{state:t})=>this._get$Entity(t.rootEntityId,t),entities:({ids:t},{state:i})=>{if(null==t)return i.entities.map(e=>this._get$Entity(e.id,i));var n=i.rootEntityId;let o=t.filter(e=>!M.test(e));if(o.length>0)throw new e(`${o.map(e=>`"${e}"`).join(", ")} ${1===o.length?"is not an entity id":"are not entity ids"}. Entity ids have the form "<Type>-<number>", e.g. "${n}". Use ids as returned by the "id" field.`);return t.map(e=>M.test(e)?this._find$Entity(e,i):null)},selectedEntity:(e,{state:t})=>this._find$Entity(this._context.domainContextSelectors.getNavigationSystem().getActiveSelectionState(t),t),navigation:(e,{state:t})=>{let i=this._context.domainContextSelectors.getNavigationSystem();return{navigationState:i.getActiveNavigationState(t),viewState:i.getActiveViewState(t),toolState:i.getActiveToolState(t)}}};_resolveType=e=>j(e)?e.type:void 0;_generation={active:!0};_renderScreenshot=async(e,t,i)=>{let n=this._context.domainContextSelectors.getComponentReader().readOneComponent({entityId:e,componentType:f,instanceName:t},i);if(!n)return null;let o=await this._context.renderScreenshot(n,i);return null===o?null:new Blob([o],{type:"JPEG"===n.state.fileFormat?"image/jpeg":"image/png"})};initialize=()=>{this._generation.active=!1,this._generation={active:!0}};_resolveMutation=(t,i,n,o)=>{if(void 0!==o.failedMutationField)throw new e(`Not run: the earlier field "${o.failedMutationField}" of this operation failed, so "${i}" was skipped and no change of the operation takes effect. Fix the failing field and send the operation again.`);try{return this._runMutation(t,n,o)}catch(e){throw o.failedMutationField=i,e}};_runMutation=(t,i,n)=>{let o=g(t,n.manifest);if(!o)throw new e(`The schema declares the mutation "${t}", but the configurator has no implementation for it. This is a fault in the configurator, not in your request. Tell the user this is not available.`);let r=n.state,a=o.implementation(i,r,{manifest:n.manifest,action:this._context.domainContextSelectors.getActionSystem().createContext(r),resolveLocalizable:this._context.domainServicesSelectors.getResolveLocalizable()});if(a.updates.length>0){let i=this._context.domainContextSelectors.getStoreSystem().prepareStateEmission(a.updates,r,"committed"),{validity:o}=i;if("uncaught"===o.severity)throw new e(`The changes of "${t}" were not applied, because the resulting configuration is invalid: validating it threw: ${A(N(o.error))} Change the request so the configuration stays valid.`,{originalError:o.error});if(!o.valid)throw new x(`The changes of "${t}" were not applied, because the resulting configuration has ${o.severity} violations.`,E(o,this._context.domainServicesSelectors.getResolveLocalizable()));n.emissions.push(i),n.validities.set(i.state,o),n.state=i.state}return a.readResult({previousState:r,state:n.state})};_takeScreenshot=({entity:t,state:i},n,o)=>{let r=o.manifest.screenshots?.[t.type]?.find(e=>e.view===n);if(!r)return Promise.reject(new e(`The schema declares the screenshot view "${n}" on ${t.type}, but the configurator has no view of that name. This is a fault in the configurator, not in your request. Tell the user this is not available.`));let a=o.lastScreenshot.then(async()=>{if(!o.generation.active)throw F(C);let e=await this._renderScreenshot(t.id,r.instanceName,i).catch(e=>{throw F(e instanceof v?"User made concurrent actions that prevented the screenshot from being taken, try again":`The screenshot of ${t.id} from "${n}" could not be taken: ${A(N(e))} Try again; if it fails again, tell the user the screenshot is not available.`,e instanceof Error?e:void 0)});if(!o.generation.active)throw F(C);if(null===e)return null;let{imageId:a}=await this._context.uploadScreenshot(e).catch(e=>{throw F(`The screenshot of ${t.id} from "${n}" was taken but could not be stored: ${A(N(e))} Try again; if it fails again, tell the user the screenshot is not available.`,e instanceof Error?e:void 0)}),s=`${t.id}/${n}`,l=[...o.screenshots.values()].filter(e=>e.entityId===t.id&&e.view===n).length,c=0===l?s:`${s}#${l+1}`;return o.screenshots.set(c,{entityId:t.id,view:n,imageId:a}),{image:c}});return o.lastScreenshot=a.catch(()=>void 0),a};_setup=()=>{let{manifest:t,error:i}=this._context.getAssistantSetup();if(i)return{ready:!1,result:{errors:[new e(i.message,{originalError:i})]}};if(!t)return{ready:!1,result:$};let n=this._selectSchema(t.sdl);return n instanceof e?{ready:!1,result:{errors:[n]}}:{ready:!0,assistant:t,schema:n,lenses:t.lenses?.definitions?this._selectLenses(t.lenses.definitions):void 0,fieldResolver:this._selectFieldResolver(t.fields)}};_run=async(t,i,o,a)=>{var l;let c;try{c=r(t)}catch(t){return{errors:[t instanceof e?t:new e(N(t))]}}let h=s(o.schema,c,R);return h.length>0?{errors:h}:(l=await n({schema:o.schema,document:c,rootValue:this._rootValue,contextValue:a,variableValues:i.variables,operationName:i.operationName,fieldResolver:o.fieldResolver,typeResolver:this._resolveType}),l.errors?.some(e=>e.originalError instanceof x)?{...l,errors:l.errors.flatMap(t=>t.originalError instanceof x?t.originalError.entries.map(({type:i,entityId:n,message:o})=>new e(o??i,{nodes:t.nodes,source:t.source,positions:t.positions,path:t.path,extensions:{code:"VIOLATION",type:i,entityId:n}})):[t])}:l)};prepare=async(t,i,n=this._generation)=>{let o,r=this._setup();if(!r.ready)return i.map(()=>({result:r.result,emissions:[],screenshots:new Map}));let a={manifest:r.assistant,state:t,emissions:[],failedMutationField:void 0,screenshots:new Map,lastScreenshot:Promise.resolve(),generation:n,validities:new WeakMap},s=[];for(let[t,n]of i.entries())if(void 0===o){let i=a.emissions.length,l=a.screenshots.size;a.failedMutationField=void 0;let c=y(n.document),h=r.lenses?_(c,r.lenses):c,d=h instanceof e?{errors:[h]}:await this._run(h,n,r,a);await a.lastScreenshot,s.push({result:d,emissions:a.emissions.slice(i),screenshots:new Map([...a.screenshots].slice(l))}),I(d)&&(o=t)}else s.push({result:V(o),emissions:[],screenshots:new Map});return s};readSideEffects=e=>{let t=this._context.domainServicesSelectors.getResolveLocalizable();return e.flatMap(({emissions:e})=>e.flatMap(e=>w(e.updates,t)))};readScreenshots=e=>new Map(e.flatMap(({screenshots:e})=>[...e]));readWarnings=(e,t)=>{let i=t.flatMap(({emissions:e})=>e).at(-1);return void 0===i||t.some(({result:e})=>I(e))?[]:b(i.validity,this._validateState(e),this._context.domainServicesSelectors.getResolveLocalizable())};_prepareAndCommit=async(e,t)=>{let i,n,o,r=this._context.domainContextSelectors.getStoreSystem(),a=r.stateSlices.committed.value.state,s=await this.prepare(a,e,t),l=s.map(({result:e})=>e),h=this.readSideEffects(s),d=this.readScreenshots(s),u=s.flatMap(e=>e.emissions);if(!t.active)return{results:l,sideEffects:h,screenshots:d,warnings:[],outcome:"conflict"};if(l.some(I)||0===u.length)return{results:l,sideEffects:h,screenshots:d,warnings:[],outcome:"none"};let m=(i=c(u[0]),n=c(u[u.length-1]),o=u.some(e=>void 0!==e.transformationLog),{kind:"committed",previousState:i.previousState,state:n.state,updates:u.flatMap(e=>e.updates),validity:n.validity,transformationLog:o?u.flatMap(e=>e.transformationLog??[]):void 0});return{results:l,sideEffects:h,screenshots:d,warnings:this.readWarnings(a,s),outcome:r.commitPrepared(m),preparedState:m.state}};execute=async e=>{let t=this._generation;if(!this._context.domainContextSelectors.getStoreSystem().isInitialized)return{results:e.map(()=>T),committed:!1,sideEffects:[],warnings:[],screenshots:new Map};let i=await this._prepareAndCommit(e,t),{results:n,sideEffects:o,warnings:r,screenshots:a,outcome:s,preparedState:l}="conflict"===i.outcome&&t.active?await this._prepareAndCommit(e,t):i;return"committed"===s?{results:n,committed:!0,sideEffects:o,warnings:r,screenshots:a,preparedState:l}:"held"===s?{results:n,committed:!1,message:"The changes wait for the user's approval and are not applied yet. Do not send them again; the next `[changes]` block lists them once approved.",sideEffects:o,warnings:r,screenshots:a,preparedState:l}:"conflict"===s?{results:n,committed:!1,message:"The changes were not committed, because the configuration changed while they were being applied. The results describe a state that was discarded. Query the current configuration and send the operations again if they still make sense.",sideEffects:o,warnings:r,screenshots:a}:{results:n,committed:!1,sideEffects:o,warnings:r,screenshots:a}}}
@@ -0,0 +1,40 @@
1
+ import type { Localizable } from '@salsita-ai/common/utils';
2
+ import type { DomainEntity, EntityId, StateValidationResult } from '#package/domain';
3
+ type AnyStateValidationResult = StateValidationResult<DomainEntity<string>, string>;
4
+ /** One violation that makes a change fail, as the agent reads it; a violation can sit on a virtual entity. */
5
+ export interface ViolationEntry {
6
+ readonly type: string;
7
+ readonly entityId: EntityId | null;
8
+ readonly message: string | null;
9
+ }
10
+ /** One warning or notice, which never makes a change fail. */
11
+ export interface AssistantWarning {
12
+ readonly type: string;
13
+ readonly severity: 'warning' | 'notice';
14
+ readonly entityId: EntityId | null;
15
+ readonly message: string | null;
16
+ }
17
+ /**
18
+ * Thrown by a mutation field whose changes would leave the configuration invalid. graphql-js reports
19
+ * one error per failed field, so the field throws this one error and the executor's caller replaces
20
+ * it with one GraphQL error per violation.
21
+ */
22
+ export declare class ViolationsError extends Error {
23
+ readonly entries: readonly ViolationEntry[];
24
+ constructor(message: string, entries: readonly ViolationEntry[]);
25
+ }
26
+ /**
27
+ * The violations an invalid validity fails on: those of its failing severity, or the one error that
28
+ * validation threw.
29
+ */
30
+ export declare const readViolationEntries: (validity: Extract<AnyStateValidationResult, {
31
+ readonly valid: false;
32
+ }>, resolveLocalizable: (message: Localizable) => string) => readonly ViolationEntry[];
33
+ /**
34
+ * The warnings and notices of `after` that `before` did not have, in the order of `after`; every one
35
+ * of `after` when there is no `before`.
36
+ */
37
+ export declare const readStateWarnings: (after: AnyStateValidationResult, before: AnyStateValidationResult | undefined, resolveLocalizable: (message: Localizable) => string) => readonly AssistantWarning[];
38
+ /** The warnings and notices of a validity that are on one entity, in the order of the validity. */
39
+ export declare const readEntityWarnings: (entityId: EntityId, validity: AnyStateValidationResult, resolveLocalizable: (message: Localizable) => string) => readonly AssistantWarning[];
40
+ export {};
@@ -0,0 +1 @@
1
+ export class ViolationsError extends Error{entries;constructor(e,t){super(e),this.entries=t}}let e=(e,t)=>void 0===e?null:t(e);export const readViolationEntries=(t,r)=>"uncaught"===t.severity?[{type:"uncaught",entityId:null,message:t.error.message}]:t.entityViolations.filter(({violation:e})=>e.severity===t.severity).map(({entityId:t,violation:i})=>({type:i.type,entityId:t,message:e(i.message,r)}));let t=e=>null===e.severity||"uncaught"===e.severity?[]:e.entityViolations.filter(({violation:e})=>{let t;return"warning"===(t=e.severity)||"notice"===t}),r=({entityId:e,violation:{type:t,severity:r}})=>JSON.stringify([e,t,r]),i=(t,r,i)=>({type:r.type,severity:"notice"===r.severity?"notice":"warning",entityId:t,message:e(r.message,i)});export const readStateWarnings=(e,n,s)=>{let a=new Set(void 0===n?[]:t(n).map(r));return t(e).filter(e=>!a.has(r(e))).map(({entityId:e,violation:t})=>i(e,t,s))};export const readEntityWarnings=(e,r,n)=>t(r).filter(t=>t.entityId===e).map(({violation:t})=>i(e,t,n));
@@ -1,8 +1,9 @@
1
1
  import type { EffectComposer } from 'postprocessing';
2
2
  import { Color, OrthographicCamera, PerspectiveCamera } from 'three';
3
3
  import type { AuthorizedPhoenixApiClient } from '#package/client';
4
- import type { ClientSideImageComponent, ComponentSnapshot, DomainContextSelectors, DomainEntity, DomainServicesSelectors, DomainState, SaveTemplateThumbnailComponent } from '#package/domain';
4
+ import type { AgentScreenshotComponent, ClientSideImageComponent, ComponentSnapshot, DomainContextSelectors, DomainEntity, DomainServicesSelectors, DomainState, SaveTemplateThumbnailComponent } from '#package/domain';
5
5
  import type { ConfiguratorExtensionSelectors } from '../../selectors.js';
6
+ import type { ExportRunOptions } from '../export-system/export-system.js';
6
7
  import type { ImageRenderConfig, ImageRenderer, RenderConfig } from './image-renderer.js';
7
8
  /**
8
9
  * Constructor context of an `ImageRenderingSystem`. Same-layer configurator peers are reached
@@ -20,6 +21,8 @@ export interface ClientSideImageRenderingOptions {
20
21
  /** Opens rendered images in new browser tabs instead of uploading them. */
21
22
  readonly debug?: boolean;
22
23
  }
24
+ /** A component that declares an image the export renders: its state says how, its entity what. */
25
+ type ImageComponentSnapshot = ComponentSnapshot<ClientSideImageComponent> | ComponentSnapshot<SaveTemplateThumbnailComponent> | ComponentSnapshot<AgentScreenshotComponent>;
23
26
  /** ImageRenderingSystem with its entity types erased — how the runtime selectors expose the instance. */
24
27
  export type AnyImageRenderingSystem = ImageRenderingSystem<any>;
25
28
  export declare class ImageRenderingSystem<ENTITIES extends DomainEntity<string>> {
@@ -94,7 +97,7 @@ export declare class ImageRenderingSystem<ENTITIES extends DomainEntity<string>>
94
97
  generateAndUploadDeclaredClientSideImages(state: DomainState<ENTITIES>, finalizationUuid: string, options?: ClientSideImageRenderingOptions): Promise<readonly {
95
98
  name: string;
96
99
  blob: Blob;
97
- imageComponent: ComponentSnapshot<ClientSideImageComponent> | ComponentSnapshot<SaveTemplateThumbnailComponent>;
100
+ imageComponent: ImageComponentSnapshot;
98
101
  }[]>;
99
102
  /**
100
103
  * Generates client side images from declarative clientSideImage components without uploading them.
@@ -102,12 +105,18 @@ export declare class ImageRenderingSystem<ENTITIES extends DomainEntity<string>>
102
105
  generateDeclaredClientSideImages(state: DomainState<ENTITIES>, options?: ClientSideImageRenderingOptions): Promise<readonly {
103
106
  name: string;
104
107
  blob: Blob;
105
- imageComponent: ComponentSnapshot<ClientSideImageComponent> | ComponentSnapshot<SaveTemplateThumbnailComponent>;
108
+ imageComponent: ImageComponentSnapshot;
106
109
  }[]>;
107
- generateImagesFromComponents(imageComponents: ReadonlyArray<ComponentSnapshot<ClientSideImageComponent> | ComponentSnapshot<SaveTemplateThumbnailComponent>>, sourceState: DomainState<ENTITIES>, options?: ClientSideImageRenderingOptions): Promise<ReadonlyArray<{
110
+ /**
111
+ * Renders the image components from the given state in one export run. With `awaitSettledState`,
112
+ * the run waits until the user is not in the middle of a change, as the assistant's screenshots do.
113
+ */
114
+ generateImagesFromComponents(imageComponents: ReadonlyArray<ImageComponentSnapshot>, sourceState: DomainState<ENTITIES>, options?: ClientSideImageRenderingOptions, runOptions?: ExportRunOptions): Promise<ReadonlyArray<{
108
115
  name: string;
109
116
  blob: Blob;
110
- imageComponent: ComponentSnapshot<ClientSideImageComponent> | ComponentSnapshot<SaveTemplateThumbnailComponent>;
117
+ imageComponent: ImageComponentSnapshot;
111
118
  }>>;
119
+ private _generateImagesFromComponents;
112
120
  initialize: () => void;
113
121
  }
122
+ export {};
@@ -1 +1 @@
1
- import{Color as e,HalfFloatType as t,NoToneMapping as r,OrthographicCamera as a,PerspectiveCamera as n,WebGLRenderTarget as o}from"three";import{preloadFont as i}from"troika-three-text";import{match as s}from"ts-pattern";import{clientSideImageComponent as l,dimensionIndicatorComponent as c,domainEntityTypeFromId as m,editableDistanceDimensionIndicatorComponent as g,isDomainEntityId as d,isVirtualEntityId as h,sketchingEditComponent as u}from"#package/domain";import{createCameraControls as f}from"../camera-control-system/create-camera-controls.js";import{createCanvasFreezeFrame as p}from"./canvas-freeze-frame.js";import{ExportCapturePass as w,readTargetToBlob as C,resolveExportBackground as _}from"./export-image-capture.js";export class ImageRenderingSystem{_context;_renderer=null;_effectComposer=null;_generation=null;_debugObjectUrls=new Set;_canvasFreeze=null;constructor(e){this._context=e}_captureGenerationAssertion=()=>{let e=this._generation,t=()=>{if(!e?.active)throw Error("Image rendering generation ended while images were being rendered! The configurator context was reinitialized before the renderer finished, so the results belong to a configuration that is no longer active. Await the render before leaving the configuration, or discard the rejection.")};return t(),t};_captureGenerationGuard=()=>{let e=this._captureGenerationAssertion();return{assertActive:e,waitFor:async t=>{let r=await t;return e(),r},runEffect:t=>(e(),t())}};register(e){return this._renderer=e,()=>{this._renderer===e&&(this._renderer=null)}}registerEffectComposer(e){return this._effectComposer=e,()=>{this._effectComposer===e&&(this._effectComposer=null)}}_openDebugImage=e=>{let t=URL.createObjectURL(e);this._debugObjectUrls.add(t),window.open(t,"_blank")};_getRenderer=async()=>{let e=this._generation,t=Date.now(),r=()=>{if(!e?.active)throw Error("Image rendering generation ended while waiting for the renderer! The configurator context was reinitialized before the renderer arrived, so the render would target a scene that is gone. Await the render before leaving the configuration, or discard the rejection.")};r();let a=this._renderer;for(;null===a;){if(await new Promise(e=>setTimeout(e,50)),r(),Date.now()-t>1e4)throw Error("Renderer could not be retrieved! Reached timeout.");a=this._renderer}return a};generateImageUsingOriginalCanvas=async(e,t,r=!1)=>{let a=this._captureGenerationGuard(),n=await a.waitFor(this._getRenderer());if(r){let{blob:e}=await a.waitFor(a.runEffect(()=>n.renderUsingOriginalCanvas(t)));a.runEffect(()=>this._openDebugImage(e));return}let o=await Promise.all([t].map(async e=>{let{blob:t}=await a.waitFor(a.runEffect(()=>n.renderUsingOriginalCanvas(e)));return{blob:t,name:e.name}})),i=await a.waitFor(a.runEffect(()=>this._context.getAuthorizedClient().generateUploadLinks(this._context.getConfigurationId(),e,[t.name])));await Promise.all(i.map(async e=>{let t=o.find(t=>t.name===e.name);if(null==t)throw Error("Blob not found!");await Promise.all(i.map(async e=>{await a.waitFor(a.runEffect(()=>fetch(e.url,{method:"PUT",body:t.blob,headers:{"Content-Type":"image/png","Content-Length":t.blob.size.toString()}})))}))}))};async generateImagesUsingOriginalCanvas(e,t,r=!1){let a=this._captureGenerationGuard(),n=await a.waitFor(this._getRenderer()),o=Array.isArray(t)?t:[t],i=await o.reduce(async(e,t)=>[...await e,await a.waitFor(a.runEffect(()=>n.renderUsingOriginalCanvas(t)))],Promise.resolve([]));if(r){for(let e of i)a.runEffect(()=>this._openDebugImage(e.blob)),await a.waitFor(new Promise(e=>setTimeout(e,100)));return}let s=o.map(e=>e.name),l=await a.waitFor(a.runEffect(()=>this._context.getAuthorizedClient().generateUploadLinks(this._context.getConfigurationId(),e,s)));await Promise.all(l.map(async e=>{let t=i.find(t=>t.name===e.name);if(null==t)throw Error("Blob not found!");await Promise.all(l.map(async e=>{await a.waitFor(a.runEffect(()=>fetch(e.url,{method:"PUT",body:t.blob,headers:{"Content-Type":"image/png","Content-Length":t.blob.size.toString()}})))}))}))}async generateImages(e,t,r=!1){let a=this._captureGenerationGuard(),n=await a.waitFor(this._getRenderer()),o=t.map(e=>e.name);if(r)return void await Promise.all(t.map(async e=>{let t=await a.waitFor(a.runEffect(()=>n.renderImage(e)));a.runEffect(()=>this._openDebugImage(t))}));let i=await Promise.all(t.map(async e=>({blob:await a.waitFor(a.runEffect(()=>n.renderImage(e))),name:e.name}))),s=await a.waitFor(a.runEffect(()=>this._context.getAuthorizedClient().generateUploadLinks(this._context.getConfigurationId(),e,o)));await Promise.all(s.map(async e=>{let t=i.find(t=>t.name===e.name);if(null==t)throw Error("Blob not found!");await Promise.all(s.map(async e=>{await a.waitFor(a.runEffect(()=>fetch(e.url,{method:"PUT",body:t.blob,headers:{"Content-Type":"image/png","Content-Length":t.blob.size.toString()}})))}))}))}async getGeneratedImages(e,t=!1){let r=this._captureGenerationAssertion(),a=await this._getRenderer();return(r(),t)?(await Promise.all(e.map(async e=>{let t=await a.renderImage(e);r(),this._openDebugImage(t)})),[]):Promise.all(e.map(async e=>{let t=await a.renderImage(e);return r(),{blob:t,name:e.name}}))}_renderCurrentView=e=>{let{gl:t,scene:r,camera:a}=e.get();null!==this._effectComposer?this._effectComposer.render():t.render(r,a)};_freezeCanvas=e=>{this._canvasFreeze?.handle===e?this._canvasFreeze.holders+=1:(this._canvasFreeze?.remove(),this._canvasFreeze={handle:e,remove:p(e.get().gl.domElement,()=>this._renderCurrentView(e)),resumeFrameloop:this._context.configuratorExtensionSelectors.getExportSystem().pauseFrameloop(e),holders:1});let t=this._canvasFreeze,r=!1;return async()=>{if(!r&&(r=!0,t.holders-=1,!(t.holders>0)))try{let r=this._context.configuratorExtensionSelectors.getCanvasSystem();r.r3fHandle$.value===e&&await r.waitForFlush(),r.r3fHandle$.value===e&&0===t.holders&&this._renderCurrentView(e)}catch{}finally{0===t.holders&&(t.remove(),t.resumeFrameloop(),this._canvasFreeze===t&&(this._canvasFreeze=null))}}};async renderImage(a){let n=this._context.configuratorExtensionSelectors.getCanvasSystem().r3fHandle$.value;if(null===n)throw Error("R3F state not ready");let{gl:i,scene:s,camera:l,size:c,advance:m}=n.get(),g=i.getRenderTarget(),d=i.getClearColor(new e),h=i.getClearAlpha(),u=i.autoClearColor,f=e=>new w(a.width,a.height,e,i.outputColorSpace),p={composer:null,pass:null},y=null,b=null,x=e=>{let t=p.pass??f(r);return p.pass=t,p.composer===e&&e.passes.at(-1)===t||(p.composer?.removePass(t),e.addPass(t),p.composer=e),t},v=async()=>{if(await this._context.configuratorExtensionSelectors.getCanvasSystem().waitForFlush(),this._context.configuratorExtensionSelectors.getCanvasSystem().r3fHandle$.value!==n)throw Error("Canvas was remounted while an image was being rendered! The export borrowed a canvas that is gone, so it cannot capture the image. Retry the export once the configurator has settled.")},E=this._freezeCanvas(n);try{n.set({size:{height:a.height,width:a.width,top:0,left:0,updateStyle:!1}}),n.set({camera:a.camera}),await v(),null!==this._effectComposer&&x(this._effectComposer),m(void 0),await v();let r="JPEG"===a.fileFormat?"image/jpeg":"image/png",l=_({sceneBackground:s.background,backgroundColor:a.backgroundColor,fileFormat:a.fileFormat,outputColorSpace:i.outputColorSpace});if(null!==this._effectComposer){i.setRenderTarget(null),"JPEG"===a.fileFormat?i.setClearColor(a.backgroundColor??0xffffff):a.backgroundColor?i.setClearColor(a.backgroundColor):i.setClearAlpha(0),i.autoClearColor=!0;let e=x(this._effectComposer);return this._effectComposer.render(),await C(i,e.renderTarget,l,r)}y=f(i.toneMapping),b=new o(a.width,a.height,{samples:4,type:t,stencilBuffer:i.getContextAttributes().stencil??!1});let c=s.background;c instanceof e&&(s.background=null);try{i.setClearColor(0,0),i.setRenderTarget(b),i.clear(),i.render(s,a.camera)}finally{s.background=c}return y.render(i,b),await C(i,y.renderTarget,l,r)}finally{null!==p.pass&&(p.composer?.removePass(p.pass),p.pass.dispose()),y?.dispose(),b?.dispose(),this._context.configuratorExtensionSelectors.getCanvasSystem().r3fHandle$.value===n&&(i.setClearColor(d,h),i.autoClearColor=u,i.setRenderTarget(g),n.set({camera:l,size:{...c,updateStyle:!1}})),await E()}}async generateAndUploadDeclaredClientSideImages(e,t,r={}){let a=this._captureGenerationGuard(),n=await a.waitFor(this.generateDeclaredClientSideImages(e,r));if(r.debug)return n;let o=new Map((await a.waitFor(a.runEffect(()=>this._context.getAuthorizedClient().generateUploadLinks(this._context.getConfigurationId(),t,n.map(e=>e.name))))).map(e=>[e.name,e.url]));return await Promise.all(n.map(async e=>{let t=o.get(e.name);if(!t)throw Error(`Presigned link for image ${e.name} not found!`);await a.waitFor(a.runEffect(()=>fetch(t,{method:"PUT",body:e.blob})))})),n}generateDeclaredClientSideImages(e,t={}){let r=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[l]},e);return this.generateImagesFromComponents(r,e,t)}async generateImagesFromComponents(t,r,o={}){let l=this._captureGenerationGuard(),p=this._context.configuratorExtensionSelectors.getCanvasSystem().r3fHandle$.value;if(null===p)throw Error("R3F state not ready");let w=!1,C=this._context.domainContextSelectors.getExportStates(),_=t.map(t=>{if(!C.includes(t.state.exportState)){let e=d(t.componentInstance.entityId)?m(t.componentInstance.entityId):"unknown entity",r=t.componentInstance.componentType.name,a=t.componentInstance.instanceName;throw Error(`Export state ${t.state.exportState} declared in component ${r}/${a} on ${e} is not a valid export state. Expected one of: ${C.join(", ")}`)}let p=t.componentInstance.entityId;if(h(p))throw Error("Virtual entities cannot be used for export");return this._context.configuratorExtensionSelectors.getExportSystem().createExportJob(r,{exportState:t.state.exportState,exportedEntityId:p,toolState:t.state.toolState,viewState:t.state.viewState,navigationState:t.state.navigationState,selectedEntityId:r.rootEntityId},async r=>{let m=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[c,g,u]},r.state);!w&&m.length>0&&(await new Promise(e=>{i({font:void 0,characters:void 0},e)}),w=!0,await this._context.configuratorExtensionSelectors.getCanvasSystem().waitForFlush());let d=this._context.configuratorExtensionSelectors.getCameraSystem().getActiveCameraConfig(r.state);if(null==d)throw Error(`No camera config is attached for export state ${t.state.exportState} and exported entity ${p}. Whenever using a client-side image component, you need to attach a camera configuration to the export state defined on that componentin the domain spec. This camera will be used to render the image.`);let h=s(d.typeSpecificConfig.cameraType).with("perspective",()=>new n(45,t.state.width/t.state.height,1,1e4)).with("orthographic",()=>new a(0,0,1e4,0,1,1e4)).exhaustive(),C=f(h);await this._context.configuratorExtensionSelectors.getCameraSystem().applyConfig(d,C,!1,{width:t.state.width,height:t.state.height,padding:{top:0,right:0,bottom:0,left:0}}),C.update(1e6),await new Promise(e=>setTimeout(e,100));let _=await l.waitFor(l.runEffect(()=>this.renderImage({width:t.state.width,height:t.state.height,fileFormat:t.state.fileFormat,backgroundColor:t.state.backgroundColor?new e(t.state.backgroundColor):void 0,camera:h})));return o.debug&&l.runEffect(()=>this._openDebugImage(_)),{blob:_,imageComponent:t,name:`${t.componentInstance.componentType.name}-${t.componentInstance.entityId}-${t.componentInstance.instanceName}`}})});if(0===_.length)return this._context.configuratorExtensionSelectors.getExportSystem().runExportJobs(_);let y=this._freezeCanvas(p);try{return await this._context.configuratorExtensionSelectors.getExportSystem().runExportJobs(_)}finally{await y()}}initialize=()=>{for(let e of(null!==this._generation&&(this._generation.active=!1),this._debugObjectUrls))URL.revokeObjectURL(e);this._debugObjectUrls.clear(),this._generation={active:!0}}}
1
+ import{Color as e,HalfFloatType as t,NoToneMapping as a,OrthographicCamera as r,PerspectiveCamera as n,WebGLRenderTarget as o}from"three";import{preloadFont as i}from"troika-three-text";import{match as s}from"ts-pattern";import{clientSideImageComponent as l,dimensionIndicatorComponent as c,domainEntityTypeFromId as m,editableDistanceDimensionIndicatorComponent as g,isDomainEntityId as d,isVirtualEntityId as h,sketchingEditComponent as u}from"#package/domain";import{createCameraControls as f}from"../camera-control-system/create-camera-controls.js";import{createCanvasFreezeFrame as p}from"./canvas-freeze-frame.js";import{ExportCapturePass as w,readTargetToBlob as C,resolveExportBackground as _}from"./export-image-capture.js";export class ImageRenderingSystem{_context;_renderer=null;_effectComposer=null;_generation=null;_debugObjectUrls=new Set;_canvasFreeze=null;constructor(e){this._context=e}_captureGenerationAssertion=()=>{let e=this._generation,t=()=>{if(!e?.active)throw Error("Image rendering generation ended while images were being rendered! The configurator context was reinitialized before the renderer finished, so the results belong to a configuration that is no longer active. Await the render before leaving the configuration, or discard the rejection.")};return t(),t};_captureGenerationGuard=()=>{let e=this._captureGenerationAssertion();return{assertActive:e,waitFor:async t=>{let a=await t;return e(),a},runEffect:t=>(e(),t())}};register(e){return this._renderer=e,()=>{this._renderer===e&&(this._renderer=null)}}registerEffectComposer(e){return this._effectComposer=e,()=>{this._effectComposer===e&&(this._effectComposer=null)}}_openDebugImage=e=>{let t=URL.createObjectURL(e);this._debugObjectUrls.add(t),window.open(t,"_blank")};_getRenderer=async()=>{let e=this._generation,t=Date.now(),a=()=>{if(!e?.active)throw Error("Image rendering generation ended while waiting for the renderer! The configurator context was reinitialized before the renderer arrived, so the render would target a scene that is gone. Await the render before leaving the configuration, or discard the rejection.")};a();let r=this._renderer;for(;null===r;){if(await new Promise(e=>setTimeout(e,50)),a(),Date.now()-t>1e4)throw Error("Renderer could not be retrieved! Reached timeout.");r=this._renderer}return r};generateImageUsingOriginalCanvas=async(e,t,a=!1)=>{let r=this._captureGenerationGuard(),n=await r.waitFor(this._getRenderer());if(a){let{blob:e}=await r.waitFor(r.runEffect(()=>n.renderUsingOriginalCanvas(t)));r.runEffect(()=>this._openDebugImage(e));return}let o=await Promise.all([t].map(async e=>{let{blob:t}=await r.waitFor(r.runEffect(()=>n.renderUsingOriginalCanvas(e)));return{blob:t,name:e.name}})),i=await r.waitFor(r.runEffect(()=>this._context.getAuthorizedClient().generateUploadLinks(this._context.getConfigurationId(),e,[t.name])));await Promise.all(i.map(async e=>{let t=o.find(t=>t.name===e.name);if(null==t)throw Error("Blob not found!");await Promise.all(i.map(async e=>{await r.waitFor(r.runEffect(()=>fetch(e.url,{method:"PUT",body:t.blob,headers:{"Content-Type":"image/png","Content-Length":t.blob.size.toString()}})))}))}))};async generateImagesUsingOriginalCanvas(e,t,a=!1){let r=this._captureGenerationGuard(),n=await r.waitFor(this._getRenderer()),o=Array.isArray(t)?t:[t],i=await o.reduce(async(e,t)=>[...await e,await r.waitFor(r.runEffect(()=>n.renderUsingOriginalCanvas(t)))],Promise.resolve([]));if(a){for(let e of i)r.runEffect(()=>this._openDebugImage(e.blob)),await r.waitFor(new Promise(e=>setTimeout(e,100)));return}let s=o.map(e=>e.name),l=await r.waitFor(r.runEffect(()=>this._context.getAuthorizedClient().generateUploadLinks(this._context.getConfigurationId(),e,s)));await Promise.all(l.map(async e=>{let t=i.find(t=>t.name===e.name);if(null==t)throw Error("Blob not found!");await Promise.all(l.map(async e=>{await r.waitFor(r.runEffect(()=>fetch(e.url,{method:"PUT",body:t.blob,headers:{"Content-Type":"image/png","Content-Length":t.blob.size.toString()}})))}))}))}async generateImages(e,t,a=!1){let r=this._captureGenerationGuard(),n=await r.waitFor(this._getRenderer()),o=t.map(e=>e.name);if(a)return void await Promise.all(t.map(async e=>{let t=await r.waitFor(r.runEffect(()=>n.renderImage(e)));r.runEffect(()=>this._openDebugImage(t))}));let i=await Promise.all(t.map(async e=>({blob:await r.waitFor(r.runEffect(()=>n.renderImage(e))),name:e.name}))),s=await r.waitFor(r.runEffect(()=>this._context.getAuthorizedClient().generateUploadLinks(this._context.getConfigurationId(),e,o)));await Promise.all(s.map(async e=>{let t=i.find(t=>t.name===e.name);if(null==t)throw Error("Blob not found!");await Promise.all(s.map(async e=>{await r.waitFor(r.runEffect(()=>fetch(e.url,{method:"PUT",body:t.blob,headers:{"Content-Type":"image/png","Content-Length":t.blob.size.toString()}})))}))}))}async getGeneratedImages(e,t=!1){let a=this._captureGenerationAssertion(),r=await this._getRenderer();return(a(),t)?(await Promise.all(e.map(async e=>{let t=await r.renderImage(e);a(),this._openDebugImage(t)})),[]):Promise.all(e.map(async e=>{let t=await r.renderImage(e);return a(),{blob:t,name:e.name}}))}_renderCurrentView=e=>{let{gl:t,scene:a,camera:r}=e.get();null!==this._effectComposer?this._effectComposer.render():t.render(a,r)};_freezeCanvas=e=>{this._canvasFreeze?.handle===e?this._canvasFreeze.holders+=1:(this._canvasFreeze?.remove(),this._canvasFreeze={handle:e,remove:p(e.get().gl.domElement,()=>this._renderCurrentView(e)),resumeFrameloop:this._context.configuratorExtensionSelectors.getExportSystem().pauseFrameloop(e),holders:1});let t=this._canvasFreeze,a=!1;return async()=>{if(!a&&(a=!0,t.holders-=1,!(t.holders>0)))try{let a=this._context.configuratorExtensionSelectors.getCanvasSystem();a.r3fHandle$.value===e&&await a.waitForFlush(),a.r3fHandle$.value===e&&0===t.holders&&this._renderCurrentView(e)}catch{}finally{0===t.holders&&(t.remove(),t.resumeFrameloop(),this._canvasFreeze===t&&(this._canvasFreeze=null))}}};async renderImage(r){let n=this._context.configuratorExtensionSelectors.getCanvasSystem(),i=n.r3fHandle$.value??await n.waitForCanvas(),{gl:s,scene:l,camera:c,size:m,advance:g}=i.get(),d=s.getRenderTarget(),h=s.getClearColor(new e),u=s.getClearAlpha(),f=s.autoClearColor,p=e=>new w(r.width,r.height,e,s.outputColorSpace),y={composer:null,pass:null},b=null,x=null,v=e=>{let t=y.pass??p(a);return y.pass=t,y.composer===e&&e.passes.at(-1)===t||(y.composer?.removePass(t),e.addPass(t),y.composer=e),t},E=async()=>{if(await this._context.configuratorExtensionSelectors.getCanvasSystem().waitForFlush(),this._context.configuratorExtensionSelectors.getCanvasSystem().r3fHandle$.value!==i)throw Error("Canvas was remounted while an image was being rendered! The export borrowed a canvas that is gone, so it cannot capture the image. Retry the export once the configurator has settled.")},S=this._freezeCanvas(i);try{i.set({size:{height:r.height,width:r.width,top:0,left:0,updateStyle:!1}}),i.set({camera:r.camera}),await E(),null!==this._effectComposer&&v(this._effectComposer),g(void 0),await E();let a="JPEG"===r.fileFormat?"image/jpeg":"image/png",n=_({sceneBackground:l.background,backgroundColor:r.backgroundColor,fileFormat:r.fileFormat,outputColorSpace:s.outputColorSpace});if(null!==this._effectComposer){s.setRenderTarget(null),"JPEG"===r.fileFormat?s.setClearColor(r.backgroundColor??0xffffff):r.backgroundColor?s.setClearColor(r.backgroundColor):s.setClearAlpha(0),s.autoClearColor=!0;let e=v(this._effectComposer);return this._effectComposer.render(),await C(s,e.renderTarget,n,a)}b=p(s.toneMapping),x=new o(r.width,r.height,{samples:4,type:t,stencilBuffer:s.getContextAttributes().stencil??!1});let c=l.background;c instanceof e&&(l.background=null);try{s.setClearColor(0,0),s.setRenderTarget(x),s.clear(),s.render(l,r.camera)}finally{l.background=c}return b.render(s,x),await C(s,b.renderTarget,n,a)}finally{null!==y.pass&&(y.composer?.removePass(y.pass),y.pass.dispose()),b?.dispose(),x?.dispose(),this._context.configuratorExtensionSelectors.getCanvasSystem().r3fHandle$.value===i&&(s.setClearColor(h,u),s.autoClearColor=f,s.setRenderTarget(d),i.set({camera:c,size:{...m,updateStyle:!1}})),await S()}}async generateAndUploadDeclaredClientSideImages(e,t,a={}){let r=this._captureGenerationGuard(),n=await r.waitFor(this.generateDeclaredClientSideImages(e,a));if(a.debug)return n;let o=new Map((await r.waitFor(r.runEffect(()=>this._context.getAuthorizedClient().generateUploadLinks(this._context.getConfigurationId(),t,n.map(e=>e.name))))).map(e=>[e.name,e.url]));return await Promise.all(n.map(async e=>{let t=o.get(e.name);if(!t)throw Error(`Presigned link for image ${e.name} not found!`);await r.waitFor(r.runEffect(()=>fetch(t,{method:"PUT",body:e.blob})))})),n}generateDeclaredClientSideImages(e,t={}){let a=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[l]},e);return this.generateImagesFromComponents(a,e,t)}generateImagesFromComponents(e,t,a={},r={}){return this._generateImagesFromComponents(e,t,a,r)}async _generateImagesFromComponents(t,a,o,l){let p=this._captureGenerationGuard(),w=!1,C=this._context.domainContextSelectors.getExportStates(),_=t.map(t=>{if(!C.includes(t.state.exportState)){let e=d(t.componentInstance.entityId)?m(t.componentInstance.entityId):"unknown entity",a=t.componentInstance.componentType.name,r=t.componentInstance.instanceName;throw Error(`Export state ${t.state.exportState} declared in component ${a}/${r} on ${e} is not a valid export state. Expected one of: ${C.join(", ")}`)}let l=t.componentInstance.entityId;if(h(l))throw Error("Virtual entities cannot be used for export");return this._context.configuratorExtensionSelectors.getExportSystem().createExportJob(a,{exportState:t.state.exportState,exportedEntityId:l,toolState:t.state.toolState,viewState:t.state.viewState,navigationState:t.state.navigationState,selectedEntityId:a.rootEntityId},async a=>{let m=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[c,g,u]},a.state);!w&&m.length>0&&(await new Promise(e=>{i({font:void 0,characters:void 0},e)}),w=!0,await this._context.configuratorExtensionSelectors.getCanvasSystem().waitForFlush());let d=this._context.configuratorExtensionSelectors.getCameraSystem().getActiveCameraConfig(a.state);if(null==d)throw Error(`No camera config is attached for export state ${t.state.exportState} and exported entity ${l}. Whenever using a client-side image component, you need to attach a camera configuration to the export state defined on that componentin the domain spec. This camera will be used to render the image.`);let h=s(d.typeSpecificConfig.cameraType).with("perspective",()=>new n(45,t.state.width/t.state.height,1,1e4)).with("orthographic",()=>new r(0,0,1e4,0,1,1e4)).exhaustive(),C=f(h);await this._context.configuratorExtensionSelectors.getCameraSystem().applyConfig(d,C,!1,{width:t.state.width,height:t.state.height,padding:{top:0,right:0,bottom:0,left:0}}),C.update(1e6),await new Promise(e=>setTimeout(e,100));let _=await p.waitFor(p.runEffect(()=>this.renderImage({width:t.state.width,height:t.state.height,fileFormat:t.state.fileFormat,backgroundColor:t.state.backgroundColor?new e(t.state.backgroundColor):void 0,camera:h})));return o.debug&&p.runEffect(()=>this._openDebugImage(_)),{blob:_,imageComponent:t,name:`${t.componentInstance.componentType.name}-${t.componentInstance.entityId}-${t.componentInstance.instanceName}`}})});if(0===_.length)return this._context.configuratorExtensionSelectors.getExportSystem().runExportJobs(_,l);let y=this._context.configuratorExtensionSelectors.getCanvasSystem(),b=y.r3fHandle$.value??await p.waitFor(y.waitForCanvas().catch(e=>{throw p.assertActive(),e})),x=this._freezeCanvas(b);try{return await this._context.configuratorExtensionSelectors.getExportSystem().runExportJobs(_,l)}finally{await x()}}initialize=()=>{for(let e of(null!==this._generation&&(this._generation.active=!1),this._debugObjectUrls))URL.revokeObjectURL(e);this._debugObjectUrls.clear(),this._generation={active:!0}}}
@@ -6,7 +6,7 @@ export { createCameraControls } from './camera-control-system/create-camera-cont
6
6
  export { type AnyCanvasSystem, CanvasSystem, type EntityObjectFilter, type FlushToken } from './canvas-system.js';
7
7
  export { type AnyDragAndDropSystem, DragAndDropSystem, type DragAndDropSystemContext, type DraggableState, type DraggingState, type RotationDraggingState, } from './drag-and-drop-system/drag-and-drop-system.js';
8
8
  export { type AnyExportSystem, ExportSystem, type ExportSystemContext } from './export-system/export-system.js';
9
- export { type GraphQLExecution, type GraphQLOperation, GraphQLSystem, type GraphQLSystemContext, type PreparedOperation, } from './graphql-system/graphql-system.js';
9
+ export { type GraphQLExecution, type GraphQLScreenshot, type GraphQLOperation, GraphQLSystem, type GraphQLSystemContext, type PreparedOperation, } from './graphql-system/graphql-system.js';
10
10
  export type * from './image-rendering-system/image-renderer.js';
11
11
  export { type AnyImageRenderingSystem, ImageRenderingSystem, type ImageRenderingSystemContext, } from './image-rendering-system/image-rendering-system.js';
12
12
  export { type AnyLayoutSystem, LayoutSystem, type LayoutSystemContext } from './layout-system/layout-system.js';
@@ -1,16 +1,14 @@
1
1
  import { type $DomainEntity, type ConfiguratorBuilder, type CreateCustomPhoenixEntityElement, type CreateCustomPhoenixLayoutElement, type CreateGetThemeHandler, type CreateGetWebComponentOptionsHandler, type CreatePhoenixHandler, type DomainEntity, type IsCreateRecipeUpdate, type IsReplaceRecipeUpdate, type TransformerBuilder, type TransformerFactory, type UpdateFactory, getIdSequence } from '#package/domain';
2
- import { type CreateAddEntityFab, type CreateCollectFrontendDataHandler, type CreateDeleteEntityFab, type CreateFilterPublishedChunksHandler, type CreateNavigationHotspot, type CreateNotAuthenticatedPage, type CreateSelectionHotspot, type CreateToolMenuFab, type IsAngleDimensionUpdate, type IsAttributeSelectionUpdate, type IsAttributeSwitchUpdate, type IsDeleteEntityUpdate, type IsDistanceDimensionUpdate, type IsGenericDimensionUpdate, type IsSwatchSelectionUpdate, type IsTextValueUpdate, type UseAccessService, type UseActiveNavigationState, type UseActiveToolState, type UseActiveViewState, type UseActiveViewports, type UseAnalyticsService, type UseAngleDimension, type UseAttributeSelection, type UseAttributeSwitch, type UseAuthenticatedClient, type UseAuthorizedClient, type UseBackendData, type UseChildEntitySelection, type UseComponent, type UseComponents, type UseComposition, type UseConfigurationId, type UseConfiguratorMessages, type UseControlViolations, type UseCookRecipes, type UseCookReplaceRecipes, type UseCookedRecipes, type UseCookedReplaceRecipes, type UseCreateAuthorizedClient, type UseDeleteEntity, type UseDeletedEntity, type UseDeselect, type UseDistanceDimension, type UseDistanceDimensionSelection, type UseDomainApplicationContext, type UseDomainApplicationProps, type UseDomainContext, type UseDomainEntityState, type UseEntityPrice, type UseEntitySelector, type UseFinalizeAction, type UseFinalizeActions, type UseFinalizeViolations, type UseFirstComponent, type UseFirstRootComponent, type UseFrontendData, type UseGenericDimension, type UseGroupedRecipeOptions, type UseHoveredDomainEntityId, type UseHoveredEntity, type UseHoveredEntityId, type UseIntegrationService, type UseIntegrationState, type UseIsFullscreenActive, type UseLoadedData, type UseLoadingState, type UseLocaleSwitch, type UseMapViolationHints, type UseNavigate, type UsePopNavigate, type UsePresetEmbeddedState, type UsePublishedData, type UsePushNavigate, type UseRecipeEmbeddedState, type UseReplaceEntityRecipeOptions, type UseRootComponents, type UseRootEntityId, type UseRootEntityPrice, type UseRootEntitySelector, type UseRootEntityState, type UseSelectEntity, type UseSelectParent, type UseSelectedDomainEntityId, type UseSelectedEntity, type UseSelectedEntityId, type UseSession, type UseSessionRole, type UseSessionService, type UseSetFullscreen, type UseSetViewState, type UseShareLinks, type UseSlice, type UseState, type UseStateValidity, type UseStepNavigation, type UseSwatchSelection, type UseSynchronizedSelector, type UseSynchronizedSelector$, type UseTabNavigation, type UseTextValue, type UseUndoRedo, type UseUpdateControl, type UseUpdatedControl, useGenerateShareLink, useLoadingStateValue, useLocalizable, useResolveLocalizable } from '#package/react-sdk';
2
+ import { type CreateAddEntityFab, type CreateAppLoader, type CreateCollectFrontendDataHandler, type CreateConfigurationNotFoundPage, type CreateConfiguratorErrorPage, type CreateDeleteEntityFab, type CreateFilterPublishedChunksHandler, type CreateNavigationHotspot, type CreateNotAuthenticatedPage, type CreateOnApplicationStartProvider, type CreateOnBackendDataReadyProvider, type CreateOnConfiguratorReadyProvider, type CreateOnFrontendDataReadyProvider, type CreateOnGoToIndexHandler, type CreateOnPresetLoadedHandler, type CreateOnPublishedDataReadyProvider, type CreateOnRoutingReadyProvider, type CreateOnSessionReadyProvider, type CreatePresetUi, type CreateSelectionHotspot, type CreateToolMenuFab, type IsAngleDimensionUpdate, type IsAttributeSelectionUpdate, type IsAttributeSwitchUpdate, type IsDeleteEntityUpdate, type IsDistanceDimensionUpdate, type IsGenericDimensionUpdate, type IsSwatchSelectionUpdate, type IsTextValueUpdate, type UseAccessService, type UseActiveNavigationState, type UseActiveToolState, type UseActiveViewState, type UseActiveViewports, type UseAnalyticsService, type UseAngleDimension, type UseAttributeSelection, type UseAttributeSwitch, type UseAuthenticatedClient, type UseAuthorizedClient, type UseBackendData, type UseChildEntitySelection, type UseComponent, type UseComponents, type UseComposition, type UseConfigurationId, type UseConfigurationSaveState, type UseConfiguratorMessages, type UseConfiguratorRouting, type UseControlViolations, type UseCookRecipes, type UseCookReplaceRecipes, type UseCookedRecipes, type UseCookedReplaceRecipes, type UseCreateAuthorizedClient, type UseDeleteEntity, type UseDeletedEntity, type UseDeselect, type UseDistanceDimension, type UseDistanceDimensionSelection, type UseDomainApplicationContext, type UseDomainApplicationProps, type UseDomainContext, type UseDomainEntityState, type UseEntityPrice, type UseEntitySelector, type UseFinalizeAction, type UseFinalizeActions, type UseFinalizeViolations, type UseFirstComponent, type UseFirstRootComponent, type UseFrontendData, type UseGenericDimension, type UseGroupedRecipeOptions, type UseHoveredDomainEntityId, type UseHoveredEntity, type UseHoveredEntityId, type UseIntegrationService, type UseIntegrationState, type UseIsFullscreenActive, type UseLoadedData, type UseLoadingState, type UseLocaleSwitch, type UseMapViolationHints, type UseNavigate, type UsePopNavigate, type UsePresetEmbeddedState, type UsePresetSelection, type UsePublishedData, type UsePushNavigate, type UseRecipeEmbeddedState, type UseReplaceEntityRecipeOptions, type UseRootComponents, type UseRootEntityId, type UseRootEntityPrice, type UseRootEntitySelector, type UseRootEntityState, type UseSelectEntity, type UseSelectParent, type UseSelectedDomainEntityId, type UseSelectedEntity, type UseSelectedEntityId, type UseSession, type UseSessionRole, type UseSessionService, type UseSetFullscreen, type UseSetViewState, type UseShareLinks, type UseSlice, type UseState, type UseStateValidity, type UseStepNavigation, type UseSwatchSelection, type UseSynchronizedSelector, type UseSynchronizedSelector$, type UseTabNavigation, type UseTextValue, type UseUndoRedo, type UseUpdateControl, type UseUpdatedControl, useGenerateShareLink, useLoadingStateValue, useLocalizable, useResolveLocalizable } from '#package/react-sdk';
3
3
  import { type CreatePhoenixIconSet } from '#package/ui-sdk';
4
4
  import { type UseConfiguratorExtensions } from '../application-runtime/index.js';
5
- import { type CreateConfigurationNotFoundPage } from '../configuration-not-found-page/index.js';
6
- import { type CreateOnApplicationStartProvider, type CreateOnBackendDataReadyProvider, type CreateOnConfiguratorReadyProvider, type CreateOnFrontendDataReadyProvider, type CreateOnGoToIndexHandler, type CreateOnPresetLoadedHandler, type CreateOnPublishedDataReadyProvider, type CreateOnRoutingReadyProvider, type CreateOnSessionReadyProvider, type UseConfiguratorRouting, type UsePresetSelection, usePreview, usePropertyPageStack, usePropertyPageState } from '../configurator-context/index.js';
7
- import { type CreateConfiguratorErrorPage } from '../configurator-error-page/index.js';
5
+ import { usePreview, usePropertyPageStack, usePropertyPageState } from '../configurator-context/index.js';
8
6
  import { useCloseAction } from '../integration/index.js';
9
7
  import { type CreateGetTextureProcessingMapHandler } from '../scene/index.js';
10
8
  import type { UseUpdateEntityObjectSelection } from '../scene/scene-entity/drag-and-drop/use-updated-selection.js';
11
9
  import { type UseAssistantPanel, type UseMeasurements, type UseToolbarActions } from '../toolbar-actions/index.js';
12
- import { type CreateAppLoader, type CreateCanvasLoader, type CreateLayoutAdminUi, type CreateLayoutCustomOwnerUi, type CreateLayoutCustomReadUi, type CreateLayoutDialog, type CreateLayoutFooter, type CreateLayoutToolbarDesktop, type CreateLayoutToolbarDesktopFullScreen, type CreateLayoutToolbarReadDesktop, type CreateLayoutToolbarReadDesktopFullScreen, type CreateLayoutUserUi, type CreateToolbarHelp, LayoutSlots, useSceneSafeArea } from '../ui/index.js';
13
- import { type CreatePresetDeviceNotSupported, type CreatePresetPageAction, type CreatePresetUi } from '../ui/preset-layout/PresetUi.js';
10
+ import { type CreateCanvasLoader, type CreateLayoutAdminUi, type CreateLayoutCustomOwnerUi, type CreateLayoutCustomReadUi, type CreateLayoutDialog, type CreateLayoutFooter, type CreateLayoutToolbarDesktop, type CreateLayoutToolbarDesktopFullScreen, type CreateLayoutToolbarReadDesktop, type CreateLayoutToolbarReadDesktopFullScreen, type CreateLayoutUserUi, type CreateToolbarHelp, LayoutSlots, useSceneSafeArea } from '../ui/index.js';
11
+ import { type CreatePresetDeviceNotSupported, type CreatePresetPageAction } from '../ui/preset-layout/PresetUi.js';
14
12
  import { type UseResetCamera } from './use-reset-camera.js';
15
13
  export interface ConfiguratorInterface<ENTITIES extends DomainEntity<string>, ALLOWED_ROOT_ENTITIES extends ENTITIES, $MAP extends Record<ENTITIES['type'], $DomainEntity<ENTITIES>>, PUBLISHED_DATA extends Record<string, unknown>, SESSION_DATA extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>, NAVIGATION_STATES extends string, VIEW_STATES extends string, TOOL_STATES extends string, EXPORT_STATES extends string, FINALIZE_DATA extends Record<string, unknown>, FINALIZE_RESULT extends Record<string, unknown>> {
16
14
  /**
@@ -387,6 +385,11 @@ export interface ConfiguratorInterface<ENTITIES extends DomainEntity<string>, AL
387
385
  * text resolved
388
386
  */
389
387
  useConfiguratorMessages: UseConfiguratorMessages<ENTITIES, $MAP>;
388
+ /**
389
+ * The save status of the configuration: `{ revisionId, isSaving, failure }`, where `failure` is the latest save's
390
+ * `{ error, timestamp }` until a later save succeeds
391
+ */
392
+ useConfigurationSaveState: UseConfigurationSaveState;
390
393
  /**
391
394
  * Runs the project handler a `finalizeAction` component names, with its pending state, its error and the
392
395
  * finalize violations; call it once per component, wrapped in `PhoenixHandlerBoundary`
@@ -1 +1 @@
1
- import{createCustomPhoenixEntityElement as e,createCustomPhoenixLayoutElement as o,createGetThemeHandler as r,createGetWebComponentOptionsHandler as t,createPhoenixHandler as i,createTransformer as n,createTransformerBuilder as s,createUpdateFactory as a,getIdSequence as m,isCreateEntityUpdate as p,isReplaceEntityUpdate as d}from"#package/domain";import{createAddEntityFab as f,createCollectFrontendDataHandler as u,createDeleteEntityFab as c,createFilterPublishedChunksHandler as g,createNavigationHotspot as l,createNotAuthenticatedPage as j,createSelectionHotspot as x,createToolMenuFab as k,isAngleDimensionUpdate as y,isAttributeSelectionUpdate as I,isAttributeSwitchUpdate as A,isDeleteEntityUpdate as C,isDistanceDimensionUpdate as S,isGenericDimensionUpdate as w,isSwatchSelectionUpdate as E,isTextValueUpdate as b,useAccessService as q,useActiveNavigationState as B,useActiveToolState as P,useActiveViewState as R,useActiveViewports as U,useAnalyticsService as h,useAngleDimension as v,useAttributeSelection as z,useAttributeSwitch as D,useAuthenticatedClient as F,useAuthorizedClient as G,useBackendData as H,useChildEntitySelection as J,useCommittedSlice as K,useCommittedState as L,useComponent as M,useComponents as N,useComposition as O,useConfigurationId as Q,useConfiguratorMessages as T,useControlViolations as V,useCookRecipes as W,useCookReplaceRecipes as X,useCookedRecipes as Y,useCookedReplaceRecipes as Z,useCreateAuthorizedClient as $,useDeleteEntity as _,useDeletedEntity as ee,useDeselect as eo,useDistanceDimension as er,useDistanceDimensionSelection as et,useDomain as ei,useDomainApplication as en,useDomainApplicationProps as es,useDomainEntityRenderedState as ea,useDomainEntityState as em,useEntityPrice as ep,useEntitySelector as ed,useFinalizeAction as ef,useFinalizeActions as eu,useFinalizeViolations as ec,useFirstComponent as eg,useFirstRenderedComponent as el,useFirstRootComponent as ej,useFirstRootRenderedComponent as ex,useFrontendData as ek,useGenerateShareLink as ey,useGenericDimension as eI,useGroupedRecipeOptions as eA,useHoveredDomainEntityId as eC,useHoveredEntity as eS,useHoveredEntityId as ew,useIntegrationService as eE,useIntegrationState as eb,useIsFullscreenActive as eq,useLoadedData as eB,useLoadingState as eP,useLoadingStateValue as eR,useLocaleSwitch as eU,useLocalizable as eh,useMapViolationHints as ev,useNavigate as ez,usePopNavigate as eD,usePresetEmbeddedState as eF,usePublishedData as eG,usePushNavigate as eH,useRecipeEmbeddedState as eJ,useRenderedComponent as eK,useRenderedComponents as eL,useRenderedEntitySelector as eM,useRenderedRootEntitySelector as eN,useRenderedSelector as eO,useRenderedSelector$ as eQ,useRenderedSlice as eT,useRenderedState as eV,useReplaceEntityRecipeOptions as eW,useResolveLocalizable as eX,useRootComponents as eY,useRootEntityId as eZ,useRootEntityPrice as e$,useRootEntityRenderedId as e_,useRootEntityRenderedState as e0,useRootEntitySelector as e1,useRootEntityState as e2,useRootRenderedComponents as e3,useSelectEntity as e4,useSelectParent as e5,useSelectedDomainEntityId as e6,useSelectedEntity as e7,useSelectedEntityId as e8,useSession as e9,useSessionRole as oe,useSessionService as oo,useSetFullscreen as or,useSetViewState as ot,useShareLinks as oi,useStateValidity as on,useStepNavigation as os,useStoreSelector as oa,useStoreSelector$ as om,useSwatchSelection as op,useTabNavigation as od,useTextValue as of,useUndoRedo as ou,useUpdateControl as oc,useUpdatedControl as og}from"#package/react-sdk";import{createPhoenixIconSet as ol}from"#package/ui-sdk";import{useConfigurator as oj}from"../application-runtime/index.js";import{createConfigurationNotFoundPage as ox}from"../configuration-not-found-page/index.js";import{createOnApplicationStartProvider as ok,createOnBackendDataReadyProvider as oy,createOnConfiguratorReadyProvider as oI,createOnFrontendDataReadyProvider as oA,createOnGoToIndexHandler as oC,createOnPresetLoadedHandler as oS,createOnPublishedDataReadyProvider as ow,createOnRoutingReadyProvider as oE,createOnSessionReadyProvider as ob,useConfiguratorRouting as oq,usePresetSelection as oB,usePreview as oP,usePropertyPageStack as oR,usePropertyPageState as oU}from"../configurator-context/index.js";import{createConfiguratorErrorPage as oh}from"../configurator-error-page/index.js";import{useCloseAction as ov}from"../integration/index.js";import{createGetTextureProcessingMapHandler as oz}from"../scene/index.js";import{useUpdateEntityObjectSelection as oD}from"../scene/scene-entity/drag-and-drop/use-updated-selection.js";import{useAssistantPanel as oF,useMeasurements as oG,useToolbarActions as oH}from"../toolbar-actions/index.js";import{LayoutSlots as oJ,createAppLoader as oK,createCanvasLoader as oL,createLayoutAdminUi as oM,createLayoutCustomOwnerUi as oN,createLayoutCustomReadUi as oO,createLayoutDialog as oQ,createLayoutFooter as oT,createLayoutToolbarDesktop as oV,createLayoutToolbarDesktopFullScreen as oW,createLayoutToolbarReadDesktop as oX,createLayoutToolbarReadDesktopFullScreen as oY,createLayoutUserUi as oZ,createToolbarHelp as o$,useSceneSafeArea as o_}from"../ui/index.js";import{createPresetDeviceNotSupported as o0,createPresetPageAction as o1,createPresetUi as o2}from"../ui/preset-layout/PresetUi.js";import{useResetCamera as o3}from"./use-reset-camera.js";export const createConfiguratorInterface=o4=>({updates:a(),getIdSequence:m,createGetWebComponentOptionsHandler:t,createGetThemeHandler:r,createPhoenixHandler:i,createCustomPhoenixEntityElement:e,createCustomPhoenixLayoutElement:o,createPhoenixIconSet:ol,createGetTextureProcessingMapHandler:oz,createCollectFrontendDataHandler:u,createFilterPublishedChunksHandler:g,createOnGoToIndexHandler:oC,createOnApplicationStartProvider:ok,createOnSessionReadyProvider:ob,createOnPublishedDataReadyProvider:ow,createOnFrontendDataReadyProvider:oA,createOnBackendDataReadyProvider:oy,createOnRoutingReadyProvider:oE,createOnConfiguratorReadyProvider:oI,createOnPresetLoadedHandler:oS,createPresetUi:o2,createPresetPageAction:o1,createPresetDeviceNotSupported:o0,createLayoutFooter:oT,createAppLoader:oK,createCanvasLoader:oL,createLayoutDialog:oQ,createLayoutToolbarDesktop:oV,createLayoutToolbarDesktopFullScreen:oW,createLayoutToolbarReadDesktop:oX,createLayoutToolbarReadDesktopFullScreen:oY,createLayoutCustomOwnerUi:oN,createLayoutCustomReadUi:oO,createLayoutAdminUi:oM,createLayoutUserUi:oZ,createToolbarHelp:o$,createNotAuthenticatedPage:j,createConfigurationNotFoundPage:ox,createConfiguratorErrorPage:oh,createAddEntityFab:f,createDeleteEntityFab:c,createSelectionHotspot:x,createNavigationHotspot:l,createToolMenuFab:k,createTransformer:n,transformerBuilder:s(),useAnalytics:h,useAuthenticatedClient:F,useAuthorizedClient:G,useCreateAuthorizedClient:$,useAccessService:q,useConfigurationId:Q,useSession:e9,useSessionRole:oe,useSessionService:oo,useDomain:ei,useDomainApplication:en,useConfigurator:oj,useConfiguratorRouting:oq,usePresetSelection:oB,usePublishedData:eG,useFrontendData:ek,useBackendData:H,useDomainApplicationProps:es,useLoadedData:eB,useIntegrationService:eE,useIntegrationState:eb,usePresetEmbeddedState:eF,useRecipeEmbeddedState:eJ,useCommittedSlice:K,useRenderedSlice:eT,useCommittedState:L,useRenderedState:eV,useStoreSelector:oa,useRenderedSelector:eO,useStoreSelector$:om,useRenderedSelector$:eQ,useEntitySelector:ed,useRenderedEntitySelector:eM,useRootEntitySelector:e1,useRenderedRootEntitySelector:eN,useStateValidity:on,useMapViolationHints:ev,useNavigate:ez,usePopNavigate:eD,usePushNavigate:eH,useControlViolations:V,useFinalizeViolations:ec,useConfiguratorMessages:T,useFinalizeAction:ef,useFinalizeActions:eu,useComponent:M,useRenderedComponent:eK,useComponents:N,useRenderedComponents:eL,useFirstComponent:eg,useFirstRenderedComponent:el,useRootComponents:eY,useRootRenderedComponents:e3,useFirstRootComponent:ej,useFirstRootRenderedComponent:ex,useEntityState:em,useEntityRenderedState:ea,useRootEntityState:e2,useRootEntityRenderedState:e0,useRootEntityId:eZ,useRootEntityRenderedId:e_,useEntityPrice:ep,useRootEntityPrice:e$,useSelectedEntity:e7,useSelectedEntityId:e8,useSelectedDomainEntityId:e6,useSelectEntity:e4,useDeselect:eo,useSelectParent:e5,useHoveredEntity:eS,useHoveredEntityId:ew,useHoveredDomainEntityId:eC,useActiveNavigationState:B,useActiveViewState:R,useSetViewState:ot,useActiveToolState:P,useIsFullscreenActive:eq,useSetFullscreen:or,useResetCamera:o3,useUndoRedo:ou,useTabNavigation:od,useStepNavigation:os,useSceneSafeArea:o_,useActiveViewports:U,usePreview:oP,useCloseAction:ov,useIsCloningAllowed:oJ.useIsCloningAllowed,useResolveLocalizable:eX,useLocalizable:eh,useToolbarActions:oH,useMeasurements:oG,useLocaleSwitch:eU,useShareLinks:oi,useAssistantPanel:oF,useComposition:O,useUpdateControl:oc,useUpdatedControl:og,useCookRecipes:W,useCookedRecipes:Y,useCookReplaceRecipes:X,useCookedReplaceRecipes:Z,useDeleteEntity:_,useDeletedEntity:ee,useSwatchSelection:op,useTextValue:of,useAttributeSelection:z,useAttributeSwitch:D,useDistanceDimension:er,useDistanceDimensionSelection:et,useGenericDimension:eI,useAngleDimension:v,useChildEntitySelection:J,useGroupedRecipeOptions:eA,useReplaceEntityRecipeOptions:eW,useUpdateEntityObjectSelection:oD,useGenerateShareLink:ey,useLoadingState:eP,useLoadingStateValue:eR,usePropertyPageStack:oR,usePropertyPageState:oU,isCreateEntityUpdate:p,isReplaceEntityUpdate:d,isDeleteEntityUpdate:C,isAngleDimensionUpdate:y,isDistanceDimensionUpdate:S,isGenericDimensionUpdate:w,isAttributeSelectionUpdate:I,isAttributeSwitchUpdate:A,isTextValueUpdate:b,isSwatchSelectionUpdate:E});
1
+ import{createCustomPhoenixEntityElement as e,createCustomPhoenixLayoutElement as t,createGetThemeHandler as r,createGetWebComponentOptionsHandler as o,createPhoenixHandler as i,createTransformer as n,createTransformerBuilder as s,createUpdateFactory as a,getIdSequence as m,isCreateEntityUpdate as p,isReplaceEntityUpdate as d}from"#package/domain";import{createAddEntityFab as c,createAppLoader as u,createCollectFrontendDataHandler as f,createConfigurationNotFoundPage as l,createConfiguratorErrorPage as g,createDeleteEntityFab as j,createFilterPublishedChunksHandler as x,createNavigationHotspot as k,createNotAuthenticatedPage as y,createOnApplicationStartProvider as I,createOnBackendDataReadyProvider as A,createOnConfiguratorReadyProvider as C,createOnFrontendDataReadyProvider as S,createOnGoToIndexHandler as w,createOnPresetLoadedHandler as E,createOnPublishedDataReadyProvider as b,createOnRoutingReadyProvider as q,createOnSessionReadyProvider as B,createPresetUi as P,createSelectionHotspot as R,createToolMenuFab as U,isAngleDimensionUpdate as h,isAttributeSelectionUpdate as v,isAttributeSwitchUpdate as z,isDeleteEntityUpdate as D,isDistanceDimensionUpdate as F,isGenericDimensionUpdate as G,isSwatchSelectionUpdate as H,isTextValueUpdate as J,useAccessService as K,useActiveNavigationState as L,useActiveToolState as M,useActiveViewState as N,useActiveViewports as O,useAnalyticsService as Q,useAngleDimension as T,useAttributeSelection as V,useAttributeSwitch as W,useAuthenticatedClient as X,useAuthorizedClient as Y,useBackendData as Z,useChildEntitySelection as $,useCommittedSlice as _,useCommittedState as ee,useComponent as et,useComponents as er,useComposition as eo,useConfigurationId as ei,useConfigurationSaveState as en,useConfiguratorMessages as es,useConfiguratorRouting as ea,useControlViolations as em,useCookRecipes as ep,useCookReplaceRecipes as ed,useCookedRecipes as ec,useCookedReplaceRecipes as eu,useCreateAuthorizedClient as ef,useDeleteEntity as el,useDeletedEntity as eg,useDeselect as ej,useDistanceDimension as ex,useDistanceDimensionSelection as ek,useDomain as ey,useDomainApplication as eI,useDomainApplicationProps as eA,useDomainEntityRenderedState as eC,useDomainEntityState as eS,useEntityPrice as ew,useEntitySelector as eE,useFinalizeAction as eb,useFinalizeActions as eq,useFinalizeViolations as eB,useFirstComponent as eP,useFirstRenderedComponent as eR,useFirstRootComponent as eU,useFirstRootRenderedComponent as eh,useFrontendData as ev,useGenerateShareLink as ez,useGenericDimension as eD,useGroupedRecipeOptions as eF,useHoveredDomainEntityId as eG,useHoveredEntity as eH,useHoveredEntityId as eJ,useIntegrationService as eK,useIntegrationState as eL,useIsFullscreenActive as eM,useLoadedData as eN,useLoadingState as eO,useLoadingStateValue as eQ,useLocaleSwitch as eT,useLocalizable as eV,useMapViolationHints as eW,useNavigate as eX,usePopNavigate as eY,usePresetEmbeddedState as eZ,usePresetSelection as e$,usePublishedData as e_,usePushNavigate as e0,useRecipeEmbeddedState as e1,useRenderedComponent as e2,useRenderedComponents as e3,useRenderedEntitySelector as e4,useRenderedRootEntitySelector as e5,useRenderedSelector as e6,useRenderedSelector$ as e7,useRenderedSlice as e8,useRenderedState as e9,useReplaceEntityRecipeOptions as te,useResolveLocalizable as tt,useRootComponents as tr,useRootEntityId as to,useRootEntityPrice as ti,useRootEntityRenderedId as tn,useRootEntityRenderedState as ts,useRootEntitySelector as ta,useRootEntityState as tm,useRootRenderedComponents as tp,useSelectEntity as td,useSelectParent as tc,useSelectedDomainEntityId as tu,useSelectedEntity as tf,useSelectedEntityId as tl,useSession as tg,useSessionRole as tj,useSessionService as tx,useSetFullscreen as tk,useSetViewState as ty,useShareLinks as tI,useStateValidity as tA,useStepNavigation as tC,useStoreSelector as tS,useStoreSelector$ as tw,useSwatchSelection as tE,useTabNavigation as tb,useTextValue as tq,useUndoRedo as tB,useUpdateControl as tP,useUpdatedControl as tR}from"#package/react-sdk";import{createPhoenixIconSet as tU}from"#package/ui-sdk";import{useConfigurator as th}from"../application-runtime/index.js";import{usePreview as tv,usePropertyPageStack as tz,usePropertyPageState as tD}from"../configurator-context/index.js";import{useCloseAction as tF}from"../integration/index.js";import{createGetTextureProcessingMapHandler as tG}from"../scene/index.js";import{useUpdateEntityObjectSelection as tH}from"../scene/scene-entity/drag-and-drop/use-updated-selection.js";import{useAssistantPanel as tJ,useMeasurements as tK,useToolbarActions as tL}from"../toolbar-actions/index.js";import{LayoutSlots as tM,createCanvasLoader as tN,createLayoutAdminUi as tO,createLayoutCustomOwnerUi as tQ,createLayoutCustomReadUi as tT,createLayoutDialog as tV,createLayoutFooter as tW,createLayoutToolbarDesktop as tX,createLayoutToolbarDesktopFullScreen as tY,createLayoutToolbarReadDesktop as tZ,createLayoutToolbarReadDesktopFullScreen as t$,createLayoutUserUi as t_,createToolbarHelp as t0,useSceneSafeArea as t1}from"../ui/index.js";import{createPresetDeviceNotSupported as t2,createPresetPageAction as t3}from"../ui/preset-layout/PresetUi.js";import{useResetCamera as t4}from"./use-reset-camera.js";export const createConfiguratorInterface=t5=>({updates:a(),getIdSequence:m,createGetWebComponentOptionsHandler:o,createGetThemeHandler:r,createPhoenixHandler:i,createCustomPhoenixEntityElement:e,createCustomPhoenixLayoutElement:t,createPhoenixIconSet:tU,createGetTextureProcessingMapHandler:tG,createCollectFrontendDataHandler:f,createFilterPublishedChunksHandler:x,createOnGoToIndexHandler:w,createOnApplicationStartProvider:I,createOnSessionReadyProvider:B,createOnPublishedDataReadyProvider:b,createOnFrontendDataReadyProvider:S,createOnBackendDataReadyProvider:A,createOnRoutingReadyProvider:q,createOnConfiguratorReadyProvider:C,createOnPresetLoadedHandler:E,createPresetUi:P,createPresetPageAction:t3,createPresetDeviceNotSupported:t2,createLayoutFooter:tW,createAppLoader:u,createCanvasLoader:tN,createLayoutDialog:tV,createLayoutToolbarDesktop:tX,createLayoutToolbarDesktopFullScreen:tY,createLayoutToolbarReadDesktop:tZ,createLayoutToolbarReadDesktopFullScreen:t$,createLayoutCustomOwnerUi:tQ,createLayoutCustomReadUi:tT,createLayoutAdminUi:tO,createLayoutUserUi:t_,createToolbarHelp:t0,createNotAuthenticatedPage:y,createConfigurationNotFoundPage:l,createConfiguratorErrorPage:g,createAddEntityFab:c,createDeleteEntityFab:j,createSelectionHotspot:R,createNavigationHotspot:k,createToolMenuFab:U,createTransformer:n,transformerBuilder:s(),useAnalytics:Q,useAuthenticatedClient:X,useAuthorizedClient:Y,useCreateAuthorizedClient:ef,useAccessService:K,useConfigurationId:ei,useSession:tg,useSessionRole:tj,useSessionService:tx,useDomain:ey,useDomainApplication:eI,useConfigurator:th,useConfiguratorRouting:ea,usePresetSelection:e$,usePublishedData:e_,useFrontendData:ev,useBackendData:Z,useDomainApplicationProps:eA,useLoadedData:eN,useIntegrationService:eK,useIntegrationState:eL,usePresetEmbeddedState:eZ,useRecipeEmbeddedState:e1,useCommittedSlice:_,useRenderedSlice:e8,useCommittedState:ee,useRenderedState:e9,useStoreSelector:tS,useRenderedSelector:e6,useStoreSelector$:tw,useRenderedSelector$:e7,useEntitySelector:eE,useRenderedEntitySelector:e4,useRootEntitySelector:ta,useRenderedRootEntitySelector:e5,useStateValidity:tA,useMapViolationHints:eW,useNavigate:eX,usePopNavigate:eY,usePushNavigate:e0,useControlViolations:em,useFinalizeViolations:eB,useConfiguratorMessages:es,useConfigurationSaveState:en,useFinalizeAction:eb,useFinalizeActions:eq,useComponent:et,useRenderedComponent:e2,useComponents:er,useRenderedComponents:e3,useFirstComponent:eP,useFirstRenderedComponent:eR,useRootComponents:tr,useRootRenderedComponents:tp,useFirstRootComponent:eU,useFirstRootRenderedComponent:eh,useEntityState:eS,useEntityRenderedState:eC,useRootEntityState:tm,useRootEntityRenderedState:ts,useRootEntityId:to,useRootEntityRenderedId:tn,useEntityPrice:ew,useRootEntityPrice:ti,useSelectedEntity:tf,useSelectedEntityId:tl,useSelectedDomainEntityId:tu,useSelectEntity:td,useDeselect:ej,useSelectParent:tc,useHoveredEntity:eH,useHoveredEntityId:eJ,useHoveredDomainEntityId:eG,useActiveNavigationState:L,useActiveViewState:N,useSetViewState:ty,useActiveToolState:M,useIsFullscreenActive:eM,useSetFullscreen:tk,useResetCamera:t4,useUndoRedo:tB,useTabNavigation:tb,useStepNavigation:tC,useSceneSafeArea:t1,useActiveViewports:O,usePreview:tv,useCloseAction:tF,useIsCloningAllowed:tM.useIsCloningAllowed,useResolveLocalizable:tt,useLocalizable:eV,useToolbarActions:tL,useMeasurements:tK,useLocaleSwitch:eT,useShareLinks:tI,useAssistantPanel:tJ,useComposition:eo,useUpdateControl:tP,useUpdatedControl:tR,useCookRecipes:ep,useCookedRecipes:ec,useCookReplaceRecipes:ed,useCookedReplaceRecipes:eu,useDeleteEntity:el,useDeletedEntity:eg,useSwatchSelection:tE,useTextValue:tq,useAttributeSelection:V,useAttributeSwitch:W,useDistanceDimension:ex,useDistanceDimensionSelection:ek,useGenericDimension:eD,useAngleDimension:T,useChildEntitySelection:$,useGroupedRecipeOptions:eF,useReplaceEntityRecipeOptions:te,useUpdateEntityObjectSelection:tH,useGenerateShareLink:ez,useLoadingState:eO,useLoadingStateValue:eQ,usePropertyPageStack:tz,usePropertyPageState:tD,isCreateEntityUpdate:p,isReplaceEntityUpdate:d,isDeleteEntityUpdate:D,isAngleDimensionUpdate:h,isDistanceDimensionUpdate:F,isGenericDimensionUpdate:G,isAttributeSelectionUpdate:v,isAttributeSwitchUpdate:z,isTextValueUpdate:J,isSwatchSelectionUpdate:H});
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The default `ConfigurationNotFoundPage` registration: the built-in `ConfigurationNotFoundPage`,
3
+ * with the props the configurator renders the element with.
4
+ */
5
+ export declare const BuiltInConfigurationNotFoundPage: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as o}from"react/jsx-runtime";import{ConfigurationNotFoundPage as t,useConfigurationNotFoundPageProps as r}from"#package/react-sdk";export const BuiltInConfigurationNotFoundPage=()=>o(t,{...r()});
@@ -1,10 +1,4 @@
1
1
  import { type ConfigurationNotFoundPageProps } from '#package/react-sdk';
2
- /**
3
- * The name a project registers a layout element under to replace the page shown when a configuration
4
- * cannot be loaded or opened. Its default, the built-in `ConfigurationNotFoundPage`, is registered in
5
- * `defaultConfiguratorElements`.
6
- */
7
- export declare const ConfigurationNotFoundPageName = "ConfigurationNotFoundPage";
8
2
  /**
9
3
  * Renders the `ConfigurationNotFoundPage` element. `onBack` is passed only where leaving the page leads
10
4
  * somewhere, which is the start of the configurator.
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{PhoenixLayoutElement as t}from"#package/react-sdk";export const ConfigurationNotFoundPageName="ConfigurationNotFoundPage";export const ConfigurationNotFoundPageElement=n=>o(t,{name:"ConfigurationNotFoundPage",elementProps:{...n}});
1
+ import{jsx as e}from"react/jsx-runtime";import{ConfigurationNotFoundPageName as o,ConfigurationNotFoundPagePropsProvider as r,PhoenixLayoutElement as t}from"#package/react-sdk";export const ConfigurationNotFoundPageElement=a=>e(r,{value:a,children:e(t,{name:o,elementProps:{...a}})});
@@ -1,2 +1,2 @@
1
- export { ConfigurationNotFoundPageElement, ConfigurationNotFoundPageName } from './ConfigurationNotFoundPageElement.js';
2
- export { createConfigurationNotFoundPage, type CreateConfigurationNotFoundPage, } from './create-configuration-not-found-page.js';
1
+ export { BuiltInConfigurationNotFoundPage } from './BuiltInConfigurationNotFoundPage.js';
2
+ export { ConfigurationNotFoundPageElement } from './ConfigurationNotFoundPageElement.js';
@@ -1 +1 @@
1
- export{ConfigurationNotFoundPageElement,ConfigurationNotFoundPageName}from"./ConfigurationNotFoundPageElement.js";export{createConfigurationNotFoundPage}from"./create-configuration-not-found-page.js";
1
+ export{BuiltInConfigurationNotFoundPage}from"./BuiltInConfigurationNotFoundPage.js";export{ConfigurationNotFoundPageElement}from"./ConfigurationNotFoundPageElement.js";
@@ -4,9 +4,9 @@ interface ConfiguratorResponsiveProviderProps {
4
4
  readonly containerZIndex: number;
5
5
  }
6
6
  /**
7
- * Gives the configurator its responsive state for as long as it is mounted, and renders the root
8
- * container that measures itself into that state. The lifecycle reads the state from the runtime
9
- * provider, the UI through `useResponsive()`.
7
+ * Renders the configurator's root container, which measures itself into the application runtime's
8
+ * responsive state. The lifecycle reads that state from the runtime, the UI through
9
+ * `useResponsive()`. The state belongs to this mount: it is reset when the container unmounts.
10
10
  */
11
11
  export declare const ConfiguratorResponsiveProvider: (props: ConfiguratorResponsiveProviderProps) => import("react/jsx-runtime").JSX.Element;
12
12
  export {};
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{useState as e}from"react";import{ResponsiveStateManager as o,ResponsiveStateProvider as t}from"#package/react-sdk";import{ResponsiveApplicationProvider as a}from"#package/ui-sdk";export const ConfiguratorResponsiveProvider=i=>{let{children:n,containerZIndex:m}=i,[c]=e(()=>new o);return r(t,{manager:c,children:r(a,{containerZIndex:m,store:c,children:n})})};
1
+ import{jsx as r}from"react/jsx-runtime";import{useLayoutEffect as e}from"react";import{useResponsiveActions as o,useResponsiveStore as t}from"#package/react-sdk";import{ResponsiveApplicationProvider as i}from"#package/ui-sdk";export const ConfiguratorResponsiveProvider=a=>{let{children:m,containerZIndex:n}=a,s=t(),{reset:c}=o();return e(()=>()=>{c()},[c]),r(i,{containerZIndex:n,store:s,children:m})};
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{createContext as r,useCallback as t,useContext as o,useEffect as i,useMemo as a,useState as n}from"react";import{match as s}from"ts-pattern";import{standardWebComponentProperties as d}from"#package/domain";import{useResponsiveState as m,useResponsiveStateManager as p,useWebComponentPropertyState as u,useWebComponentPropertyValue as w}from"#package/react-sdk";let h=r(null);export const PreviewContextProvider=r=>{let{children:o,preview:v,alwaysExpand:c}=r,[f,x]=n(!0),[l,P]=u(d.expanded),g=w(d.mode),k=w(d.power),{isMobile:C}=m(),{expand:b,collapse:j,show:y,hide:E}=p(),q=t(()=>{x(!1),(c||C)&&P(!0)},[C,c,P]),z=t(()=>{x(!0),P(!1)},[P]),A=a(()=>!!l||"configurator"===g&&s(v).with("hide",()=>!1).with("never",()=>!1).with("always",()=>!0).with("auto",()=>C).exhaustive(),[v,l,C,g]),B=!l&&A&&f,D="hide"===v&&!l&&"configurator"===g,F=a(()=>({isPreview:B,isExpanded:l,enter:q,leave:z,isPreviewEnabled:A,isHidden:D}),[B,l,q,z,A,D]),G=s(k).with("on",()=>!0).with("standby","off",()=>!1).exhaustive();return i(()=>{l&&G?b():j()},[l,b,j,G]),i(()=>{D?E():y()},[D,E,y]),e(h.Provider,{value:F,children:o})};export const usePreview=()=>{let e=o(h);if(!e)throw Error("Context was not provided - usePreview must be used inside PreviewContext provider");return e};
1
+ import{jsx as e}from"react/jsx-runtime";import{createContext as r,useCallback as t,useContext as o,useEffect as i,useMemo as a,useState as n}from"react";import{match as s}from"ts-pattern";import{standardWebComponentProperties as d}from"#package/domain";import{useResponsiveActions as m,useResponsiveState as p,useWebComponentPropertyState as u,useWebComponentPropertyValue as w}from"#package/react-sdk";let h=r(null);export const PreviewContextProvider=r=>{let{children:o,preview:v,alwaysExpand:c}=r,[f,x]=n(!0),[l,P]=u(d.expanded),g=w(d.mode),k=w(d.power),{isMobile:C}=p(),{expand:b,collapse:j,show:y,hide:E}=m(),q=t(()=>{x(!1),(c||C)&&P(!0)},[C,c,P]),z=t(()=>{x(!0),P(!1)},[P]),A=a(()=>!!l||"configurator"===g&&s(v).with("hide",()=>!1).with("never",()=>!1).with("always",()=>!0).with("auto",()=>C).exhaustive(),[v,l,C,g]),B=!l&&A&&f,D="hide"===v&&!l&&"configurator"===g,F=a(()=>({isPreview:B,isExpanded:l,enter:q,leave:z,isPreviewEnabled:A,isHidden:D}),[B,l,q,z,A,D]),G=s(k).with("on",()=>!0).with("standby","off",()=>!1).exhaustive();return i(()=>{l&&G?b():j()},[l,b,j,G]),i(()=>{D?E():y()},[D,E,y]),e(h.Provider,{value:F,children:o})};export const usePreview=()=>{let e=o(h);if(!e)throw Error("Context was not provided - usePreview must be used inside PreviewContext provider");return e};
@@ -1,4 +1,3 @@
1
1
  export { useLayoutSystemConfig, useEnterSidebarSummary, useLeaveSidebarSummary, useIsSidebarSummaryActive, useSidebarSummary, useSidebarContents, useSidebarGoBack, useHasSidebarSummary, useToolbarState, useSteps, useBackToPresetEnabled, useEmbeddedModeActive, usePresetEmbeddedModeActive, useHasSteps, useHeaderStyle, } from './layout-hooks.js';
2
2
  export { usePropertyPageState, usePropertyPageStack } from './property-page/property-page-hooks.js';
3
3
  export { PropertyStateProvider } from './property-page/PropertyStateProvider.js';
4
- export { useChatEnabled } from './chat-hooks.js';
@@ -1 +1 @@
1
- export{useLayoutSystemConfig,useEnterSidebarSummary,useLeaveSidebarSummary,useIsSidebarSummaryActive,useSidebarSummary,useSidebarContents,useSidebarGoBack,useHasSidebarSummary,useToolbarState,useSteps,useBackToPresetEnabled,useEmbeddedModeActive,usePresetEmbeddedModeActive,useHasSteps,useHeaderStyle}from"./layout-hooks.js";export{usePropertyPageState,usePropertyPageStack}from"./property-page/property-page-hooks.js";export{PropertyStateProvider}from"./property-page/PropertyStateProvider.js";export{useChatEnabled}from"./chat-hooks.js";
1
+ export{useLayoutSystemConfig,useEnterSidebarSummary,useLeaveSidebarSummary,useIsSidebarSummaryActive,useSidebarSummary,useSidebarContents,useSidebarGoBack,useHasSidebarSummary,useToolbarState,useSteps,useBackToPresetEnabled,useEmbeddedModeActive,usePresetEmbeddedModeActive,useHasSteps,useHeaderStyle}from"./layout-hooks.js";export{usePropertyPageState,usePropertyPageStack}from"./property-page/property-page-hooks.js";export{PropertyStateProvider}from"./property-page/PropertyStateProvider.js";
@@ -1 +1 @@
1
- import{useCallback as e,useMemo as t}from"react";import{fixedHeaderComponent as r,floatingHeaderComponent as s,isFixedHeaderSnapshot as a,isFloatingHeaderSnapshot as n,navigationStepsComponent as o}from"#package/domain";import{useActiveNavigationState as i,useDomain as m,useFirstComponent as u,usePresetEmbeddedState as d,useStoreSelector as l}from"#package/react-sdk";import{useConfigurator as p}from"../../application-runtime/index.js";import{usePresetSelection as c}from"../PresetSelectionProvider.js";export const useLayoutSystemConfig=()=>{let{layoutSystem:e}=p();return l(t=>e.getLayoutConfig(t.state),[e])};export const useEnterSidebarSummary=()=>{let{storeSystem:t}=m(),{layoutSystem:r}=p();return e(()=>{let e=r.getEnterSidebarSummaryUpdates(t.stateSlices.committed.value.state);t.stageAndCommit(e)},[r,t])};export const useLeaveSidebarSummary=()=>{let{storeSystem:t}=m(),{layoutSystem:r}=p();return e(()=>{let e=r.getLeaveSidebarSummaryUpdates(t.stateSlices.committed.value.state);t.stageAndCommit(e)},[r,t])};export const useIsSidebarSummaryActive=()=>{let{layoutSystem:e}=p();return l(t=>e.getSidebarSummaryPage(t.state).isSummaryActive,[e])};export const useSidebarSummary=()=>{let{layoutSystem:e}=p();return l(t=>e.getSidebarSummaryPage(t.state),[e])};export const useSidebarContents=()=>{let{layoutSystem:e}=p();return l(t=>e.getSidebarContent(t.state),[e])};export const useSidebarGoBack=()=>{let{layoutSystem:t}=p(),{storeSystem:r}=m();return e(()=>{let e=t.getSidebarBackUpdates(r.stateSlices.committed.value.state);r.stageAndCommit(e)},[t,r])};export const useHasSidebarSummary=()=>{let{page:e}=useSidebarSummary();return null!==e};export const useToolbarState=()=>{let{layoutSystem:e}=p();return l(t=>e.getToolbarState(t.state),[e])};export const useEmbeddedModeActive=()=>!!d();export const usePresetEmbeddedModeActive=()=>d()?.type==="preset";export const useBackToPresetEnabled=()=>{let{hasMultiplePresets:e}=c();return!d()&&e};export const useSteps=()=>{let e=u({componentTypes:[o]}),r=i(),{hasMultiplePresets:s}=c(),a=!!d(),n=t(()=>e?.state.steps??[],[e]),m=t(()=>n.findIndex(e=>e.navigationStates.includes(r)),[n,r]),l=t(()=>n.length>1&&0===m,[m,n.length]),p=t(()=>n.length>1&&m===n.length-1,[m,n.length]),S=t(()=>(m+1)/(n.length+1)*100,[m,n.length]);return{currentStep:t(()=>n.find(e=>e.navigationStates.includes(r)),[n,r]),progress:S,hasSteps:n.length>1,isFirstStep:l,isLastStep:p,previousStepDisabled:l&&!(!a&&s)}};export const useHasSteps=()=>{let{componentReader:e}=m();return l(t=>{let r=e.readFirstComponent({componentTypes:[o],entityIds:[t.state.rootEntityId]},t.state);return r&&r.state.steps.length>0},[e])};export const useHeaderStyle=()=>{let e=u({componentTypes:[s,r]});return t(()=>e?n(e)?"floating":a(e)?"fixed":"none":"none",[e])};
1
+ import{useCallback as e,useMemo as t}from"react";import{fixedHeaderComponent as r,floatingHeaderComponent as a,isFixedHeaderSnapshot as s,isFloatingHeaderSnapshot as n,navigationStepsComponent as o}from"#package/domain";import{useActiveNavigationState as i,useDomain as u,useFirstComponent as m,usePresetEmbeddedState as d,usePresetSelection as l,useStoreSelector as p}from"#package/react-sdk";import{useConfigurator as c}from"../../application-runtime/index.js";export const useLayoutSystemConfig=()=>{let{layoutSystem:e}=c();return p(t=>e.getLayoutConfig(t.state),[e])};export const useEnterSidebarSummary=()=>{let{storeSystem:t}=u(),{layoutSystem:r}=c();return e(()=>{let e=r.getEnterSidebarSummaryUpdates(t.stateSlices.committed.value.state);t.stageAndCommit(e)},[r,t])};export const useLeaveSidebarSummary=()=>{let{storeSystem:t}=u(),{layoutSystem:r}=c();return e(()=>{let e=r.getLeaveSidebarSummaryUpdates(t.stateSlices.committed.value.state);t.stageAndCommit(e)},[r,t])};export const useIsSidebarSummaryActive=()=>{let{layoutSystem:e}=c();return p(t=>e.getSidebarSummaryPage(t.state).isSummaryActive,[e])};export const useSidebarSummary=()=>{let{layoutSystem:e}=c();return p(t=>e.getSidebarSummaryPage(t.state),[e])};export const useSidebarContents=()=>{let{layoutSystem:e}=c();return p(t=>e.getSidebarContent(t.state),[e])};export const useSidebarGoBack=()=>{let{layoutSystem:t}=c(),{storeSystem:r}=u();return e(()=>{let e=t.getSidebarBackUpdates(r.stateSlices.committed.value.state);r.stageAndCommit(e)},[t,r])};export const useHasSidebarSummary=()=>{let{page:e}=useSidebarSummary();return null!==e};export const useToolbarState=()=>{let{layoutSystem:e}=c();return p(t=>e.getToolbarState(t.state),[e])};export const useEmbeddedModeActive=()=>!!d();export const usePresetEmbeddedModeActive=()=>d()?.type==="preset";export const useBackToPresetEnabled=()=>{let{hasMultiplePresets:e}=l();return!d()&&e};export const useSteps=()=>{let e=m({componentTypes:[o]}),r=i(),{hasMultiplePresets:a}=l(),s=!!d(),n=t(()=>e?.state.steps??[],[e]),u=t(()=>n.findIndex(e=>e.navigationStates.includes(r)),[n,r]),p=t(()=>n.length>1&&0===u,[u,n.length]),c=t(()=>n.length>1&&u===n.length-1,[u,n.length]),S=t(()=>(u+1)/(n.length+1)*100,[u,n.length]);return{currentStep:t(()=>n.find(e=>e.navigationStates.includes(r)),[n,r]),progress:S,hasSteps:n.length>1,isFirstStep:p,isLastStep:c,previousStepDisabled:p&&!(!s&&a)}};export const useHasSteps=()=>{let{componentReader:e}=u();return p(t=>{let r=e.readFirstComponent({componentTypes:[o],entityIds:[t.state.rootEntityId]},t.state);return r&&r.state.steps.length>0},[e])};export const useHeaderStyle=()=>{let e=m({componentTypes:[a,r]});return t(()=>e?n(e)?"floating":s(e)?"fixed":"none":"none",[e])};
@@ -1,9 +1,4 @@
1
- export { usePresetSelection, type UsePresetSelection, PresetSelectionProvider, type PresetSelectionProviderProps, } from './PresetSelectionProvider.js';
2
- export { useOnPresetLoadedHandler, createOnPresetLoadedHandler, type CreateOnPresetLoadedHandler, } from './OnPresetLoadedHandler.js';
3
- export { IntegrationSubscription, type IntegrationSubscriptionProps } from './IntegrationSubscription.js';
4
1
  export { ViewportStateSync } from './ViewportStateSync.js';
5
2
  export { PreviewApplicationProvider } from './PreviewApplicationProvider.js';
6
3
  export { PreviewContextProvider, usePreview } from './PreviewContextProvider.js';
7
- export * from './LifecycleProviders.js';
8
4
  export * from './configurator-hooks/index.js';
9
- export * from './configurator-routing/index.js';