@salsita-ai/sdk 0.50.0-develop.6d8967bc99 → 0.50.0-develop.70dc8d05b6

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 (670) hide show
  1. package/README.md +3 -3
  2. package/dist/admin/create-admin-pages-from-spec.d.ts +1 -1
  3. package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
  4. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  5. package/dist/application-spec/errors/diagnostic-messages.d.ts +12 -0
  6. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  7. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +8 -1
  8. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  9. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  10. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +56 -56
  11. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +1 -1
  12. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  13. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  14. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  15. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  16. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +11 -11
  17. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +1 -1
  18. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  19. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  20. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  21. package/dist/application-spec/generate-application/code/templates/globals.js +5 -4
  22. package/dist/application-spec/generate-application/code/templates/index.d.ts +0 -7
  23. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  24. package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
  25. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +66 -42
  26. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +8 -2
  27. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +13 -14
  28. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +6 -8
  29. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +4 -3
  30. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -2
  31. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +1 -3
  32. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +1 -3
  33. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +2 -1
  34. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  35. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +2 -4
  36. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  37. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  38. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  39. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  40. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  41. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  42. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +7 -2
  43. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  44. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  45. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  46. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  47. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  48. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  49. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  50. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  51. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  52. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  53. package/dist/client/authorized-client.d.ts +3 -1
  54. package/dist/client/authorized-client.js +1 -1
  55. package/dist/client/contract.d.ts +34 -0
  56. package/dist/client/contract.js +1 -1
  57. package/dist/client/index.d.ts +2 -2
  58. package/dist/client/index.js +1 -1
  59. package/dist/client/local-authorized-client.d.ts +3 -1
  60. package/dist/client/local-authorized-client.js +1 -1
  61. package/dist/client/memory-authorized-client.d.ts +3 -1
  62. package/dist/client/memory-authorized-client.js +1 -1
  63. package/dist/client/phoenix-api.d.ts +215 -2
  64. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  65. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  66. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  67. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +92 -3
  68. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  69. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  70. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +14 -4
  71. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  72. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  73. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  74. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  75. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  76. package/dist/configurator/common/configurator-interface.d.ts +5 -1
  77. package/dist/configurator/common/configurator-interface.js +1 -1
  78. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +6 -0
  79. package/dist/configurator/pages/DefaultConfiguratorLayout.js +1 -0
  80. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  81. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +2 -1
  82. package/dist/configurator/ui/assistant/AssistantComposer.js +1 -1
  83. package/dist/configurator/ui/assistant/AssistantThread.d.ts +6 -2
  84. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  85. package/dist/configurator/ui/assistant/thread-items.d.ts +13 -2
  86. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  87. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +1 -75
  88. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  89. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  90. package/dist/configurator/ui/configurator-layout/universal/DesktopSidebar.d.ts +92 -0
  91. package/dist/configurator/ui/configurator-layout/universal/DesktopSidebar.js +16 -0
  92. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  93. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  94. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  95. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  96. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  97. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  98. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +16 -19
  99. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  100. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  101. package/dist/docs/index.json +11 -1
  102. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  103. package/dist/docs/layouts/custom-layout.mdx +981 -0
  104. package/dist/docs/other-features/side-effects.mdx +8 -11
  105. package/dist/docs/other-features/violation-messages.mdx +52 -56
  106. package/dist/docs/phoenix/configurator-interface.mdx +105 -65
  107. package/dist/docs/phoenix/deployments.mdx +1 -1
  108. package/dist/docs/phoenix/domain-model.mdx +4 -0
  109. package/dist/docs/phoenix/expression-context.mdx +11 -3
  110. package/dist/docs/phoenix/getting-started.mdx +1 -1
  111. package/dist/docs/phoenix/phoenix-cli.mdx +43 -47
  112. package/dist/docs/phoenix/project-structure.mdx +16 -10
  113. package/dist/docs/phoenix/quickstart.mdx +2 -2
  114. package/dist/docs/phoenix/sdk-builder-workflow.mdx +8 -8
  115. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  116. package/dist/docs/phoenix/webhooks.mdx +2 -2
  117. package/dist/docs/ux-guidelines/choosing-a-control.mdx +11 -0
  118. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -11
  119. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  120. package/dist/domain/admin-domain/index.d.ts +8 -3
  121. package/dist/domain/admin-domain/index.js +1 -1
  122. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +2 -2
  123. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  124. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  125. package/dist/domain/application/admin-page-factories.d.ts +1 -2
  126. package/dist/domain/application/application-config.d.ts +7 -26
  127. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  128. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  129. package/dist/domain/application/assistant/assistant-manifest.d.ts +11 -1
  130. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +38 -2
  131. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  132. package/dist/domain/application/assistant/assistant-value-type.js +1 -1
  133. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  134. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  135. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  136. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  137. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  138. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +1 -11
  139. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  140. package/dist/domain/application/assistant/index.d.ts +6 -1
  141. package/dist/domain/application/assistant/index.js +1 -1
  142. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  143. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  144. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  145. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  146. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  147. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  148. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  149. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  150. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  151. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  152. package/dist/domain/application/assistant-mutations.d.ts +2 -1
  153. package/dist/domain/application/assistant-mutations.js +1 -1
  154. package/dist/domain/application/assistant-recipe-groups.d.ts +1 -1
  155. package/dist/domain/application/configurator-builder.d.ts +2 -2
  156. package/dist/domain/application/configurator-builder.js +1 -1
  157. package/dist/domain/application/create-initial-published-data.d.ts +6 -7
  158. package/dist/domain/application/index.d.ts +2 -6
  159. package/dist/domain/application/index.js +1 -1
  160. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  161. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  162. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  163. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  164. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  165. package/dist/domain/application/published-data/build-legend-data.d.ts +1 -1
  166. package/dist/domain/application/published-data/format-field-type.d.ts +1 -1
  167. package/dist/domain/application/published-data/map-data-to-sheet.d.ts +1 -1
  168. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +3 -3
  169. package/dist/domain/application/published-data/map-published-data.d.ts +7 -3
  170. package/dist/domain/application/published-data/validate-sheet-data.d.ts +1 -1
  171. package/dist/domain/available-system-components.js +1 -1
  172. package/dist/domain/core/action/action-factory.d.ts +11 -0
  173. package/dist/domain/core/{action.d.ts → action/action.d.ts} +21 -16
  174. package/dist/domain/core/action/index.d.ts +2 -0
  175. package/dist/domain/core/action/index.js +1 -0
  176. package/dist/domain/core/component/domain-component-optic.d.ts +29 -40
  177. package/dist/domain/core/component/domain-component-optic.js +2 -2
  178. package/dist/domain/core/component/legacy-filter.d.ts +2 -17
  179. package/dist/domain/core/component/system-component-filter.d.ts +36 -18
  180. package/dist/domain/core/data-schema/data-cell-value.d.ts +4 -0
  181. package/dist/domain/core/data-schema/data-schema-array-field.d.ts +5 -0
  182. package/dist/domain/core/data-schema/data-schema-field-object.d.ts +4 -0
  183. package/dist/domain/core/data-schema/data-schema-field-object.js +1 -0
  184. package/dist/domain/core/data-schema/data-schema-field.d.ts +2 -0
  185. package/dist/domain/core/data-schema/data-schema-field.js +1 -0
  186. package/dist/domain/core/data-schema/data-schema-localized-field.d.ts +4 -0
  187. package/dist/domain/core/data-schema/data-schema-localized-field.js +1 -0
  188. package/dist/domain/core/data-schema/data-schema-primitive-field.d.ts +5 -0
  189. package/dist/domain/core/data-schema/data-schema-primitive-field.js +1 -0
  190. package/dist/domain/core/data-schema/data-schema.d.ts +2 -0
  191. package/dist/domain/core/data-schema/data-schema.js +1 -0
  192. package/dist/domain/core/data-schema/index.d.ts +7 -0
  193. package/dist/domain/core/data-schema/index.js +1 -0
  194. package/dist/domain/core/domain-factory.d.ts +1 -1
  195. package/dist/domain/core/domain.d.ts +2 -2
  196. package/dist/domain/core/emission/index.d.ts +8 -0
  197. package/dist/domain/core/emission/index.js +1 -0
  198. package/dist/domain/core/emission/reset-state-emission.d.ts +12 -0
  199. package/dist/domain/core/emission/reset-state-emission.js +1 -0
  200. package/dist/domain/core/emission/state-emission.d.ts +4 -0
  201. package/dist/domain/core/emission/state-emission.js +1 -0
  202. package/dist/domain/core/emission/state-update-emission.d.ts +14 -0
  203. package/dist/domain/core/emission/state-update-emission.js +1 -0
  204. package/dist/domain/core/emission/state-validation-result.d.ts +18 -0
  205. package/dist/domain/core/emission/state-validation-result.js +1 -0
  206. package/dist/domain/core/emission/transformation-log.d.ts +2 -0
  207. package/dist/domain/core/emission/transformation-log.js +1 -0
  208. package/dist/domain/core/emission/transformer-log-entry.d.ts +6 -0
  209. package/dist/domain/core/emission/transformer-log-entry.js +1 -0
  210. package/dist/domain/core/emission/transformer-log.d.ts +11 -0
  211. package/dist/domain/core/emission/transformer-log.js +1 -0
  212. package/dist/domain/core/emission/transformer-phase.d.ts +1 -0
  213. package/dist/domain/core/emission/transformer-phase.js +1 -0
  214. package/dist/domain/core/expression/aliased-expressions.d.ts +10 -0
  215. package/dist/domain/core/expression/aliased-expressions.js +1 -0
  216. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  217. package/dist/domain/core/expression/constant-expressions.js +1 -1
  218. package/dist/domain/core/expression/custom-expression.d.ts +21 -8
  219. package/dist/domain/core/expression/custom-expression.js +1 -1
  220. package/dist/domain/core/expression/expression.d.ts +15 -17
  221. package/dist/domain/core/expression/index.d.ts +1 -2
  222. package/dist/domain/core/expression/index.js +1 -1
  223. package/dist/domain/core/index.d.ts +5 -1
  224. package/dist/domain/core/index.js +1 -1
  225. package/dist/domain/core/invariant/custom-invariants.d.ts +8 -16
  226. package/dist/domain/core/invariant/index.d.ts +1 -1
  227. package/dist/domain/core/invariant/index.js +1 -1
  228. package/dist/domain/core/invariant/invariants.d.ts +4 -70
  229. package/dist/domain/core/invariant/invariants.js +1 -1
  230. package/dist/domain/core/invariant/violation.d.ts +1 -1
  231. package/dist/domain/core/recipe/index.d.ts +1 -0
  232. package/dist/domain/core/recipe/index.js +1 -0
  233. package/dist/domain/core/recipe/recipes.d.ts +23 -0
  234. package/dist/domain/core/recipe/recipes.js +1 -0
  235. package/dist/domain/core/relation/all-of-type-relation.d.ts +19 -0
  236. package/dist/domain/core/relation/all-of-type-relation.js +1 -0
  237. package/dist/domain/{relations → core/relation}/component-factories.d.ts +1 -1
  238. package/dist/domain/core/relation/component-factories.js +1 -0
  239. package/dist/domain/{relations → core/relation}/composed-of.d.ts +1 -1
  240. package/dist/domain/core/relation/composed-of.js +1 -0
  241. package/dist/domain/core/relation/direct-relation.d.ts +17 -0
  242. package/dist/domain/core/relation/index.d.ts +8 -0
  243. package/dist/domain/core/relation/index.js +1 -0
  244. package/dist/domain/core/relation/indirect-relation.d.ts +25 -0
  245. package/dist/domain/core/relation/indirect-relation.js +1 -0
  246. package/dist/domain/{relations → core/relation}/reference-component.d.ts +4 -3
  247. package/dist/domain/core/relation/reference-component.js +1 -0
  248. package/dist/domain/{relations → core/relation}/reference-field.d.ts +1 -1
  249. package/dist/domain/core/relation/reference-field.js +1 -0
  250. package/dist/domain/core/relation/relation-factory.d.ts +22 -0
  251. package/dist/domain/core/relation/relation-factory.js +1 -0
  252. package/dist/domain/core/state/migrations.d.ts +14 -45
  253. package/dist/domain/core/state/migrations.js +1 -1
  254. package/dist/domain/core/state/state.d.ts +1 -1
  255. package/dist/domain/domain-builder.d.ts +2 -5
  256. package/dist/domain/domain-builder.js +1 -1
  257. package/dist/domain/domain-context/action-system/action-system.d.ts +2 -2
  258. package/dist/domain/domain-context/action-system/action-system.js +1 -1
  259. package/dist/domain/domain-context/action-system/index.d.ts +1 -0
  260. package/dist/domain/domain-context/action-system/index.js +1 -0
  261. package/dist/domain/domain-context/analytics-system/index.d.ts +2 -0
  262. package/dist/domain/domain-context/analytics-system/index.js +1 -0
  263. package/dist/domain/domain-context/create-transformer.d.ts +1 -1
  264. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +2 -2
  265. package/dist/domain/domain-context/dimension-system/dimension-system.js +1 -1
  266. package/dist/domain/domain-context/dimension-system/index.d.ts +1 -0
  267. package/dist/domain/domain-context/dimension-system/index.js +1 -0
  268. package/dist/domain/domain-context/domain-context-systems.d.ts +7 -7
  269. package/dist/domain/domain-context/index.d.ts +8 -18
  270. package/dist/domain/domain-context/index.js +1 -1
  271. package/dist/domain/domain-context/navigation-system/index.d.ts +3 -0
  272. package/dist/domain/domain-context/navigation-system/index.js +1 -0
  273. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +2 -3
  274. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  275. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +1 -1
  276. package/dist/domain/domain-context/recipe-system/index.d.ts +1 -0
  277. package/dist/domain/domain-context/recipe-system/index.js +1 -0
  278. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +2 -3
  279. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  280. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +2 -2
  281. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +2 -2
  282. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.js +1 -1
  283. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +2 -2
  284. package/dist/domain/domain-context/relation-transformers/create-entity-refs.js +2 -2
  285. package/dist/domain/domain-context/relation-transformers/index.d.ts +4 -0
  286. package/dist/domain/domain-context/relation-transformers/index.js +1 -0
  287. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +2 -2
  288. package/dist/domain/domain-context/relation-transformers/replace-refs.js +1 -1
  289. package/dist/domain/domain-context/store-system/index.d.ts +4 -0
  290. package/dist/domain/domain-context/store-system/index.js +1 -0
  291. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  292. package/dist/domain/domain-context/store-system/store-system.d.ts +2 -35
  293. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  294. package/dist/domain/domain-context/store-system/system-state.d.ts +1 -1
  295. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  296. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +5 -7
  297. package/dist/domain/domain-context/transformers/auto-snap-transformer.js +1 -1
  298. package/dist/domain/domain-context/transformers/chain-builder.d.ts +1 -1
  299. package/dist/domain/domain-context/transformers/context.d.ts +2 -3
  300. package/dist/domain/domain-context/transformers/context.js +1 -1
  301. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  302. package/dist/domain/domain-context/transformers/index.d.ts +1 -1
  303. package/dist/domain/domain-context/transformers/index.js +1 -1
  304. package/dist/domain/domain-context/transformers/when-builder.d.ts +2 -3
  305. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  306. package/dist/domain/domain-context/undo-system.d.ts +2 -3
  307. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  308. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  309. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  310. package/dist/domain/domain-runtime/access/types.js +1 -1
  311. package/dist/domain/domain-runtime/domain-context/action-context.d.ts +11 -0
  312. package/dist/domain/domain-runtime/domain-context/action-context.js +1 -0
  313. package/dist/domain/domain-runtime/domain-context/domain-context.js +1 -1
  314. package/dist/domain/domain-runtime/domain-context/expression-context.d.ts +8 -0
  315. package/dist/domain/domain-runtime/domain-context/expression-context.js +1 -0
  316. package/dist/domain/domain-runtime/domain-context/index.d.ts +3 -0
  317. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.d.ts +18 -0
  318. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.js +1 -0
  319. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +19 -23
  320. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  321. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  322. package/dist/domain/domain-runtime/domain-runtime.d.ts +84 -68
  323. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  324. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  325. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  326. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  327. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  328. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  329. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  330. package/dist/domain/domain-runtime/errors/index.js +1 -0
  331. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  332. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  333. package/dist/domain/domain-runtime/index.d.ts +1 -0
  334. package/dist/domain/domain-runtime/index.js +1 -1
  335. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  336. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  337. package/dist/domain/domain-runtime/spec/index.d.ts +5 -0
  338. package/dist/domain/domain-runtime/spec/index.js +1 -1
  339. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  340. package/dist/domain/{core/expression → domain-runtime/spec}/memoize-expression.d.ts +1 -2
  341. package/dist/domain/{application → domain-runtime/spec/module-checks}/element-registration.d.ts +2 -2
  342. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -0
  343. package/dist/domain/{application → domain-runtime/spec/module-checks}/handler-registration.d.ts +1 -1
  344. package/dist/domain/domain-runtime/spec/module-checks/handler-registration.js +1 -0
  345. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +8 -0
  346. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -0
  347. package/dist/domain/{project-modules → domain-runtime/spec/module-checks}/project-modules.d.ts +8 -17
  348. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -0
  349. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.d.ts +4 -0
  350. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -0
  351. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.d.ts +4 -0
  352. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.js +1 -0
  353. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.d.ts +15 -0
  354. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -0
  355. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +22 -0
  356. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -0
  357. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +6 -0
  358. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -0
  359. package/dist/domain/{actions → domain-runtime/spec}/prepare-action-implementations.d.ts +1 -1
  360. package/dist/domain/domain-runtime/spec/prepare-action-implementations.js +5 -0
  361. package/dist/domain/{core/expression → domain-runtime/spec}/prepare-domain-expressions.d.ts +1 -1
  362. package/dist/domain/domain-runtime/spec/selectors.d.ts +5 -6
  363. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  364. package/dist/domain/domain-runtime/spec/types.d.ts +3 -2
  365. package/dist/domain/{system-components → extensions}/child-entity-recipe-hierarchy.d.ts +1 -1
  366. package/dist/domain/extensions/child-entity-recipe-hierarchy.js +1 -0
  367. package/dist/domain/{system-components → extensions}/common/angle-indicator-schema.d.ts +1 -1
  368. package/dist/domain/extensions/common/angle-indicator-schema.js +1 -0
  369. package/dist/domain/extensions/common/index.d.ts +4 -0
  370. package/dist/domain/extensions/common/index.js +1 -0
  371. package/dist/domain/{system-components → extensions}/custom-header.d.ts +1 -1
  372. package/dist/domain/extensions/custom-header.js +1 -0
  373. package/dist/domain/{system-components → extensions}/custom-price-footer.js +1 -1
  374. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.d.ts +1 -1
  375. package/dist/domain/extensions/custom-sidebar-footer.js +1 -0
  376. package/dist/domain/{system-components → extensions}/editable-angle-indicator.d.ts +2 -1
  377. package/dist/domain/extensions/editable-angle-indicator.js +1 -0
  378. package/dist/domain/{system-components → extensions}/editable-distance-dimension-indicator.d.ts +2 -1
  379. package/dist/domain/extensions/editable-distance-dimension-indicator.js +1 -0
  380. package/dist/domain/{system-components → extensions}/editable-offset-indicator.d.ts +2 -1
  381. package/dist/domain/extensions/editable-offset-indicator.js +1 -0
  382. package/dist/domain/{system-components → extensions}/editable-size-indicator.d.ts +2 -1
  383. package/dist/domain/extensions/editable-size-indicator.js +1 -0
  384. package/dist/domain/{system-components → extensions}/entity-header.d.ts +1 -1
  385. package/dist/domain/extensions/entity-header.js +1 -0
  386. package/dist/domain/{system-components → extensions}/finalize-component.js +1 -1
  387. package/dist/domain/extensions/index.d.ts +69 -0
  388. package/dist/domain/extensions/index.js +1 -0
  389. package/dist/domain/{system-components → extensions}/list-selector-dimension-indicator.d.ts +2 -1
  390. package/dist/domain/extensions/list-selector-dimension-indicator.js +1 -0
  391. package/dist/domain/{system-components → extensions}/property-page.d.ts +1 -1
  392. package/dist/domain/extensions/property-page.js +1 -0
  393. package/dist/domain/{system-components → extensions}/replace-entity-recipe-hierarchy.d.ts +1 -1
  394. package/dist/domain/extensions/replace-entity-recipe-hierarchy.js +1 -0
  395. package/dist/domain/{system-components → extensions}/scene-entity-add-fab.d.ts +1 -1
  396. package/dist/domain/extensions/scene-entity-add-fab.js +1 -0
  397. package/dist/domain/{system-components → extensions}/scene-entity-delete-fab.d.ts +1 -1
  398. package/dist/domain/extensions/scene-entity-delete-fab.js +1 -0
  399. package/dist/domain/{system-components → extensions}/scene-entity-html-hotspot.d.ts +1 -1
  400. package/dist/domain/extensions/scene-entity-html-hotspot.js +1 -0
  401. package/dist/domain/{system-components → extensions}/scene-entity-navigation-hotspot.d.ts +1 -1
  402. package/dist/domain/extensions/scene-entity-navigation-hotspot.js +1 -0
  403. package/dist/domain/{system-components → extensions}/scene-entity-object-html-hotspot.d.ts +1 -1
  404. package/dist/domain/extensions/scene-entity-object-html-hotspot.js +1 -0
  405. package/dist/domain/{system-components → extensions}/scene-entity-select-hotspot.d.ts +1 -1
  406. package/dist/domain/extensions/scene-entity-select-hotspot.js +1 -0
  407. package/dist/domain/{system-components → extensions}/sketching-edit.d.ts +1 -1
  408. package/dist/domain/extensions/sketching-edit.js +1 -0
  409. package/dist/domain/{system-components → extensions}/summary-component.js +1 -1
  410. package/dist/domain/{system-components → extensions}/tool-menu-fab.d.ts +1 -1
  411. package/dist/domain/extensions/tool-menu-fab.js +1 -0
  412. package/dist/domain/{system-components → extensions}/toolbar.d.ts +1 -1
  413. package/dist/domain/extensions/toolbar.js +1 -0
  414. package/dist/domain/index.d.ts +2 -8
  415. package/dist/domain/index.js +1 -1
  416. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  417. package/dist/domain/mocks/create-mock-domain-runtime-services.d.ts +1 -1
  418. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +28 -19
  419. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  420. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  421. package/dist/domain/mocks/create-mock-domain.js +1 -1
  422. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  423. package/dist/domain/projections/blender-projections/blender-projections.d.ts +1 -2
  424. package/dist/domain/projections/blender-projections/camera.d.ts +2 -2
  425. package/dist/domain/projections/collision-projections.d.ts +1 -1
  426. package/dist/domain/projections/composition-projections.d.ts +1 -1
  427. package/dist/domain/projections/composition-projections.js +1 -1
  428. package/dist/domain/projections/constraint-projections.d.ts +1 -1
  429. package/dist/domain/projections/index.d.ts +1 -1
  430. package/dist/domain/projections/position-projections.d.ts +1 -1
  431. package/dist/domain/projections/projected-entities-projections.d.ts +1 -1
  432. package/dist/domain/projections/snapping-projections.d.ts +1 -1
  433. package/dist/domain/projections/validation-projections.d.ts +3 -19
  434. package/dist/domain/sketching/sketching-projections.d.ts +1 -1
  435. package/dist/domain/system-components/child-entity-selection.d.ts +1 -2
  436. package/dist/domain/system-components/common/index.d.ts +0 -4
  437. package/dist/domain/system-components/common/index.js +1 -1
  438. package/dist/domain/system-components/common/recipes.d.ts +1 -2
  439. package/dist/domain/system-components/index.d.ts +0 -68
  440. package/dist/domain/system-components/index.js +1 -1
  441. package/dist/domain/system-components/phoenix-entity-elements/admin-data-table-sidebar.d.ts +1 -1
  442. package/dist/domain/system-components/phoenix-layout-elements/admin-connected-resource-page.d.ts +1 -1
  443. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-actions.d.ts +1 -1
  444. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-page.d.ts +1 -1
  445. package/dist/domain/utils/eval-cache.d.ts +1 -1
  446. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  447. package/dist/domain/utils/memo-eval.d.ts +2 -2
  448. package/dist/editor/domain-editors/use-implementation-files.d.ts +1 -2
  449. package/dist/editor/mocks/EditorMockContext.js +1 -1
  450. package/dist/i18n/locales/cs/messages.js +1 -1
  451. package/dist/i18n/locales/da/messages.js +1 -1
  452. package/dist/i18n/locales/de/messages.js +1 -1
  453. package/dist/i18n/locales/de-AT/messages.js +1 -1
  454. package/dist/i18n/locales/en/messages.js +1 -1
  455. package/dist/i18n/locales/en-AU/messages.js +1 -1
  456. package/dist/i18n/locales/en-GB/messages.js +1 -1
  457. package/dist/i18n/locales/es/messages.js +1 -1
  458. package/dist/i18n/locales/fr/messages.js +1 -1
  459. package/dist/i18n/locales/hu/messages.js +1 -1
  460. package/dist/i18n/locales/it/messages.js +1 -1
  461. package/dist/i18n/locales/nl/messages.js +1 -1
  462. package/dist/i18n/locales/pl/messages.js +1 -1
  463. package/dist/i18n/locales/pt/messages.js +1 -1
  464. package/dist/i18n/locales/ro/messages.js +1 -1
  465. package/dist/i18n/locales/sk/messages.js +1 -1
  466. package/dist/i18n/locales/tr/messages.js +1 -1
  467. package/dist/legacy/domain-cli/gen/configurator-builder.js +13 -12
  468. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -3
  469. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  470. package/dist/legacy/domain-cli/gen/implementation.js +7 -11
  471. package/dist/legacy/domain-cli/gen/invariants.js +7 -6
  472. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  473. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  474. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  475. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  476. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  477. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  478. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +1 -0
  479. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +17 -15
  480. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.d.ts +1 -1
  481. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.js +4 -0
  482. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  483. package/dist/phoenix/commands/init.d.ts +4 -4
  484. package/dist/phoenix/commands/init.js +1 -1
  485. package/dist/phoenix/commands/prettier.js +1 -1
  486. package/dist/phoenix/utils/git/index.d.ts +1 -0
  487. package/dist/phoenix/utils/git/index.js +1 -0
  488. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  489. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  490. package/dist/phoenix/utils/index.d.ts +1 -0
  491. package/dist/phoenix/utils/index.js +1 -1
  492. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  493. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  494. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  495. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +53 -36
  496. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  497. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +9 -9
  498. package/dist/react-sdk/domain-context/index.d.ts +1 -1
  499. package/dist/react-sdk/domain-context/index.js +1 -1
  500. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +6 -0
  501. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  502. package/dist/ui-sdk/theme/types.d.ts +1 -1
  503. package/dist/webhook/builders/common.d.ts +5 -0
  504. package/dist/webhook/builders/webhook-builder.js +1 -1
  505. package/package.json +3 -3
  506. package/dist/application-spec/generate-application/code/templates/env-ci.d.ts +0 -1
  507. package/dist/application-spec/generate-application/code/templates/env-ci.js +0 -25
  508. package/dist/application-spec/generate-application/code/templates/env-example.d.ts +0 -1
  509. package/dist/application-spec/generate-application/code/templates/env-example.js +0 -90
  510. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  511. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  512. package/dist/application-spec/generate-application/code/templates/private-assets-readme.d.ts +0 -1
  513. package/dist/application-spec/generate-application/code/templates/private-assets-readme.js +0 -24
  514. package/dist/application-spec/generate-application/code/templates/public-assets-readme.d.ts +0 -1
  515. package/dist/application-spec/generate-application/code/templates/public-assets-readme.js +0 -24
  516. package/dist/application-spec/generate-application/code/templates/readme.d.ts +0 -1
  517. package/dist/application-spec/generate-application/code/templates/readme.js +0 -23
  518. package/dist/application-spec/generate-application/code/templates/skills/agents-md.d.ts +0 -1
  519. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +0 -2
  520. package/dist/domain/actions/action-factory.d.ts +0 -10
  521. package/dist/domain/actions/prepare-action-implementations.js +0 -5
  522. package/dist/domain/application/element-registration.js +0 -1
  523. package/dist/domain/application/handler-registration.js +0 -1
  524. package/dist/domain/application/resolve-imported-transformers.d.ts +0 -23
  525. package/dist/domain/application/resolve-imported-transformers.js +0 -1
  526. package/dist/domain/application/resource-builder.d.ts +0 -13
  527. package/dist/domain/application/resource-builder.js +0 -1
  528. package/dist/domain/domain-context/recipe-system/recipes.d.ts +0 -55
  529. package/dist/domain/domain-context/recipe-system/recipes.js +0 -1
  530. package/dist/domain/project-modules/index.d.ts +0 -1
  531. package/dist/domain/project-modules/index.js +0 -1
  532. package/dist/domain/project-modules/project-modules.js +0 -1
  533. package/dist/domain/relations/all-of-type-relation.d.ts +0 -30
  534. package/dist/domain/relations/all-of-type-relation.js +0 -1
  535. package/dist/domain/relations/component-factories.js +0 -1
  536. package/dist/domain/relations/composed-of.js +0 -1
  537. package/dist/domain/relations/direct-relation.d.ts +0 -27
  538. package/dist/domain/relations/indirect-relation.d.ts +0 -78
  539. package/dist/domain/relations/indirect-relation.js +0 -1
  540. package/dist/domain/relations/reference-component.js +0 -1
  541. package/dist/domain/relations/relation-factory.d.ts +0 -17
  542. package/dist/domain/relations/relation-factory.js +0 -1
  543. package/dist/domain/relations/relation-implementation.d.ts +0 -5
  544. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +0 -1
  545. package/dist/domain/system-components/common/angle-indicator-schema.js +0 -1
  546. package/dist/domain/system-components/custom-header.js +0 -1
  547. package/dist/domain/system-components/custom-sidebar-footer.js +0 -1
  548. package/dist/domain/system-components/editable-angle-indicator.js +0 -1
  549. package/dist/domain/system-components/editable-distance-dimension-indicator.js +0 -1
  550. package/dist/domain/system-components/editable-offset-indicator.js +0 -1
  551. package/dist/domain/system-components/editable-size-indicator.js +0 -1
  552. package/dist/domain/system-components/entity-header.js +0 -1
  553. package/dist/domain/system-components/list-selector-dimension-indicator.js +0 -1
  554. package/dist/domain/system-components/property-page.js +0 -1
  555. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +0 -1
  556. package/dist/domain/system-components/scene-entity-add-fab.js +0 -1
  557. package/dist/domain/system-components/scene-entity-delete-fab.js +0 -1
  558. package/dist/domain/system-components/scene-entity-html-hotspot.js +0 -1
  559. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +0 -1
  560. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +0 -1
  561. package/dist/domain/system-components/scene-entity-select-hotspot.js +0 -1
  562. package/dist/domain/system-components/sketching-edit.js +0 -1
  563. package/dist/domain/system-components/tool-menu-fab.js +0 -1
  564. package/dist/domain/system-components/toolbar.js +0 -1
  565. /package/dist/domain/{actions → core/action}/action-factory.js +0 -0
  566. /package/dist/domain/core/{action.js → action/action.js} +0 -0
  567. /package/dist/domain/{relations/reference-field.js → core/data-schema/data-cell-value.js} +0 -0
  568. /package/dist/domain/{relations/relation-implementation.js → core/data-schema/data-schema-array-field.js} +0 -0
  569. /package/dist/domain/{relations → core/relation}/direct-relation.js +0 -0
  570. /package/dist/domain/{core/expression → domain-runtime/spec}/memoize-expression.js +0 -0
  571. /package/dist/domain/{core/expression → domain-runtime/spec}/prepare-domain-expressions.js +0 -0
  572. /package/dist/domain/{system-components → extensions}/angle-indicator.d.ts +0 -0
  573. /package/dist/domain/{system-components → extensions}/angle-indicator.js +0 -0
  574. /package/dist/domain/{system-components → extensions}/attribute-switch.d.ts +0 -0
  575. /package/dist/domain/{system-components → extensions}/attribute-switch.js +0 -0
  576. /package/dist/domain/{system-components → extensions}/autorotate-camera-component.d.ts +0 -0
  577. /package/dist/domain/{system-components → extensions}/autorotate-camera-component.js +0 -0
  578. /package/dist/domain/{system-components → extensions}/basic-sidebar-footer.d.ts +0 -0
  579. /package/dist/domain/{system-components → extensions}/basic-sidebar-footer.js +0 -0
  580. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.d.ts +0 -0
  581. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.js +0 -0
  582. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.d.ts +0 -0
  583. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.js +0 -0
  584. /package/dist/domain/{system-components → extensions}/canvas-config.d.ts +0 -0
  585. /package/dist/domain/{system-components → extensions}/canvas-config.js +0 -0
  586. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.d.ts +0 -0
  587. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.js +0 -0
  588. /package/dist/domain/{system-components → extensions}/canvas-padding.d.ts +0 -0
  589. /package/dist/domain/{system-components → extensions}/canvas-padding.js +0 -0
  590. /package/dist/domain/{system-components → extensions}/canvas-preset-environment.d.ts +0 -0
  591. /package/dist/domain/{system-components → extensions}/canvas-preset-environment.js +0 -0
  592. /package/dist/domain/{system-components → extensions}/client-side-image.d.ts +0 -0
  593. /package/dist/domain/{system-components → extensions}/client-side-image.js +0 -0
  594. /package/dist/domain/{system-components → extensions}/color-value.d.ts +0 -0
  595. /package/dist/domain/{system-components → extensions}/color-value.js +0 -0
  596. /package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.d.ts +0 -0
  597. /package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.js +0 -0
  598. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.d.ts +0 -0
  599. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.js +0 -0
  600. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.d.ts +0 -0
  601. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.js +0 -0
  602. /package/dist/domain/{system-components → extensions}/custom-price-footer.d.ts +0 -0
  603. /package/dist/domain/{system-components → extensions}/dimension-indicator.d.ts +0 -0
  604. /package/dist/domain/{system-components → extensions}/dimension-indicator.js +0 -0
  605. /package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.d.ts +0 -0
  606. /package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.js +0 -0
  607. /package/dist/domain/{system-components → extensions}/finalize-action.d.ts +0 -0
  608. /package/dist/domain/{system-components → extensions}/finalize-action.js +0 -0
  609. /package/dist/domain/{system-components → extensions}/finalize-component.d.ts +0 -0
  610. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.d.ts +0 -0
  611. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.js +0 -0
  612. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.d.ts +0 -0
  613. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.js +0 -0
  614. /package/dist/domain/{system-components → extensions}/fixed-header.d.ts +0 -0
  615. /package/dist/domain/{system-components → extensions}/fixed-header.js +0 -0
  616. /package/dist/domain/{system-components → extensions}/floating-header.d.ts +0 -0
  617. /package/dist/domain/{system-components → extensions}/floating-header.js +0 -0
  618. /package/dist/domain/{system-components → extensions}/hidden-header.d.ts +0 -0
  619. /package/dist/domain/{system-components → extensions}/hidden-header.js +0 -0
  620. /package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.d.ts +0 -0
  621. /package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.js +0 -0
  622. /package/dist/domain/{system-components → extensions}/horizontal-tabs.d.ts +0 -0
  623. /package/dist/domain/{system-components → extensions}/horizontal-tabs.js +0 -0
  624. /package/dist/domain/{system-components → extensions}/multilingual-text-value.d.ts +0 -0
  625. /package/dist/domain/{system-components → extensions}/multilingual-text-value.js +0 -0
  626. /package/dist/domain/{system-components → extensions}/navigation-steps.d.ts +0 -0
  627. /package/dist/domain/{system-components → extensions}/navigation-steps.js +0 -0
  628. /package/dist/domain/{system-components → extensions}/offset-anchors.d.ts +0 -0
  629. /package/dist/domain/{system-components → extensions}/offset-anchors.js +0 -0
  630. /package/dist/domain/{system-components → extensions}/offset-indicator.d.ts +0 -0
  631. /package/dist/domain/{system-components → extensions}/offset-indicator.js +0 -0
  632. /package/dist/domain/{system-components → extensions}/offset.d.ts +0 -0
  633. /package/dist/domain/{system-components → extensions}/offset.js +0 -0
  634. /package/dist/domain/{system-components → extensions}/other-action.d.ts +0 -0
  635. /package/dist/domain/{system-components → extensions}/other-action.js +0 -0
  636. /package/dist/domain/{system-components → extensions}/read-sidebar-footer.d.ts +0 -0
  637. /package/dist/domain/{system-components → extensions}/read-sidebar-footer.js +0 -0
  638. /package/dist/domain/{system-components → extensions}/rotatable.d.ts +0 -0
  639. /package/dist/domain/{system-components → extensions}/rotatable.js +0 -0
  640. /package/dist/domain/{system-components → extensions}/rotation-handle.d.ts +0 -0
  641. /package/dist/domain/{system-components → extensions}/rotation-handle.js +0 -0
  642. /package/dist/domain/{system-components → extensions}/save-template-thumbnail.d.ts +0 -0
  643. /package/dist/domain/{system-components → extensions}/save-template-thumbnail.js +0 -0
  644. /package/dist/domain/{system-components → extensions}/scene-entity-animation.d.ts +0 -0
  645. /package/dist/domain/{system-components → extensions}/scene-entity-animation.js +0 -0
  646. /package/dist/domain/{system-components → extensions}/scene-entity-control.d.ts +0 -0
  647. /package/dist/domain/{system-components → extensions}/scene-entity-control.js +0 -0
  648. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.d.ts +0 -0
  649. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.js +0 -0
  650. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.d.ts +0 -0
  651. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.js +0 -0
  652. /package/dist/domain/{system-components → extensions}/selectable-component.d.ts +0 -0
  653. /package/dist/domain/{system-components → extensions}/selectable-component.js +0 -0
  654. /package/dist/domain/{system-components → extensions}/sidebar-tabs.d.ts +0 -0
  655. /package/dist/domain/{system-components → extensions}/sidebar-tabs.js +0 -0
  656. /package/dist/domain/{system-components → extensions}/simple-summary.d.ts +0 -0
  657. /package/dist/domain/{system-components → extensions}/simple-summary.js +0 -0
  658. /package/dist/domain/{system-components → extensions}/size.d.ts +0 -0
  659. /package/dist/domain/{system-components → extensions}/size.js +0 -0
  660. /package/dist/domain/{system-components → extensions}/sketching-draw.d.ts +0 -0
  661. /package/dist/domain/{system-components → extensions}/sketching-draw.js +0 -0
  662. /package/dist/domain/{system-components → extensions}/summary-component.d.ts +0 -0
  663. /package/dist/domain/{system-components → extensions}/text-value.d.ts +0 -0
  664. /package/dist/domain/{system-components → extensions}/text-value.js +0 -0
  665. /package/dist/domain/{system-components → extensions}/tool-controls.d.ts +0 -0
  666. /package/dist/domain/{system-components → extensions}/tool-controls.js +0 -0
  667. /package/dist/domain/{system-components → extensions}/universal-sidebar-footer.d.ts +0 -0
  668. /package/dist/domain/{system-components → extensions}/universal-sidebar-footer.js +0 -0
  669. /package/dist/domain/{system-components → extensions}/view-controls.d.ts +0 -0
  670. /package/dist/domain/{system-components → extensions}/view-controls.js +0 -0
@@ -0,0 +1,11 @@
1
+ import { type DocumentNode, GraphQLError } from 'graphql';
2
+ /**
3
+ * Makes the lenses an operation document spreads available to it: appends the definition of every
4
+ * lens the document spreads, with the copies that definition spreads in turn, taken from the
5
+ * manifest's lens `definitions`. Appending keeps the positions GraphQL reports for the caller's own
6
+ * text. A document that defines a fragment under the name of a lens, or of a copy of one, is
7
+ * rejected, since the caller would silently read its own selection instead of the lens. A document
8
+ * that does not parse is returned as it is, so GraphQL reports the syntax error; a spread that names
9
+ * no lens is left for GraphQL to report as an unknown fragment.
10
+ */
11
+ export declare const injectAssistantLenses: (document: string, definitions: DocumentNode) => string | GraphQLError;
@@ -0,0 +1 @@
1
+ import{GraphQLError as e,Kind as n,parse as t,print as a,visit as i}from"graphql";let r=e=>{let n=[];return i(e,{FragmentSpread:e=>{n.push(e.name.value)}}),n};export const injectAssistantLenses=(i,o)=>{let l,s=new Map;for(let e of o.definitions)e.kind===n.FRAGMENT_DEFINITION&&s.set(e.name.value,e);try{l=t(i)}catch{return i}for(let t of l.definitions)if(t.kind===n.FRAGMENT_DEFINITION&&s.has(t.name.value)){let n=t.name.value.split("__")[0];return new e(`A built-in fragment named "${n}" already exists, so "${t.name.value}" cannot be defined. Remove the definition and spread "...${n}", or give your fragment another name.`)}let m=new Map,u=[...r(l)];for(;u.length>0;){let e=u.pop(),n=void 0===e?void 0:s.get(e);n&&!m.has(n.name.value)&&(m.set(n.name.value,n),u.push(...r(n)))}return 0===m.size?i:[i,...[...m.values()].map(a)].join("\n\n")};
@@ -1,5 +1,5 @@
1
1
  export { AnimationSystem, type AnimationSystemContext } from './animation-system.js';
2
- export { type AssistantChatSnapshot, type AssistantClientTool, type AssistantPanelSnapshot, AssistantSystem, type AssistantSystemContext, } from './assistant-system/assistant-system.js';
2
+ export { type AssistantChatSnapshot, type AssistantEarlierThreadSnapshot, type AssistantClientTool, type AssistantPanelSnapshot, AssistantSystem, type AssistantSystemContext, } from './assistant-system/assistant-system.js';
3
3
  export { CameraControlSystem, CameraControlType } from './camera-control-system/camera-control-system.js';
4
4
  export { type AnyCameraSystem, CameraSystem, type CameraSystemContext } from './camera-control-system/camera-system.js';
5
5
  export { createCameraControls } from './camera-control-system/create-camera-controls.js';
@@ -1 +1 @@
1
- import{P as t,match as e}from"ts-pattern";import{SystemState as o,applicationConfigComponent as n,customSummaryPageComponent as a,entityHeaderComponent as i,navigationStepsComponent as r,propertyPageComponent as s,sidebarTabsComponent as l,simpleSummaryComponent as d,toolbarComponent as c}from"#package/domain";import{layoutStateComponent as g}from"./layout-state.js";import{toolbarHelpElementName as u}from"./toolbar-help-element.js";export class LayoutSystem{_context;_toolbarCache=new WeakMap;state;constructor(t){this._context=t,this.state=new o({...this._context,selectors:this._context.domainContextSelectors,componentType:g,getInitialState:()=>({propertyPageStates:{}})})}get _toolbarHelpExists(){return void 0!==this._context.specSelectors.getElementSlots().layoutElements[u]}get _hasAssistant(){return void 0!==this._context.specSelectors.getAssistant()}initialize=()=>{this.state.initialize()};getCleanUpPropertyPageStateUpdates=(t,e)=>this.state.getUpdates(e=>{if(!e.propertyPageStates[t])return null;let o={...e.propertyPageStates};return delete o[t],{...e,propertyPageStates:o}},e);getLayoutConfig=t=>{let e=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[n]},t),o=e?.state.shareDisabled??!1,a=o||(e?.state.shareOwnerLinkDisabled??!1),i=o||(e?.state.shareReadRevisionLinkDisabled??!1);return{layout:e?.state.layout??"universal",ignoreSelectionInSidebar:e?.state.ignoreSelectionInSidebar??!1,miniSidebar:e?.state.miniSidebar??!1,splitSidebar:e?.state.splitSidebar??!1,showSelectionBackButton:e?.state.showSelectionBackButton??!0,shareDisabled:a&&i,availableLocales:e?.state.availableLocales??["en"],indicatorSwitch:e?.state.indicatorSwitch??!0}};getSidebarSummaryPage=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getActiveNavigationState(t),o=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[a,d]},t),n=e===o?.state.summaryNavigationState,i=o?.state.summaryNavigationState;return{page:o,isSummaryActive:n,summaryNavigationState:i}};getEnterSidebarSummaryUpdates=t=>{let{summaryNavigationState:e}=this.getSidebarSummaryPage(t);return e?[this._context.domainContextSelectors.getNavigationSystem().getPushNavigationUpdate(e,t)]:[]};getLeaveSidebarSummaryUpdates=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getPopNavigationUpdate(t);if(e)return[e];let o=this._context.domainContextSelectors.getNavigationStates().at(0);return o?(this._context.domainServicesSelectors.getLogger().error("There is no navigation state to pop, falling back to the initial navigation state. Check whether the history stack is not broken by some custom navigation logic."),[this._context.domainContextSelectors.getNavigationSystem().getNavigationUpdate(o)]):(this._context.domainServicesSelectors.getLogger().error("There is no navigation state to pop and no initial navigation state to fallback to, this should not happen"),[])};getPushSidebarStackPageUpdates=(t,e,o,n)=>this.state.getUpdates(n=>{let a=n.propertyPageStates[t]??{customState:{},stackPages:[]};return{...n,propertyPageStates:{...n.propertyPageStates,[t]:{...a,stackPages:[...a.stackPages,{props:o,component:e}]}}}},n);getPopSidebarStackPageUpdates=(t,e)=>this.state.getUpdates(e=>{let o=e.propertyPageStates[t]??{customState:{},stackPages:[]};return{...e,propertyPageStates:{...e.propertyPageStates,[t]:{...o,stackPages:o.stackPages.slice(0,-1)}}}},e);getSidebarBackUpdates=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getHasStackToPop(t),o=this._context.domainContextSelectors.getNavigationSystem().getIsRootSelected(t),{renderedStackedPage:n,summaryPage:a,activePropertyPageId:i}=this.getSidebarContent(t);if(a)return this.getLeaveSidebarSummaryUpdates(t);if(n&&i)return this.getPopSidebarStackPageUpdates(i,t);if(e){let e=this._context.domainContextSelectors.getNavigationSystem().getPopNavigationUpdate(t);return e?[e]:[]}return o?[]:[this._context.domainContextSelectors.getNavigationSystem().getDeselectUpdate()]};getSidebarContent=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getActiveSelectionState(t),o=this.state.get(t),n=this.getLayoutConfig(t),a=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[l],entityIds:[e]},t).some(t=>t.state.tabs.length>0),r=n.miniSidebar&&!a;r&&a&&this._context.domainServicesSelectors.getLogger().warn("Mini sidebar is not active because the layout contains tabs. Only layouts without tabs can have mini sidebar.");let d=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[s]},t),{isSummaryActive:c,page:g}=this.getSidebarSummaryPage(t),u=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[i]},t),p=this._context.domainContextSelectors.getCompositionProjections().getTree(t).map.get(e);if(!p)throw Error(`Selected entity ${e} not found in composition tree`);let m=this._context.domainContextSelectors.getCompositionProjections().getTree(t).map.get(t.rootEntityId);if(!m)throw Error(`Root entity ${t.rootEntityId} not found in composition tree`);let h=(n.ignoreSelectionInSidebar?[m]:[p,...p.ancestors()]).map(t=>{let e=n.ignoreSelectionInSidebar?d:d.filter(e=>e.componentInstance.entityId===t.id),o=u.filter(e=>e.componentInstance.entityId===t.id);return{id:t.id,propertyPages:e,header:o[0]??null}}),S=h[0]?.id,b=(S?o.propertyPageStates[S]?.stackPages??[]:[]).at(-1)??null,k=this._context.domainContextSelectors.getNavigationSystem().getHasStackToPop(t),x=this._context.domainContextSelectors.getNavigationSystem().getIsRootSelected(t),y=c&&k||k||!!b||!x&&n.showSelectionBackButton&&!n.ignoreSelectionInSidebar;return c?{summaryPage:g,propertyPages:[],isBackAvailable:y,hasMiniSidebar:r,hasSplitSidebar:n.splitSidebar}:{summaryPage:null,propertyPages:h,renderedStackedPage:b,activePropertyPageId:S,isBackAvailable:y,hasMiniSidebar:r,hasSplitSidebar:n.splitSidebar}};getToolbarState=o=>{let n=this._toolbarHelpExists,a=this._hasAssistant,i=this._toolbarCache.get(o);if(i&&i.toolbarHelpExists===n&&i.hasAssistant===a)return i.result;let r=this._context.domainContextSelectors.getExpressionContext(),s=this._context.domainContextSelectors.getNavigationSystem().getActiveFullscreenState(o),l="read"===r.mode,d=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[c]},o),g=this._context.domainContextSelectors.getDimensionSystem().getDimensionConfig(o),u=this.getLayoutConfig(o),p="read"===this._context.domainContextSelectors.getExpressionContext().mode,m=u.availableLocales.length>1,h=!p&&!u.shareDisabled,S=u.indicatorSwitch,b=g.availableDimensions.length>1||S,k=a?[{kind:"toolbarButtonGroup",children:[{kind:"assistantToolbarButton"}]}]:[],x=e(d).returnType().with(t.nonNullable,t=>t.state).with(t.nullish,()=>e([s,l]).returnType().with([!1,!1],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},...m?[{kind:"toolbarButtonGroup",children:[{kind:"languageToolbarButton"}]}]:[],...h||b?[{kind:"toolbarButtonGroup",children:[...h?[{kind:"shareToolbarButton"}]:[],...b?[{kind:"measurementsToolbarButton"}]:[],...n?[{kind:"helpToolbarButton"}]:[]]}]:[],{kind:"toolbarButtonGroup",children:[{kind:"undoToolbarButton"},{kind:"redoToolbarButton"}]},...k],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"undoToolbarButton"},{kind:"redoToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},...k],mobileMenu:[...h?[{kind:"shareMenuAction"}]:[],...b?[{kind:"measurementsMenuAction"}]:[],...m?[{kind:"languageMenuAction"}]:[],...n?[{kind:"helpMenuAction"}]:[]]})).with([!0,!1],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobileMenu:[]})).with([!1,!0],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},...m?[{kind:"toolbarButtonGroup",children:[{kind:"languageToolbarButton"}]}]:[],...b?[{kind:"toolbarButtonGroup",children:[...b?[{kind:"measurementsToolbarButton"}]:[]]}]:[],...n?[{kind:"helpToolbarButton"}]:[],...k],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},...k],mobileMenu:[...b?[{kind:"measurementsMenuAction"}]:[],...m?[{kind:"languageMenuAction"}]:[],...n?[{kind:"helpMenuAction"}]:[]]})).with([!0,!0],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobileMenu:[]})).exhaustive()).exhaustive();return this._toolbarCache.set(o,{toolbarHelpExists:n,hasAssistant:a,result:x}),x};getNavigationSteps=t=>{let e=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[r]},t);return e?.state.steps??[]}}
1
+ import{P as t,match as e}from"ts-pattern";import{SystemState as o,applicationConfigComponent as n,customSummaryPageComponent as a,entityHeaderComponent as i,navigationStepsComponent as r,propertyPageComponent as s,sidebarTabsComponent as l,simpleSummaryComponent as d,toolbarComponent as c}from"#package/domain";import{layoutStateComponent as g}from"./layout-state.js";import{toolbarHelpElementName as u}from"./toolbar-help-element.js";export class LayoutSystem{_context;_toolbarCache=new WeakMap;state;constructor(t){this._context=t,this.state=new o({...this._context,selectors:this._context.domainContextSelectors,componentType:g,getInitialState:()=>({propertyPageStates:{}})})}get _toolbarHelpExists(){return void 0!==this._context.specSelectors.getElementSlots().layoutElements[u]}get _hasAssistant(){return null!=this._context.specSelectors.getAssistant()}initialize=()=>{this.state.initialize()};getCleanUpPropertyPageStateUpdates=(t,e)=>this.state.getUpdates(e=>{if(!e.propertyPageStates[t])return null;let o={...e.propertyPageStates};return delete o[t],{...e,propertyPageStates:o}},e);getLayoutConfig=t=>{let e=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[n]},t),o=e?.state.shareDisabled??!1,a=o||(e?.state.shareOwnerLinkDisabled??!1),i=o||(e?.state.shareReadRevisionLinkDisabled??!1);return{layout:e?.state.layout??"universal",ignoreSelectionInSidebar:e?.state.ignoreSelectionInSidebar??!1,miniSidebar:e?.state.miniSidebar??!1,splitSidebar:e?.state.splitSidebar??!1,showSelectionBackButton:e?.state.showSelectionBackButton??!0,shareDisabled:a&&i,availableLocales:e?.state.availableLocales??["en"],indicatorSwitch:e?.state.indicatorSwitch??!0}};getSidebarSummaryPage=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getActiveNavigationState(t),o=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[a,d]},t),n=e===o?.state.summaryNavigationState,i=o?.state.summaryNavigationState;return{page:o,isSummaryActive:n,summaryNavigationState:i}};getEnterSidebarSummaryUpdates=t=>{let{summaryNavigationState:e}=this.getSidebarSummaryPage(t);return e?[this._context.domainContextSelectors.getNavigationSystem().getPushNavigationUpdate(e,t)]:[]};getLeaveSidebarSummaryUpdates=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getPopNavigationUpdate(t);if(e)return[e];let o=this._context.domainContextSelectors.getNavigationStates().at(0);return o?(this._context.domainServicesSelectors.getLogger().error("There is no navigation state to pop, falling back to the initial navigation state. Check whether the history stack is not broken by some custom navigation logic."),[this._context.domainContextSelectors.getNavigationSystem().getNavigationUpdate(o)]):(this._context.domainServicesSelectors.getLogger().error("There is no navigation state to pop and no initial navigation state to fallback to, this should not happen"),[])};getPushSidebarStackPageUpdates=(t,e,o,n)=>this.state.getUpdates(n=>{let a=n.propertyPageStates[t]??{customState:{},stackPages:[]};return{...n,propertyPageStates:{...n.propertyPageStates,[t]:{...a,stackPages:[...a.stackPages,{props:o,component:e}]}}}},n);getPopSidebarStackPageUpdates=(t,e)=>this.state.getUpdates(e=>{let o=e.propertyPageStates[t]??{customState:{},stackPages:[]};return{...e,propertyPageStates:{...e.propertyPageStates,[t]:{...o,stackPages:o.stackPages.slice(0,-1)}}}},e);getSidebarBackUpdates=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getHasStackToPop(t),o=this._context.domainContextSelectors.getNavigationSystem().getIsRootSelected(t),{renderedStackedPage:n,summaryPage:a,activePropertyPageId:i}=this.getSidebarContent(t);if(a)return this.getLeaveSidebarSummaryUpdates(t);if(n&&i)return this.getPopSidebarStackPageUpdates(i,t);if(e){let e=this._context.domainContextSelectors.getNavigationSystem().getPopNavigationUpdate(t);return e?[e]:[]}return o?[]:[this._context.domainContextSelectors.getNavigationSystem().getDeselectUpdate()]};getSidebarContent=t=>{let e=this._context.domainContextSelectors.getNavigationSystem().getActiveSelectionState(t),o=this.state.get(t),n=this.getLayoutConfig(t),a=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[l],entityIds:[e]},t).some(t=>t.state.tabs.length>0),r=n.miniSidebar&&!a;r&&a&&this._context.domainServicesSelectors.getLogger().warn("Mini sidebar is not active because the layout contains tabs. Only layouts without tabs can have mini sidebar.");let d=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[s]},t),{isSummaryActive:c,page:g}=this.getSidebarSummaryPage(t),u=this._context.domainContextSelectors.getComponentReader().readManyComponents({componentTypes:[i]},t),p=this._context.domainContextSelectors.getCompositionProjections().getTree(t).map.get(e);if(!p)throw Error(`Selected entity ${e} not found in composition tree`);let m=this._context.domainContextSelectors.getCompositionProjections().getTree(t).map.get(t.rootEntityId);if(!m)throw Error(`Root entity ${t.rootEntityId} not found in composition tree`);let h=(n.ignoreSelectionInSidebar?[m]:[p,...p.ancestors()]).map(t=>{let e=n.ignoreSelectionInSidebar?d:d.filter(e=>e.componentInstance.entityId===t.id),o=u.filter(e=>e.componentInstance.entityId===t.id);return{id:t.id,propertyPages:e,header:o[0]??null}}),S=h[0]?.id,b=(S?o.propertyPageStates[S]?.stackPages??[]:[]).at(-1)??null,k=this._context.domainContextSelectors.getNavigationSystem().getHasStackToPop(t),x=this._context.domainContextSelectors.getNavigationSystem().getIsRootSelected(t),y=c&&k||k||!!b||!x&&n.showSelectionBackButton&&!n.ignoreSelectionInSidebar;return c?{summaryPage:g,propertyPages:[],isBackAvailable:y,hasMiniSidebar:r,hasSplitSidebar:n.splitSidebar}:{summaryPage:null,propertyPages:h,renderedStackedPage:b,activePropertyPageId:S,isBackAvailable:y,hasMiniSidebar:r,hasSplitSidebar:n.splitSidebar}};getToolbarState=o=>{let n=this._toolbarHelpExists,a=this._hasAssistant,i=this._toolbarCache.get(o);if(i&&i.toolbarHelpExists===n&&i.hasAssistant===a)return i.result;let r=this._context.domainContextSelectors.getExpressionContext(),s=this._context.domainContextSelectors.getNavigationSystem().getActiveFullscreenState(o),l="read"===r.mode,d=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[c]},o),g=this._context.domainContextSelectors.getDimensionSystem().getDimensionConfig(o),u=this.getLayoutConfig(o),p="read"===this._context.domainContextSelectors.getExpressionContext().mode,m=u.availableLocales.length>1,h=!p&&!u.shareDisabled,S=u.indicatorSwitch,b=g.availableDimensions.length>1||S,k=a?[{kind:"toolbarButtonGroup",children:[{kind:"assistantToolbarButton"}]}]:[],x=e(d).returnType().with(t.nonNullable,t=>t.state).with(t.nullish,()=>e([s,l]).returnType().with([!1,!1],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},...m?[{kind:"toolbarButtonGroup",children:[{kind:"languageToolbarButton"}]}]:[],...h||b?[{kind:"toolbarButtonGroup",children:[...h?[{kind:"shareToolbarButton"}]:[],...b?[{kind:"measurementsToolbarButton"}]:[],...n?[{kind:"helpToolbarButton"}]:[]]}]:[],{kind:"toolbarButtonGroup",children:[{kind:"undoToolbarButton"},{kind:"redoToolbarButton"}]},...k],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"undoToolbarButton"},{kind:"redoToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},...k],mobileMenu:[...h?[{kind:"shareMenuAction"}]:[],...b?[{kind:"measurementsMenuAction"}]:[],...m?[{kind:"languageMenuAction"}]:[],...n?[{kind:"helpMenuAction"}]:[]]})).with([!0,!1],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobileMenu:[]})).with([!1,!0],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},...m?[{kind:"toolbarButtonGroup",children:[{kind:"languageToolbarButton"}]}]:[],...b?[{kind:"toolbarButtonGroup",children:[...b?[{kind:"measurementsToolbarButton"}]:[]]}]:[],...n?[{kind:"helpToolbarButton"}]:[],...k],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"resetCameraToolbarButton"}]},{kind:"toolbarButtonGroup",children:[{kind:"enterFullscreenToolbarButton"}]},...k],mobileMenu:[...b?[{kind:"measurementsMenuAction"}]:[],...m?[{kind:"languageMenuAction"}]:[],...n?[{kind:"helpMenuAction"}]:[]]})).with([!0,!0],()=>({desktop:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobile:[{kind:"toolbarButtonGroup",children:[{kind:"exitFullscreenToolbarButton"}]}],mobileMenu:[]})).exhaustive()).exhaustive();return this._toolbarCache.set(o,{toolbarHelpExists:n,hasAssistant:a,result:x}),x};getNavigationSteps=t=>{let e=this._context.domainContextSelectors.getComponentReader().readFirstRootComponent({componentTypes:[r]},t);return e?.state.steps??[]}}
@@ -1,5 +1,5 @@
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 CreateCollectFrontendDataHandler, type CreateFilterPublishedChunksHandler, type CreateNotAuthenticatedPage, 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 UseAnalyticsService, type UseAngleDimension, type UseAttributeSelection, type UseAttributeSwitch, type UseAuthenticatedClient, type UseAuthorizedClient, type UseBackendData, type UseChildEntitySelection, type UseComponent, type UseComponents, type UseComposition, type UseConfigurationId, 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 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 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 UseSlice, type UseState, type UseStateValidity, type UseSwatchSelection, type UseSynchronizedSelector, type UseSynchronizedSelector$, type UseTextValue, type UseUpdateControl, type UseUpdatedControl, useLoadingStateValue } from '#package/react-sdk';
2
+ import { type CreateCollectFrontendDataHandler, type CreateFilterPublishedChunksHandler, type CreateNotAuthenticatedPage, 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 UseAnalyticsService, type UseAngleDimension, type UseAttributeSelection, type UseAttributeSwitch, type UseAuthenticatedClient, type UseAuthorizedClient, type UseBackendData, type UseChildEntitySelection, type UseComponent, type UseComponents, type UseComposition, type UseConfigurationId, 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 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 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 UseSlice, type UseState, type UseStateValidity, type UseSwatchSelection, type UseSynchronizedSelector, type UseSynchronizedSelector$, type UseTextValue, type UseUpdateControl, type UseUpdatedControl, useLoadingStateValue } from '#package/react-sdk';
3
3
  import { type CreatePhoenixIconSet } from '#package/ui-sdk';
4
4
  import { type UseConfiguratorExtensions } from '../application-runtime/index.js';
5
5
  import { type CreateOnApplicationStartProvider, type CreateOnBackendDataReadyProvider, type CreateOnConfiguratorReadyProvider, type CreateOnFrontendDataReadyProvider, type CreateOnGoToIndexHandler, type CreateOnPresetLoadedHandler, type CreateOnPublishedDataReadyProvider, type CreateOnRoutingReadyProvider, type CreateOnSessionReadyProvider, type UseConfiguratorRouting, type UsePresetSelection, usePropertyPageStack, usePropertyPageState } from '../configurator-context/index.js';
@@ -466,6 +466,10 @@ export interface ConfiguratorInterface<ENTITIES extends DomainEntity<string>, AL
466
466
  * Get the currently active fullscreen state
467
467
  */
468
468
  useIsFullscreenActive: UseIsFullscreenActive;
469
+ /**
470
+ * Turn the fullscreen state on or off. The state is a flag the layout reads with `useIsFullscreenActive`
471
+ */
472
+ useSetFullscreen: UseSetFullscreen;
469
473
  /**
470
474
  * Returns composition tree of the domain
471
475
  */
@@ -1 +1 @@
1
- import{createCustomPhoenixEntityElement as e,createCustomPhoenixLayoutElement as t,createGetThemeHandler as r,createGetWebComponentOptionsHandler as o,createPhoenixHandler as i,createTransformer as s,createTransformerBuilder as a,createUpdateFactory as n,getIdSequence as m,isCreateEntityUpdate as p,isReplaceEntityUpdate as u}from"#package/domain";import{createCollectFrontendDataHandler as d,createFilterPublishedChunksHandler as c,createNotAuthenticatedPage as f,isAngleDimensionUpdate as g,isAttributeSelectionUpdate as j,isAttributeSwitchUpdate as l,isDeleteEntityUpdate as x,isDistanceDimensionUpdate as y,isGenericDimensionUpdate as k,isSwatchSelectionUpdate as h,isTextValueUpdate as S,useAccessService as E,useActiveNavigationState as I,useActiveToolState as q,useActiveViewState as A,useAnalyticsService as B,useAngleDimension as C,useAttributeSelection as P,useAttributeSwitch as R,useAuthenticatedClient as U,useAuthorizedClient as b,useBackendData as v,useChildEntitySelection as w,useCommittedSlice as z,useCommittedState as D,useComponent as F,useComponents as G,useComposition as H,useConfigurationId as J,useControlViolations as K,useCookRecipes as L,useCookReplaceRecipes as M,useCookedRecipes as N,useCookedReplaceRecipes as O,useCreateAuthorizedClient as Q,useDeleteEntity as T,useDeletedEntity as V,useDeselect as W,useDistanceDimension as X,useDistanceDimensionSelection as Y,useDomain as Z,useDomainApplication as $,useDomainApplicationProps as _,useDomainEntityRenderedState as ee,useDomainEntityState as et,useEntityPrice as er,useEntitySelector as eo,useFinalizeViolations as ei,useFirstComponent as es,useFirstRenderedComponent as ea,useFirstRootComponent as en,useFirstRootRenderedComponent as em,useFrontendData as ep,useGenericDimension as eu,useGroupedRecipeOptions as ed,useHoveredDomainEntityId as ec,useHoveredEntity as ef,useHoveredEntityId as eg,useIntegrationService as ej,useIntegrationState as el,useIsFullscreenActive as ex,useLoadedData as ey,useLoadingState as ek,useLoadingStateValue as eh,useMapViolationHints as eS,useNavigate as eE,usePopNavigate as eI,usePresetEmbeddedState as eq,usePublishedData as eA,usePushNavigate as eB,useRecipeEmbeddedState as eC,useRenderedComponent as eP,useRenderedComponents as eR,useRenderedEntitySelector as eU,useRenderedRootEntitySelector as eb,useRenderedSelector as ev,useRenderedSelector$ as ew,useRenderedSlice as ez,useRenderedState as eD,useReplaceEntityRecipeOptions as eF,useRootComponents as eG,useRootEntityId as eH,useRootEntityPrice as eJ,useRootEntityRenderedId as eK,useRootEntityRenderedState as eL,useRootEntitySelector as eM,useRootEntityState as eN,useRootRenderedComponents as eO,useSelectEntity as eQ,useSelectParent as eT,useSelectedDomainEntityId as eV,useSelectedEntity as eW,useSelectedEntityId as eX,useSession as eY,useSessionRole as eZ,useSessionService as e$,useStateValidity as e_,useStoreSelector as e0,useStoreSelector$ as e1,useSwatchSelection as e2,useTextValue as e3,useUpdateControl as e4,useUpdatedControl as e5}from"#package/react-sdk";import{createPhoenixIconSet as e6}from"#package/ui-sdk";import{useConfigurator as e7}from"../application-runtime/index.js";import{createOnApplicationStartProvider as e8,createOnBackendDataReadyProvider as e9,createOnConfiguratorReadyProvider as te,createOnFrontendDataReadyProvider as tt,createOnGoToIndexHandler as tr,createOnPresetLoadedHandler as to,createOnPublishedDataReadyProvider as ti,createOnRoutingReadyProvider as ts,createOnSessionReadyProvider as ta,useConfiguratorRouting as tn,usePresetSelection as tm,usePropertyPageStack as tp,usePropertyPageState as tu}from"../configurator-context/index.js";import{createGetTextureProcessingMapHandler as td}from"../scene/index.js";import{useUpdateEntityObjectSelection as tc}from"../scene/scene-entity/drag-and-drop/use-updated-selection.js";import{createAppLoader as tf,createCanvasLoader as tg,createLayoutAdminUi as tj,createLayoutCustomOwnerUi as tl,createLayoutCustomReadUi as tx,createLayoutDialog as ty,createLayoutFooter as tk,createLayoutToolbarDesktop as th,createLayoutToolbarDesktopFullScreen as tS,createLayoutToolbarReadDesktop as tE,createLayoutToolbarReadDesktopFullScreen as tI,createLayoutUserUi as tq,createToolbarHelp as tA}from"../ui/index.js";import{useGenerateShareLink as tB}from"../ui/phoenix-layout-elements/share/use-share.js";import{createPresetDeviceNotSupported as tC,createPresetPageAction as tP,createPresetUi as tR}from"../ui/preset-layout/PresetUi.js";export const createConfiguratorInterface=tU=>({updates:n(),getIdSequence:m,createGetWebComponentOptionsHandler:o,createGetThemeHandler:r,createPhoenixHandler:i,createCustomPhoenixEntityElement:e,createCustomPhoenixLayoutElement:t,createPhoenixIconSet:e6,createGetTextureProcessingMapHandler:td,createCollectFrontendDataHandler:d,createFilterPublishedChunksHandler:c,createOnGoToIndexHandler:tr,createOnApplicationStartProvider:e8,createOnSessionReadyProvider:ta,createOnPublishedDataReadyProvider:ti,createOnFrontendDataReadyProvider:tt,createOnBackendDataReadyProvider:e9,createOnRoutingReadyProvider:ts,createOnConfiguratorReadyProvider:te,createOnPresetLoadedHandler:to,createPresetUi:tR,createPresetPageAction:tP,createPresetDeviceNotSupported:tC,createLayoutFooter:tk,createAppLoader:tf,createCanvasLoader:tg,createLayoutDialog:ty,createLayoutToolbarDesktop:th,createLayoutToolbarDesktopFullScreen:tS,createLayoutToolbarReadDesktop:tE,createLayoutToolbarReadDesktopFullScreen:tI,createLayoutCustomOwnerUi:tl,createLayoutCustomReadUi:tx,createLayoutAdminUi:tj,createLayoutUserUi:tq,createToolbarHelp:tA,createNotAuthenticatedPage:f,createTransformer:s,transformerBuilder:a(),useAnalytics:B,useAuthenticatedClient:U,useAuthorizedClient:b,useCreateAuthorizedClient:Q,useAccessService:E,useConfigurationId:J,useSession:eY,useSessionRole:eZ,useSessionService:e$,useDomain:Z,useDomainApplication:$,useConfigurator:e7,useConfiguratorRouting:tn,usePresetSelection:tm,usePublishedData:eA,useFrontendData:ep,useBackendData:v,useDomainApplicationProps:_,useLoadedData:ey,useIntegrationService:ej,useIntegrationState:el,usePresetEmbeddedState:eq,useRecipeEmbeddedState:eC,useCommittedSlice:z,useRenderedSlice:ez,useCommittedState:D,useRenderedState:eD,useStoreSelector:e0,useRenderedSelector:ev,useStoreSelector$:e1,useRenderedSelector$:ew,useEntitySelector:eo,useRenderedEntitySelector:eU,useRootEntitySelector:eM,useRenderedRootEntitySelector:eb,useStateValidity:e_,useMapViolationHints:eS,useNavigate:eE,usePopNavigate:eI,usePushNavigate:eB,useControlViolations:K,useFinalizeViolations:ei,useComponent:F,useRenderedComponent:eP,useComponents:G,useRenderedComponents:eR,useFirstComponent:es,useFirstRenderedComponent:ea,useRootComponents:eG,useRootRenderedComponents:eO,useFirstRootComponent:en,useFirstRootRenderedComponent:em,useEntityState:et,useEntityRenderedState:ee,useRootEntityState:eN,useRootEntityRenderedState:eL,useRootEntityId:eH,useRootEntityRenderedId:eK,useEntityPrice:er,useRootEntityPrice:eJ,useSelectedEntity:eW,useSelectedEntityId:eX,useSelectedDomainEntityId:eV,useSelectEntity:eQ,useDeselect:W,useSelectParent:eT,useHoveredEntity:ef,useHoveredEntityId:eg,useHoveredDomainEntityId:ec,useActiveNavigationState:I,useActiveViewState:A,useActiveToolState:q,useIsFullscreenActive:ex,useComposition:H,useUpdateControl:e4,useUpdatedControl:e5,useCookRecipes:L,useCookedRecipes:N,useCookReplaceRecipes:M,useCookedReplaceRecipes:O,useDeleteEntity:T,useDeletedEntity:V,useSwatchSelection:e2,useTextValue:e3,useAttributeSelection:P,useAttributeSwitch:R,useDistanceDimension:X,useDistanceDimensionSelection:Y,useGenericDimension:eu,useAngleDimension:C,useChildEntitySelection:w,useGroupedRecipeOptions:ed,useReplaceEntityRecipeOptions:eF,useUpdateEntityObjectSelection:tc,useGenerateShareLink:tB,useLoadingState:ek,useLoadingStateValue:eh,usePropertyPageStack:tp,usePropertyPageState:tu,isCreateEntityUpdate:p,isReplaceEntityUpdate:u,isDeleteEntityUpdate:x,isAngleDimensionUpdate:g,isDistanceDimensionUpdate:y,isGenericDimensionUpdate:k,isAttributeSelectionUpdate:j,isAttributeSwitchUpdate:l,isTextValueUpdate:S,isSwatchSelectionUpdate:h});
1
+ import{createCustomPhoenixEntityElement as e,createCustomPhoenixLayoutElement as t,createGetThemeHandler as r,createGetWebComponentOptionsHandler as o,createPhoenixHandler as i,createTransformer as s,createTransformerBuilder as a,createUpdateFactory as n,getIdSequence as m,isCreateEntityUpdate as p,isReplaceEntityUpdate as u}from"#package/domain";import{createCollectFrontendDataHandler as d,createFilterPublishedChunksHandler as c,createNotAuthenticatedPage as f,isAngleDimensionUpdate as g,isAttributeSelectionUpdate as j,isAttributeSwitchUpdate as l,isDeleteEntityUpdate as x,isDistanceDimensionUpdate as y,isGenericDimensionUpdate as k,isSwatchSelectionUpdate as h,isTextValueUpdate as S,useAccessService as E,useActiveNavigationState as I,useActiveToolState as q,useActiveViewState as A,useAnalyticsService as B,useAngleDimension as C,useAttributeSelection as P,useAttributeSwitch as R,useAuthenticatedClient as U,useAuthorizedClient as b,useBackendData as v,useChildEntitySelection as w,useCommittedSlice as z,useCommittedState as D,useComponent as F,useComponents as G,useComposition as H,useConfigurationId as J,useControlViolations as K,useCookRecipes as L,useCookReplaceRecipes as M,useCookedRecipes as N,useCookedReplaceRecipes as O,useCreateAuthorizedClient as Q,useDeleteEntity as T,useDeletedEntity as V,useDeselect as W,useDistanceDimension as X,useDistanceDimensionSelection as Y,useDomain as Z,useDomainApplication as $,useDomainApplicationProps as _,useDomainEntityRenderedState as ee,useDomainEntityState as et,useEntityPrice as er,useEntitySelector as eo,useFinalizeViolations as ei,useFirstComponent as es,useFirstRenderedComponent as ea,useFirstRootComponent as en,useFirstRootRenderedComponent as em,useFrontendData as ep,useGenericDimension as eu,useGroupedRecipeOptions as ed,useHoveredDomainEntityId as ec,useHoveredEntity as ef,useHoveredEntityId as eg,useIntegrationService as ej,useIntegrationState as el,useIsFullscreenActive as ex,useLoadedData as ey,useLoadingState as ek,useLoadingStateValue as eh,useMapViolationHints as eS,useNavigate as eE,usePopNavigate as eI,usePresetEmbeddedState as eq,usePublishedData as eA,usePushNavigate as eB,useRecipeEmbeddedState as eC,useRenderedComponent as eP,useRenderedComponents as eR,useRenderedEntitySelector as eU,useRenderedRootEntitySelector as eb,useRenderedSelector as ev,useRenderedSelector$ as ew,useRenderedSlice as ez,useRenderedState as eD,useReplaceEntityRecipeOptions as eF,useRootComponents as eG,useRootEntityId as eH,useRootEntityPrice as eJ,useRootEntityRenderedId as eK,useRootEntityRenderedState as eL,useRootEntitySelector as eM,useRootEntityState as eN,useRootRenderedComponents as eO,useSelectEntity as eQ,useSelectParent as eT,useSelectedDomainEntityId as eV,useSelectedEntity as eW,useSelectedEntityId as eX,useSession as eY,useSessionRole as eZ,useSessionService as e$,useSetFullscreen as e_,useStateValidity as e0,useStoreSelector as e1,useStoreSelector$ as e2,useSwatchSelection as e3,useTextValue as e4,useUpdateControl as e5,useUpdatedControl as e6}from"#package/react-sdk";import{createPhoenixIconSet as e7}from"#package/ui-sdk";import{useConfigurator as e8}from"../application-runtime/index.js";import{createOnApplicationStartProvider as e9,createOnBackendDataReadyProvider as te,createOnConfiguratorReadyProvider as tt,createOnFrontendDataReadyProvider as tr,createOnGoToIndexHandler as to,createOnPresetLoadedHandler as ti,createOnPublishedDataReadyProvider as ts,createOnRoutingReadyProvider as ta,createOnSessionReadyProvider as tn,useConfiguratorRouting as tm,usePresetSelection as tp,usePropertyPageStack as tu,usePropertyPageState as td}from"../configurator-context/index.js";import{createGetTextureProcessingMapHandler as tc}from"../scene/index.js";import{useUpdateEntityObjectSelection as tf}from"../scene/scene-entity/drag-and-drop/use-updated-selection.js";import{createAppLoader as tg,createCanvasLoader as tj,createLayoutAdminUi as tl,createLayoutCustomOwnerUi as tx,createLayoutCustomReadUi as ty,createLayoutDialog as tk,createLayoutFooter as th,createLayoutToolbarDesktop as tS,createLayoutToolbarDesktopFullScreen as tE,createLayoutToolbarReadDesktop as tI,createLayoutToolbarReadDesktopFullScreen as tq,createLayoutUserUi as tA,createToolbarHelp as tB}from"../ui/index.js";import{useGenerateShareLink as tC}from"../ui/phoenix-layout-elements/share/use-share.js";import{createPresetDeviceNotSupported as tP,createPresetPageAction as tR,createPresetUi as tU}from"../ui/preset-layout/PresetUi.js";export const createConfiguratorInterface=tb=>({updates:n(),getIdSequence:m,createGetWebComponentOptionsHandler:o,createGetThemeHandler:r,createPhoenixHandler:i,createCustomPhoenixEntityElement:e,createCustomPhoenixLayoutElement:t,createPhoenixIconSet:e7,createGetTextureProcessingMapHandler:tc,createCollectFrontendDataHandler:d,createFilterPublishedChunksHandler:c,createOnGoToIndexHandler:to,createOnApplicationStartProvider:e9,createOnSessionReadyProvider:tn,createOnPublishedDataReadyProvider:ts,createOnFrontendDataReadyProvider:tr,createOnBackendDataReadyProvider:te,createOnRoutingReadyProvider:ta,createOnConfiguratorReadyProvider:tt,createOnPresetLoadedHandler:ti,createPresetUi:tU,createPresetPageAction:tR,createPresetDeviceNotSupported:tP,createLayoutFooter:th,createAppLoader:tg,createCanvasLoader:tj,createLayoutDialog:tk,createLayoutToolbarDesktop:tS,createLayoutToolbarDesktopFullScreen:tE,createLayoutToolbarReadDesktop:tI,createLayoutToolbarReadDesktopFullScreen:tq,createLayoutCustomOwnerUi:tx,createLayoutCustomReadUi:ty,createLayoutAdminUi:tl,createLayoutUserUi:tA,createToolbarHelp:tB,createNotAuthenticatedPage:f,createTransformer:s,transformerBuilder:a(),useAnalytics:B,useAuthenticatedClient:U,useAuthorizedClient:b,useCreateAuthorizedClient:Q,useAccessService:E,useConfigurationId:J,useSession:eY,useSessionRole:eZ,useSessionService:e$,useDomain:Z,useDomainApplication:$,useConfigurator:e8,useConfiguratorRouting:tm,usePresetSelection:tp,usePublishedData:eA,useFrontendData:ep,useBackendData:v,useDomainApplicationProps:_,useLoadedData:ey,useIntegrationService:ej,useIntegrationState:el,usePresetEmbeddedState:eq,useRecipeEmbeddedState:eC,useCommittedSlice:z,useRenderedSlice:ez,useCommittedState:D,useRenderedState:eD,useStoreSelector:e1,useRenderedSelector:ev,useStoreSelector$:e2,useRenderedSelector$:ew,useEntitySelector:eo,useRenderedEntitySelector:eU,useRootEntitySelector:eM,useRenderedRootEntitySelector:eb,useStateValidity:e0,useMapViolationHints:eS,useNavigate:eE,usePopNavigate:eI,usePushNavigate:eB,useControlViolations:K,useFinalizeViolations:ei,useComponent:F,useRenderedComponent:eP,useComponents:G,useRenderedComponents:eR,useFirstComponent:es,useFirstRenderedComponent:ea,useRootComponents:eG,useRootRenderedComponents:eO,useFirstRootComponent:en,useFirstRootRenderedComponent:em,useEntityState:et,useEntityRenderedState:ee,useRootEntityState:eN,useRootEntityRenderedState:eL,useRootEntityId:eH,useRootEntityRenderedId:eK,useEntityPrice:er,useRootEntityPrice:eJ,useSelectedEntity:eW,useSelectedEntityId:eX,useSelectedDomainEntityId:eV,useSelectEntity:eQ,useDeselect:W,useSelectParent:eT,useHoveredEntity:ef,useHoveredEntityId:eg,useHoveredDomainEntityId:ec,useActiveNavigationState:I,useActiveViewState:A,useActiveToolState:q,useIsFullscreenActive:ex,useSetFullscreen:e_,useComposition:H,useUpdateControl:e5,useUpdatedControl:e6,useCookRecipes:L,useCookedRecipes:N,useCookReplaceRecipes:M,useCookedReplaceRecipes:O,useDeleteEntity:T,useDeletedEntity:V,useSwatchSelection:e3,useTextValue:e4,useAttributeSelection:P,useAttributeSwitch:R,useDistanceDimension:X,useDistanceDimensionSelection:Y,useGenericDimension:eu,useAngleDimension:C,useChildEntitySelection:w,useGroupedRecipeOptions:ed,useReplaceEntityRecipeOptions:eF,useUpdateEntityObjectSelection:tf,useGenerateShareLink:tC,useLoadingState:ek,useLoadingStateValue:eh,usePropertyPageStack:tu,usePropertyPageState:td,isCreateEntityUpdate:p,isReplaceEntityUpdate:u,isDeleteEntityUpdate:x,isAngleDimensionUpdate:g,isDistanceDimensionUpdate:y,isGenericDimensionUpdate:k,isAttributeSelectionUpdate:j,isAttributeSwitchUpdate:l,isTextValueUpdate:S,isSwatchSelectionUpdate:h});
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The built-in UI of a loaded configuration: the layout the spec's `layout` selects, in owner or
3
+ * read mode. `LoadedConfiguratorDetailPage` renders it when the project registers no layout element
4
+ * named `ConfiguratorLayout`.
5
+ */
6
+ export declare const DefaultConfiguratorLayout: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as r,jsxs as e,Fragment as t}from"react/jsx-runtime";import{useMemo as a}from"react";import{match as o}from"ts-pattern";import{useAccessService as i}from"#package/react-sdk";import{useLayoutSystemConfig as m}from"../configurator-context/index.js";import{Layout as n,LayoutCustomOwnerUi as u,LayoutCustomReadUi as s,LayoutDialog as d,Legacy as w}from"../ui/index.js";export const DefaultConfiguratorLayout=()=>{let{accessInfo:p}=i(),y=m(),{ownerUi:l,readUi:c}=a(()=>o(y.layout).with("simple",()=>({ownerUi:r(w.SimpleOwnerLayout,{}),readUi:r(w.SummaryReadLayout,{})})).with("tabs",()=>({ownerUi:r(w.TabsOwnerLayout,{}),readUi:r(w.SummaryReadLayout,{})})).with("steps",()=>({ownerUi:r(w.StepsOwnerLayout,{}),readUi:r(w.SummaryReadLayout,{})})).with("universal",()=>({ownerUi:r(n,{}),readUi:r(n,{})})).with("custom",()=>({ownerUi:r(u,{}),readUi:r(s,{})})).exhaustive(),[y.layout]);return e(t,{children:[p.viewMode?c:l,"universal"===y.layout&&e(t,{children:[r(w.CommonFinalizePage,{}),r(d,{})]})]})};
@@ -1 +1 @@
1
- import{jsx as e,jsxs as o,Fragment as i}from"react/jsx-runtime";import r from"mui-modal-provider";import{memo as n,useCallback as t,useEffect as a,useMemo as d}from"react";import{match as s}from"ts-pattern";import{InvalidAccessKeyError as l}from"#package/client";import{BuiltInLoadingPhase as u,CommonAnalyticsFactory as m,DomainLifecycleBoundary as c,LoadedDataProvider as f,useAccessService as p,useAnalyticsService as g,useAuthorizedClient as v,useConfiguratorDomainFactory as w,useConfiguratorLoadStatus as y,useConfiguratorRawLoadedData as h,useExpectPhase as I,useLoadedDataActions as j,useLoadingError as x,useLoadingPhase as C,useLogger as b,useRoutingService as k,useSpecAssistant as L}from"#package/react-sdk";import{useConfigurator as U}from"../application-runtime/index.js";import{IntegrationSubscription as M,OnConfiguratorReadyProvider as S,ViewportStateSync as E,useLayoutSystemConfig as F}from"../configurator-context/index.js";import{Layout as R,Legacy as D}from"../ui/index.js";import{LayoutCustomOwnerUi as T,LayoutCustomReadUi as P,LayoutDialog as A}from"../ui/phoenix-layout-elements/index.js";import{ConfiguratorNotFoundPage as O}from"./ConfiguratorNotFoundPage.js";import{DevContextFallback as V}from"./error-boundaries/DevContextFallback.js";import{DevLoadingFallback as q}from"./error-boundaries/DevLoadingFallback.js";import{LoadingErrorBoundary as z}from"./error-boundaries/LoadingErrorBoundary.js";import{useLoad as B}from"./use-load.js";let G=n(n=>{let{viewMode:t}=n,l=F();(()=>{let{assistantSystem:e}=U(),o=null!=L();a(()=>{if(o)return e.activate()},[e,o])})();let{ownerUi:u,readUi:m}=d(()=>s(l.layout).with("simple",()=>({ownerUi:e(D.SimpleOwnerLayout,{}),readUi:e(D.SummaryReadLayout,{})})).with("tabs",()=>({ownerUi:e(D.TabsOwnerLayout,{}),readUi:e(D.SummaryReadLayout,{})})).with("steps",()=>({ownerUi:e(D.StepsOwnerLayout,{}),readUi:e(D.SummaryReadLayout,{})})).with("universal",()=>({ownerUi:e(R,{}),readUi:e(R,{})})).with("custom",()=>({ownerUi:e(T,{}),readUi:e(P,{})})).exhaustive(),[l.layout]);return e(r,{children:o(S,{children:[t?m:u,"universal"===l.layout&&o(i,{children:[e(D.CommonFinalizePage,{}),e(A,{})]})]})})});export const LoadedConfiguratorDetailPage=()=>{I(u.SceneAssets);let{configurationId:i,accessInfo:r}=p(),n=v(),a=k(),d=b(),s=g(),{startConfiguratorLoad:L,completeConfiguratorLoad:U,failConfiguratorLoad:S,resetConfiguratorLoad:F}=j(),{isLoading:R,isError:D}=y(),T=h(),P=w(),A=t(()=>r.viewMode&&void 0!==r.revisionId?n.getConfigurationRevision(i,r.revisionId):n.getConfiguration(i),[r.revisionId,r.viewMode,n,i]),N=t(()=>{L()},[L]),H=t(e=>{U({initialRevisionId:e.revisionId,initialEntities:e.data,modelVersion:e.modelVersion,rootEntityType:e.rootEntityType,schemaIdentity:P}),s.push(m.ConfigurationLoaded(e.configurationId,e.revisionId,r.viewMode?"read":"owner")),d.appendToGlobalContext({configurationId:e.configurationId,revisionId:e.revisionId,mode:r.viewMode}),d.info("Configuration loaded.")},[r.viewMode,s,U,P,d]),J=t(e=>{if(S(e),e instanceof l)return void a.rejectAccessToken(i,r.raw);let o=e instanceof Error?e:Error("Configuration loading failed with an unknown error.",{cause:e});d.error("Configuration loading failed because the API request did not succeed. Verify the configuration ID and access token.",{configurationId:i},o)},[r.raw,i,S,d,a]),K=t(()=>{F()},[F]);return(B({key:[n,i,r.revisionId,r.viewMode],load:A,onStart:N,onSuccess:H,onError:J,onCleanup:K}),C({id:u.DataFetch,label:"Loading configuration…"},R),x(D),D)?e(O,{}):null===T?null:e(f,{value:T,children:e(z,{fallbackRender:o=>e(q,{...o}),children:e(c,{type:"configurator",children:e(z,{FallbackComponent:V,children:o(M,{children:[e(E,{}),e(G,{viewMode:r.viewMode})]})})})})})};
1
+ import{jsx as o,jsxs as r}from"react/jsx-runtime";import e from"mui-modal-provider";import{memo as i,useCallback as n,useEffect as t}from"react";import{InvalidAccessKeyError as a}from"#package/client";import{BuiltInLoadingPhase as d,CommonAnalyticsFactory as s,DomainLifecycleBoundary as l,LoadedDataProvider as u,PhoenixLayoutElement as c,useAccessService as f,useAnalyticsService as m,useAuthorizedClient as g,useConfiguratorDomainFactory as p,useConfiguratorLoadStatus as v,useConfiguratorRawLoadedData as I,useExpectPhase as C,useLoadedDataActions as h,useLoadingError as j,useLoadingPhase as k,useLogger as w,useRoutingService as y,useSpecAssistant as b}from"#package/react-sdk";import{useConfigurator as x}from"../application-runtime/index.js";import{IntegrationSubscription as E,OnConfiguratorReadyProvider as L,ViewportStateSync as D}from"../configurator-context/index.js";import{ConfiguratorNotFoundPage as M}from"./ConfiguratorNotFoundPage.js";import{DefaultConfiguratorLayout as F}from"./DefaultConfiguratorLayout.js";import{DevContextFallback as S}from"./error-boundaries/DevContextFallback.js";import{DevLoadingFallback as T}from"./error-boundaries/DevLoadingFallback.js";import{LoadingErrorBoundary as A}from"./error-boundaries/LoadingErrorBoundary.js";import{useLoad as P}from"./use-load.js";let R=i(()=>((()=>{let{assistantSystem:o}=x(),r=null!=b();t(()=>{if(r)return o.activate()},[o,r])})(),o(e,{children:o(L,{children:o(c,{name:"ConfiguratorLayout",defaultSlot:F})})})));export const LoadedConfiguratorDetailPage=()=>{C(d.SceneAssets);let{configurationId:e,accessInfo:i}=f(),t=g(),c=y(),b=w(),x=m(),{startConfiguratorLoad:L,completeConfiguratorLoad:F,failConfiguratorLoad:V,resetConfiguratorLoad:q}=h(),{isLoading:B,isError:G}=v(),N=I(),z=p(),H=n(()=>i.viewMode&&void 0!==i.revisionId?t.getConfigurationRevision(e,i.revisionId):t.getConfiguration(e),[i.revisionId,i.viewMode,t,e]),J=n(()=>{L()},[L]),K=n(o=>{F({initialRevisionId:o.revisionId,initialEntities:o.data,modelVersion:o.modelVersion,rootEntityType:o.rootEntityType,schemaIdentity:z}),x.push(s.ConfigurationLoaded(o.configurationId,o.revisionId,i.viewMode?"read":"owner")),b.appendToGlobalContext({configurationId:o.configurationId,revisionId:o.revisionId,mode:i.viewMode}),b.info("Configuration loaded.")},[i.viewMode,x,F,z,b]),O=n(o=>{if(V(o),o instanceof a)return void c.rejectAccessToken(e,i.raw);let r=o instanceof Error?o:Error("Configuration loading failed with an unknown error.",{cause:o});b.error("Configuration loading failed because the API request did not succeed. Verify the configuration ID and access token.",{configurationId:e},r)},[i.raw,e,V,b,c]),Q=n(()=>{q()},[q]);return(P({key:[t,e,i.revisionId,i.viewMode],load:H,onStart:J,onSuccess:K,onError:O,onCleanup:Q}),k({id:d.DataFetch,label:"Loading configuration…"},B),j(G),G)?o(M,{}):null===N?null:o(u,{value:N,children:o(A,{fallbackRender:r=>o(T,{...r}),children:o(l,{type:"configurator",children:o(A,{FallbackComponent:S,children:r(E,{children:[o(D,{}),o(R,{})]})})})})})};
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * The message input of the panel. Enter sends and Shift+Enter adds a line. While a reply runs the
3
3
  * send control is a Stop control and the input stays editable, so the next message can be written.
4
- * A thread this session may not continue disables the input and says why.
4
+ * A thread this session may not continue takes a message like any other: it is resumed first, with
5
+ * the input read-only meanwhile, and the message stays in the input when that fails.
5
6
  */
6
7
  export declare const AssistantComposer: () => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Trans as i}from"@lingui/react";import{IconButton as o,InputBase as r,Tooltip as t,styled as n}from"@mui/material";import{useCallback as s,useRef as d,useState as l}from"react";import{useEagerObservableSelector as m,useLocalizable as c}from"#package/react-sdk";import{PhxIcon as p,useResponsive as u}from"#package/ui-sdk";import{useConfigurator as b}from"../../application-runtime/index.js";import{AssistantPanelName as g}from"./theme.js";let h={id:"sdk.assistant.composer.placeholder",message:"Ask or tell me what to change…"},k={id:"sdk.assistant.composer.send.label",message:"Send"},f={id:"sdk.assistant.composer.stop.label",message:"Stop"},x=n("form",{name:g,slot:"composer"})(({theme:{palette:e,spacing:a}})=>({borderBlockStart:`1px solid ${e.divider}`,display:"grid",gap:a(.75),paddingBlock:a(1.25),paddingInline:`var(--phx-sidebar-padding, ${a(2)})`})),y=n("div",{name:g,slot:"inputFrame"})(({theme:{palette:e,spacing:a}})=>({alignItems:"flex-end",border:`1px solid ${e.divider}`,borderRadius:12,display:"flex",gap:a(1),paddingBlock:a(.5),paddingInline:`${a(1.5)} ${a(.5)}`,"&:focus-within":{borderColor:e.primary.main},"&:has(textarea:disabled)":{background:e.action.disabledBackground}})),v=n(r,{name:g,slot:"input"})(({theme:{spacing:e,typography:a}})=>({...a.body2,flex:1,paddingBlock:e(.75)})),B=n(o,{name:g,slot:"sendButton"})(({theme:{palette:e}})=>({background:e.primary.main,borderRadius:8,color:e.primary.contrastText,"&:hover":{background:e.primary.dark},"&.Mui-disabled":{background:e.action.disabledBackground,color:e.action.disabled}})),C=n(o,{name:g,slot:"stopButton"})(({theme:{palette:e}})=>({background:e.text.primary,borderRadius:8,color:e.background.paper,"&:hover":{background:e.text.secondary}})),R=n("span")({background:"currentColor",blockSize:10,borderRadius:2,inlineSize:10,margin:5}),S=n("div",{name:g,slot:"hint"})(({theme:{palette:e,typography:a}})=>({...a.caption,color:e.text.secondary}));export const AssistantComposer=()=>{let{assistantSystem:o}=b(),[r,n]=l(""),g=d(null),{isDesktop:I}=u(),$=c(h),j=c(k),w=c(f),{isReplying:z,isContinuable:F}=m(o.chat$,e=>({isReplying:e.isLoading,isContinuable:e.isContinuable}),[]),A=r.trim(),D=F&&!z&&A.length>0,P=s(()=>{D&&(n(""),o.send(A),I||g.current?.blur())},[o,D,A,I]),T=s(e=>{e.preventDefault(),P()},[P]),E=s(e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),P())},[P]),K=s(()=>{o.stop()},[o]);return a(x,{onSubmit:T,children:[!F&&e(S,{role:"status",children:e(i,{id:"sdk.assistant.composer.notContinuable",message:"This conversation can be read here, but it can no longer be continued."})}),a(y,{children:[e(v,{multiline:!0,maxRows:6,placeholder:$,value:r,disabled:!F,inputRef:g,onChange:e=>n(e.target.value),onKeyDown:E,onFocus:()=>o.setInputFocused(!0),onBlur:()=>o.setInputFocused(!1),inputProps:{"aria-label":$}}),z?e(t,{title:w,placement:"top",children:e(C,{size:"small","aria-label":w,onClick:K,children:e(R,{})})}):e(t,{title:j,placement:"top",children:e("span",{children:e(B,{type:"submit",size:"small","aria-label":j,disabled:!D,children:e(p,{name:"PaperPlaneRightBold",fontSize:"small"})})})})]}),e(S,{children:e(i,{id:"sdk.assistant.composer.disclaimer",message:"AI can be wrong. Check the result."})})]})};
1
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Trans as r}from"@lingui/react";import{IconButton as i,InputBase as o,Tooltip as t,styled as n}from"@mui/material";import{useCallback as s,useRef as l,useState as d}from"react";import{useEagerObservableSelector as m,useLocalizable as p}from"#package/react-sdk";import{PhxIcon as c,useResponsive as u}from"#package/ui-sdk";import{useConfigurator as g}from"../../application-runtime/index.js";import{AssistantPanelName as h}from"./theme.js";let b={id:"sdk.assistant.composer.placeholder",message:"Ask or tell me what to change…"},k={id:"sdk.assistant.composer.send.label",message:"Send"},f={id:"sdk.assistant.composer.stop.label",message:"Stop"},y=n("form",{name:h,slot:"composer"})(({theme:{palette:e,spacing:a}})=>({borderBlockStart:`1px solid ${e.divider}`,display:"grid",gap:a(.75),paddingBlock:a(1.25),paddingInline:`var(--phx-sidebar-padding, ${a(2)})`})),x=n("div",{name:h,slot:"inputFrame"})(({theme:{palette:e,spacing:a}})=>({alignItems:"flex-end",border:`1px solid ${e.divider}`,borderRadius:12,display:"flex",gap:a(1),paddingBlock:a(.5),paddingInline:`${a(1.5)} ${a(.5)}`,"&:focus-within":{borderColor:e.primary.main}})),v=n(o,{name:h,slot:"input"})(({theme:{spacing:e,typography:a}})=>({...a.body2,flex:1,paddingBlock:e(.75)})),R=n(i,{name:h,slot:"sendButton"})(({theme:{palette:e}})=>({background:e.primary.main,borderRadius:8,color:e.primary.contrastText,"&:hover":{background:e.primary.dark},"&.Mui-disabled":{background:e.action.disabledBackground,color:e.action.disabled}})),B=n(i,{name:h,slot:"stopButton"})(({theme:{palette:e}})=>({background:e.text.primary,borderRadius:8,color:e.background.paper,"&:hover":{background:e.text.secondary}})),C=n("span")({background:"currentColor",blockSize:10,borderRadius:2,inlineSize:10,margin:5}),S=n("div",{name:h,slot:"hint"})(({theme:{palette:e,typography:a}})=>({...a.caption,color:e.text.secondary}));export const AssistantComposer=()=>{let{assistantSystem:i}=g(),[o,n]=d(""),h=l(null),{isDesktop:w}=u(),I=p(b),$=p(k),j=p(f),{isReplying:z,isResuming:F}=m(i.chat$,e=>({isReplying:e.isLoading,isResuming:e.isResuming}),[]),A=o.trim(),D=!z&&!F&&A.length>0,P=s(async()=>{!D||(w||h.current?.blur(),await i.resume()&&(n(""),i.send(A)))},[i,D,A,w]),E=s(e=>{e.preventDefault(),P()},[P]),K=s(e=>{"Enter"!==e.key||e.shiftKey||e.nativeEvent.isComposing||(e.preventDefault(),P())},[P]),T=s(()=>{i.stop()},[i]);return a(y,{onSubmit:E,children:[a(x,{children:[e(v,{multiline:!0,maxRows:6,placeholder:I,value:o,readOnly:F,inputRef:h,onChange:e=>n(e.target.value),onKeyDown:K,onFocus:()=>i.setInputFocused(!0),onBlur:()=>i.setInputFocused(!1),inputProps:{"aria-label":I}}),z?e(t,{title:j,placement:"top",children:e(B,{size:"small","aria-label":j,onClick:T,children:e(C,{})})}):e(t,{title:$,placement:"top",children:e("span",{children:e(R,{type:"submit",size:"small","aria-label":$,disabled:!D,children:e(c,{name:"PaperPlaneRightBold",fontSize:"small"})})})})]}),e(S,{children:e(r,{id:"sdk.assistant.composer.disclaimer",message:"AI can be wrong. Check the result."})})]})};
@@ -1,6 +1,10 @@
1
1
  /**
2
2
  * The conversation: user bubbles, assistant Markdown, tool chips, and what the panel
3
- * has to say itself, which is a greeting for an empty thread, a "Thinking…" line and a failure with
4
- * its way out. It follows a streaming reply until the user scrolls up.
3
+ * has to say itself, which is a line while the thread loads, a greeting for an empty thread, a
4
+ * "Thinking…" line and a failure with its way out. It follows a streaming reply until the user scrolls up.
5
+ *
6
+ * A conversation the assistant continued from a summary is painted whole: the threads that were
7
+ * closed come first, each ended by a separator, and the ones still on the server are loaded one at a
8
+ * time from a control above them.
5
9
  */
6
10
  export declare const AssistantThread: () => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- import{jsx as e,jsxs as i}from"react/jsx-runtime";import{Trans as a}from"@lingui/react";import{Button as t,styled as s}from"@mui/material";import{useMemo as r}from"react";import{match as n}from"ts-pattern";import{useEagerObservableValue as o}from"#package/react-sdk";import{PhxIcon as l}from"#package/ui-sdk";import{useConfigurator as d}from"../../application-runtime/index.js";import{AssistantToolChips as m}from"./AssistantChips.js";import{AssistantMarkdown as p}from"./AssistantMarkdown.js";import{describeAssistantFailure as c}from"./assistant-failure.js";import{AssistantPanelName as h}from"./theme.js";import{buildThreadView as g}from"./thread-items.js";import{useFollowStream as u}from"./use-follow-stream.js";let f=s("div",{name:h,slot:"thread"})({display:"grid",position:"relative"}),k=s("div",{name:h,slot:"messages"})(({theme:{spacing:e,typography:i}})=>({...i.body2,display:"flex",flexDirection:"column",gap:e(1.5),overflowY:"auto",overscrollBehavior:"contain",paddingBlock:e(2),paddingInline:`var(--phx-sidebar-padding, ${e(2)})`,"& > :first-child":{marginBlockStart:"auto"}})),v=s("div",{name:h,slot:"userMessage"})(({theme:{palette:e,spacing:i}})=>({alignSelf:"flex-end",background:`hsl(from ${e.primary.main} h s l / 12%)`,borderRadius:"14px 14px 4px 14px",maxInlineSize:"85%",overflowWrap:"anywhere",paddingBlock:i(1),paddingInline:i(1.5),whiteSpace:"pre-wrap"})),w=s("div",{name:h,slot:"greeting"})({}),b=s("div",{name:h,slot:"status"})(({theme:{palette:e,typography:i}})=>({...i.caption,color:e.text.secondary})),x=s("div",{name:h,slot:"notice"})(({theme:{palette:e,shape:i,spacing:a}})=>({alignItems:"center",background:e.action.hover,borderRadius:i.borderRadius,display:"flex",flexWrap:"wrap",gap:a(1),justifyContent:"space-between",paddingBlock:a(1),paddingInline:a(1.5)})),y=s(t,{name:h,slot:"newReplyButton"})(({theme:{palette:e,spacing:i}})=>({background:e.text.primary,borderRadius:"calc(infinity * 1px)",color:e.background.paper,insetBlockEnd:i(1),insetInlineStart:"50%",position:"absolute",translate:"-50% 0","&:hover":{background:e.text.secondary}})),j=({item:i,isActive:a})=>n(i).with({kind:"user"},({text:i})=>e(v,{children:i})).with({kind:"text"},({markdown:i,isStreaming:a})=>e(p,{markdown:i,isStreaming:a})).with({kind:"tools"},({tools:i})=>e(m,{tools:i,isActive:a})).exhaustive();export const AssistantThread=()=>{let{assistantSystem:s}=d(),m=o(s.chat$),{messages:p,isLoading:h}=m,{items:v,isThinking:T}=r(()=>g(p,h),[p,h]),I=r(()=>v.filter(({kind:e})=>"user"===e).length,[v]),S=m.error?c(m.failedStatus):void 0,{scrollerRef:A,hasUnseenContent:B,handleScroll:R,scrollToEnd:C}=u(r(()=>({messages:p,isThinking:T,failure:S?.kind}),[p,T,S?.kind]),I);return i(f,{children:[i(k,{ref:A,onScroll:R,role:"log","aria-live":"polite",children:[m.isLoaded&&0===v.length&&!h&&!S&&e(w,{children:e(a,{id:"sdk.assistant.thread.greeting",message:"Hi. I can answer questions about this design and change it with you. Tell me what you need."})}),v.map(i=>e(j,{item:i,isActive:h&&i===v.at(-1)},i.id)),T&&e(b,{children:e(a,{id:"sdk.assistant.thread.thinking",message:"Thinking…"})}),S&&i(x,{role:"alert",children:[e("span",{children:n(S.kind).with("notAvailable",()=>e(a,{id:"sdk.assistant.failure.notAvailable",message:"The assistant is not available here."})).with("busy",()=>e(a,{id:"sdk.assistant.failure.busy",message:"The assistant is still working on an earlier message."})).with("unavailable",()=>e(a,{id:"sdk.assistant.failure.unavailable",message:"The assistant is unavailable right now."})).exhaustive()}),S.canRetry&&e(t,{size:"small",variant:"outlined",color:"inherit",onClick:s.reloadThread,children:e(a,{id:"sdk.assistant.failure.retry.label",message:"Try again"})})]})]}),B&&e(y,{size:"small",onClick:C,endIcon:e(l,{name:"CaretDown"}),children:e(a,{id:"sdk.assistant.thread.newReply.label",message:"New reply"})})]})};
1
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Trans as i}from"@lingui/react";import{Button as s,styled as t}from"@mui/material";import{useMemo as r}from"react";import{match as n}from"ts-pattern";import{useEagerObservableValue as o}from"#package/react-sdk";import{PhxIcon as l}from"#package/ui-sdk";import{useConfigurator as d}from"../../application-runtime/index.js";import{AssistantToolChips as m}from"./AssistantChips.js";import{AssistantMarkdown as h}from"./AssistantMarkdown.js";import{describeAssistantFailure as c}from"./assistant-failure.js";import{AssistantPanelName as p}from"./theme.js";import{buildEarlierThreadItems as g,buildThreadView as u}from"./thread-items.js";import{useFollowStream as k}from"./use-follow-stream.js";let f=t("div",{name:p,slot:"thread"})({display:"grid",position:"relative"}),v=t("div",{name:p,slot:"messages"})(({theme:{spacing:e,typography:a}})=>({...a.body2,display:"flex",flexDirection:"column",gap:e(1.5),overflowY:"auto",overscrollBehavior:"contain",paddingBlock:e(2),paddingInline:`var(--phx-sidebar-padding, ${e(2)})`,"& > :first-child":{marginBlockStart:"auto"}})),w=t("div",{name:p,slot:"userMessage"})(({theme:{palette:e,spacing:a}})=>({alignSelf:"flex-end",background:`hsl(from ${e.primary.main} h s l / 12%)`,borderRadius:"14px 14px 4px 14px",maxInlineSize:"85%",overflowWrap:"anywhere",paddingBlock:a(1),paddingInline:a(1.5),whiteSpace:"pre-wrap"})),b=t("div",{name:p,slot:"greeting"})({}),x=t("div",{name:p,slot:"status"})(({theme:{palette:e,typography:a}})=>({...a.caption,color:e.text.secondary})),y=t("div",{name:p,slot:"separator"})(({theme:{palette:e,spacing:a,typography:i}})=>({...i.caption,alignItems:"center",color:e.text.secondary,display:"flex",gap:a(1),"&::before, &::after":{borderBlockStart:`1px solid ${e.divider}`,content:'""',flex:1}})),T=t(s,{name:p,slot:"earlierButton"})({alignSelf:"center"}),S=t("div",{name:p,slot:"notice"})(({theme:{palette:e,shape:a,spacing:i}})=>({alignItems:"center",background:e.action.hover,borderRadius:a.borderRadius,display:"flex",flexWrap:"wrap",gap:i(1),justifyContent:"space-between",paddingBlock:i(1),paddingInline:i(1.5)})),j=t(s,{name:p,slot:"newReplyButton"})(({theme:{palette:e,spacing:a}})=>({background:e.text.primary,borderRadius:"calc(infinity * 1px)",color:e.background.paper,insetBlockEnd:a(1),insetInlineStart:"50%",position:"absolute",translate:"-50% 0","&:hover":{background:e.text.secondary}})),B=({item:a,isActive:s})=>n(a).with({kind:"user"},({text:a})=>e(w,{children:a})).with({kind:"text"},({markdown:a,isStreaming:i})=>e(h,{markdown:a,isStreaming:i})).with({kind:"tools"},({tools:a})=>e(m,{tools:a,isActive:s})).with({kind:"separator"},()=>e(y,{role:"separator",children:e(i,{id:"sdk.assistant.thread.earlierSummarized",message:"Earlier conversation summarized"})})).exhaustive();export const AssistantThread=()=>{let{assistantSystem:t}=d(),m=o(t.chat$),{messages:h,isLoading:p,isResuming:w,earlierThreads:y}=m,{items:I,isThinking:A}=r(()=>u(h,p),[h,p]),E=r(()=>g(y),[y]),R=r(()=>I.filter(({kind:e})=>"user"===e).length,[I]),L=m.error?c(m.failedStatus):void 0,{scrollerRef:z,hasUnseenContent:C,handleScroll:$,scrollToEnd:D}=k(r(()=>({messages:h,isThinking:A,isResuming:w,failure:L?.kind}),[h,A,w,L?.kind]),R),M=!m.isLoaded&&0===E.length&&!w&&!L;return a(f,{children:[a(v,{ref:z,onScroll:$,role:"log","aria-live":"polite",children:[m.isLoaded&&0===I.length&&0===E.length&&!p&&!w&&!L&&e(b,{children:e(i,{id:"sdk.assistant.thread.greeting",message:"Hi. I can answer questions about this design and change it with you. Tell me what you need."})}),M&&e(x,{children:e(i,{id:"sdk.assistant.thread.loading",message:"Loading the conversation…"})}),m.isLoadingEarlierThread&&e(x,{children:e(i,{id:"sdk.assistant.thread.loadingEarlier",message:"Loading the earlier conversation…"})}),m.hasEarlierThread&&!m.isLoadingEarlierThread&&e(T,{size:"small",color:"inherit",onClick:t.loadEarlierThread,children:e(i,{id:"sdk.assistant.thread.showEarlier.label",message:"Show earlier conversation"})}),E.map(a=>e(B,{item:a,isActive:!1},a.id)),I.map(a=>e(B,{item:a,isActive:p&&a===I.at(-1)},a.id)),w&&e(x,{children:e(i,{id:"sdk.assistant.thread.resuming",message:"Resuming the conversation…"})}),A&&e(x,{children:e(i,{id:"sdk.assistant.thread.thinking",message:"Thinking…"})}),L&&a(S,{role:"alert",children:[e("span",{children:n(L.kind).with("notAvailable",()=>e(i,{id:"sdk.assistant.failure.notAvailable",message:"The assistant is not available here."})).with("busy",()=>e(i,{id:"sdk.assistant.failure.busy",message:"The assistant is still working on an earlier message."})).with("unavailable",()=>e(i,{id:"sdk.assistant.failure.unavailable",message:"The assistant is unavailable right now."})).exhaustive()}),L.canRetry&&e(s,{size:"small",variant:"outlined",color:"inherit",onClick:t.reloadThread,children:e(i,{id:"sdk.assistant.failure.retry.label",message:"Try again"})})]})]}),C&&e(j,{size:"small",onClick:D,endIcon:e(l,{name:"CaretDown"}),children:e(i,{id:"sdk.assistant.thread.newReply.label",message:"New reply"})})]})};
@@ -1,4 +1,5 @@
1
1
  import type { UIMessage } from '@tanstack/ai-client';
2
+ import type { AssistantEarlierThreadSnapshot } from '../../application-runtime/index.js';
2
3
  import { type AssistantToolChip } from './tool-chip.js';
3
4
  /** A tool call of the thread, with what its chip shows and what a click on the chip logs. */
4
5
  export interface AssistantToolItem {
@@ -8,8 +9,9 @@ export interface AssistantToolItem {
8
9
  readonly result: unknown;
9
10
  }
10
11
  /**
11
- * One block of the thread, in reading order: a user bubble, a stretch of assistant Markdown, or a
12
- * row of chips for the tool calls that follow each other without text in between.
12
+ * One block of the thread, in reading order: a user bubble, a stretch of assistant Markdown, a row
13
+ * of chips for the tool calls that follow each other without text in between, or the line that
14
+ * ends a closed thread of the conversation.
13
15
  */
14
16
  export type AssistantThreadItem = {
15
17
  readonly kind: 'user';
@@ -24,6 +26,9 @@ export type AssistantThreadItem = {
24
26
  readonly kind: 'tools';
25
27
  readonly id: string;
26
28
  readonly tools: readonly AssistantToolItem[];
29
+ } | {
30
+ readonly kind: 'separator';
31
+ readonly id: string;
27
32
  };
28
33
  export interface AssistantThreadView {
29
34
  readonly items: readonly AssistantThreadItem[];
@@ -35,3 +40,9 @@ export interface AssistantThreadView {
35
40
  * results are not shown on their own but decide the state of the chip of their call.
36
41
  */
37
42
  export declare const buildThreadView: (messages: ReadonlyArray<UIMessage>, isReplying: boolean) => AssistantThreadView;
43
+ /**
44
+ * Lays the closed threads of the conversation out above the thread that continues them, oldest
45
+ * first, each ended by a separator: the assistant read on from a summary of it, not from the
46
+ * messages themselves.
47
+ */
48
+ export declare const buildEarlierThreadItems: (earlierThreads: ReadonlyArray<AssistantEarlierThreadSnapshot>) => readonly AssistantThreadItem[];
@@ -1 +1 @@
1
- import{describeToolCall as t}from"./tool-chip.js";let e=t=>{try{return JSON.parse(t)}catch{return t}},r=t=>t.map(t=>"text"===t.type?t.content:"").join("").trim();export const buildThreadView=(o,n)=>{let l=(t=>{let r=new Map;for(let o of t)for(let t of o.parts)"tool-result"===t.type&&r.set(t.toolCallId,{result:"string"==typeof t.content?e(t.content):t.content,error:"error"===t.state?t.error??"The tool call failed.":void 0});return r})(o),i=[],s=o.at(-1),a=t=>{let e=i.at(-1);e?.kind==="tools"?i[i.length-1]={...e,tools:[...e.tools,t]}:i.push({kind:"tools",id:t.id,tools:[t]})};for(let e of o){if("user"===e.role){let t=r(e.parts);t&&i.push({kind:"user",id:e.id,text:t});continue}let o=n&&e===s;e.parts.forEach((r,n)=>{let s=`${e.id}:${n}`;if("text"===r.type){if(r.content.trim()){let t=o&&n===e.parts.length-1;i.push({kind:"text",id:s,markdown:r.content,isStreaming:t})}return}if("tool-call"!==r.type)return;let p=l.get(r.id),d=r.input,u=r.output??p?.result;a({id:r.id,input:d,result:u,chip:t({name:r.name,input:d,result:u,error:p?.error,isReplyRunning:o})})})}let p=i.at(-1),d=s?.role==="assistant"&&(p?.kind==="text"&&p.isStreaming||p?.kind==="tools");return{items:i,isThinking:n&&!d}};
1
+ import{describeToolCall as t}from"./tool-chip.js";let e=t=>{try{return JSON.parse(t)}catch{return t}},r=t=>t.map(t=>"text"===t.type?t.content:"").join("").trim();export const buildThreadView=(o,i)=>{let l=(t=>{let r=new Map;for(let o of t)for(let t of o.parts)"tool-result"===t.type&&r.set(t.toolCallId,{result:"string"==typeof t.content?e(t.content):t.content,error:"error"===t.state?t.error??"The tool call failed.":void 0});return r})(o),n=[],a=o.at(-1),s=t=>{let e=n.at(-1);e?.kind==="tools"?n[n.length-1]={...e,tools:[...e.tools,t]}:n.push({kind:"tools",id:t.id,tools:[t]})};for(let e of o){if("user"===e.role){let t=r(e.parts);t&&n.push({kind:"user",id:e.id,text:t});continue}let o=i&&e===a;e.parts.forEach((r,i)=>{let a=`${e.id}:${i}`;if("text"===r.type){if(r.content.trim()){let t=o&&i===e.parts.length-1;n.push({kind:"text",id:a,markdown:r.content,isStreaming:t})}return}if("tool-call"!==r.type)return;let d=l.get(r.id),p=r.input,u=r.output??d?.result;s({id:r.id,input:p,result:u,chip:t({name:r.name,input:p,result:u,error:d?.error,isReplyRunning:o})})})}let d=n.at(-1),p=a?.role==="assistant"&&(d?.kind==="text"&&d.isStreaming||d?.kind==="tools");return{items:n,isThinking:i&&!p}};export const buildEarlierThreadItems=t=>t.flatMap(({threadId:t,messages:e})=>[...buildThreadView(e,!1).items.map(e=>({...e,id:`${t}:${e.id}`})),{kind:"separator",id:`${t}:separator`}]);
@@ -1,80 +1,7 @@
1
1
  import type { ComponentsOverrides } from '@mui/material';
2
2
  import type { CSSProperties } from 'react';
3
3
  import type { ValueOf } from '@salsita-ai/common/utils';
4
- declare const MuiSidebarComponentName: 'PhxDesktopSidebar';
5
- declare const MuiSidebarSlots: {
6
- readonly Root: 'root';
7
- readonly Header: 'header';
8
- readonly Body: 'body';
9
- readonly Content: 'content';
10
- readonly Tabs: 'tabs';
11
- readonly Footer: 'footer';
12
- };
13
- type DesktopSidebarSlots = ValueOf<typeof MuiSidebarSlots>;
14
- declare module '@mui/material/styles' {
15
- interface ComponentNameToClassKey {
16
- [MuiSidebarComponentName]: DesktopSidebarSlots;
17
- }
18
- interface ComponentsPropsList {
19
- [MuiSidebarComponentName]: ThemeableDesktopSidebarProps;
20
- }
21
- interface Components {
22
- [MuiSidebarComponentName]?: {
23
- defaultProps?: ComponentsPropsList['PhxDesktopSidebar'];
24
- styleOverrides?: ComponentsOverrides<Theme>['PhxDesktopSidebar'];
25
- };
26
- }
27
- }
28
- interface SidebarOwnerState {
29
- readonly isHeaderEmpty?: boolean;
30
- readonly isContentEmpty?: boolean;
31
- }
32
- export interface ThemeableDesktopSidebarProps extends SidebarOwnerState {
33
- /**
34
- * Background applied to sidebar sections (header, body, footer).
35
- *
36
- * @default theme.palette.background.paper
37
- */
38
- readonly background?: CSSProperties['background'];
39
- /**
40
- * Border applied to sidebar sections.
41
- *
42
- * @default 0
43
- */
44
- readonly border?: CSSProperties['border'];
45
- /**
46
- * Corner radius applied to sidebar sections.
47
- *
48
- * @default theme.shape.sidebarBorderRadius ?? theme.shape.borderRadius
49
- */
50
- readonly borderRadius?: CSSProperties['borderRadius'];
51
- /**
52
- * CSS filter applied to the sidebar root (e.g. drop-shadow for elevation).
53
- *
54
- * @default elevation[1] drop-shadow
55
- */
56
- readonly filter?: CSSProperties['filter'];
57
- /**
58
- * Spacing value for sidebar inner padding.
59
- * Accepts a theme spacing multiplier or a CSS value.
60
- *
61
- * @default theme.spacing(2.5)
62
- */
63
- readonly padding?: number | string;
64
- /**
65
- * Background gradient for scrollable edge indicators.
66
- * Applied to `::before` and `::after` pseudo-elements on the content area.
67
- *
68
- * @default linear-gradient(180deg, hsl(from black h s l / 12%), transparent 8px)
69
- */
70
- readonly scrollableIndicatorBackground?: CSSProperties['background'];
71
- /**
72
- * Inline size (width) of the sidebar.
73
- *
74
- * @default inherited from ThemeableDesktopLayoutProps.sidebarWidth
75
- */
76
- readonly width?: CSSProperties['width'];
77
- }
4
+ export type { ThemeableDesktopSidebarProps } from './DesktopSidebar.js';
78
5
  export declare const PhxDesktopLayoutName: 'PhxDesktopLayout';
79
6
  declare const MuiLayoutComponentName: "PhxDesktopLayout";
80
7
  declare const MuiLayoutSlots: {
@@ -104,4 +31,3 @@ export interface ThemeableDesktopLayoutProps {
104
31
  readonly sidebarWidth?: CSSProperties['width'];
105
32
  }
106
33
  export declare const DesktopLayout: () => import("react/jsx-runtime").JSX.Element;
107
- export {};
@@ -1,17 +1,10 @@
1
- import{jsx as a,jsxs as t,Fragment as o}from"react/jsx-runtime";import{keyframes as e,paperClasses as r,snackbarClasses as d,styled as i,useTheme as n,useThemeProps as s}from"@mui/material";import{AnimatePresence as l,motion as p}from"motion/react";import{useCallback as b,useRef as u}from"react";import{useAccessService as c,useIsFullscreenActive as m}from"#package/react-sdk";import{attrf as h,commonStyles as y,numToPx as g,useInvalidateScrollTimeline as f,useIsEmpty as x,useResponsive as k}from"#package/ui-sdk";import{usePreview as v}from"../../../configurator-context/index.js";import{ASSISTANT_PANEL_SLOT as S,AssistantPanel as E,useIsAssistantPanelOpen as w}from"../../assistant/index.js";import{LayoutSlots as R}from"../slots/index.js";import{DesktopPreview as $}from"./DesktopPreview.js";import{useSceneSafeArea as B}from"./use-scene-safe-area.js";let C="PhxDesktopSidebar",D="minimalist",T="split",I="visible",A="hidden",P="assistant",F={Root:i("div",{name:C,slot:"root",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a})=>[`
2
- --phx-sidebar-background: ${a.background};
3
- --phx-sidebar-border: ${a.border};
4
- --phx-sidebar-filter: ${a.filter};
5
- --phx-sidebar-padding: ${a.padding};
6
- --phx-sidebar-radius: ${a.borderRadius}px;
7
- --phx-sidebar-scrollable-indicator-background: ${a.scrollableIndicatorBackground};
8
- `,{borderRadius:"var(--phx-sidebar-radius)",display:"grid",filter:"var(--phx-sidebar-filter)",gridTemplateRows:"min-content minmax(0, 1fr) min-content",inlineSize:a.width,position:"relative","& > *":{pointerEvents:"auto"},"@container style(--inspect: on)":{"--phx-sidebar-background":"hsl(from gold h s l / 50%)"},[`&[data-sidebar*="${I}"]`]:{opacity:1},[`&[data-sidebar*="${A}"]`]:{opacity:0},[`&[data-sidebar*="${P}"] > :not([data-sidebar="${S}"])`]:{visibility:"hidden"}}]),Tabs:i("div",{name:C,slot:"tabs",shouldForwardProp:a=>"ownerState"!==a})(({theme:{spacing:a}})=>({insetBlockStart:0,insetInlineEnd:"100%",maxInlineSize:150,paddingInlineEnd:a(2),position:"absolute","&:is(:empty)":{padding:0},[`.${r.root}`]:{boxShadow:"none"}})),Header:i("header",{name:C,slot:"header",shouldForwardProp:a=>"ownerState"!==a})({background:"var(--phx-sidebar-background)",border:"var(--phx-sidebar-border)",borderBlockEnd:0,borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",paddingBlock:"calc(0.6 * var(--phx-sidebar-padding))",paddingInline:"var(--phx-sidebar-padding)","&:is(:empty)":{border:0,paddingBlock:0}}),Body:i("div",{name:C,slot:"body",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a})=>({background:"var(--phx-sidebar-background)",border:"var(--phx-sidebar-border)",borderBlockStart:0,borderBlockEnd:0,display:"grid",position:"relative",'[data-layout*="slot[sidebar]"]:where(:has([data-sidebar="slot[header]"])) &':{...a.isHeaderEmpty&&{borderBlockStart:"var(--phx-sidebar-border)",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",paddingBlockStart:"var(--phx-sidebar-padding)"}},'&:has([data-sidebar*="slot[content]"]:empty)':{...a.isContentEmpty&&{paddingBlock:0}},[`[data-sidebar*="${D}"] &`]:{...a.isContentEmpty&&{border:0}},[`[data-sidebar*="${T}"] &`]:{borderBlockEnd:"var(--phx-sidebar-border)",borderEndStartRadius:"inherit",borderEndEndRadius:"inherit",paddingBlockEnd:"var(--phx-sidebar-padding)"}})),Content:i("div",{name:C,slot:"content",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a,theme:{spacing:t}})=>({...y.layout.normalizeScrollableContainer,alignContent:"start",borderRadius:"inherit",display:"grid",gap:t(3),padding:"var(--phx-sidebar-padding)","@supports (animation-timeline: scroll())":{"&[data-scrollable]":{scrollTimeline:"--phx-sidebar-timeline y","&::after, &::before":{animation:`${y.keyframes.fadeIn} both`,animationTimeline:"--phx-sidebar-timeline",background:"var(--phx-sidebar-scrollable-indicator-background)",backgroundRepeat:"no-repeat",content:'""',display:"block",insetInline:0,opacity:0,pointerEvents:"none",position:"absolute",zIndex:1},"&::after":{animationDirection:"reverse",animationRange:`calc(100% - ${t(4)}) 100%`,borderEndStartRadius:"inherit",borderEndEndRadius:"inherit",insetBlockStart:"50%",insetBlockEnd:0,scale:"1 -1"},"&::before":{animationRange:`0 ${t(4)}`,borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",insetBlockStart:0,insetBlockEnd:"50%"}}},"&:is(:empty)":{paddingBlock:0},'[data-layout*="slot[sidebar]"] &':{...a.isHeaderEmpty&&{paddingBlockStart:0,"&::before":{borderStartStartRadius:0,borderStartEndRadius:0,insetBlockStart:"var(--phx-sidebar-padding)"}}},[`[data-sidebar*="${T}"] &`]:{paddingBlockEnd:0,"&::after":{borderEndStartRadius:0,borderEndEndRadius:0,insetBlockEnd:"var(--phx-sidebar-padding)"}}})),Footer:i("footer",{name:C,slot:"footer",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a,theme:{palette:t,spacing:o}})=>({background:"var(--phx-sidebar-background)",border:"var(--phx-sidebar-border)",borderBlockStart:`1px solid ${t.divider}`,borderEndStartRadius:"inherit",borderEndEndRadius:"inherit",padding:"var(--phx-sidebar-padding)","&:is(:empty)":{border:0,paddingBlock:0},[`[data-sidebar*="${D}"] &`]:{...a.isContentEmpty&&{borderBlockStart:"var(--phx-sidebar-border)",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit"}},[`[data-sidebar*="${T}"] &`]:{borderBlockStart:"var(--phx-sidebar-border)",borderStartStartRadius:"inherit",borderStartEndRadius:"inherit",marginBlockStart:o(2)}}))};export const PhxDesktopLayoutName="PhxDesktopLayout";let j="PhxDesktopLayout",z=i(p.div,{name:j,slot:"root",shouldForwardProp:a=>"ownerState"!==a})(({ownerState:a,theme:{spacing:t}})=>{let o=e({"0%":{marginInlineEnd:0},"100%":{marginInlineEnd:t(-2)}});return[`
1
+ import{jsx as t,jsxs as a,Fragment as o}from"react/jsx-runtime";import{keyframes as e,snackbarClasses as i,styled as r,useThemeProps as d}from"@mui/material";import{AnimatePresence as l,motion as n}from"motion/react";import{useCallback as s}from"react";import{useAccessService as u,useIsFullscreenActive as m}from"#package/react-sdk";import{attrf as p,commonStyles as y,numToPx as c,useResponsive as b}from"#package/ui-sdk";import{usePreview as h}from"../../../configurator-context/index.js";import{useIsAssistantPanelOpen as f}from"../../assistant/index.js";import{LayoutSlots as g}from"../slots/index.js";import{DesktopPreview as x}from"./DesktopPreview.js";import{DesktopSidebar as v,SidebarKeys as k}from"./DesktopSidebar.js";import{useLayoutSceneSafeArea as w}from"./use-layout-scene-safe-area.js";export const PhxDesktopLayoutName="PhxDesktopLayout";let C="PhxDesktopLayout",D=r(n.div,{name:C,slot:"root",shouldForwardProp:t=>"ownerState"!==t})(({ownerState:t,theme:{spacing:a}})=>{let o=e({"0%":{marginInlineEnd:0},"100%":{marginInlineEnd:a(-2)}});return[`
9
2
  --inspect: off; // 🕹️ inspection mode toggle
10
3
 
11
- --phx-layout-sidebar-track-size: ${g(a.sidebarWidth)};
4
+ --phx-layout-sidebar-track-size: ${c(t.sidebarWidth)};
12
5
 
13
- --phx-layout-gap: ${t(2)};
14
- --phx-layout-gutter: ${t(3)};
6
+ --phx-layout-gap: ${a(2)};
7
+ --phx-layout-gutter: ${a(3)};
15
8
  `,{display:"grid",gridTemplateColumns:`
16
9
  [full-start]
17
10
  var(--phx-layout-gutter)
@@ -38,12 +31,4 @@ import{jsx as a,jsxs as t,Fragment as o}from"react/jsx-runtime";import{keyframes
38
31
  [bottom-start]
39
32
  min-content
40
33
  [bottom-end full-end]
41
- `,inset:0,isolation:"isolate",pointerEvents:"none",position:"absolute","@container style(--inspect: on)":{'& > *, & > * > *, [data-layout*="slot[body.footer]"] > *':{outline:"2px solid hsl(from tomato h s l / 50%)"}},'[data-layout*="interactive"]':{"& > *":{pointerEvents:"auto"}},'[data-layout*="slot[header]"]':{gridArea:"top-start / main-start / top-end / sidebar-end"},'[data-layout*="slot[body]"]':{containerType:"size",display:"grid",gridArea:"main",gridRowStart:"top-end",gridTemplateRows:"min-content 1fr min-content"},'[data-layout*="slot[body.top]"]':{gridArea:"1 / 1 / 2 / -1","& > *":{...y.transition.fadeIn}},'[data-layout*="slot[body.safeSceneArea]"]':{gridArea:"1 / 1 / 3 / -1","@container style(--inspect: on)":{background:"hsl(from lime h s l / 50%)"}},'[data-layout*="slot[body.bottom]"]':{alignItems:"end",display:"grid",gap:t(2),gridArea:"3 / 1 / 4 / -1",gridTemplateColumns:"minmax(0, auto) minmax(60px, 1fr)",justifyContent:"start",position:"relative",'&:has([data-layout="slot[body.viewControls]"]:empty)':{gap:0,gridTemplateColumns:"repeat(2, auto)"}},'[data-layout="slot[body.toolbar]"]':{animation:`${o} auto linear both`,animationTimeline:"scroll(self inline)",display:"flex",margin:t(-2),overflowX:"scroll",overscrollBehavior:"contain",padding:t(2),scrollbarWidth:"none","&::after":{content:'""'}},'[data-layout="slot[body.toolControls]"]':{insetBlockEnd:`calc(100% + ${t(6)})`,position:"absolute","& > *":{...y.transition.fadeIn,transitionDuration:"300ms"}},'[data-layout="slot[body.viewControls]"]':{},'[data-layout="slot[body.logo]"], [data-layout="slot[body.sideEffects]"]':{insetBlockEnd:`calc(100% + ${t(2)})`,position:"absolute"},'[data-layout="slot[body.sideEffects]"]':{insetInline:0,[`.${d.root}`]:{inset:"unset",insetBlockEnd:0,position:"absolute"}},'[data-layout*="slot[sidebar]"]':{display:"grid",gridArea:"top-start / sidebar-start / main-end / sidebar-end",gridTemplateRows:"minmax(0, auto)"},'[data-layout*="slot[footer]"]':{display:"grid",gap:"var(--phx-layout-gap)",gridArea:"bottom-start / full-start / bottom-end / full-end"},'&:has([data-header*="fixed"])':{'[data-layout*="slot[header]"]':{gridArea:"full-start / full-start / top-end / full-end"},'[data-layout*="slot[body]"]':{gridRowStart:"main-start"},'[data-layout*="slot[sidebar]"]':{gridRow:"main-start / main-end"}},'&:has([data-header*="floating"])':{'[data-layout*="slot[header]"]':{gridColumnEnd:"main-end"}},[`&:has([data-sidebar*="${D}"])`]:{'[data-layout*="slot[sidebar]"]':{alignContent:"end",gridRow:"main-start / main-end"}},[`&:has([data-header*="floating"]):has([data-sidebar*="${D}"])`]:{'[data-layout*="slot[header]"]':{gridColumnEnd:"sidebar-end"},'[data-layout*="slot[sidebar]"]':{gridRowStart:"top-end"}},[`&:has([data-sidebar*="${P}"])`]:{'[data-layout*="slot[sidebar]"]':{alignContent:"stretch"}},[`&:has([data-sidebar*="${A}"])`]:{"--phx-layout-gap":0,"--phx-layout-sidebar-track-size":0,'[data-layout*="slot[sidebar]"]':{overflow:"hidden"}}}]}),H=i("div")({gridArea:"1 / 1 / -1 / -1"});export const DesktopLayout=()=>{let e=u(null),r=u(null),{palette:d,shape:i,spacing:p}=n(),{sidebarWidth:y="clamp(360px, 30cqi, 400px)"}=s({props:{},name:j}),{background:g=d.background.paper,border:S=0,borderRadius:L=i.sidebarBorderRadius??i.borderRadius,filter:W=`
42
- drop-shadow(0 1px 1.5px hsl(from ${d.common.black} h s l / 12%))
43
- drop-shadow(0 1px 0.5px hsl(from ${d.common.black} h s l / 14%))
44
- drop-shadow(0 2px 0.5px hsl(from ${d.common.black} h s l / 20%))
45
- `,padding:q=p(2.5),scrollableIndicatorBackground:M=`linear-gradient(
46
- 180deg,
47
- hsl(from black h s l / 12%),
48
- hsl(from black h s l / 0%) 8px
49
- )`}=s({props:{},name:C}),{hasMiniSidebar:N,hasSplitSidebar:V}=R.useSidebarContent(),X=w(),{accessInfo:G}=c(),J=m(),{isPreview:K,isHidden:O}=v(),Q=!O&&!K,U=!J,{setCanvasPadding:Y,setAnimating:Z}=k(),{containerRef:_,safeAreaRef:aa,update:at}=B(Y,N&&!X,Q),ao=b(()=>{Z(!0)},[Z]),ae=b(()=>{Z(!1),at()},[Z,at]),ar=Q&&U,ad=x(e,{disabled:!ar}),ai=x(r,{disabled:!ar});f(r,{disabled:!ar});let an={background:g,border:S,borderRadius:L,filter:W,isHeaderEmpty:ad,isContentEmpty:ai,padding:q,scrollableIndicatorBackground:M,width:y};return a(o,{children:t(l,{mode:"wait",children:[!O&&K&&a($,{},"preview-layout"),Q&&t(z,{layoutId:"ui-layout",layout:!0,ownerState:{sidebarWidth:y},"data-layout":h({state:{initial:!J,fullscreen:J}}),onLayoutAnimationStart:ao,onLayoutAnimationComplete:ae,children:[a(H,{ref:_}),a("header",{"data-layout":"slot[header]",children:a(R.DesktopHeader,{})}),t("main",{"data-layout":"slot[body]",children:[a("div",{"data-layout":"slot[body.top] interactive",children:a(R.DesktopCallToAction,{})}),a("div",{ref:aa,"data-layout":"slot[body.safeSceneArea]"}),t("div",{"data-layout":"slot[body.bottom] interactive",children:[a("div",{"data-layout":"slot[body.toolbar]",children:a(R.DesktopToolbar,{})}),a("div",{"data-layout":"slot[body.toolControls]",children:!J&&a(R.DesktopToolControls,{})}),a("div",{"data-layout":"slot[body.viewControls]",children:a(R.DesktopViewControls,{})}),a("div",{"data-layout":"slot[body.logo]",children:a(R.DesktopPoweredBy,{})}),a("div",{"data-layout":"slot[body.sideEffects]",children:a(R.DesktopSnackbarsRoot,{})})]})]}),a("aside",{"data-layout":"slot[sidebar]",children:t(F.Root,{ownerState:an,"data-sidebar":h({variant:{[`${D}`]:N,[`${T}`]:V},state:{[`${I}`]:U,[`${A}`]:!U,[`${P}`]:X}}),inert:U?void 0:"",children:[a(F.Tabs,{ownerState:an,"data-sidebar":"slot[tabs]",children:a(R.DesktopSidebarTabs,{})}),a(F.Header,{ref:e,ownerState:an,"data-sidebar":"slot[header]",children:a(R.DesktopSidebarBackButton,{})}),a(F.Body,{ownerState:an,"data-sidebar":"slot[body]",children:a(F.Content,{ref:r,ownerState:an,"data-sidebar":"slot[content]",children:a(R.DesktopSidebarContent,{})})}),a(F.Footer,{ownerState:an,"data-sidebar":"slot[footer]",children:a(R.DesktopSidebarFooter,{})}),a(E,{})]})}),t("footer",{"data-layout":"slot[footer] interactive",children:[G.viewMode&&!J&&a(R.DesktopReadonlyBanner,{}),a(R.DesktopFooter,{})]})]},"interface-layout")]})})};
34
+ `,inset:0,isolation:"isolate",pointerEvents:"none",position:"absolute","@container style(--inspect: on)":{'& > *, & > * > *, [data-layout*="slot[body.footer]"] > *':{outline:"2px solid hsl(from tomato h s l / 50%)"}},'[data-layout*="interactive"]':{"& > *":{pointerEvents:"auto"}},'[data-layout*="slot[header]"]':{gridArea:"top-start / main-start / top-end / sidebar-end"},'[data-layout*="slot[body]"]':{containerType:"size",display:"grid",gridArea:"main",gridRowStart:"top-end",gridTemplateRows:"min-content 1fr min-content"},'[data-layout*="slot[body.top]"]':{gridArea:"1 / 1 / 2 / -1","& > *":{...y.transition.fadeIn}},'[data-layout*="slot[body.safeSceneArea]"]':{gridArea:"1 / 1 / 3 / -1","@container style(--inspect: on)":{background:"hsl(from lime h s l / 50%)"}},'[data-layout*="slot[body.bottom]"]':{alignItems:"end",display:"grid",gap:a(2),gridArea:"3 / 1 / 4 / -1",gridTemplateColumns:"minmax(0, auto) minmax(60px, 1fr)",justifyContent:"start",position:"relative",'&:has([data-layout="slot[body.viewControls]"]:empty)':{gap:0,gridTemplateColumns:"repeat(2, auto)"}},'[data-layout="slot[body.toolbar]"]':{animation:`${o} auto linear both`,animationTimeline:"scroll(self inline)",display:"flex",margin:a(-2),overflowX:"scroll",overscrollBehavior:"contain",padding:a(2),scrollbarWidth:"none","&::after":{content:'""'}},'[data-layout="slot[body.toolControls]"]':{insetBlockEnd:`calc(100% + ${a(6)})`,position:"absolute","& > *":{...y.transition.fadeIn,transitionDuration:"300ms"}},'[data-layout="slot[body.viewControls]"]':{},'[data-layout="slot[body.logo]"], [data-layout="slot[body.sideEffects]"]':{insetBlockEnd:`calc(100% + ${a(2)})`,position:"absolute"},'[data-layout="slot[body.sideEffects]"]':{insetInline:0,[`.${i.root}`]:{inset:"unset",insetBlockEnd:0,position:"absolute"}},'[data-layout*="slot[sidebar]"]':{display:"grid",gridArea:"top-start / sidebar-start / main-end / sidebar-end",gridTemplateRows:"minmax(0, auto)"},'[data-layout*="slot[footer]"]':{display:"grid",gap:"var(--phx-layout-gap)",gridArea:"bottom-start / full-start / bottom-end / full-end"},'&:has([data-header*="fixed"])':{'[data-layout*="slot[header]"]':{gridArea:"full-start / full-start / top-end / full-end"},'[data-layout*="slot[body]"]':{gridRowStart:"main-start"},'[data-layout*="slot[sidebar]"]':{gridRow:"main-start / main-end"}},'&:has([data-header*="floating"])':{'[data-layout*="slot[header]"]':{gridColumnEnd:"main-end"}},[`&:has([data-sidebar*="${k.Minimalist}"])`]:{'[data-layout*="slot[sidebar]"]':{alignContent:"end",gridRow:"main-start / main-end"}},[`&:has([data-header*="floating"]):has([data-sidebar*="${k.Minimalist}"])`]:{'[data-layout*="slot[header]"]':{gridColumnEnd:"sidebar-end"},'[data-layout*="slot[sidebar]"]':{gridRowStart:"top-end"}},[`&:has([data-sidebar*="${k.Assistant}"])`]:{'[data-layout*="slot[sidebar]"]':{alignContent:"stretch"}},[`&:has([data-sidebar*="${k.Hidden}"])`]:{"--phx-layout-gap":0,"--phx-layout-sidebar-track-size":0,'[data-layout*="slot[sidebar]"]':{overflow:"hidden"}}}]}),A=r("div")({gridArea:"1 / 1 / -1 / -1"});export const DesktopLayout=()=>{let{sidebarWidth:e="clamp(360px, 30cqi, 400px)"}=d({props:{},name:C}),{hasMiniSidebar:i}=g.useSidebarContent(),r=f(),{accessInfo:n}=u(),y=m(),{isPreview:c,isHidden:k}=h(),E=!k&&!c,{setAnimating:S}=b(),{containerRef:T,safeAreaRef:$,update:j}=w({enabled:E,hasMiniSidebar:i&&!r}),R=s(()=>{S(!0)},[S]),I=s(()=>{S(!1),j()},[S,j]);return t(o,{children:a(l,{mode:"wait",children:[!k&&c&&t(x,{},"preview-layout"),E&&a(D,{layoutId:"ui-layout",layout:!0,ownerState:{sidebarWidth:e},"data-layout":p({state:{initial:!y,fullscreen:y}}),onLayoutAnimationStart:R,onLayoutAnimationComplete:I,children:[t(A,{ref:T}),t("header",{"data-layout":"slot[header]",children:t(g.DesktopHeader,{})}),a("main",{"data-layout":"slot[body]",children:[t("div",{"data-layout":"slot[body.top] interactive",children:t(g.DesktopCallToAction,{})}),t("div",{ref:$,"data-layout":"slot[body.safeSceneArea]"}),a("div",{"data-layout":"slot[body.bottom] interactive",children:[t("div",{"data-layout":"slot[body.toolbar]",children:t(g.DesktopToolbar,{})}),t("div",{"data-layout":"slot[body.toolControls]",children:!y&&t(g.DesktopToolControls,{})}),t("div",{"data-layout":"slot[body.viewControls]",children:t(g.DesktopViewControls,{})}),t("div",{"data-layout":"slot[body.logo]",children:t(g.DesktopPoweredBy,{})}),t("div",{"data-layout":"slot[body.sideEffects]",children:t(g.DesktopSnackbarsRoot,{})})]})]}),t("aside",{"data-layout":"slot[sidebar]",children:t(v,{width:e})}),a("footer",{"data-layout":"slot[footer] interactive",children:[n.viewMode&&!y&&t(g.DesktopReadonlyBanner,{}),t(g.DesktopFooter,{})]})]},"interface-layout")]})})};
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{useCallback as e,useMemo as o}from"react";import{useResolveLocalizable as a}from"#package/react-sdk";import{Preview as i,useResponsive as r}from"#package/ui-sdk";import{usePresetSelection as n,usePreview as s}from"../../../configurator-context/index.js";import{useSceneSafeArea as p}from"./use-scene-safe-area.js";let m={id:"sdk.preview.customize.title",message:"Customize product"},u={id:"sdk.preview.start.button.label",message:"Start configuring"},c={layoutId:"ui-layout",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{type:"spring",bounce:.2,duration:.6},opacity:{duration:.2,ease:"linear"}}};export const DesktopPreview=l=>{let{slotProps:d={},slots:f}=l,{enter:y}=s(),{hasMultiplePresets:g}=n(),{setCanvasPadding:k,setAnimating:x}=r(),{containerRef:b,safeAreaRef:j,update:w}=p(k,!1),S=a(),v=e(()=>{x(!0)},[x]),A=e(()=>{x(!1),w()},[x,w]),L=o(()=>({...d,root:{...c,onLayoutAnimationStart:v,onLayoutAnimationComplete:A,...d.root}}),[A,v,d]);return t(i,{title:S(m),buttonLabel:S(u),containerRef:b,safeAreaRef:j,withScene:!g,slots:f,slotProps:L,onStart:y})};
1
+ import{jsx as t}from"react/jsx-runtime";import{useCallback as e,useMemo as o}from"react";import{useResolveLocalizable as a}from"#package/react-sdk";import{Preview as i,useResponsive as r}from"#package/ui-sdk";import{usePresetSelection as n,usePreview as s}from"../../../configurator-context/index.js";import{useLayoutSceneSafeArea as p}from"./use-layout-scene-safe-area.js";let u={id:"sdk.preview.customize.title",message:"Customize product"},m={id:"sdk.preview.start.button.label",message:"Start configuring"},c={layoutId:"ui-layout",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{layout:{type:"spring",bounce:.2,duration:.6},opacity:{duration:.2,ease:"linear"}}};export const DesktopPreview=l=>{let{slotProps:d={},slots:f}=l,{enter:y}=s(),{hasMultiplePresets:g}=n(),{setAnimating:b}=r(),{containerRef:k,safeAreaRef:x,update:S}=p({enabled:!0,hasMiniSidebar:!1}),j=a(),w=e(()=>{b(!0)},[b]),v=e(()=>{b(!1),S()},[b,S]),A=o(()=>({...d,root:{...c,onLayoutAnimationStart:w,onLayoutAnimationComplete:v,...d.root}}),[v,w,d]);return t(i,{title:j(u),buttonLabel:j(m),containerRef:k,safeAreaRef:x,withScene:!g,slots:f,slotProps:A,onStart:y})};
@@ -0,0 +1,92 @@
1
+ import type { ComponentsOverrides } from '@mui/material';
2
+ import type { CSSProperties } from 'react';
3
+ import type { ValueOf } from '@salsita-ai/common/utils';
4
+ declare const MuiSidebarComponentName: 'PhxDesktopSidebar';
5
+ declare const MuiSidebarSlots: {
6
+ readonly Root: 'root';
7
+ readonly Header: 'header';
8
+ readonly Body: 'body';
9
+ readonly Content: 'content';
10
+ readonly Tabs: 'tabs';
11
+ readonly Footer: 'footer';
12
+ };
13
+ type DesktopSidebarSlots = ValueOf<typeof MuiSidebarSlots>;
14
+ declare module '@mui/material/styles' {
15
+ interface ComponentNameToClassKey {
16
+ [MuiSidebarComponentName]: DesktopSidebarSlots;
17
+ }
18
+ interface ComponentsPropsList {
19
+ [MuiSidebarComponentName]: ThemeableDesktopSidebarProps;
20
+ }
21
+ interface Components {
22
+ [MuiSidebarComponentName]?: {
23
+ defaultProps?: ComponentsPropsList['PhxDesktopSidebar'];
24
+ styleOverrides?: ComponentsOverrides<Theme>['PhxDesktopSidebar'];
25
+ };
26
+ }
27
+ }
28
+ export declare const SidebarKeys: {
29
+ readonly Minimalist: 'minimalist';
30
+ readonly Split: 'split';
31
+ readonly Visible: 'visible';
32
+ readonly Hidden: 'hidden';
33
+ readonly Assistant: 'assistant';
34
+ };
35
+ interface SidebarOwnerState {
36
+ readonly isHeaderEmpty?: boolean;
37
+ readonly isContentEmpty?: boolean;
38
+ }
39
+ export interface ThemeableDesktopSidebarProps extends SidebarOwnerState {
40
+ /**
41
+ * Background applied to sidebar sections (header, body, footer).
42
+ *
43
+ * @default theme.palette.background.paper
44
+ */
45
+ readonly background?: CSSProperties['background'];
46
+ /**
47
+ * Border applied to sidebar sections.
48
+ *
49
+ * @default 0
50
+ */
51
+ readonly border?: CSSProperties['border'];
52
+ /**
53
+ * Corner radius applied to sidebar sections.
54
+ *
55
+ * @default theme.shape.sidebarBorderRadius ?? theme.shape.borderRadius
56
+ */
57
+ readonly borderRadius?: CSSProperties['borderRadius'];
58
+ /**
59
+ * CSS filter applied to the sidebar root (e.g. drop-shadow for elevation).
60
+ *
61
+ * @default elevation[1] drop-shadow
62
+ */
63
+ readonly filter?: CSSProperties['filter'];
64
+ /**
65
+ * Spacing value for sidebar inner padding.
66
+ * Accepts a theme spacing multiplier or a CSS value.
67
+ *
68
+ * @default theme.spacing(2.5)
69
+ */
70
+ readonly padding?: number | string;
71
+ /**
72
+ * Background gradient for scrollable edge indicators.
73
+ * Applied to `::before` and `::after` pseudo-elements on the content area.
74
+ *
75
+ * @default linear-gradient(180deg, hsl(from black h s l / 12%), transparent 8px)
76
+ */
77
+ readonly scrollableIndicatorBackground?: CSSProperties['background'];
78
+ /**
79
+ * Inline size (width) of the sidebar.
80
+ *
81
+ * @default inherited from ThemeableDesktopLayoutProps.sidebarWidth
82
+ */
83
+ readonly width?: CSSProperties['width'];
84
+ }
85
+ interface DesktopSidebarProps {
86
+ /**
87
+ * Inline size (width) of the sidebar. The layout passes the width of its sidebar column.
88
+ */
89
+ readonly width: CSSProperties['width'];
90
+ }
91
+ export declare const DesktopSidebar: ({ width }: DesktopSidebarProps) => import("react/jsx-runtime").JSX.Element;
92
+ export {};