@salsita-ai/sdk 0.50.0-develop.a4dde5f252 → 0.50.0-develop.a9ee99dc86

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 (1061) hide show
  1. package/README.md +19 -14
  2. package/dist/admin/default-admin-elements.d.ts +9 -0
  3. package/dist/admin/default-admin-elements.js +1 -0
  4. package/dist/admin/default-elements/built-in-entity-element.d.ts +10 -0
  5. package/dist/admin/default-elements/built-in-entity-element.js +1 -0
  6. package/dist/admin/default-elements/built-in-layout-element.d.ts +10 -0
  7. package/dist/admin/default-elements/built-in-layout-element.js +1 -0
  8. package/dist/admin/default-elements/index.d.ts +2 -0
  9. package/dist/admin/default-elements/index.js +1 -0
  10. package/dist/admin/index.d.ts +1 -0
  11. package/dist/admin/index.js +1 -1
  12. package/dist/application-spec/caching/content-diff.js +1 -1
  13. package/dist/application-spec/core/application-file.d.ts +0 -2
  14. package/dist/application-spec/core/application-file.js +1 -1
  15. package/dist/application-spec/core/components/component-filter.d.ts +53 -0
  16. package/dist/application-spec/core/components/component-filter.js +1 -0
  17. package/dist/application-spec/core/components/index.d.ts +2 -0
  18. package/dist/application-spec/core/components/index.js +1 -0
  19. package/dist/application-spec/core/components/sdk-code-ref.d.ts +9 -0
  20. package/dist/application-spec/core/components/sdk-code-ref.js +1 -0
  21. package/dist/application-spec/core/enhanced-json-value.d.ts +0 -68
  22. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  23. package/dist/application-spec/core/expressions/index.d.ts +2 -0
  24. package/dist/application-spec/core/expressions/index.js +1 -0
  25. package/dist/application-spec/core/expressions/relation-expression-params.d.ts +11 -0
  26. package/dist/application-spec/core/expressions/sdk-expression-implementation.d.ts +24 -0
  27. package/dist/application-spec/core/expressions/sdk-expression-implementation.js +1 -0
  28. package/dist/application-spec/core/index.d.ts +2 -0
  29. package/dist/application-spec/core/index.js +1 -1
  30. package/dist/application-spec/core/json-value.d.ts +1 -1
  31. package/dist/application-spec/{core → enhanced-json}/eval-to-constant.d.ts +1 -1
  32. package/dist/application-spec/enhanced-json/index.d.ts +4 -0
  33. package/dist/application-spec/enhanced-json/index.js +1 -0
  34. package/dist/application-spec/enhanced-json/is-enhanced-json-array.d.ts +2 -0
  35. package/dist/application-spec/enhanced-json/is-enhanced-json-array.js +1 -0
  36. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.d.ts +18 -0
  37. package/dist/application-spec/enhanced-json/resolve-enhanced-json-value.js +1 -0
  38. package/dist/application-spec/enhanced-json/schema-from-value.d.ts +24 -0
  39. package/dist/application-spec/enhanced-json/schema-from-value.js +1 -0
  40. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.d.ts +14 -0
  41. package/dist/application-spec/enhanced-json/stringify-enhanced-json-value.js +1 -0
  42. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.d.ts +12 -0
  43. package/dist/application-spec/enhanced-json/validate-enhanced-json-value-caps.js +1 -0
  44. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.d.ts +13 -0
  45. package/dist/application-spec/enhanced-json/validate-no-legacy-code-ref.js +1 -0
  46. package/dist/application-spec/errors/diagnostic-codes.d.ts +14 -0
  47. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  48. package/dist/application-spec/errors/diagnostic-messages.d.ts +17 -0
  49. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  50. package/dist/application-spec/generate-application/code/common/code-imports.js +1 -1
  51. package/dist/application-spec/generate-application/code/common/env-reader.js +2 -2
  52. package/dist/application-spec/generate-application/code/common/index.d.ts +1 -0
  53. package/dist/application-spec/generate-application/code/common/index.js +1 -1
  54. package/dist/application-spec/generate-application/code/common/single-quoted-string.d.ts +6 -0
  55. package/dist/application-spec/generate-application/code/common/single-quoted-string.js +1 -0
  56. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  57. package/dist/application-spec/generate-application/code/generate-application-code.d.ts +3 -2
  58. package/dist/application-spec/generate-application/code/generate-application-code.js +1 -1
  59. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +22 -14
  60. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  61. package/dist/application-spec/generate-application/code/standalone-app-files.d.ts +2 -2
  62. package/dist/application-spec/generate-application/code/standalone-app-files.js +1 -1
  63. package/dist/application-spec/generate-application/code/story-files.js +1 -1
  64. package/dist/application-spec/generate-application/code/templates/admin-config.js +3 -0
  65. package/dist/application-spec/generate-application/code/templates/common/format-property-key.d.ts +7 -0
  66. package/dist/application-spec/generate-application/code/templates/common/format-property-key.js +1 -0
  67. package/dist/application-spec/generate-application/code/templates/common/schema-to-type-string.js +3 -3
  68. package/dist/application-spec/generate-application/code/templates/configurator-config.js +6 -4
  69. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/domain-factory-types.d.ts +35 -0
  70. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/domain-factory-types.js +5 -0
  71. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/index.d.ts +1 -0
  72. package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/index.js +1 -0
  73. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.d.ts +1 -1
  74. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-component-optics.js +7 -7
  75. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.d.ts +4 -2
  76. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-defaults.js +1 -1
  77. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +69 -73
  78. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +8 -0
  79. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  80. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-phx-globals.js +3 -0
  81. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-presets.js +1 -1
  82. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-relation-expressions.js +1 -1
  83. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.d.ts +6 -8
  84. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-resources.js +21 -21
  85. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-states.d.ts +1 -1
  86. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-states.js +2 -2
  87. package/dist/application-spec/generate-application/code/templates/domain-spec/index.d.ts +3 -2
  88. package/dist/application-spec/generate-application/code/templates/domain-spec/index.js +1 -1
  89. package/dist/application-spec/generate-application/code/templates/domain-spec.js +12 -12
  90. package/dist/application-spec/generate-application/code/templates/domain.js +3 -3
  91. package/dist/application-spec/generate-application/code/templates/eslint-config.d.ts +5 -0
  92. package/dist/application-spec/generate-application/code/templates/eslint-config.js +4 -5
  93. package/dist/application-spec/generate-application/code/templates/frontend-config.js +3 -5
  94. package/dist/application-spec/generate-application/code/templates/gitignore.js +0 -3
  95. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.d.ts +43 -0
  96. package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.js +31 -0
  97. package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +1 -0
  98. package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
  99. package/dist/application-spec/generate-application/code/templates/globals.js +24 -43
  100. package/dist/application-spec/generate-application/code/templates/index.d.ts +3 -4
  101. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  102. package/dist/application-spec/generate-application/code/templates/lingui-rc.d.ts +5 -0
  103. package/dist/application-spec/generate-application/code/templates/lingui-rc.js +4 -4
  104. package/dist/application-spec/generate-application/code/templates/prettier-config.d.ts +5 -0
  105. package/dist/application-spec/generate-application/code/templates/prettier-config.js +4 -5
  106. package/dist/application-spec/generate-application/code/templates/root-tsconfig.d.ts +6 -0
  107. package/dist/application-spec/generate-application/code/templates/root-tsconfig.js +2 -0
  108. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
  109. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +1 -1
  110. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +5 -5
  111. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +9 -3
  112. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  113. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +2 -2
  114. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +26 -7
  115. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  116. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.d.ts +58 -0
  117. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.js +1 -0
  118. package/dist/application-spec/generate-application/code/templates/spec-code/index.d.ts +2 -0
  119. package/dist/application-spec/generate-application/code/templates/spec-code/index.js +1 -0
  120. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.d.ts +18 -0
  121. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.js +41 -0
  122. package/dist/application-spec/generate-application/code/templates/spec-messages/index.d.ts +1 -0
  123. package/dist/application-spec/generate-application/code/templates/spec-messages/index.js +1 -0
  124. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.d.ts +20 -0
  125. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.js +6 -0
  126. package/dist/application-spec/generate-application/code/templates/story/phx-module.d.ts +8 -2
  127. package/dist/application-spec/generate-application/code/templates/story/phx-module.js +15 -3
  128. package/dist/application-spec/generate-application/code/templates/story/wrapper.d.ts +3 -0
  129. package/dist/application-spec/generate-application/code/templates/story/wrapper.js +2 -1
  130. package/dist/application-spec/generate-application/code/templates/tsconfig.d.ts +5 -0
  131. package/dist/application-spec/generate-application/code/templates/tsconfig.js +1 -1
  132. package/dist/application-spec/generate-application/code/templates/webhook-index.d.ts +6 -1
  133. package/dist/application-spec/generate-application/code/templates/webhook-index.js +10 -1
  134. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -3
  135. package/dist/application-spec/generate-application/index.d.ts +2 -0
  136. package/dist/application-spec/generate-application/index.js +1 -1
  137. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.d.ts +6 -4
  138. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.js +1 -1
  139. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +8 -3
  140. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +1 -1
  141. package/dist/application-spec/generate-application/runtime/admin-runtime/states-runtime.d.ts +2 -2
  142. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +19 -7
  143. package/dist/application-spec/generate-application/runtime/application-runtime.js +1 -1
  144. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.d.ts +6 -4
  145. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.js +1 -1
  146. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +7 -4
  147. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +1 -1
  148. package/dist/application-spec/generate-application/runtime/configurator-runtime/states-runtime.d.ts +2 -2
  149. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.d.ts +43 -0
  150. package/dist/application-spec/generate-application/runtime/factory-data/factory-data-runtime.js +1 -0
  151. package/dist/application-spec/generate-application/runtime/factory-data/index.d.ts +3 -0
  152. package/dist/application-spec/generate-application/runtime/factory-data/index.js +1 -0
  153. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.d.ts +13 -0
  154. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.js +1 -0
  155. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.d.ts +16 -0
  156. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.js +1 -0
  157. package/dist/application-spec/generate-application/runtime/migrations/index.d.ts +1 -0
  158. package/dist/application-spec/generate-application/runtime/migrations/index.js +1 -0
  159. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.d.ts +53 -0
  160. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.js +1 -0
  161. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +2 -2
  162. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +3 -2
  163. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +1 -1
  164. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.d.ts +2 -1
  165. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.js +1 -1
  166. package/dist/application-spec/generate-application/runtime/sections/component-optic.d.ts +5 -1
  167. package/dist/application-spec/generate-application/runtime/sections/component-optic.js +1 -1
  168. package/dist/application-spec/generate-application/runtime/sections/data-runtime.d.ts +4 -4
  169. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.d.ts +7 -4
  170. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +1 -1
  171. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.d.ts +9 -5
  172. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.js +1 -1
  173. package/dist/application-spec/generate-application/runtime/sections/reflection-constants-runtime.d.ts +3 -1
  174. package/dist/application-spec/generate-application/runtime/sections/reflection-constants-runtime.js +1 -1
  175. package/dist/application-spec/generate-application/runtime/sections/theme-runtime.d.ts +2 -2
  176. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +4 -6
  177. package/dist/application-spec/generate-application/runtime/spec-code/index.d.ts +2 -0
  178. package/dist/application-spec/generate-application/runtime/spec-code/index.js +1 -0
  179. package/dist/application-spec/generate-application/runtime/spec-code/resolve-spec-code.d.ts +18 -0
  180. package/dist/application-spec/generate-application/runtime/spec-code/resolve-spec-code.js +1 -0
  181. package/dist/application-spec/generate-application/runtime/spec-code/spec-code-module.d.ts +17 -0
  182. package/dist/application-spec/generate-application/runtime/spec-code/spec-code-module.js +1 -0
  183. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.d.ts +9 -0
  184. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.js +1 -0
  185. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.d.ts +8 -0
  186. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.js +1 -0
  187. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.d.ts +27 -0
  188. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.js +1 -0
  189. package/dist/application-spec/generate-application/runtime-spec/index.d.ts +5 -0
  190. package/dist/application-spec/generate-application/runtime-spec/index.js +1 -0
  191. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.d.ts +68 -0
  192. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.js +1 -0
  193. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.d.ts +40 -0
  194. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.js +1 -0
  195. package/dist/application-spec/index.d.ts +1 -0
  196. package/dist/application-spec/index.js +1 -1
  197. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +34 -0
  198. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  199. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.d.ts +16 -0
  200. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.js +9 -0
  201. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.d.ts +9 -0
  202. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.js +1 -0
  203. package/dist/application-spec/parse-application-files/categorize/module-analysis.d.ts +1 -1
  204. package/dist/application-spec/parse-application-files/categorize/module-analysis.js +1 -1
  205. package/dist/application-spec/parse-application-files/raw-spec/parse-yaml-spec-file.js +1 -1
  206. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +16 -3
  207. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  208. package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
  209. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  210. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  211. package/dist/application-spec/parse-application-files/spec/common/index.d.ts +1 -0
  212. package/dist/application-spec/parse-application-files/spec/common/index.js +1 -1
  213. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.d.ts +3 -0
  214. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.js +1 -0
  215. package/dist/application-spec/parse-application-files/spec/common/value-type/index.d.ts +5 -0
  216. package/dist/application-spec/parse-application-files/spec/common/value-type/index.js +1 -0
  217. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.d.ts +6 -0
  218. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.js +1 -0
  219. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.d.ts +8 -0
  220. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.js +1 -0
  221. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.d.ts +10 -0
  222. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.js +1 -0
  223. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.d.ts +98 -0
  224. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.js +1 -0
  225. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.d.ts +13 -0
  226. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.js +1 -0
  227. package/dist/application-spec/parse-application-files/spec/components/bindings/index.d.ts +2 -0
  228. package/dist/application-spec/parse-application-files/spec/components/bindings/index.js +1 -1
  229. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.d.ts +24 -0
  230. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.js +1 -0
  231. package/dist/application-spec/parse-application-files/spec/components/component-entry.d.ts +1 -9
  232. package/dist/application-spec/parse-application-files/spec/components/component-entry.js +1 -1
  233. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +1 -54
  234. package/dist/application-spec/parse-application-files/spec/components/component-filter.js +1 -1
  235. package/dist/application-spec/parse-application-files/spec/components/component-state-type.d.ts +8 -0
  236. package/dist/application-spec/parse-application-files/spec/components/component-state-type.js +1 -0
  237. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.d.ts +13 -0
  238. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.js +1 -0
  239. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -1
  240. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  241. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.d.ts +14 -0
  242. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.js +1 -0
  243. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.d.ts +6 -0
  244. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.js +1 -1
  245. package/dist/application-spec/parse-application-files/spec/components/user-components.d.ts +7 -4
  246. package/dist/application-spec/parse-application-files/spec/components/user-components.js +1 -1
  247. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.d.ts +24 -0
  248. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.js +1 -0
  249. package/dist/application-spec/parse-application-files/spec/expressions/expression-read.d.ts +13 -0
  250. package/dist/application-spec/parse-application-files/spec/expressions/expression-read.js +1 -0
  251. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.d.ts +9 -0
  252. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.js +1 -0
  253. package/dist/application-spec/parse-application-files/spec/expressions/expression.d.ts +1 -28
  254. package/dist/application-spec/parse-application-files/spec/expressions/expression.js +1 -1
  255. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +7 -3
  256. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  257. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
  258. package/dist/application-spec/parse-application-files/spec/expressions/index.js +1 -1
  259. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  260. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.d.ts +3 -1
  261. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  262. package/dist/application-spec/parse-application-files/spec/invariants/invariants.d.ts +2 -2
  263. package/dist/application-spec/parse-application-files/spec/invariants/invariants.js +1 -1
  264. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +7 -2
  265. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  266. package/dist/application-spec/parse-application-files/spec/model/index.d.ts +1 -0
  267. package/dist/application-spec/parse-application-files/spec/model/index.js +1 -1
  268. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.d.ts +10 -0
  269. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.js +1 -0
  270. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  271. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  272. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  273. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  274. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  275. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  276. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  277. package/dist/application-spec/parse-application-files/spec/sections/infra.d.ts +2 -0
  278. package/dist/application-spec/parse-application-files/spec/sections/infra.js +1 -1
  279. package/dist/client/phoenix-api.d.ts +463 -0
  280. package/dist/configurator/ConfiguratorApp.js +1 -1
  281. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.d.ts +2 -0
  282. package/dist/configurator/app-loader-content/DefaultAppLoaderContent.js +5 -0
  283. package/dist/configurator/app-loader-content/app-loader-content-name.d.ts +5 -0
  284. package/dist/configurator/app-loader-content/app-loader-content-name.js +1 -0
  285. package/dist/configurator/app-loader-content/index.d.ts +2 -0
  286. package/dist/configurator/app-loader-content/index.js +1 -0
  287. package/dist/configurator/application-runtime/extensions/create-configurator-extensions.js +1 -1
  288. package/dist/configurator/application-runtime/extensions/selectors.d.ts +3 -1
  289. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  290. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +38 -1
  291. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  292. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +7 -1
  293. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  294. package/dist/configurator/application-runtime/extensions/systems/camera-control-system/camera-control-system.d.ts +1 -1
  295. package/dist/configurator/application-runtime/extensions/systems/drag-and-drop-system/drag-and-drop-system.d.ts +3 -3
  296. package/dist/configurator/application-runtime/extensions/systems/graphql-system/close-unclosed-braces.d.ts +12 -0
  297. package/dist/configurator/application-runtime/extensions/systems/graphql-system/close-unclosed-braces.js +1 -0
  298. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +20 -4
  299. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  300. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.d.ts +11 -0
  301. package/dist/configurator/application-runtime/extensions/systems/graphql-system/inject-assistant-lenses.js +1 -0
  302. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +2 -2
  303. package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
  304. package/dist/configurator/common/configurator-interface.d.ts +136 -4
  305. package/dist/configurator/common/configurator-interface.js +1 -1
  306. package/dist/configurator/common/index.d.ts +3 -1
  307. package/dist/configurator/common/index.js +1 -1
  308. package/dist/configurator/common/use-reset-camera.d.ts +6 -0
  309. package/dist/configurator/common/use-reset-camera.js +1 -0
  310. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.d.ts +12 -0
  311. package/dist/configurator/configuration-not-found-page/ConfigurationNotFoundPageElement.js +1 -0
  312. package/dist/configurator/configuration-not-found-page/create-configuration-not-found-page.d.ts +9 -0
  313. package/dist/configurator/configuration-not-found-page/create-configuration-not-found-page.js +1 -0
  314. package/dist/configurator/configuration-not-found-page/index.d.ts +2 -0
  315. package/dist/configurator/configuration-not-found-page/index.js +1 -0
  316. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.d.ts +12 -0
  317. package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.js +1 -0
  318. package/dist/configurator/configurator-context/PresetSelectionProvider.js +1 -1
  319. package/dist/configurator/configurator-context/PreviewContextProvider.js +1 -1
  320. package/dist/configurator/configurator-context/ViewportStateSync.d.ts +2 -2
  321. package/dist/configurator/configurator-context/ViewportStateSync.js +1 -1
  322. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +7 -1
  323. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.d.ts +6 -0
  324. package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.js +1 -0
  325. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.d.ts +12 -0
  326. package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.js +1 -0
  327. package/dist/configurator/configurator-error-page/create-configurator-error-page.d.ts +9 -0
  328. package/dist/configurator/configurator-error-page/create-configurator-error-page.js +1 -0
  329. package/dist/configurator/configurator-error-page/index.d.ts +3 -0
  330. package/dist/configurator/configurator-error-page/index.js +1 -0
  331. package/dist/configurator/index.d.ts +3 -0
  332. package/dist/configurator/index.js +1 -1
  333. package/dist/configurator/pages/ConfiguratorErrorPage.d.ts +0 -1
  334. package/dist/configurator/pages/ConfiguratorErrorPage.js +1 -1
  335. package/dist/configurator/pages/ConfiguratorNotFoundPage.js +1 -1
  336. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +3 -2
  337. package/dist/configurator/pages/DefaultNotAuthenticatedPage.d.ts +8 -0
  338. package/dist/configurator/pages/DefaultNotAuthenticatedPage.js +1 -0
  339. package/dist/configurator/pages/DefaultPresetUi.d.ts +7 -0
  340. package/dist/configurator/pages/DefaultPresetUi.js +1 -0
  341. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  342. package/dist/configurator/pages/NewConfiguratorPage.js +1 -1
  343. package/dist/configurator/pages/PresetCreationErrorPage.d.ts +1 -1
  344. package/dist/configurator/pages/PresetCreationErrorPage.js +1 -1
  345. package/dist/configurator/pages/RootPage.js +1 -1
  346. package/dist/configurator/pages/configurator-layout-name.d.ts +2 -0
  347. package/dist/configurator/pages/configurator-layout-name.js +1 -0
  348. package/dist/configurator/pages/default-configurator-elements.d.ts +13 -0
  349. package/dist/configurator/pages/default-configurator-elements.js +1 -0
  350. package/dist/configurator/pages/default-elements/built-in-entity-element.d.ts +10 -0
  351. package/dist/configurator/pages/default-elements/built-in-entity-element.js +1 -0
  352. package/dist/configurator/pages/default-elements/built-in-layout-element.d.ts +10 -0
  353. package/dist/configurator/pages/default-elements/built-in-layout-element.js +1 -0
  354. package/dist/configurator/pages/default-elements/domain-control-elements.d.ts +6 -0
  355. package/dist/configurator/pages/default-elements/domain-control-elements.js +1 -0
  356. package/dist/configurator/pages/default-elements/index.d.ts +5 -0
  357. package/dist/configurator/pages/default-elements/index.js +1 -0
  358. package/dist/configurator/pages/default-elements/recipe-panel-elements.d.ts +3 -0
  359. package/dist/configurator/pages/default-elements/recipe-panel-elements.js +1 -0
  360. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.d.ts +3 -0
  361. package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.js +1 -0
  362. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.d.ts +3 -0
  363. package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.js +1 -0
  364. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.d.ts +3 -0
  365. package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.js +1 -0
  366. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.d.ts +3 -0
  367. package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.js +1 -0
  368. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.d.ts +3 -0
  369. package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.js +1 -0
  370. package/dist/configurator/pages/default-elements/scene-controls/index.d.ts +6 -0
  371. package/dist/configurator/pages/default-elements/scene-controls/index.js +1 -0
  372. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.d.ts +6 -0
  373. package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.js +1 -0
  374. package/dist/configurator/pages/default-elements/sidebar-footer-elements.d.ts +7 -0
  375. package/dist/configurator/pages/default-elements/sidebar-footer-elements.js +1 -0
  376. package/dist/configurator/pages/default-elements/toolbar-elements.d.ts +7 -0
  377. package/dist/configurator/pages/default-elements/toolbar-elements.js +1 -0
  378. package/dist/configurator/pages/error-boundaries/GeneralErrorBoundary.js +1 -1
  379. package/dist/configurator/pages/index.d.ts +1 -0
  380. package/dist/configurator/pages/index.js +1 -1
  381. package/dist/configurator/preset-screen-elements/PresetDeviceNotSupportedElement.d.ts +4 -0
  382. package/dist/configurator/preset-screen-elements/PresetDeviceNotSupportedElement.js +1 -0
  383. package/dist/configurator/preset-screen-elements/PresetPageActionElement.d.ts +4 -0
  384. package/dist/configurator/preset-screen-elements/PresetPageActionElement.js +1 -0
  385. package/dist/configurator/preset-screen-elements/index.d.ts +2 -0
  386. package/dist/configurator/preset-screen-elements/index.js +1 -0
  387. package/dist/configurator/scene/index.d.ts +1 -0
  388. package/dist/configurator/scene/index.js +1 -1
  389. package/dist/configurator/scene/scene-controls/DeleteEntityFab.js +1 -1
  390. package/dist/configurator/scene/scene-controls/SelectionHotspot.js +1 -1
  391. package/dist/configurator/scene/scene-controls/ToolFab.d.ts +4 -0
  392. package/dist/configurator/scene/scene-controls/ToolFab.js +1 -1
  393. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragHandle.d.ts +1 -1
  394. package/dist/configurator/scene/scene-controls/hotspot-drag-handle/HotspotDragSceneHandle.d.ts +1 -1
  395. package/dist/configurator/scene/scene-controls/use-scene-control-tooltip.d.ts +2 -1
  396. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicator.d.ts +1 -1
  397. package/dist/configurator/scene/scene-entity/dimension-indicators/DimensionIndicatorInternal.d.ts +1 -1
  398. package/dist/configurator/scene/scene-entity/drag-and-drop/shared.d.ts +2 -2
  399. package/dist/configurator/scene/scene-entity/drag-and-drop/use-drag-object.d.ts +1 -1
  400. package/dist/configurator/scene/scene-entity/materials/RemoteReplacedMaterial.js +1 -1
  401. package/dist/configurator/scene/scene-entity/objects/SceneEntityObjectTextDecal.d.ts +1 -1
  402. package/dist/configurator/scene/scene-entity/scene-controls/SceneEntityHtmlHotspots.js +1 -1
  403. package/dist/configurator/toolbar-actions/index.d.ts +2 -0
  404. package/dist/configurator/toolbar-actions/index.js +1 -0
  405. package/dist/configurator/toolbar-actions/use-assistant-panel.d.ts +18 -0
  406. package/dist/configurator/toolbar-actions/use-assistant-panel.js +1 -0
  407. package/dist/configurator/toolbar-actions/use-measurements.d.ts +35 -0
  408. package/dist/configurator/toolbar-actions/use-measurements.js +1 -0
  409. package/dist/configurator/ui/assistant/AssistantChips.d.ts +8 -2
  410. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  411. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +7 -2
  412. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  413. package/dist/configurator/ui/assistant/AssistantPanel.js +1 -1
  414. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  415. package/dist/configurator/ui/assistant/alert/AssistantAlert.d.ts +8 -0
  416. package/dist/configurator/ui/assistant/alert/AssistantAlert.js +1 -0
  417. package/dist/configurator/ui/assistant/alert/index.d.ts +2 -0
  418. package/dist/configurator/ui/assistant/alert/index.js +1 -0
  419. package/dist/configurator/ui/assistant/alert/remark-alerts.d.ts +10 -0
  420. package/dist/configurator/ui/assistant/alert/remark-alerts.js +1 -0
  421. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +13 -0
  422. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -0
  423. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.d.ts +22 -0
  424. package/dist/configurator/ui/assistant/entity-link/entity-link-selection.js +1 -0
  425. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +27 -0
  426. package/dist/configurator/ui/assistant/entity-link/entity-link-state.js +1 -0
  427. package/dist/configurator/ui/assistant/entity-link/index.d.ts +2 -0
  428. package/dist/configurator/ui/assistant/entity-link/index.js +1 -0
  429. package/dist/configurator/ui/assistant/form/AssistantForm.d.ts +19 -0
  430. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -0
  431. package/dist/configurator/ui/assistant/form/built-in-form-registry.d.ts +10 -0
  432. package/dist/configurator/ui/assistant/form/built-in-form-registry.js +1 -0
  433. package/dist/configurator/ui/assistant/form/compose-answer.d.ts +12 -0
  434. package/dist/configurator/ui/assistant/form/compose-answer.js +1 -0
  435. package/dist/configurator/ui/assistant/form/describe-build-errors.d.ts +6 -0
  436. package/dist/configurator/ui/assistant/form/describe-build-errors.js +1 -0
  437. package/dist/configurator/ui/assistant/form/form-element-definition.d.ts +14 -0
  438. package/dist/configurator/ui/assistant/form/form-element-definition.js +1 -0
  439. package/dist/configurator/ui/assistant/form/form-model.d.ts +39 -0
  440. package/dist/configurator/ui/assistant/form/form-model.js +1 -0
  441. package/dist/configurator/ui/assistant/form/form-registry.d.ts +31 -0
  442. package/dist/configurator/ui/assistant/form/form-registry.js +8 -0
  443. package/dist/configurator/ui/assistant/form/form-state.d.ts +4 -0
  444. package/dist/configurator/ui/assistant/form/form-state.js +1 -0
  445. package/dist/configurator/ui/assistant/form/index.d.ts +2 -0
  446. package/dist/configurator/ui/assistant/form/index.js +1 -0
  447. package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +10 -0
  448. package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -0
  449. package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +13 -0
  450. package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -0
  451. package/dist/configurator/ui/assistant/form-elements/FormCard.d.ts +9 -0
  452. package/dist/configurator/ui/assistant/form-elements/FormCard.js +1 -0
  453. package/dist/configurator/ui/assistant/form-elements/FormConfirm.d.ts +9 -0
  454. package/dist/configurator/ui/assistant/form-elements/FormConfirm.js +1 -0
  455. package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +6 -0
  456. package/dist/configurator/ui/assistant/form-elements/FormGroup.js +1 -0
  457. package/dist/configurator/ui/assistant/form-elements/FormNumber.d.ts +9 -0
  458. package/dist/configurator/ui/assistant/form-elements/FormNumber.js +1 -0
  459. package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +6 -0
  460. package/dist/configurator/ui/assistant/form-elements/FormOptions.js +1 -0
  461. package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +6 -0
  462. package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -0
  463. package/dist/configurator/ui/assistant/form-elements/FormSwatch.d.ts +10 -0
  464. package/dist/configurator/ui/assistant/form-elements/FormSwatch.js +1 -0
  465. package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +6 -0
  466. package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -0
  467. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.d.ts +10 -0
  468. package/dist/configurator/ui/assistant/form-elements/clamp-form-number.js +1 -0
  469. package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +38 -0
  470. package/dist/configurator/ui/assistant/form-elements/form-element-props.js +1 -0
  471. package/dist/configurator/ui/assistant/form-elements/index.d.ts +9 -0
  472. package/dist/configurator/ui/assistant/form-elements/index.js +1 -0
  473. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.d.ts +16 -0
  474. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.js +1 -0
  475. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.d.ts +34 -0
  476. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.js +1 -0
  477. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.d.ts +25 -0
  478. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.js +1 -0
  479. package/dist/configurator/ui/assistant/reference-link/index.d.ts +3 -0
  480. package/dist/configurator/ui/assistant/reference-link/index.js +1 -0
  481. package/dist/configurator/ui/assistant/reference-link/reference-styles.d.ts +12 -0
  482. package/dist/configurator/ui/assistant/reference-link/reference-styles.js +1 -0
  483. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.d.ts +8 -0
  484. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.js +1 -0
  485. package/dist/configurator/ui/assistant/resource-image/AssistantImage.d.ts +9 -0
  486. package/dist/configurator/ui/assistant/resource-image/AssistantImage.js +1 -0
  487. package/dist/configurator/ui/assistant/resource-image/index.d.ts +3 -0
  488. package/dist/configurator/ui/assistant/resource-image/index.js +1 -0
  489. package/dist/configurator/ui/assistant/resource-image/resource-path.d.ts +2 -0
  490. package/dist/configurator/ui/assistant/resource-image/resource-path.js +1 -0
  491. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.d.ts +5 -0
  492. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.js +1 -0
  493. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +4 -2
  494. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
  495. package/dist/configurator/ui/assistant/thread-items.d.ts +8 -1
  496. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  497. package/dist/configurator/ui/assistant/use-follow-stream.js +1 -1
  498. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.d.ts +1 -0
  499. package/dist/configurator/ui/configurator-layout/sidebar-keys/index.js +1 -0
  500. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.d.ts +11 -0
  501. package/dist/configurator/ui/configurator-layout/sidebar-keys/sidebar-keys.js +1 -0
  502. package/dist/configurator/ui/configurator-layout/slots/canvas/LayoutCanvas.js +1 -1
  503. package/dist/configurator/ui/configurator-layout/slots/canvas/SharedCanvas.js +1 -1
  504. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.d.ts +101 -0
  505. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/DesktopSidebar.js +16 -0
  506. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.d.ts +1 -0
  507. package/dist/configurator/ui/configurator-layout/slots/desktop-sidebar/index.js +1 -0
  508. package/dist/configurator/ui/configurator-layout/slots/mobile-tabs/use-mobile-tabs.d.ts +1 -1
  509. package/dist/configurator/ui/configurator-layout/slots/mobile-tabs/use-mobile-tabs.js +1 -1
  510. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.d.ts +4 -4
  511. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  512. package/dist/configurator/ui/configurator-layout/slots/services/Services.js +1 -1
  513. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.d.ts +3 -6
  514. package/dist/configurator/ui/configurator-layout/slots/services/SideEffects.js +1 -1
  515. package/dist/configurator/ui/configurator-layout/slots/sidebar-tabs/use-sidebar-tabs.d.ts +1 -1
  516. package/dist/configurator/ui/configurator-layout/slots/sidebar-tabs/use-sidebar-tabs.js +1 -1
  517. package/dist/configurator/ui/configurator-layout/slots/slots.d.ts +1 -0
  518. package/dist/configurator/ui/configurator-layout/slots/slots.js +1 -1
  519. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.d.ts +0 -74
  520. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +5 -20
  521. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  522. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +4 -4
  523. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  524. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  525. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  526. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  527. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  528. package/dist/configurator/ui/legacy/layout/common/CommonFinalizeButton.js +1 -1
  529. package/dist/configurator/ui/legacy/layout/common/CommonSummaryButton.js +1 -1
  530. package/dist/configurator/ui/legacy/layout/common/CommonTopNavigation.js +1 -1
  531. package/dist/configurator/ui/legacy/layout/common/ReactiveInterfaceLayout.js +1 -1
  532. package/dist/configurator/ui/legacy/layout/common/ResponsiveFinalizeButton.js +1 -1
  533. package/dist/configurator/ui/legacy/layout/common/SummaryReadLayout.js +1 -1
  534. package/dist/configurator/ui/legacy/layout/simple/SimpleOwnerLayout.js +1 -1
  535. package/dist/configurator/ui/legacy/layout/simple/SimpleTopNavigation.js +1 -1
  536. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.d.ts +2 -2
  537. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.js +1 -1
  538. package/dist/configurator/ui/legacy/layout/steps/StepsOwnerLayout.js +1 -1
  539. package/dist/configurator/ui/legacy/layout/steps/StepsSidebarFooter.js +1 -1
  540. package/dist/configurator/ui/legacy/layout/tabs/TabsOwnerLayout.js +1 -1
  541. package/dist/configurator/ui/legacy/toolbar/common/DimensionUnitSelector.js +1 -1
  542. package/dist/configurator/ui/legacy/toolbar/common/MeasurementsIndicatorsSwitch.js +1 -1
  543. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/FullscreenToolbarAction.js +1 -1
  544. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/HelpToolbarAction.js +1 -1
  545. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/MeasurementsToolbarAction.js +1 -1
  546. package/dist/configurator/ui/legacy/toolbar/desktop-toolbar/UndoRedoToolbarGroup.js +1 -1
  547. package/dist/configurator/ui/phoenix-layout-elements/AppLoader.js +2 -6
  548. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.js +1 -1
  549. package/dist/configurator/ui/phoenix-layout-elements/EnterFullscreenToolbarButton.js +1 -1
  550. package/dist/configurator/ui/phoenix-layout-elements/ExitFullscreenToolbarButton.js +1 -1
  551. package/dist/configurator/ui/phoenix-layout-elements/HelpToolbarButton.js +1 -1
  552. package/dist/configurator/ui/phoenix-layout-elements/LanguageMenuAction.js +1 -1
  553. package/dist/configurator/ui/phoenix-layout-elements/LanguageToolbarButton.js +1 -1
  554. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.d.ts +1 -0
  555. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.js +1 -1
  556. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.d.ts +1 -0
  557. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.js +1 -1
  558. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsMenuAction.js +1 -1
  559. package/dist/configurator/ui/phoenix-layout-elements/MeasurementsToolbarButton.js +1 -1
  560. package/dist/configurator/ui/phoenix-layout-elements/RedoToolbarButton.js +1 -1
  561. package/dist/configurator/ui/phoenix-layout-elements/ShareToolbarButton.js +1 -1
  562. package/dist/configurator/ui/phoenix-layout-elements/UndoToolbarButton.js +1 -1
  563. package/dist/configurator/ui/phoenix-layout-elements/header/common/back-button/use-go-back-action.js +1 -1
  564. package/dist/configurator/ui/phoenix-layout-elements/header/common/horizontal-tabs/DesktopHorizontalTabs.js +1 -1
  565. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.d.ts +1 -1
  566. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.js +1 -1
  567. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -8
  568. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.js +1 -1
  569. package/dist/configurator/ui/phoenix-layout-elements/measurements/DimensionUnitSelector.js +1 -1
  570. package/dist/configurator/ui/phoenix-layout-elements/measurements/MeasurementsIndicatorsSwitch.js +1 -1
  571. package/dist/configurator/ui/phoenix-layout-elements/share/ShareModal.js +1 -1
  572. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.d.ts +7 -8
  573. package/dist/configurator/ui/phoenix-layout-elements/share/use-share.js +1 -1
  574. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/basic/BasicFinalizeButton.js +1 -1
  575. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/CustomFinalizeButton.js +1 -1
  576. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/EnterSummaryButton.js +1 -1
  577. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/FinalizeActions.js +1 -1
  578. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/NextStepButton.js +1 -1
  579. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/PreviousStepButton.js +1 -1
  580. package/dist/configurator/ui/preset-layout/CategoryPresetUi.js +1 -1
  581. package/dist/configurator/ui/preset-layout/PresetUi.d.ts +4 -0
  582. package/dist/configurator/ui/preset-layout/PresetUi.js +1 -1
  583. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.d.ts +10 -0
  584. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.js +1 -0
  585. package/dist/configurator/ui/save-message-snackbars/index.d.ts +1 -0
  586. package/dist/configurator/ui/save-message-snackbars/index.js +1 -0
  587. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +16 -19
  588. package/dist/docs/complex-use-cases/focus-mode.mdx +2 -0
  589. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  590. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  591. package/dist/docs/controls/select-child-entity/cardselect.mdx +1 -0
  592. package/dist/docs/dimensions/3d-scene-integration/dimension-indicators.mdx +2 -2
  593. package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +1 -1
  594. package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +1 -1
  595. package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +1 -1
  596. package/dist/docs/drag-and-drop/drag-handle.mdx +1 -1
  597. package/dist/docs/drag-and-drop/hotspot-handle.mdx +1 -1
  598. package/dist/docs/drag-and-drop/planes.mdx +1 -1
  599. package/dist/docs/drag-and-drop/rotatable.mdx +2 -2
  600. package/dist/docs/fabs/basic.mdx +6 -2
  601. package/dist/docs/index.json +42 -1
  602. package/dist/docs/layouts/custom-layout.mdx +2437 -0
  603. package/dist/docs/layouts/header/fixed.mdx +2 -2
  604. package/dist/docs/layouts/header/floating.mdx +2 -2
  605. package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +380 -0
  606. package/dist/docs/layouts/sidebar-footer/basic.mdx +32 -77
  607. package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
  608. package/dist/docs/other-features/error-5xx.mdx +1 -1
  609. package/dist/docs/other-features/navigation-hotspot.mdx +2 -0
  610. package/dist/docs/other-features/not-found-404.mdx +1 -1
  611. package/dist/docs/other-features/side-effects.mdx +8 -11
  612. package/dist/docs/other-features/transformers.mdx +4 -0
  613. package/dist/docs/other-features/violation-messages.mdx +52 -56
  614. package/dist/docs/phoenix/application-states.mdx +9 -7
  615. package/dist/docs/phoenix/clerk-sign-in.mdx +1 -1
  616. package/dist/docs/phoenix/components.mdx +6 -0
  617. package/dist/docs/phoenix/configurator-interface.mdx +374 -83
  618. package/dist/docs/phoenix/deployments.mdx +2 -6
  619. package/dist/docs/phoenix/domain-model.mdx +6 -0
  620. package/dist/docs/phoenix/finalization.mdx +1 -1
  621. package/dist/docs/phoenix/getting-started.mdx +6 -3
  622. package/dist/docs/phoenix/layout-slots.mdx +116 -0
  623. package/dist/docs/phoenix/localization.mdx +10 -6
  624. package/dist/docs/phoenix/migration-guide.mdx +24 -11
  625. package/dist/docs/phoenix/phoenix-cli.mdx +74 -21
  626. package/dist/docs/phoenix/project-structure.mdx +78 -36
  627. package/dist/docs/phoenix/quickstart.mdx +7 -7
  628. package/dist/docs/phoenix/sdk-builder-workflow.mdx +8 -8
  629. package/dist/docs/phoenix/testing.mdx +148 -0
  630. package/dist/docs/phoenix/webhook-membership.mdx +10 -9
  631. package/dist/docs/phoenix/webhooks.mdx +22 -5
  632. package/dist/docs/selection-and-highlight/hotspots.mdx +2 -0
  633. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -11
  634. package/dist/domain/admin-domain/implementation/common-admin-publish.d.ts +1 -2
  635. package/dist/domain/admin-domain/index.js +1 -1
  636. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +1 -1
  637. package/dist/domain/application/application-config.d.ts +7 -3
  638. package/dist/domain/application/assistant/assistant-fields.d.ts +12 -0
  639. package/dist/domain/application/assistant/assistant-fields.js +1 -0
  640. package/dist/domain/application/assistant/assistant-manifest.d.ts +9 -1
  641. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +38 -2
  642. package/dist/domain/application/assistant/assistant-resolved-manifest.js +1 -1
  643. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +14 -0
  644. package/dist/domain/application/assistant/build-assistant-lenses.js +5 -0
  645. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  646. package/dist/domain/application/assistant/create-assistant-execution-schema.d.ts +32 -0
  647. package/dist/domain/application/assistant/create-assistant-execution-schema.js +1 -0
  648. package/dist/domain/application/assistant/form/assistant-form-elements.d.ts +163 -0
  649. package/dist/domain/application/assistant/form/assistant-form-elements.js +1 -0
  650. package/dist/domain/application/assistant/form/assistant-resource-path.d.ts +10 -0
  651. package/dist/domain/application/assistant/form/assistant-resource-path.js +1 -0
  652. package/dist/domain/application/assistant/form/get-assistant-form-value-attribute.d.ts +6 -0
  653. package/dist/domain/application/assistant/form/get-assistant-form-value-attribute.js +1 -0
  654. package/dist/domain/application/assistant/form/index.d.ts +4 -0
  655. package/dist/domain/application/assistant/form/index.js +1 -0
  656. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  657. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  658. package/dist/domain/application/assistant/index.d.ts +7 -1
  659. package/dist/domain/application/assistant/index.js +1 -1
  660. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +20 -0
  661. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.js +1 -0
  662. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +10 -0
  663. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -0
  664. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +48 -0
  665. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -0
  666. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +15 -0
  667. package/dist/domain/application/assistant/session-setup/create-session-assistant.js +1 -0
  668. package/dist/domain/application/assistant/session-setup/index.d.ts +4 -0
  669. package/dist/domain/application/assistant/session-setup/index.js +1 -0
  670. package/dist/domain/application/assistant-recipe-groups.d.ts +3 -1
  671. package/dist/domain/application/configurator-builder.d.ts +5 -2
  672. package/dist/domain/application/configurator-builder.js +1 -1
  673. package/dist/domain/application/create-initial-published-data.d.ts +5 -5
  674. package/dist/domain/application/index.d.ts +0 -1
  675. package/dist/domain/application/index.js +1 -1
  676. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +1 -1
  677. package/dist/domain/application/published-data/map-published-data.d.ts +7 -3
  678. package/dist/domain/core/component/domain-component-optic.d.ts +1 -2
  679. package/dist/domain/core/component/domain-component-optic.js +2 -2
  680. package/dist/domain/core/component/system-component-filter.d.ts +15 -2
  681. package/dist/domain/core/expression/constant-expressions.d.ts +16 -8
  682. package/dist/domain/core/expression/custom-expression.d.ts +16 -3
  683. package/dist/domain/core/invariant/custom-invariants.d.ts +6 -14
  684. package/dist/domain/core/invariant/invariants.d.ts +1 -4
  685. package/dist/domain/core/invariant/violation.d.ts +50 -2
  686. package/dist/domain/core/invariant/violation.js +1 -1
  687. package/dist/domain/core/model/model.d.ts +1 -1
  688. package/dist/domain/core/recipe/recipes.d.ts +18 -50
  689. package/dist/domain/core/recipe/recipes.js +1 -1
  690. package/dist/domain/core/relation/all-of-type-relation.d.ts +8 -21
  691. package/dist/domain/core/relation/all-of-type-relation.js +1 -1
  692. package/dist/domain/core/relation/direct-relation.d.ts +13 -24
  693. package/dist/domain/core/relation/index.d.ts +0 -1
  694. package/dist/domain/core/relation/indirect-relation.d.ts +12 -67
  695. package/dist/domain/core/relation/indirect-relation.js +1 -1
  696. package/dist/domain/core/relation/relation-factory.d.ts +19 -15
  697. package/dist/domain/core/relation/relation-factory.js +1 -1
  698. package/dist/domain/core/schema/extended-schema-validator.js +1 -1
  699. package/dist/domain/core/state/state.d.ts +1 -1
  700. package/dist/domain/domain-context/index.d.ts +1 -1
  701. package/dist/domain/domain-context/undo-system.d.ts +28 -1
  702. package/dist/domain/domain-context/undo-system.js +1 -1
  703. package/dist/domain/domain-runtime/access/selectors.d.ts +9 -0
  704. package/dist/domain/domain-runtime/access/selectors.js +1 -1
  705. package/dist/domain/domain-runtime/access/types.d.ts +2 -0
  706. package/dist/domain/domain-runtime/access/types.js +1 -1
  707. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +14 -13
  708. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  709. package/dist/domain/domain-runtime/domain-context/types.d.ts +4 -1
  710. package/dist/domain/domain-runtime/domain-runtime.d.ts +32 -16
  711. package/dist/domain/domain-runtime/errors/implementation-error-collector.d.ts +19 -0
  712. package/dist/domain/domain-runtime/errors/implementation-error-collector.js +1 -0
  713. package/dist/domain/domain-runtime/errors/implementation-error.d.ts +46 -0
  714. package/dist/domain/domain-runtime/errors/implementation-error.js +1 -0
  715. package/dist/domain/domain-runtime/errors/implementation-errors.d.ts +13 -0
  716. package/dist/domain/domain-runtime/errors/implementation-errors.js +1 -0
  717. package/dist/domain/domain-runtime/errors/index.d.ts +4 -0
  718. package/dist/domain/domain-runtime/errors/index.js +1 -0
  719. package/dist/domain/domain-runtime/errors/to-implementation-errors.d.ts +10 -0
  720. package/dist/domain/domain-runtime/errors/to-implementation-errors.js +1 -0
  721. package/dist/domain/domain-runtime/index.d.ts +1 -0
  722. package/dist/domain/domain-runtime/index.js +1 -1
  723. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  724. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  725. package/dist/domain/domain-runtime/spec/index.d.ts +1 -1
  726. package/dist/domain/domain-runtime/spec/index.js +1 -1
  727. package/dist/domain/domain-runtime/spec/initialize.d.ts +11 -0
  728. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  729. package/dist/domain/domain-runtime/spec/module-checks/element-registration.d.ts +12 -11
  730. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -1
  731. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +2 -2
  732. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -1
  733. package/dist/domain/domain-runtime/spec/module-checks/project-modules.d.ts +8 -1
  734. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -1
  735. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -1
  736. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -1
  737. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +7 -7
  738. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -1
  739. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +2 -2
  740. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -1
  741. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  742. package/dist/domain/domain-runtime/spec/types.d.ts +2 -0
  743. package/dist/domain/extensions/attribute-switch.d.ts +1 -1
  744. package/dist/domain/extensions/attribute-switch.js +1 -1
  745. package/dist/domain/extensions/canvas-config.d.ts +1 -1
  746. package/dist/domain/extensions/client-side-image.d.ts +2 -2
  747. package/dist/domain/extensions/client-side-image.js +1 -1
  748. package/dist/domain/extensions/common/angle-indicator-schema.d.ts +2 -2
  749. package/dist/domain/extensions/common/dimension-indicator-schema.d.ts +2 -2
  750. package/dist/domain/extensions/editable-angle-indicator.d.ts +1 -1
  751. package/dist/domain/extensions/editable-distance-dimension-indicator.d.ts +1 -1
  752. package/dist/domain/extensions/editable-offset-indicator.d.ts +1 -1
  753. package/dist/domain/extensions/editable-offset-indicator.js +1 -1
  754. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -1
  755. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -1
  756. package/dist/domain/extensions/horizontal-tabs.d.ts +2 -2
  757. package/dist/domain/extensions/list-selector-dimension-indicator.d.ts +1 -1
  758. package/dist/domain/extensions/navigation-steps.d.ts +2 -2
  759. package/dist/domain/extensions/offset-indicator.js +1 -1
  760. package/dist/domain/extensions/rotation-handle.d.ts +2 -2
  761. package/dist/domain/extensions/save-template-thumbnail.d.ts +2 -2
  762. package/dist/domain/extensions/save-template-thumbnail.js +1 -1
  763. package/dist/domain/extensions/scene-entity-animation.js +1 -1
  764. package/dist/domain/mocks/create-mock-domain-context.d.ts +1 -1
  765. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +18 -9
  766. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  767. package/dist/domain/mocks/create-mock-domain.d.ts +1 -1
  768. package/dist/domain/mocks/create-mock-domain.js +1 -1
  769. package/dist/domain/mocks/create-mock-state.d.ts +2 -2
  770. package/dist/domain/mocks/create-test-application-config.d.ts +59 -0
  771. package/dist/domain/mocks/create-test-application-config.js +1 -0
  772. package/dist/domain/mocks/index.d.ts +1 -0
  773. package/dist/domain/mocks/index.js +1 -1
  774. package/dist/domain/projections/blender-projections/camera.d.ts +1 -1
  775. package/dist/domain/system-components/application-config.d.ts +2 -2
  776. package/dist/domain/system-components/child-entity-selection.js +1 -1
  777. package/dist/domain/system-components/collision-box-geometry.d.ts +4 -2
  778. package/dist/domain/system-components/collision-geometry.d.ts +4 -2
  779. package/dist/domain/system-components/collision-point-geometry.d.ts +4 -2
  780. package/dist/domain/system-components/common/material-override-schema.d.ts +2 -2
  781. package/dist/domain/system-components/common/recipes.d.ts +21 -3
  782. package/dist/domain/system-components/common/recipes.js +1 -1
  783. package/dist/domain/system-components/common/scene-entity-control-schema.d.ts +3 -0
  784. package/dist/domain/system-components/common/scene-entity-control-schema.js +1 -1
  785. package/dist/domain/system-components/constraint.d.ts +10 -23
  786. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  787. package/dist/domain/system-components/drag-handle.js +1 -1
  788. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  789. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  790. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  791. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  792. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -1
  793. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  794. package/dist/domain/system-components/material-swatch.js +1 -1
  795. package/dist/domain/system-components/scene-entity-material-override.d.ts +1 -1
  796. package/dist/domain/system-components/scene-entity-object-material-override.d.ts +1 -1
  797. package/dist/domain/system-components/scene-entity-object-text-decal.d.ts +1 -1
  798. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.d.ts +1 -1
  799. package/dist/domain/system-components/scene-entity-transimissive-material-override.d.ts +1 -1
  800. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  801. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  802. package/dist/domain/utils/eval-cache.d.ts +1 -1
  803. package/dist/domain/utils/map-nested-object.d.ts +1 -1
  804. package/dist/editor/Editor.d.ts +7 -0
  805. package/dist/editor/Editor.js +1 -1
  806. package/dist/editor/domain-editors/use-implementation-files.d.ts +1 -2
  807. package/dist/editor/mocks/CreateMockYaml.js +2 -2
  808. package/dist/editor/mocks/EditorMockContext.d.ts +2 -0
  809. package/dist/editor/mocks/EditorMockContext.js +1 -1
  810. package/dist/globals/index.d.ts +2 -0
  811. package/dist/i18n/locales/cs/messages.js +1 -1
  812. package/dist/i18n/locales/da/messages.js +1 -1
  813. package/dist/i18n/locales/de/messages.js +1 -1
  814. package/dist/i18n/locales/de-AT/messages.js +1 -1
  815. package/dist/i18n/locales/en/messages.js +1 -1
  816. package/dist/i18n/locales/en-AU/messages.js +1 -1
  817. package/dist/i18n/locales/en-GB/messages.js +1 -1
  818. package/dist/i18n/locales/es/messages.js +1 -1
  819. package/dist/i18n/locales/fr/messages.js +1 -1
  820. package/dist/i18n/locales/hu/messages.js +1 -1
  821. package/dist/i18n/locales/it/messages.js +1 -1
  822. package/dist/i18n/locales/nl/messages.js +1 -1
  823. package/dist/i18n/locales/pl/messages.js +1 -1
  824. package/dist/i18n/locales/pt/messages.js +1 -1
  825. package/dist/i18n/locales/ro/messages.js +1 -1
  826. package/dist/i18n/locales/sk/messages.js +1 -1
  827. package/dist/i18n/locales/tr/messages.js +1 -1
  828. package/dist/legacy/domain-cli/gen/configurator-builder.js +13 -12
  829. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -1
  830. package/dist/legacy/domain-cli/gen/defaults.js +1 -7
  831. package/dist/legacy/domain-cli/gen/invariants.js +3 -4
  832. package/dist/legacy/domain-cli/gen/relations.js +1 -1
  833. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  834. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  835. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +160 -148
  836. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  837. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  838. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  839. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +7 -1
  840. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +15 -13
  841. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +15 -14
  842. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +14 -12
  843. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +14 -13
  844. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +13 -11
  845. package/dist/phoenix/application-spec/application-spec-builder.d.ts +0 -2
  846. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  847. package/dist/phoenix/application-spec/generate-application-spec-project.d.ts +0 -2
  848. package/dist/phoenix/application-spec/generate-application-spec-project.js +2 -2
  849. package/dist/phoenix/application-spec/generate-application-spec-story.js +2 -2
  850. package/dist/phoenix/application-spec/generate-project-files.d.ts +0 -2
  851. package/dist/phoenix/application-spec/project-files.js +1 -1
  852. package/dist/phoenix/bin.d.ts +2 -0
  853. package/dist/phoenix/bin.js +2 -0
  854. package/dist/phoenix/check-configs/built-in-eslint-config.d.ts +9 -0
  855. package/dist/phoenix/check-configs/built-in-eslint-config.js +1 -0
  856. package/dist/phoenix/check-configs/eslint-config.d.ts +10 -0
  857. package/dist/phoenix/check-configs/eslint-config.js +1 -0
  858. package/dist/phoenix/check-configs/index.d.ts +8 -0
  859. package/dist/phoenix/check-configs/index.js +1 -0
  860. package/dist/phoenix/check-configs/typescript-project.d.ts +5 -0
  861. package/dist/phoenix/check-configs/typescript-project.js +1 -0
  862. package/dist/phoenix/cli.d.ts +0 -1
  863. package/dist/phoenix/cli.js +1 -2
  864. package/dist/phoenix/commands/build.js +1 -1
  865. package/dist/phoenix/commands/check.js +1 -1
  866. package/dist/phoenix/commands/clean.js +1 -1
  867. package/dist/phoenix/commands/deploy.js +2 -2
  868. package/dist/phoenix/commands/deps/deps.d.ts +73 -0
  869. package/dist/phoenix/commands/deps/deps.js +3 -0
  870. package/dist/phoenix/commands/deps/index.d.ts +1 -0
  871. package/dist/phoenix/commands/deps/index.js +1 -0
  872. package/dist/phoenix/commands/deps/sdk-manifest.d.ts +12 -0
  873. package/dist/phoenix/commands/deps/sdk-manifest.js +1 -0
  874. package/dist/phoenix/commands/dev.js +5 -5
  875. package/dist/phoenix/commands/fix.js +1 -1
  876. package/dist/phoenix/commands/index.d.ts +1 -0
  877. package/dist/phoenix/commands/index.js +1 -1
  878. package/dist/phoenix/commands/init.d.ts +17 -5
  879. package/dist/phoenix/commands/init.js +1 -1
  880. package/dist/phoenix/commands/link.js +1 -1
  881. package/dist/phoenix/commands/prettier.js +1 -1
  882. package/dist/phoenix/commands/sync.js +1 -1
  883. package/dist/phoenix/commands/unlink.js +1 -1
  884. package/dist/phoenix/services/application-spec-project-watcher.d.ts +2 -2
  885. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  886. package/dist/phoenix/services/lingui.d.ts +8 -0
  887. package/dist/phoenix/services/lingui.js +1 -1
  888. package/dist/phoenix/services/source-archive.d.ts +1 -0
  889. package/dist/phoenix/services/source-archive.js +1 -1
  890. package/dist/phoenix/services/swc.js +1 -1
  891. package/dist/phoenix/services/vite-config.js +1 -1
  892. package/dist/phoenix/utils/git/index.d.ts +1 -0
  893. package/dist/phoenix/utils/git/index.js +1 -0
  894. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  895. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  896. package/dist/phoenix/utils/index.d.ts +5 -2
  897. package/dist/phoenix/utils/index.js +1 -1
  898. package/dist/phoenix/utils/node-version/index.d.ts +1 -0
  899. package/dist/phoenix/utils/node-version/index.js +1 -0
  900. package/dist/phoenix/utils/node-version/supported-node-version.d.ts +12 -0
  901. package/dist/phoenix/utils/node-version/supported-node-version.js +4 -0
  902. package/dist/phoenix/utils/package-info.d.ts +0 -9
  903. package/dist/phoenix/utils/package-info.js +1 -1
  904. package/dist/phoenix/utils/package-manager/index.d.ts +2 -0
  905. package/dist/phoenix/utils/package-manager/index.js +1 -0
  906. package/dist/phoenix/utils/package-manager/package-manager-commands.d.ts +19 -0
  907. package/dist/phoenix/utils/package-manager/package-manager-commands.js +1 -0
  908. package/dist/phoenix/utils/package-manager/pnpm-project.d.ts +9 -0
  909. package/dist/phoenix/utils/package-manager/pnpm-project.js +1 -0
  910. package/dist/phoenix/utils/run-command.d.ts +11 -0
  911. package/dist/phoenix/utils/run-command.js +1 -1
  912. package/dist/phoenix/utils/sdk-tool/index.d.ts +1 -0
  913. package/dist/phoenix/utils/sdk-tool/index.js +1 -0
  914. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.d.ts +15 -0
  915. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.js +1 -0
  916. package/dist/{configurator/common → react-sdk/application-runtime/common-services/analytics}/frontend-analytics.d.ts +6 -0
  917. package/dist/react-sdk/application-runtime/common-services/analytics/frontend-analytics.js +1 -0
  918. package/dist/react-sdk/application-runtime/common-services/analytics/index.d.ts +1 -0
  919. package/dist/react-sdk/application-runtime/common-services/analytics/index.js +1 -1
  920. package/dist/react-sdk/application-runtime/hooks/use-access-service.d.ts +2 -0
  921. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  922. package/dist/react-sdk/application-runtime/routing/access-service.d.ts +1 -0
  923. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +33 -16
  924. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
  925. package/dist/react-sdk/domain-application-context/DomainLifecycleBoundary.js +1 -1
  926. package/dist/react-sdk/domain-context/common-hooks/index.d.ts +8 -0
  927. package/dist/react-sdk/domain-context/common-hooks/index.js +1 -0
  928. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +41 -0
  929. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -0
  930. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +4 -4
  931. package/dist/react-sdk/domain-context/component-hooks/index.d.ts +1 -0
  932. package/dist/react-sdk/domain-context/component-hooks/index.js +1 -0
  933. package/dist/react-sdk/domain-context/component-hooks/use-component.js +1 -1
  934. package/dist/react-sdk/domain-context/entity-hooks/use-domain-entity-state.js +1 -1
  935. package/dist/react-sdk/domain-context/entity-hooks/use-entity-price.js +1 -1
  936. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-id.js +1 -1
  937. package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-state.js +1 -1
  938. package/dist/react-sdk/domain-context/index.d.ts +8 -1
  939. package/dist/react-sdk/domain-context/index.js +1 -1
  940. package/dist/react-sdk/domain-context/system-hooks/composition-hooks.js +1 -1
  941. package/dist/react-sdk/domain-context/system-hooks/dimension-hooks.js +1 -1
  942. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.d.ts +8 -0
  943. package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.js +1 -0
  944. package/dist/react-sdk/domain-context/system-hooks/hover-hooks.js +1 -1
  945. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.d.ts +24 -0
  946. package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.js +1 -0
  947. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.d.ts +11 -0
  948. package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
  949. package/dist/react-sdk/domain-context/system-hooks/selection-hooks.js +1 -1
  950. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.d.ts +32 -0
  951. package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.js +1 -0
  952. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.d.ts +57 -0
  953. package/dist/react-sdk/domain-context/system-hooks/step-navigation-hooks.js +1 -0
  954. package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.d.ts +61 -0
  955. package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.js +1 -0
  956. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.d.ts +20 -0
  957. package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.js +1 -0
  958. package/dist/react-sdk/domain-controls/hooks/use-angle-dimension.d.ts +1 -1
  959. package/dist/react-sdk/elements/configurator-error-page-props.d.ts +20 -0
  960. package/dist/react-sdk/elements/configurator-error-page-props.js +1 -0
  961. package/dist/react-sdk/elements/index.d.ts +1 -0
  962. package/dist/react-sdk/handlers/FinalizeActionRunner.d.ts +13 -0
  963. package/dist/react-sdk/handlers/FinalizeActionRunner.js +1 -0
  964. package/dist/react-sdk/handlers/FinalizeActionsHost.d.ts +10 -0
  965. package/dist/react-sdk/handlers/FinalizeActionsHost.js +1 -0
  966. package/dist/react-sdk/handlers/FinalizeActionsProvider.d.ts +11 -0
  967. package/dist/react-sdk/handlers/FinalizeActionsProvider.js +1 -0
  968. package/dist/react-sdk/handlers/finalize-actions-context.d.ts +6 -0
  969. package/dist/react-sdk/handlers/finalize-actions-context.js +1 -0
  970. package/dist/react-sdk/handlers/finalize-actions-store.d.ts +23 -0
  971. package/dist/react-sdk/handlers/finalize-actions-store.js +1 -0
  972. package/dist/react-sdk/handlers/index.d.ts +6 -0
  973. package/dist/react-sdk/handlers/index.js +1 -1
  974. package/dist/react-sdk/handlers/use-finalize-action.d.ts +32 -0
  975. package/dist/react-sdk/handlers/use-finalize-action.js +1 -0
  976. package/dist/react-sdk/handlers/use-finalize-actions.d.ts +53 -0
  977. package/dist/react-sdk/handlers/use-finalize-actions.js +1 -0
  978. package/dist/react-sdk/index.d.ts +2 -0
  979. package/dist/react-sdk/index.js +1 -1
  980. package/dist/react-sdk/loading-state/loading-state-manager.d.ts +5 -0
  981. package/dist/react-sdk/loading-state/loading-state-manager.js +1 -1
  982. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.d.ts +25 -0
  983. package/dist/react-sdk/responsive-state/ResponsiveStateProvider.js +1 -0
  984. package/dist/react-sdk/responsive-state/canvas-padding.d.ts +14 -0
  985. package/dist/react-sdk/responsive-state/canvas-padding.js +1 -0
  986. package/dist/react-sdk/responsive-state/index.d.ts +5 -0
  987. package/dist/react-sdk/responsive-state/index.js +1 -0
  988. package/dist/react-sdk/responsive-state/responsive-state-manager.d.ts +111 -0
  989. package/dist/react-sdk/responsive-state/responsive-state-manager.js +1 -0
  990. package/dist/react-sdk/responsive-state/use-responsive-state-manager.d.ts +10 -0
  991. package/dist/react-sdk/responsive-state/use-responsive-state-manager.js +1 -0
  992. package/dist/react-sdk/responsive-state/use-responsive-state.d.ts +11 -0
  993. package/dist/react-sdk/responsive-state/use-responsive-state.js +1 -0
  994. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.d.ts +36 -0
  995. package/dist/react-sdk/scene-control-elements/AddEntityFabElement.js +1 -0
  996. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.d.ts +44 -0
  997. package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.js +1 -0
  998. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.d.ts +38 -0
  999. package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.js +1 -0
  1000. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.d.ts +30 -0
  1001. package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.js +1 -0
  1002. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.d.ts +30 -0
  1003. package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.js +1 -0
  1004. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.d.ts +9 -0
  1005. package/dist/react-sdk/scene-control-elements/create-add-entity-fab.js +1 -0
  1006. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.d.ts +9 -0
  1007. package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.js +1 -0
  1008. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.d.ts +10 -0
  1009. package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.js +1 -0
  1010. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.d.ts +9 -0
  1011. package/dist/react-sdk/scene-control-elements/create-selection-hotspot.js +1 -0
  1012. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.d.ts +9 -0
  1013. package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.js +1 -0
  1014. package/dist/react-sdk/scene-control-elements/index.d.ts +11 -0
  1015. package/dist/react-sdk/scene-control-elements/index.js +1 -0
  1016. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.d.ts +5 -0
  1017. package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.js +1 -0
  1018. package/dist/react-sdk/session/NotAuthenticatedPage.d.ts +4 -0
  1019. package/dist/react-sdk/session/NotAuthenticatedPage.js +1 -1
  1020. package/dist/ui-sdk/icons/__generated/Lightbulb.d.ts +3 -0
  1021. package/dist/ui-sdk/icons/__generated/Lightbulb.js +1 -0
  1022. package/dist/ui-sdk/icons/__generated/XCircle.d.ts +3 -0
  1023. package/dist/ui-sdk/icons/__generated/XCircle.js +1 -0
  1024. package/dist/ui-sdk/icons/__generated/index.d.ts +4 -0
  1025. package/dist/ui-sdk/icons/__generated/index.js +1 -1
  1026. package/dist/ui-sdk/icons/icons-registry.js +1 -1
  1027. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.d.ts +9 -0
  1028. package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.js +1 -1
  1029. package/dist/ui-sdk/responsive-application/index.d.ts +1 -0
  1030. package/dist/ui-sdk/responsive-application/responsive-state-store.d.ts +57 -0
  1031. package/dist/ui-sdk/responsive-application/responsive-state-store.js +1 -0
  1032. package/dist/ui-sdk/responsive-application/use-store-responsive-info.d.ts +7 -0
  1033. package/dist/ui-sdk/responsive-application/use-store-responsive-info.js +1 -0
  1034. package/dist/ui-sdk/theme/types.d.ts +1 -1
  1035. package/dist/webhook/builders/webhook-builder.js +1 -1
  1036. package/package.json +48 -36
  1037. package/schema/domain-spec.json +1201 -217
  1038. package/dist/application-spec/generate-application/code/templates/nvmrc.d.ts +0 -1
  1039. package/dist/application-spec/generate-application/code/templates/nvmrc.js +0 -2
  1040. package/dist/application-spec/generate-application/code/templates/package-json.d.ts +0 -10
  1041. package/dist/application-spec/generate-application/code/templates/package-json.js +0 -1
  1042. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  1043. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  1044. package/dist/application-spec/generate-application/code/templates/webhook-implementation.d.ts +0 -1
  1045. package/dist/application-spec/generate-application/code/templates/webhook-implementation.js +0 -7
  1046. package/dist/configurator/common/frontend-analytics.js +0 -1
  1047. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.d.ts +0 -4
  1048. package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.js +0 -1
  1049. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.d.ts +0 -4
  1050. package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.js +0 -1
  1051. package/dist/domain/application/resource-builder.d.ts +0 -13
  1052. package/dist/domain/application/resource-builder.js +0 -1
  1053. package/dist/domain/core/relation/relation-implementation.d.ts +0 -7
  1054. package/dist/domain/domain-runtime/spec/invariant-builder.d.ts +0 -26
  1055. package/dist/domain/domain-runtime/spec/invariant-builder.js +0 -1
  1056. package/dist/phoenix/commands/generate-project-files.d.ts +0 -6
  1057. package/dist/phoenix/commands/generate-project-files.js +0 -1
  1058. /package/dist/{domain/core/relation/relation-implementation.js → application-spec/core/expressions/relation-expression-params.js} +0 -0
  1059. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.d.ts +0 -0
  1060. /package/dist/application-spec/{core → enhanced-json}/eval-code-uses-self.js +0 -0
  1061. /package/dist/application-spec/{core → enhanced-json}/eval-to-constant.js +0 -0
@@ -4,6 +4,7 @@ export { RootPage } from './RootPage.js';
4
4
  export { NewConfiguratorPage } from './NewConfiguratorPage.js';
5
5
  export { ConfiguratorRootErrorPage } from './ConfiguratorErrorPage.js';
6
6
  export { ConfiguratorNotFoundPage } from './ConfiguratorNotFoundPage.js';
7
+ export { defaultConfiguratorElements } from './default-configurator-elements.js';
7
8
  export { DevContextFallback } from './error-boundaries/DevContextFallback.js';
8
9
  export { DevLoadingFallback } from './error-boundaries/DevLoadingFallback.js';
9
10
  export { GeneralErrorFallback, DevGeneralErrorFallback, ProdGeneralErrorFallback } from './error-boundaries/index.js';
@@ -1 +1 @@
1
- export{ConfiguratorRoot}from"./ConfiguratorRoot.js";export{LoadedConfiguratorDetailPage}from"./LoadedConfiguratorDetailPage.js";export{RootPage}from"./RootPage.js";export{NewConfiguratorPage}from"./NewConfiguratorPage.js";export{ConfiguratorRootErrorPage}from"./ConfiguratorErrorPage.js";export{ConfiguratorNotFoundPage}from"./ConfiguratorNotFoundPage.js";export{DevContextFallback}from"./error-boundaries/DevContextFallback.js";export{DevLoadingFallback}from"./error-boundaries/DevLoadingFallback.js";export{GeneralErrorFallback,DevGeneralErrorFallback,ProdGeneralErrorFallback}from"./error-boundaries/index.js";export{LoadingErrorBoundary}from"./error-boundaries/LoadingErrorBoundary.js";
1
+ export{ConfiguratorRoot}from"./ConfiguratorRoot.js";export{LoadedConfiguratorDetailPage}from"./LoadedConfiguratorDetailPage.js";export{RootPage}from"./RootPage.js";export{NewConfiguratorPage}from"./NewConfiguratorPage.js";export{ConfiguratorRootErrorPage}from"./ConfiguratorErrorPage.js";export{ConfiguratorNotFoundPage}from"./ConfiguratorNotFoundPage.js";export{defaultConfiguratorElements}from"./default-configurator-elements.js";export{DevContextFallback}from"./error-boundaries/DevContextFallback.js";export{DevLoadingFallback}from"./error-boundaries/DevLoadingFallback.js";export{GeneralErrorFallback,DevGeneralErrorFallback,ProdGeneralErrorFallback}from"./error-boundaries/index.js";export{LoadingErrorBoundary}from"./error-boundaries/LoadingErrorBoundary.js";
@@ -0,0 +1,4 @@
1
+ /** The name a project registers a layout element under to add an overlay to the preset screen. */
2
+ export declare const PresetDeviceNotSupportedName = "PresetDeviceNotSupported";
3
+ /** Renders the `PresetDeviceNotSupported` element, which the built-in preset screen shows as its overlay. */
4
+ export declare const PresetDeviceNotSupportedElement: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{PhoenixLayoutElement as t}from"#package/react-sdk";export const PresetDeviceNotSupportedName="PresetDeviceNotSupported";let o=()=>null;export const PresetDeviceNotSupportedElement=()=>e(t,{name:"PresetDeviceNotSupported",elementProps:{},defaultSlot:o});
@@ -0,0 +1,4 @@
1
+ /** The name a project registers a layout element under to add an action below the preset cards. */
2
+ export declare const PresetPageActionName = "PresetPageAction";
3
+ /** Renders the `PresetPageAction` element, which the built-in preset screen shows below its cards. */
4
+ export declare const PresetPageActionElement: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{PhoenixLayoutElement as t}from"#package/react-sdk";export const PresetPageActionName="PresetPageAction";let o=()=>null;export const PresetPageActionElement=()=>e(t,{name:"PresetPageAction",elementProps:{},defaultSlot:o});
@@ -0,0 +1,2 @@
1
+ export { PresetDeviceNotSupportedElement, PresetDeviceNotSupportedName } from './PresetDeviceNotSupportedElement.js';
2
+ export { PresetPageActionElement, PresetPageActionName } from './PresetPageActionElement.js';
@@ -0,0 +1 @@
1
+ export{PresetDeviceNotSupportedElement,PresetDeviceNotSupportedName}from"./PresetDeviceNotSupportedElement.js";export{PresetPageActionElement,PresetPageActionName}from"./PresetPageActionElement.js";
@@ -32,6 +32,7 @@ export { usePixelWorldSize } from './three/use-pixel-world-size.js';
32
32
  export { addSceneDebugNode } from './SceneDebugNodes.js';
33
33
  export * from './scene-html/index.js';
34
34
  export * from './scene-controls/index.js';
35
+ export { createAddEntityFab, createDeleteEntityFab, createNavigationHotspot, createSelectionHotspot, createToolMenuFab, type AddEntityFabElementProps, type CreateAddEntityFab, type CreateDeleteEntityFab, type CreateNavigationHotspot, type CreateSelectionHotspot, type CreateToolMenuFab, type DeleteEntityFabElementProps, type NavigationHotspotElementProps, type SelectionHotspotElementProps, type ToolMenuFabElementProps, } from '#package/react-sdk';
35
36
  export * from './postprocessing/index.js';
36
37
  export * from './sketching/index.js';
37
38
  export * from './export/index.js';
@@ -1 +1 @@
1
- export{Scene}from"./Scene.js";export{SceneEnvironment}from"./SceneEnvironment.js";export{CameraControls}from"./cameras/CameraControls.js";export{CameraPadding}from"./cameras/CameraPadding.js";export{useEntityCameraDrivenOpacity}from"./cameras/use-entity-camera-driven-opacity.js";export{Animations}from"./animations/Animations.js";export{SceneEntityDimensionIndicators}from"./scene-entity/dimension-indicators/SceneEntityDimensionIndicators.js";export{DimensionIndicator}from"./scene-entity/dimension-indicators/DimensionIndicator.js";export{SceneEntityHtmlHotspots}from"./scene-entity/scene-controls/SceneEntityHtmlHotspots.js";export{SceneEntityControls}from"./scene-entity/scene-controls/SceneEntityControls.js";export{SceneEntity}from"./scene-entity/SceneEntity.js";export{SceneEntityHighlightedObject}from"./scene-entity/objects/SceneEntityHighlightedObject.js";export{SceneEntityObject}from"./scene-entity/objects/SceneEntityObject.js";export{SceneEntityObjectClip}from"./scene-entity/objects/SceneEntityObjectClip.js";export{SceneEntityObjectDecal}from"./scene-entity/objects/SceneEntityObjectDecal.js";export{SceneEntityObjectTextDecal}from"./scene-entity/objects/SceneEntityObjectTextDecal.js";export{SceneEntityPrimitiveObject}from"./scene-entity/objects/SceneEntityPrimitiveObject.js";export{SceneEntityRemoteObject}from"./scene-entity/objects/SceneEntityRemoteObject.js";export{SceneRootEntity}from"./scene-entity/SceneRootEntity.js";export{SceneEntityObjectTransformer}from"./scene-entity/objects/SceneEntityObjectTransformer.js";export{SceneEntityObjectMaterials}from"./scene-entity/materials/SceneEntityObjectMaterials.js";export{ReplacedMaterialTransition}from"./scene-entity/materials/ReplacedMaterialTransition.js";export{ReplacedMaterialTransformer}from"./scene-entity/materials/ReplacedMaterialTransformer.js";export{useSceneEntityHighlight}from"./scene-entity/entity-hooks/use-scene-entity-highlight.js";export{useSceneEntityObjectMorphing}from"./scene-entity/entity-hooks/use-scene-entity-object-morphing.js";export{useSceneEntityRemoteObject}from"./scene-entity/entity-hooks/use-scene-entity-remote-object.js";export{useSceneEntityInteractions}from"./scene-entity/drag-and-drop/use-scene-entity-interactions.js";export{useRotateHandle}from"./scene-entity/drag-and-drop/use-rotate-handle.js";export{isStandardMaterial,isWithMaterial}from"./three/with-material.js";export{usePixelWorldSize}from"./three/use-pixel-world-size.js";export{addSceneDebugNode}from"./SceneDebugNodes.js";export*from"./scene-html/index.js";export*from"./scene-controls/index.js";export*from"./postprocessing/index.js";export*from"./sketching/index.js";export*from"./export/index.js";export*from"./resources/index.js";export*from"./cameras/index.js";export*from"./scene-entity/index.js";
1
+ export{Scene}from"./Scene.js";export{SceneEnvironment}from"./SceneEnvironment.js";export{CameraControls}from"./cameras/CameraControls.js";export{CameraPadding}from"./cameras/CameraPadding.js";export{useEntityCameraDrivenOpacity}from"./cameras/use-entity-camera-driven-opacity.js";export{Animations}from"./animations/Animations.js";export{SceneEntityDimensionIndicators}from"./scene-entity/dimension-indicators/SceneEntityDimensionIndicators.js";export{DimensionIndicator}from"./scene-entity/dimension-indicators/DimensionIndicator.js";export{SceneEntityHtmlHotspots}from"./scene-entity/scene-controls/SceneEntityHtmlHotspots.js";export{SceneEntityControls}from"./scene-entity/scene-controls/SceneEntityControls.js";export{SceneEntity}from"./scene-entity/SceneEntity.js";export{SceneEntityHighlightedObject}from"./scene-entity/objects/SceneEntityHighlightedObject.js";export{SceneEntityObject}from"./scene-entity/objects/SceneEntityObject.js";export{SceneEntityObjectClip}from"./scene-entity/objects/SceneEntityObjectClip.js";export{SceneEntityObjectDecal}from"./scene-entity/objects/SceneEntityObjectDecal.js";export{SceneEntityObjectTextDecal}from"./scene-entity/objects/SceneEntityObjectTextDecal.js";export{SceneEntityPrimitiveObject}from"./scene-entity/objects/SceneEntityPrimitiveObject.js";export{SceneEntityRemoteObject}from"./scene-entity/objects/SceneEntityRemoteObject.js";export{SceneRootEntity}from"./scene-entity/SceneRootEntity.js";export{SceneEntityObjectTransformer}from"./scene-entity/objects/SceneEntityObjectTransformer.js";export{SceneEntityObjectMaterials}from"./scene-entity/materials/SceneEntityObjectMaterials.js";export{ReplacedMaterialTransition}from"./scene-entity/materials/ReplacedMaterialTransition.js";export{ReplacedMaterialTransformer}from"./scene-entity/materials/ReplacedMaterialTransformer.js";export{useSceneEntityHighlight}from"./scene-entity/entity-hooks/use-scene-entity-highlight.js";export{useSceneEntityObjectMorphing}from"./scene-entity/entity-hooks/use-scene-entity-object-morphing.js";export{useSceneEntityRemoteObject}from"./scene-entity/entity-hooks/use-scene-entity-remote-object.js";export{useSceneEntityInteractions}from"./scene-entity/drag-and-drop/use-scene-entity-interactions.js";export{useRotateHandle}from"./scene-entity/drag-and-drop/use-rotate-handle.js";export{isStandardMaterial,isWithMaterial}from"./three/with-material.js";export{usePixelWorldSize}from"./three/use-pixel-world-size.js";export{addSceneDebugNode}from"./SceneDebugNodes.js";export*from"./scene-html/index.js";export*from"./scene-controls/index.js";export{createAddEntityFab,createDeleteEntityFab,createNavigationHotspot,createSelectionHotspot,createToolMenuFab}from"#package/react-sdk";export*from"./postprocessing/index.js";export*from"./sketching/index.js";export*from"./export/index.js";export*from"./resources/index.js";export*from"./cameras/index.js";export*from"./scene-entity/index.js";
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{memo as t,useCallback as o}from"react";import{LocalizableMessage as i,useDeletedEntity as r}from"#package/react-sdk";import{DeleteEntityFab as l}from"#package/ui-sdk";import{FrontendAnalyticsFactory as n}from"../../common/frontend-analytics.js";import{useSceneControlTooltip as a}from"./use-scene-control-tooltip.js";export const DeleteEntityFab=t(t=>{let{entityId:s,fixableViolations:c,label:m,title:p,tooltipVisibility:d="on-hover",...f}=t,{tooltipOpen:k}=a(d),b=o(()=>n.EntityDeleteHotspotClicked(s),[s]),{disabled:u,hints:g,remove:j,trace:y}=r(s,c,b);return e(l,{label:m?e(i,{children:m}):void 0,title:p?e(i,{children:p}):void 0,...f,disabled:u,disabledMessage:g,tooltipOpen:k,onClick:j,onDebugClick:y})});
1
+ import{jsx as e}from"react/jsx-runtime";import{memo as t,useCallback as o}from"react";import{FrontendAnalyticsFactory as i,LocalizableMessage as r,useDeletedEntity as l}from"#package/react-sdk";import{DeleteEntityFab as a}from"#package/ui-sdk";import{useSceneControlTooltip as s}from"./use-scene-control-tooltip.js";export const DeleteEntityFab=t(t=>{let{entityId:n,fixableViolations:c,label:p,title:d,tooltipVisibility:m="on-hover",...k}=t,{tooltipOpen:b}=s(m),f=o(()=>i.EntityDeleteHotspotClicked(n),[n]),{disabled:u,hints:g,remove:D,trace:h}=l(n,c,f);return e(a,{label:p?e(r,{children:p}):void 0,title:d?e(r,{children:d}):void 0,...k,disabled:u,disabledMessage:g,tooltipOpen:b,onClick:D,onDebugClick:h})});
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{useCallback as t}from"react";import{useSelectEntity as r}from"#package/react-sdk";import{FrontendAnalyticsFactory as e}from"../../common/frontend-analytics.js";import{SceneHotspot as i}from"./SceneHotspot.js";export const SelectionHotspot=m=>{let{id:n,title:p,tooltipVisibility:s="on-hover"}=m,c=r(e.SelectionHotspotClicked);return o(i,{onClick:t(o=>{o.stopPropagation(),c(n)},[n,c]),title:p,tooltipVisibility:s})};
1
+ import{jsx as t}from"react/jsx-runtime";import{useCallback as o}from"react";import{FrontendAnalyticsFactory as e,useSelectEntity as r}from"#package/react-sdk";import{SceneHotspot as i}from"./SceneHotspot.js";export const SelectionHotspot=p=>{let{id:s,title:c,tooltipVisibility:m="on-hover"}=p,n=r(e.SelectionHotspotClicked);return t(i,{onClick:o(t=>{t.stopPropagation(),n(s)},[s,n]),title:c,tooltipVisibility:m})};
@@ -3,5 +3,9 @@ import { type SceneFabProps } from './SceneFab.js';
3
3
  export interface ToolMenuFabProps extends Pick<SceneFabProps, 'title' | 'tooltipVisibility'> {
4
4
  readonly options: readonly ToolMenuFabOption[];
5
5
  readonly icon?: string;
6
+ /**
7
+ * Switches to the tool state of the chosen option. Without it, the menu switches the tool itself.
8
+ */
9
+ readonly onSelectTool?: (toolState: string) => void;
6
10
  }
7
11
  export declare const ToolMenuFab: (props: ToolMenuFabProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- import{jsx as e,jsxs as o,Fragment as r}from"react/jsx-runtime";import{Trans as t}from"@lingui/react";import{ListItemIcon as i,ListSubheader as n,MenuItem as l,menuClasses as a}from"@mui/material";import{memo as c,useCallback as m,useState as s}from"react";import{LocalizableMessage as p,useDomain as g}from"#package/react-sdk";import{PhxIcon as d,ResponsiveMenu as h}from"#package/ui-sdk";import{SceneFab as u}from"./SceneFab.js";let f=c(r=>{let{options:c,title:s,open:u,anchorEl:f,onClose:k}=r,{navigationSystem:b,storeSystem:C}=g(),x=m(e=>{C.stageAndCommit([b.getToolUpdate(e.toolState)]),k()},[b,C,k]);return o(h,{closeLabel:e(t,{id:"sdk.controls.tool.close.label",message:"Close"}),open:u,anchorEl:f,onClose:k,menuProps:{anchorOrigin:{vertical:"center",horizontal:"right"},transformOrigin:{vertical:"center",horizontal:"left"},sx:{[`.${a.paper}`]:{minInlineSize:220,marginLeft:2,marginRight:1}}},children:[e(n,{children:e(p,{children:s})}),c.map(r=>o(l,{onClick:()=>{x(r)},children:[e(i,{children:r.icon&&e(d,{name:r.icon})}),e(p,{children:r.label})]},r.toolState))]})});export const ToolMenuFab=t=>{let{options:i,icon:n,title:l,tooltipVisibility:a}=t,[c,p]=s(null),g=null!==c,h=m(e=>{p(e.currentTarget),e.stopPropagation()},[]),k=m(()=>{p(null)},[]);return o(r,{children:[e(u,{title:l,icon:e(d,{name:n??"PencilSimpleBold"}),tooltipVisibility:a,onClick:h}),g&&e(f,{anchorEl:c,open:g,onClose:k,options:i,title:l})]})};
1
+ import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{Trans as r}from"@lingui/react";import{ListItemIcon as l,ListSubheader as i,MenuItem as n,menuClasses as a}from"@mui/material";import{memo as c,useCallback as m,useState as s}from"react";import{LocalizableMessage as p,useDomain as g}from"#package/react-sdk";import{PhxIcon as d,ResponsiveMenu as h}from"#package/ui-sdk";import{SceneFab as u}from"./SceneFab.js";let f=c(t=>{let{options:c,title:s,open:u,anchorEl:f,onClose:k,onSelectTool:S}=t,{navigationSystem:b,storeSystem:C}=g(),x=m(e=>{S?S(e.toolState):C.stageAndCommit([b.getToolUpdate(e.toolState)]),k()},[b,C,k,S]);return o(h,{closeLabel:e(r,{id:"sdk.controls.tool.close.label",message:"Close"}),open:u,anchorEl:f,onClose:k,menuProps:{anchorOrigin:{vertical:"center",horizontal:"right"},transformOrigin:{vertical:"center",horizontal:"left"},sx:{[`.${a.paper}`]:{minInlineSize:220,marginLeft:2,marginRight:1}}},children:[e(i,{children:e(p,{children:s})}),c.map(t=>o(n,{onClick:()=>{x(t)},children:[e(l,{children:t.icon&&e(d,{name:t.icon})}),e(p,{children:t.label})]},t.toolState))]})});export const ToolMenuFab=r=>{let{options:l,icon:i,title:n,tooltipVisibility:a,onSelectTool:c}=r,[p,g]=s(null),h=null!==p,k=m(e=>{g(e.currentTarget),e.stopPropagation()},[]),S=m(()=>{g(null)},[]);return o(t,{children:[e(u,{title:n,icon:e(d,{name:i??"PencilSimpleBold"}),tooltipVisibility:a,onClick:k}),h&&e(f,{anchorEl:p,open:h,onClose:S,options:l,title:n,onSelectTool:c})]})};
@@ -2,7 +2,7 @@ import type { DraggableSurface } from '#package/domain';
2
2
  import { HotspotDragHandleVariant } from '#package/domain';
3
3
  import type { SceneEntitySpecificProps, SceneHtmlOpacityProps, SceneHtmlPositionProps, SceneHtmlVisibilityProps } from '../../scene-html/index.js';
4
4
  export interface HotspotDragHandleProps extends SceneHtmlOpacityProps, SceneHtmlVisibilityProps, SceneHtmlPositionProps, SceneEntitySpecificProps {
5
- readonly surfaces: DraggableSurface[];
5
+ readonly surfaces: readonly DraggableSurface[];
6
6
  readonly instanceName: string;
7
7
  readonly handleSize?: number;
8
8
  readonly variant?: HotspotDragHandleVariant;
@@ -3,7 +3,7 @@ import { type DraggableSurface } from '#package/domain';
3
3
  import { type SceneEntitySpecificProps, type SceneHtmlOpacityProps, type SceneHtmlPositionProps, type SceneHtmlVisibilityProps } from '../../scene-html/index.js';
4
4
  export declare const useHotspotHovered: () => boolean;
5
5
  export interface HotspotDragSceneHandleProps extends SceneHtmlOpacityProps, SceneHtmlVisibilityProps, SceneHtmlPositionProps, SceneEntitySpecificProps {
6
- readonly surfaces: DraggableSurface[];
6
+ readonly surfaces: readonly DraggableSurface[];
7
7
  readonly instanceName: string;
8
8
  readonly children: ReactNode;
9
9
  readonly handleSize?: number;
@@ -1,4 +1,5 @@
1
- export type SceneControlTooltipVisibility = 'on-hover' | 'forced' | 'forced-when-still' | 'hidden';
1
+ import type { SceneControlTooltipVisibility } from '#package/react-sdk';
2
+ export type { SceneControlTooltipVisibility };
2
3
  export interface SceneControlTooltip {
3
4
  /**
4
5
  * Whether tooltip is open (undefined = uncontrolled hover behavior)
@@ -37,7 +37,7 @@ export interface DimensionIndicatorProps {
37
37
  readonly labelDirection?: 'auto' | 'ltr' | 'rtl';
38
38
  readonly labelFillOpacity?: number;
39
39
  readonly labelFontStyle?: 'normal' | 'italic';
40
- readonly labelFontWeight?: number | 'normal' | 'bold';
40
+ readonly labelFontWeight?: number | string;
41
41
  readonly labelLetterSpacing?: number;
42
42
  readonly labelLineHeight?: number;
43
43
  readonly labelMaxWidth?: number;
@@ -76,7 +76,7 @@ interface DimensionIndicatorProps {
76
76
  /** Font style. See https://protectwise.github.io/troika/troika-three-text/ */
77
77
  labelFontStyle?: 'normal' | 'italic';
78
78
  /** Font weight. See https://protectwise.github.io/troika/troika-three-text/ */
79
- labelFontWeight?: number | 'normal' | 'bold';
79
+ labelFontWeight?: number | string;
80
80
  /** Spacing between letters. See https://protectwise.github.io/troika/troika-three-text/ */
81
81
  labelLetterSpacing?: number;
82
82
  /** Line height as a multiple of the font size. See https://protectwise.github.io/troika/troika-three-text/ */
@@ -1,6 +1,6 @@
1
1
  import { type Size } from '@react-three/fiber';
2
2
  import { type Camera, Vector2, Vector3 } from 'three';
3
- import type { DraggableSurface } from '#package/domain';
3
+ import type { DraggableSurface, RotatableSurface } from '#package/domain';
4
4
  /**
5
5
  * Converts mouse coordinates to normalized device coordinates
6
6
  */
@@ -20,7 +20,7 @@ export declare const findSurfaceClosestToPoint: (worldPoint: Vector3, surfaces:
20
20
  * Projects the cursor ray onto a single specified surface. Returns null if the
21
21
  * ray is parallel to or points away from the plane.
22
22
  */
23
- export declare const projectMouseOntoSurface: (mouse: Vector2, surface: DraggableSurface, camera: Camera) => Vector3 | null;
23
+ export declare const projectMouseOntoSurface: (mouse: Vector2, surface: DraggableSurface | RotatableSurface, camera: Camera) => Vector3 | null;
24
24
  /**
25
25
  * Among the camera-facing surfaces the cursor ray actually hits, picks the
26
26
  * intersection closest to the world origin. Used during multi-surface drag-move
@@ -1,7 +1,7 @@
1
1
  import { type Object3D } from 'three';
2
2
  import { type DomainEntityId, type DraggableSurface } from '#package/domain';
3
3
  interface DragHandle {
4
- surfaces: DraggableSurface[];
4
+ surfaces: readonly DraggableSurface[];
5
5
  instanceName: string;
6
6
  }
7
7
  export declare const useDragObject: (entityId: DomainEntityId<string>, object: Object3D | null, dragHandle: DragHandle | undefined, onUpdate: () => void, onDragStart?: () => void, onDragEnd?: () => void) => {
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t,Fragment as a}from"react/jsx-runtime";import s from"lodash-es/isNumber.js";import{memo as r,useEffect as n,useMemo as i}from"react";import{Color as o,RepeatWrapping as l}from"three";import{isRemoteMaterialOverrideComponent as c}from"#package/domain";import{useResourceUrl as p}from"#package/react-sdk";import{useCombinedQueries as M,usePhxGltf as m,useResourceQueryFactories as d}from"../../resources/index.js";import{isPhysicalMaterial as h,isStandardMaterial as u,isWithColor as U}from"../../three/with-material.js";import{ReplacedMaterialTransformations as v}from"./ReplacedMaterialTransformer.js";import{ReplacedMaterialTransitions as g}from"./ReplacedMaterialTransition.js";export const applyRemoteMaterialOverride=(e,t,a,r)=>{let n=t=>{let{offsetX:a,offsetY:r,rotation:n,rotationCenterX:i,rotationCenterY:o,repeatX:c,repeatY:p}=e.state,M=s(a)||s(r),m=s(n),d=s(c)||s(p);return M&&t.offset.set(a??0,r??0),m&&(t.rotation=n,t.center.set(i??0,o??0)),d&&(t.repeat.set(c??1,p??1),t.wrapS=l,t.wrapT=l),t},i=(e,t)=>{if(null===e)t(null);else if(e){let s=r[a.findIndex(t=>t===e)];s&&t(n(s))}};if((u(t)||h(t))&&(i(e.state.textureUrl,e=>{t.map=e}),e.state.color&&t.color.set(new o(e.state.color)),i(e.state.roughnessMapUrl,e=>{t.roughnessMap=e}),s(e.state.roughness)&&(t.roughness=e.state.roughness),i(e.state.bumpMapUrl,e=>{t.bumpMap=e}),s(e.state.bumpScale)&&(t.bumpScale=e.state.bumpScale),i(e.state.metalnessMapUrl,e=>{t.metalnessMap=e}),s(e.state.metalness)&&(t.metalness=e.state.metalness),s(e.state.envMapIntensity)&&(t.envMapIntensity=e.state.envMapIntensity),void 0!==e.state.toneMapped&&(t.toneMapped=e.state.toneMapped),void 0!==e.state.emissive&&t.emissive.set(new o(e.state.emissive)),void 0!==e.state.emissiveIntensity&&(t.emissiveIntensity=e.state.emissiveIntensity),i(e.state.alphaMapUrl,e=>{t.alphaMap=e}),void 0!==e.state.transparent&&(t.transparent=e.state.transparent),s(e.state.opacity)&&(t.opacity=e.state.opacity),i(e.state.aoMapUrl,e=>{t.aoMap=e}),s(e.state.aoMapIntensity)&&(t.aoMapIntensity=e.state.aoMapIntensity),i(e.state.displacementMapUrl,e=>{t.displacementMap=e}),s(e.state.displacementScale)&&(t.displacementScale=e.state.displacementScale),i(e.state.lightMapUrl,e=>{t.lightMap=e}),s(e.state.lightMapIntensity)&&(t.lightMapIntensity=e.state.lightMapIntensity),i(e.state.envMapUrl,e=>{t.envMap=e}),s(e.state.envMapIntensity)&&(t.envMapIntensity=e.state.envMapIntensity),s(e.state.blendingMode)&&(t.blending=e.state.blendingMode),i(e.state.normalMapUrl,e=>{t.normalMap=e}),s(e.state.normalScale)&&t.normalScale.set(e.state.normalScale,e.state.normalScale),void 0!==e.state.wireframe&&(t.wireframe=e.state.wireframe)),h(t)&&(void 0!==e.state.clearcoat&&(t.clearcoat=e.state.clearcoat),void 0!==e.state.clearcoatRoughness&&(t.clearcoatRoughness=e.state.clearcoatRoughness),void 0!==e.state.iridescence&&(t.iridescence=e.state.iridescence),void 0!==e.state.iridescenceIor&&(t.iridescenceIOR=e.state.iridescenceIor),s(e.state.sheen)&&(t.sheen=e.state.sheen),void 0!==e.state.sheenColor&&U(t)&&t.sheenColor.set(new o(e.state.sheenColor)),s(e.state.sheenRoughness)&&(t.sheenRoughness=e.state.sheenRoughness),i(e.state.anisotropyMapUrl,e=>{t.anisotropyMap=e}),s(e.state.anisotropyStrength)&&(t.anisotropy=e.state.anisotropyStrength),s(e.state.anisotropyRotation)&&(t.anisotropyRotation=e.state.anisotropyRotation),s(e.state.ior)&&(t.ior=e.state.ior),s(e.state.reflectivity)&&(t.reflectivity=e.state.reflectivity),s(e.state.transmission)&&(t.transmission=e.state.transmission),s(e.state.thickness)&&(t.thickness=e.state.thickness),s(e.state.attenuationDistance)&&(t.attenuationDistance=e.state.attenuationDistance),void 0!==e.state.attenuationColor&&t.attenuationColor.set(new o(e.state.attenuationColor)),s(e.state.specularIntensity)&&(t.specularIntensity=e.state.specularIntensity),void 0!==e.state.specularColor&&t.specularColor.set(new o(e.state.specularColor)),i(e.state.specularIntensityMapUrl,e=>{t.specularIntensityMap=e}),i(e.state.specularColorMapUrl,e=>{t.specularColorMap=e}),i(e.state.clearcoatNormalMapUrl,e=>{t.clearcoatNormalMap=e}),s(e.state.clearcoatNormalScale)&&t.clearcoatNormalScale.set(e.state.clearcoatNormalScale,e.state.clearcoatNormalScale),i(e.state.clearcoatMapUrl,e=>{t.clearcoatMap=e}),i(e.state.clearcoatRoughnessMapUrl,e=>{t.clearcoatRoughnessMap=e}),i(e.state.iridescenceMapUrl,e=>{t.iridescenceMap=e}),void 0!==e.state.iridescenceThicknessRange&&(t.iridescenceThicknessRange=e.state.iridescenceThicknessRange),i(e.state.iridescenceThicknessMapUrl,e=>{t.iridescenceThicknessMap=e}),i(e.state.sheenColorMapUrl,e=>{t.sheenColorMap=e}),i(e.state.sheenRoughnessMapUrl,e=>{t.sheenRoughnessMap=e}),i(e.state.transmissionMapUrl,e=>{t.transmissionMap=e}),i(e.state.thicknessMapUrl,e=>{t.thicknessMap=e})),u(t)&&!h(t)){let a=[void 0!==e.state.clearcoat?"clearcoat":"",void 0!==e.state.clearcoatRoughness?"clearcoatRoughness":"",void 0!==e.state.iridescence?"iridescence":"",void 0!==e.state.iridescenceIor?"iridescenceIor":"",void 0!==e.state.sheen?"sheen":"",void 0!==e.state.sheenColor?"sheenColor":"",void 0!==e.state.sheenRoughness?"sheenRoughness":"",void 0!==e.state.anisotropyMapUrl?"anisotropyMapUrl":"",void 0!==e.state.anisotropyStrength?"anisotropyStrength":"",void 0!==e.state.anisotropyRotation?"anisotropyRotation":"",void 0!==e.state.ior?"ior":"",void 0!==e.state.reflectivity?"reflectivity":"",void 0!==e.state.transmission?"transmission":"",void 0!==e.state.thickness?"thickness":"",void 0!==e.state.attenuationDistance?"attenuationDistance":"",void 0!==e.state.attenuationColor?"attenuationColor":"",void 0!==e.state.specularIntensity?"specularIntensity":"",void 0!==e.state.specularColor?"specularColor":"",void 0!==e.state.specularIntensityMapUrl?"specularIntensityMapUrl":"",void 0!==e.state.specularColorMapUrl?"specularColorMapUrl":"",void 0!==e.state.clearcoatNormalMapUrl?"clearcoatNormalMapUrl":"",void 0!==e.state.clearcoatNormalScale?"clearcoatNormalScale":"",void 0!==e.state.clearcoatMapUrl?"clearcoatMapUrl":"",void 0!==e.state.clearcoatRoughnessMapUrl?"clearcoatRoughnessMapUrl":"",void 0!==e.state.iridescenceMapUrl?"iridescenceMapUrl":"",void 0!==e.state.iridescenceThicknessRange?"iridescenceThicknessRange":"",void 0!==e.state.iridescenceThicknessMapUrl?"iridescenceThicknessMapUrl":"",void 0!==e.state.sheenColorMapUrl?"sheenColorMapUrl":"",void 0!==e.state.sheenRoughnessMapUrl?"sheenRoughnessMapUrl":"",void 0!==e.state.transmissionMapUrl?"transmissionMapUrl":"",void 0!==e.state.thicknessMapUrl?"thicknessMapUrl":""].filter(Boolean);a.length>0&&console.warn(`[Phoenix] Material override properties [${a.join(", ")}] were ignored because the target material "${t.name}" is a MeshStandardMaterial, not a MeshPhysicalMaterial. These properties require MeshPhysicalMaterial. Ensure the source material in the override file uses a physical property (e.g. clearcoat) to trigger MeshPhysicalMaterial.`)}};let y=["textureUrl","roughnessMapUrl","bumpMapUrl","metalnessMapUrl","anisotropyMapUrl","normalMapUrl","alphaMapUrl","aoMapUrl","displacementMapUrl","lightMapUrl","envMapUrl","specularIntensityMapUrl","specularColorMapUrl","clearcoatNormalMapUrl","clearcoatMapUrl","clearcoatRoughnessMapUrl","iridescenceMapUrl","iridescenceThicknessMapUrl","sheenColorMapUrl","sheenRoughnessMapUrl","transmissionMapUrl","thicknessMapUrl"];export const getMaterialOverrideTextureNames=e=>y.flatMap(t=>{let a=e.state[t];return"string"==typeof a&&""!==a?[a]:[]});export const RemoteReplacedMaterial=r(s=>{let{overrideComponent:r,original:o,object:l}=s,{getResourceUrl:h}=p(),u=i(()=>[r].reduce((e,t)=>(c(t)&&e.push(t.state.fileUrl),e),[]),[r]),U=i(()=>getMaterialOverrideTextureNames(r),[r]),y=m(u.map(h)),{createTextureQuery:R}=d(),f=M(U.map(R)),I=i(()=>f.map(e=>e.clone()),[f]),C=i(()=>{let e=y[u.findIndex(e=>e===r.state.fileUrl)],t=e?.materials[r.state.materialName];if(null==t)throw Error(`Material with name '${r.state.materialName}' not found in '${r.state.fileUrl}'`);let a=t.clone();return applyRemoteMaterialOverride(r,a,U,I),a},[r,u,y,U,I]);return n(()=>(l.material=C,l.material.name=o.name,()=>{l.material=o}),[l,o,C]),t(a,{children:[e(v,{material:C,instanceName:r.componentInstance.instanceName}),e(g,{material:C,instanceName:r.componentInstance.instanceName})]})});
1
+ import{jsx as e,jsxs as t,Fragment as a}from"react/jsx-runtime";import s from"lodash-es/isNumber.js";import{memo as r,useEffect as n,useMemo as o}from"react";import{Color as i,RepeatWrapping as l}from"three";import{isRemoteMaterialOverrideComponent as c}from"#package/domain";import{useResourceUrl as p}from"#package/react-sdk";import{useCombinedQueries as M,usePhxGltf as m,useResourceQueryFactories as d}from"../../resources/index.js";import{isPhysicalMaterial as h,isStandardMaterial as u,isWithColor as v}from"../../three/with-material.js";import{ReplacedMaterialTransformations as U}from"./ReplacedMaterialTransformer.js";import{ReplacedMaterialTransitions as y}from"./ReplacedMaterialTransition.js";export const applyRemoteMaterialOverride=(e,t,a,r)=>{let n=t=>{let{offsetX:a,offsetY:r,rotation:n,rotationCenterX:o,rotationCenterY:i,repeatX:c,repeatY:p}=e.state,M=s(a)||s(r),m=s(n),d=s(c)||s(p);return M&&t.offset.set(a??0,r??0),m&&(t.rotation=n,t.center.set(o??0,i??0)),d&&(t.repeat.set(c??1,p??1),t.wrapS=l,t.wrapT=l),t},o=(e,t)=>{if(null===e)t(null);else if(e){let s=r[a.findIndex(t=>t===e)];s&&t(n(s))}};if((u(t)||h(t))&&(o(e.state.textureUrl,e=>{t.map=e}),e.state.color&&t.color.set(new i(e.state.color)),o(e.state.roughnessMapUrl,e=>{t.roughnessMap=e}),s(e.state.roughness)&&(t.roughness=e.state.roughness),o(e.state.bumpMapUrl,e=>{t.bumpMap=e}),s(e.state.bumpScale)&&(t.bumpScale=e.state.bumpScale),o(e.state.metalnessMapUrl,e=>{t.metalnessMap=e}),s(e.state.metalness)&&(t.metalness=e.state.metalness),s(e.state.envMapIntensity)&&(t.envMapIntensity=e.state.envMapIntensity),void 0!==e.state.toneMapped&&(t.toneMapped=e.state.toneMapped),void 0!==e.state.emissive&&t.emissive.set(new i(e.state.emissive)),void 0!==e.state.emissiveIntensity&&(t.emissiveIntensity=e.state.emissiveIntensity),o(e.state.alphaMapUrl,e=>{t.alphaMap=e}),void 0!==e.state.transparent&&(t.transparent=e.state.transparent),s(e.state.opacity)&&(t.opacity=e.state.opacity),o(e.state.aoMapUrl,e=>{t.aoMap=e}),s(e.state.aoMapIntensity)&&(t.aoMapIntensity=e.state.aoMapIntensity),o(e.state.displacementMapUrl,e=>{t.displacementMap=e}),s(e.state.displacementScale)&&(t.displacementScale=e.state.displacementScale),o(e.state.lightMapUrl,e=>{t.lightMap=e}),s(e.state.lightMapIntensity)&&(t.lightMapIntensity=e.state.lightMapIntensity),o(e.state.envMapUrl,e=>{t.envMap=e}),s(e.state.envMapIntensity)&&(t.envMapIntensity=e.state.envMapIntensity),s(e.state.blendingMode)&&(t.blending=e.state.blendingMode),o(e.state.normalMapUrl,e=>{t.normalMap=e}),s(e.state.normalScale)&&t.normalScale.set(e.state.normalScale,e.state.normalScale),void 0!==e.state.wireframe&&(t.wireframe=e.state.wireframe)),h(t)){void 0!==e.state.clearcoat&&(t.clearcoat=e.state.clearcoat),void 0!==e.state.clearcoatRoughness&&(t.clearcoatRoughness=e.state.clearcoatRoughness),void 0!==e.state.iridescence&&(t.iridescence=e.state.iridescence),void 0!==e.state.iridescenceIor&&(t.iridescenceIOR=e.state.iridescenceIor),s(e.state.sheen)&&(t.sheen=e.state.sheen),void 0!==e.state.sheenColor&&v(t)&&t.sheenColor.set(new i(e.state.sheenColor)),s(e.state.sheenRoughness)&&(t.sheenRoughness=e.state.sheenRoughness),o(e.state.anisotropyMapUrl,e=>{t.anisotropyMap=e}),s(e.state.anisotropyStrength)&&(t.anisotropy=e.state.anisotropyStrength),s(e.state.anisotropyRotation)&&(t.anisotropyRotation=e.state.anisotropyRotation),s(e.state.ior)&&(t.ior=e.state.ior),s(e.state.reflectivity)&&(t.reflectivity=e.state.reflectivity),s(e.state.transmission)&&(t.transmission=e.state.transmission),s(e.state.thickness)&&(t.thickness=e.state.thickness),s(e.state.attenuationDistance)&&(t.attenuationDistance=e.state.attenuationDistance),void 0!==e.state.attenuationColor&&t.attenuationColor.set(new i(e.state.attenuationColor)),s(e.state.specularIntensity)&&(t.specularIntensity=e.state.specularIntensity),void 0!==e.state.specularColor&&t.specularColor.set(new i(e.state.specularColor)),o(e.state.specularIntensityMapUrl,e=>{t.specularIntensityMap=e}),o(e.state.specularColorMapUrl,e=>{t.specularColorMap=e}),o(e.state.clearcoatNormalMapUrl,e=>{t.clearcoatNormalMap=e}),s(e.state.clearcoatNormalScale)&&t.clearcoatNormalScale.set(e.state.clearcoatNormalScale,e.state.clearcoatNormalScale),o(e.state.clearcoatMapUrl,e=>{t.clearcoatMap=e}),o(e.state.clearcoatRoughnessMapUrl,e=>{t.clearcoatRoughnessMap=e}),o(e.state.iridescenceMapUrl,e=>{t.iridescenceMap=e});let[a,r]=e.state.iridescenceThicknessRange??[];void 0!==a&&void 0!==r&&(t.iridescenceThicknessRange=[a,r]),o(e.state.iridescenceThicknessMapUrl,e=>{t.iridescenceThicknessMap=e}),o(e.state.sheenColorMapUrl,e=>{t.sheenColorMap=e}),o(e.state.sheenRoughnessMapUrl,e=>{t.sheenRoughnessMap=e}),o(e.state.transmissionMapUrl,e=>{t.transmissionMap=e}),o(e.state.thicknessMapUrl,e=>{t.thicknessMap=e})}if(u(t)&&!h(t)){let a=[void 0!==e.state.clearcoat?"clearcoat":"",void 0!==e.state.clearcoatRoughness?"clearcoatRoughness":"",void 0!==e.state.iridescence?"iridescence":"",void 0!==e.state.iridescenceIor?"iridescenceIor":"",void 0!==e.state.sheen?"sheen":"",void 0!==e.state.sheenColor?"sheenColor":"",void 0!==e.state.sheenRoughness?"sheenRoughness":"",void 0!==e.state.anisotropyMapUrl?"anisotropyMapUrl":"",void 0!==e.state.anisotropyStrength?"anisotropyStrength":"",void 0!==e.state.anisotropyRotation?"anisotropyRotation":"",void 0!==e.state.ior?"ior":"",void 0!==e.state.reflectivity?"reflectivity":"",void 0!==e.state.transmission?"transmission":"",void 0!==e.state.thickness?"thickness":"",void 0!==e.state.attenuationDistance?"attenuationDistance":"",void 0!==e.state.attenuationColor?"attenuationColor":"",void 0!==e.state.specularIntensity?"specularIntensity":"",void 0!==e.state.specularColor?"specularColor":"",void 0!==e.state.specularIntensityMapUrl?"specularIntensityMapUrl":"",void 0!==e.state.specularColorMapUrl?"specularColorMapUrl":"",void 0!==e.state.clearcoatNormalMapUrl?"clearcoatNormalMapUrl":"",void 0!==e.state.clearcoatNormalScale?"clearcoatNormalScale":"",void 0!==e.state.clearcoatMapUrl?"clearcoatMapUrl":"",void 0!==e.state.clearcoatRoughnessMapUrl?"clearcoatRoughnessMapUrl":"",void 0!==e.state.iridescenceMapUrl?"iridescenceMapUrl":"",void 0!==e.state.iridescenceThicknessRange?"iridescenceThicknessRange":"",void 0!==e.state.iridescenceThicknessMapUrl?"iridescenceThicknessMapUrl":"",void 0!==e.state.sheenColorMapUrl?"sheenColorMapUrl":"",void 0!==e.state.sheenRoughnessMapUrl?"sheenRoughnessMapUrl":"",void 0!==e.state.transmissionMapUrl?"transmissionMapUrl":"",void 0!==e.state.thicknessMapUrl?"thicknessMapUrl":""].filter(Boolean);a.length>0&&console.warn(`[Phoenix] Material override properties [${a.join(", ")}] were ignored because the target material "${t.name}" is a MeshStandardMaterial, not a MeshPhysicalMaterial. These properties require MeshPhysicalMaterial. Ensure the source material in the override file uses a physical property (e.g. clearcoat) to trigger MeshPhysicalMaterial.`)}};let g=["textureUrl","roughnessMapUrl","bumpMapUrl","metalnessMapUrl","anisotropyMapUrl","normalMapUrl","alphaMapUrl","aoMapUrl","displacementMapUrl","lightMapUrl","envMapUrl","specularIntensityMapUrl","specularColorMapUrl","clearcoatNormalMapUrl","clearcoatMapUrl","clearcoatRoughnessMapUrl","iridescenceMapUrl","iridescenceThicknessMapUrl","sheenColorMapUrl","sheenRoughnessMapUrl","transmissionMapUrl","thicknessMapUrl"];export const getMaterialOverrideTextureNames=e=>g.flatMap(t=>{let a=e.state[t];return"string"==typeof a&&""!==a?[a]:[]});export const RemoteReplacedMaterial=r(s=>{let{overrideComponent:r,original:i,object:l}=s,{getResourceUrl:h}=p(),u=o(()=>[r].reduce((e,t)=>(c(t)&&e.push(t.state.fileUrl),e),[]),[r]),v=o(()=>getMaterialOverrideTextureNames(r),[r]),g=m(u.map(h)),{createTextureQuery:f}=d(),R=M(v.map(f)),I=o(()=>R.map(e=>e.clone()),[R]),C=o(()=>{let e=g[u.findIndex(e=>e===r.state.fileUrl)],t=e?.materials[r.state.materialName];if(null==t)throw Error(`Material with name '${r.state.materialName}' not found in '${r.state.fileUrl}'`);let a=t.clone();return applyRemoteMaterialOverride(r,a,v,I),a},[r,u,g,v,I]);return n(()=>(l.material=C,l.material.name=i.name,()=>{l.material=i}),[l,i,C]),t(a,{children:[e(U,{material:C,instanceName:r.componentInstance.instanceName}),e(y,{material:C,instanceName:r.componentInstance.instanceName})]})});
@@ -29,7 +29,7 @@ export interface SceneEntityTextDecalV2Props {
29
29
  text: string;
30
30
  textureUrl?: string | undefined;
31
31
  roughnessMapUrl?: string | undefined;
32
- preloadFonts?: string[] | undefined;
32
+ preloadFonts?: readonly string[] | undefined;
33
33
  invertedBump?: boolean | undefined;
34
34
  }
35
35
  export interface SceneEntityObjectTextDecalProps {
@@ -1 +1 @@
1
- import{jsx as t,jsxs as e,Fragment as n}from"react/jsx-runtime";import{memo as o}from"react";import{match as i}from"ts-pattern";import{htmlHotspotComponent as s,isHtmlHotspotComponentSnapshot as a,isSceneEntityAddFabComponentSnapshot as c,isSceneEntityDeleteFabComponentSnapshot as l,isSceneEntityNavigationHotspotComponentSnapshot as r,isSceneEntitySelectHotspotComponentSnapshot as p,isToolMenuFabComponentSnapshot as m,sceneEntityAddFabComponent as h,sceneEntityDeleteFabComponent as d,sceneEntityNavigationHotspotComponent as f,sceneEntitySelectHotspotComponent as y,toolMenuFabComponent as u}from"#package/domain";import{PhoenixEntityElementWithChildren as w,useRenderedComponents as I}from"#package/react-sdk";import{PhxIcon as W}from"#package/ui-sdk";import{AddEntityFab as b,DeleteEntityFab as g,NavigationHotspot as V,SelectionHotspot as k,ToolMenuFab as v}from"../../scene-controls/index.js";import{SceneEntityHtml as O}from"../../scene-html/index.js";import{SuspendedBoundary as $}from"../SuspendedBoundary.js";export const SceneEntityHtmlHotspots=o(o=>{let{id:H}=o;return t(n,{children:I({entityIds:[H],componentTypes:[h,s,d,y,u,f]}).map(n=>{let o={entityId:H,showWhen:n.state.showWhen},s={offsetX:n.state.offsetX,offsetY:n.state.offsetY,offsetZ:n.state.offsetZ,screenOffsetHorizontal:n.state.screenOffsetHorizontal,screenOffsetVertical:n.state.screenOffsetVertical},h={polarAngleLimits:n.state.polarAngleLimits,azimuthAngleLimits:n.state.azimuthAngleLimits,distanceLimits:n.state.distanceLimits,minInteractiveOpacity:n.state.minInteractiveOpacity},d={hideWhileDragging:n.state.hideWhileDragging,occlude:n.state.occlude};return i(n).when(c,e=>t($,{children:t(O,{...o,...s,...h,...d,showWhen:e.state.showWhen??["selected"],controlHotspot:!0,children:t(b,{parentEntityId:H,instanceNames:e.state.instanceNames,fixableViolations:e.state.hiddenViolations,icon:e.state.icon?t(W,{name:e.state.icon}):void 0,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover",label:e.state.label,skipMenuWhenOnlyOne:e.state.skipMenuWhenOnlyOne,hideWhenNone:e.state.hideWhenNone})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(l,e=>t($,{children:t(O,{...o,...s,...h,...d,showWhen:e.state.showWhen??["selected"],controlHotspot:!0,children:t(g,{entityId:H,fixableViolations:e.state.hiddenViolations,icon:e.state.icon?t(W,{name:e.state.icon}):void 0,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover",label:e.state.label})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(p,e=>t($,{children:t(O,{...o,...s,...h,...d,showWhen:e.state.showWhen??["unselected"],controlHotspot:!1,children:t(k,{id:H,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover"})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(r,e=>t($,{children:t(O,{...o,...s,...h,...d,showWhen:e.state.showWhen??["unselected"],controlHotspot:!1,children:t(V,{navigationState:e.state.navigationState,pushToStack:e.state.pushToStack,canStackOnto:e.state.canStackOnto,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover"})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(m,e=>t($,{children:t(O,{...o,...s,...h,...d,showWhen:e.state.showWhen??["unselected"],controlHotspot:!1,children:t(v,{options:e.state.options,icon:e.state.icon,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover"})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(a,n=>t($,{children:e(O,{...o,...s,...h,...d,controlHotspot:n.state.controlHotspot,pointerEvents:n.state.inert?"none":"auto",children:[n.state.node,n.state.name&&t(w,{kind:n.state.name,entityId:H})]})},`${n.componentInstance.componentType.name}-${n.componentInstance.instanceName}`)).otherwise(()=>null)})})});
1
+ import{jsx as t,jsxs as e,Fragment as n}from"react/jsx-runtime";import{memo as o}from"react";import{match as i}from"ts-pattern";import{htmlHotspotComponent as s,isHtmlHotspotComponentSnapshot as a,isSceneEntityAddFabComponentSnapshot as c,isSceneEntityDeleteFabComponentSnapshot as l,isSceneEntityNavigationHotspotComponentSnapshot as p,isSceneEntitySelectHotspotComponentSnapshot as r,isToolMenuFabComponentSnapshot as h,sceneEntityAddFabComponent as m,sceneEntityDeleteFabComponent as d,sceneEntityNavigationHotspotComponent as y,sceneEntitySelectHotspotComponent as f,toolMenuFabComponent as I}from"#package/domain";import{AddEntityFabElement as w,DeleteEntityFabElement as u,NavigationHotspotElement as W,PhoenixEntityElementWithChildren as b,SelectionHotspotElement as V,ToolMenuFabElement as g,useRenderedComponents as O}from"#package/react-sdk";import{SceneEntityHtml as $}from"../../scene-html/index.js";import{SuspendedBoundary as H}from"../SuspendedBoundary.js";export const SceneEntityHtmlHotspots=o(o=>{let{id:k}=o;return t(n,{children:O({entityIds:[k],componentTypes:[m,s,d,f,I,y]}).map(n=>{let o={entityId:k,showWhen:n.state.showWhen},s={offsetX:n.state.offsetX,offsetY:n.state.offsetY,offsetZ:n.state.offsetZ,screenOffsetHorizontal:n.state.screenOffsetHorizontal,screenOffsetVertical:n.state.screenOffsetVertical},m={polarAngleLimits:n.state.polarAngleLimits,azimuthAngleLimits:n.state.azimuthAngleLimits,distanceLimits:n.state.distanceLimits,minInteractiveOpacity:n.state.minInteractiveOpacity},d={hideWhileDragging:n.state.hideWhileDragging,occlude:n.state.occlude};return i(n).when(c,e=>t(H,{children:t($,{...o,...s,...m,...d,showWhen:e.state.showWhen??["selected"],controlHotspot:!0,children:t(w,{entityId:k,instanceNames:e.state.instanceNames,fixableViolations:e.state.hiddenViolations,icon:e.state.icon,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover",label:e.state.label,skipMenuWhenOnlyOne:e.state.skipMenuWhenOnlyOne,hideWhenNone:e.state.hideWhenNone})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(l,e=>t(H,{children:t($,{...o,...s,...m,...d,showWhen:e.state.showWhen??["selected"],controlHotspot:!0,children:t(u,{entityId:k,fixableViolations:e.state.hiddenViolations,icon:e.state.icon,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover",label:e.state.label})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(r,e=>t(H,{children:t($,{...o,...s,...m,...d,showWhen:e.state.showWhen??["unselected"],controlHotspot:!1,children:t(V,{entityId:k,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover"})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(p,e=>t(H,{children:t($,{...o,...s,...m,...d,showWhen:e.state.showWhen??["unselected"],controlHotspot:!1,children:t(W,{entityId:k,navigationState:e.state.navigationState,pushToStack:e.state.pushToStack,canStackOnto:e.state.canStackOnto,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover"})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(h,e=>t(H,{children:t($,{...o,...s,...m,...d,showWhen:e.state.showWhen??["unselected"],controlHotspot:!1,children:t(g,{entityId:k,options:e.state.options,icon:e.state.icon,title:e.state.title,tooltipVisibility:e.state.tooltipVisibility??"on-hover"})})},`${e.componentInstance.componentType.name}-${e.componentInstance.instanceName}`)).when(a,n=>t(H,{children:e($,{...o,...s,...m,...d,controlHotspot:n.state.controlHotspot,pointerEvents:n.state.inert?"none":"auto",children:[n.state.node,n.state.name&&t(b,{kind:n.state.name,entityId:k})]})},`${n.componentInstance.componentType.name}-${n.componentInstance.instanceName}`)).otherwise(()=>null)})})});
@@ -0,0 +1,2 @@
1
+ export { useMeasurements, type UseMeasurements, type UseMeasurementsOptions, type UseMeasurementsResult, } from './use-measurements.js';
2
+ export { useAssistantPanel, type UseAssistantPanel, type UseAssistantPanelResult } from './use-assistant-panel.js';
@@ -0,0 +1 @@
1
+ export{useMeasurements}from"./use-measurements.js";export{useAssistantPanel}from"./use-assistant-panel.js";
@@ -0,0 +1,18 @@
1
+ /**
2
+ * What a project layout needs to open and close the assistant panel.
3
+ * - `available`: whether the spec has an `assistant`; the built-in assistant button renders nothing otherwise.
4
+ * - `open` and `setOpen`: whether the panel is open, and a function that opens or closes it.
5
+ * - `hasUnreadReply`: whether the assistant replied while the panel was closed.
6
+ */
7
+ export interface UseAssistantPanelResult {
8
+ readonly available: boolean;
9
+ readonly open: boolean;
10
+ readonly hasUnreadReply: boolean;
11
+ readonly setOpen: (open: boolean) => void;
12
+ }
13
+ export type UseAssistantPanel = () => UseAssistantPanelResult;
14
+ /**
15
+ * Hook to open and close the assistant panel, as the built-in toolbar's assistant button does. The panel itself
16
+ * renders only inside `LayoutSlots.DesktopSidebar`, so a layout without it has no panel to open.
17
+ */
18
+ export declare const useAssistantPanel: UseAssistantPanel;
@@ -0,0 +1 @@
1
+ import{useMemo as e}from"react";import{useEagerObservableValue as t,useSpecAssistant as a}from"#package/react-sdk";import{useConfigurator as r}from"../application-runtime/index.js";export const useAssistantPanel=()=>{let{assistantSystem:n}=r(),p=a(),{open:i,hasUnreadReply:o}=t(n.panel$);return e(()=>({available:null!=p,open:i,hasUnreadReply:o,setOpen:n.setOpen}),[p,i,o,n])};
@@ -0,0 +1,35 @@
1
+ import { type DimensionUnit } from '#package/domain';
2
+ export interface UseMeasurementsOptions {
3
+ /**
4
+ * Whether the dimension-indicator switch is offered, overriding `applicationConfig.indicatorSwitch`; the
5
+ * `showIndicatorSwitch` prop of the built-in measurements button
6
+ */
7
+ readonly showIndicatorSwitch?: boolean;
8
+ }
9
+ /**
10
+ * What a project layout needs to offer the measurement settings.
11
+ * - `units`: the units the spec's dimension configuration offers; with one there is nothing to choose.
12
+ * - `unit` and `setUnit`: the unit dimensions are shown in, and a function that changes it and pushes the
13
+ * analytics event of the built-in unit buttons.
14
+ * - `hasIndicatorSwitch`: whether the dimension indicators can be switched on and off (`showIndicatorSwitch`,
15
+ * else `applicationConfig.indicatorSwitch`, else `true`).
16
+ * - `indicatorsShown` and `toggleIndicators`: whether the dimension indicators show in the scene, and a function
17
+ * that switches them and pushes the analytics event of the built-in switch.
18
+ * - `available`: whether there is anything to set, more than one unit or the indicator switch; the built-in
19
+ * measurements button renders nothing otherwise.
20
+ */
21
+ export interface UseMeasurementsResult {
22
+ readonly units: readonly DimensionUnit[];
23
+ readonly unit: DimensionUnit;
24
+ readonly setUnit: (unit: DimensionUnit) => void;
25
+ readonly hasIndicatorSwitch: boolean;
26
+ readonly indicatorsShown: boolean;
27
+ readonly toggleIndicators: () => void;
28
+ readonly available: boolean;
29
+ }
30
+ export type UseMeasurements = (options?: UseMeasurementsOptions) => UseMeasurementsResult;
31
+ /**
32
+ * Hook to read and change the measurement settings, the unit of dimensions and the dimension indicators in the
33
+ * scene, as the built-in toolbar's measurements button does. It does not check read mode.
34
+ */
35
+ export declare const useMeasurements: UseMeasurements;
@@ -0,0 +1 @@
1
+ import{useObservableEagerState as o}from"observable-hooks";import{useCallback as i,useMemo as t}from"react";import{applicationConfigComponent as e}from"#package/domain";import{FrontendAnalyticsFactory as n,useAnalyticsService as r,useDimensionConfig as a,useDimensionState as s,useDimensions as m,useFirstRootComponent as c}from"#package/react-sdk";import{useConfigurator as p}from"../application-runtime/index.js";export const useMeasurements=(l={})=>{let{showIndicatorSwitch:d}=l,u=r(),{canvasSystem:g}=p(),h=c(e),{availableDimensions:f}=a(),{unit:k}=s(),{setGlobalUnit:b}=m(),D=o(g.dimensionIndicatorShown$),I=d??h?.state.indicatorSwitch??!0,v=i(o=>{u.push(n.GlobalDimensionsButtonClicked(o)),b(o)},[u,b]),w=i(()=>{u.push(n.DimensionIndicatorsToggled()),g.toggleDimensionIndicator()},[u,g]);return t(()=>({units:f,unit:k,setUnit:v,hasIndicatorSwitch:I,indicatorsShown:D,toggleIndicators:w,available:f.length>1||I}),[f,k,v,I,D,w])};
@@ -3,9 +3,15 @@ export interface AssistantToolChipsProps {
3
3
  readonly tools: readonly AssistantToolItem[];
4
4
  /** True while the reply runs and this row is its newest block: the assistant is at work on it. */
5
5
  readonly isActive: boolean;
6
+ /** True when the row offers Undo: no reply runs, and the step of the undo history the configuration is at is one of its changes. */
7
+ readonly canUndo: boolean;
8
+ /** Undoes the changes of the given tool calls while one of them is the step the configuration is at. */
9
+ readonly onUndo: (toolCallIds: ReadonlySet<string>) => void;
6
10
  }
7
11
  /**
8
12
  * A row of notes on what the assistant did in a reply, one per tool call. A click on a note logs
9
- * the input and the result of its call to the console.
13
+ * the input and the result of its call to the console. While one of the row's changes is the step
14
+ * of the undo history the configuration is at, an Undo after the notes takes the row's changes
15
+ * back, up to a change the user made in between.
10
16
  */
11
- export declare const AssistantToolChips: import("react").MemoExoticComponent<({ tools, isActive }: AssistantToolChipsProps) => import("react/jsx-runtime").JSX.Element>;
17
+ export declare const AssistantToolChips: import("react").MemoExoticComponent<({ tools, isActive, canUndo, onUndo }: AssistantToolChipsProps) => import("react/jsx-runtime").JSX.Element>;
@@ -1 +1 @@
1
- import{jsx as t,jsxs as e}from"react/jsx-runtime";import{Tooltip as a,styled as i}from"@mui/material";import{memo as s,useCallback as o}from"react";import{match as n}from"ts-pattern";import{useLocalizable as r}from"#package/react-sdk";import{PhxIcon as l}from"#package/ui-sdk";import{AssistantPanelName as d}from"./theme.js";let m={id:"sdk.assistant.tool.updateDesign.label",message:"Update design"},c={id:"sdk.assistant.tool.readDesign.label",message:"Read design"},p={id:"sdk.assistant.tool.mistake.hint",message:"The assistant made a mistake."},h={id:"sdk.assistant.tool.cancelled.hint",message:"Stopped before it finished."},g={id:"sdk.assistant.tool.noResult.hint",message:"The result of this step was lost. It may or may not have been done."},f={id:"sdk.assistant.tool.toolBudget.hint",message:"Not done: the assistant reached its limit of steps for one message."},u=i("div",{name:d,slot:"chips"})(({theme:{palette:t,spacing:e,typography:a}})=>({...a.caption,alignItems:"start",color:t.text.secondary,display:"grid",gap:e(.75),gridTemplateColumns:"min-content minmax(0, 1fr)"})),k=i("span",{name:d,slot:"activity"})(({theme:{typography:t}})=>({blockSize:`calc(${t.caption.lineHeight} * 1em)`,display:"grid",placeItems:"center"})),x=i(l,{name:d,slot:"activityIcon"})({fontSize:14,'[data-chips="active"] &':{animation:"phx-assistant-turn 2.4s linear infinite","@media (prefers-reduced-motion: reduce)":{animation:"none"}},"@keyframes phx-assistant-turn":{to:{rotate:"360deg"}}}),w=i("span",{name:d,slot:"chip"})(({theme:{palette:t,spacing:e}})=>({cursor:"default",display:"inline-block",whiteSpace:"nowrap","&:not(:last-child)::after":{color:t.text.secondary,content:'"\xb7"',display:"inline-block",marginInline:e(.75),textDecoration:"none"},'&[data-chip="failed"]':{color:t.error.main},'&[data-chip="flawed"]':{textDecoration:"line-through",textDecorationColor:t.error.main}})),y=s(({tool:e})=>{let{chip:i,input:s,result:l}=e,d=r(m),u=r(c),k=r(p),x=r(h),y=r(g),b=r(f),v=n(i.label).with({kind:"text"},({text:t})=>t).with({kind:"updateDesign"},()=>d).with({kind:"readDesign"},()=>u).exhaustive(),C=o(()=>{console.info(`Assistant tool call "${v}"`,{input:s,result:l})},[s,v,l]);return t(a,{title:n(i).with({errorCode:"cancelled"},()=>x).with({errorCode:"no_result"},()=>y).with({errorCode:"tool_budget"},()=>b).with({state:"failed"},{state:"flawed"},()=>k).otherwise(()=>""),placement:"top-start",children:t(w,{onClick:C,"data-chip":i.state,children:v})})});export const AssistantToolChips=s(({tools:a,isActive:i})=>e(u,{"data-chips":i?"active":"done","aria-busy":i,children:[t(k,{children:t(x,{name:"Gear"})}),t("div",{children:a.map(e=>t(y,{tool:e},e.id))})]}));
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{ButtonBase as i,Tooltip as a,styled as n}from"@mui/material";import{memo as o,useCallback as s}from"react";import{match as r}from"ts-pattern";import{useLocalizable as d}from"#package/react-sdk";import{PhxIcon as l}from"#package/ui-sdk";import{AssistantPanelName as m}from"./theme.js";let c={id:"sdk.assistant.tool.updateDesign.label",message:"Update design"},p={id:"sdk.assistant.tool.readDesign.label",message:"Read design"},h={id:"sdk.assistant.tool.mistake.hint",message:"The assistant made a mistake."},u={id:"sdk.assistant.tool.cancelled.hint",message:"Stopped before it finished."},f={id:"sdk.assistant.tool.noResult.hint",message:"The result of this step was lost. It may or may not have been done."},g={id:"sdk.assistant.tool.toolBudget.hint",message:"Not done: the assistant reached its limit of steps for one message."},k={id:"sdk.assistant.tool.undo.label",message:"Undo"},x=n("div",{name:m,slot:"chips"})(({theme:{palette:e,spacing:t,typography:i}})=>({...i.caption,alignItems:"start",color:e.text.secondary,display:"grid",gap:t(.75),gridTemplateColumns:"min-content minmax(0, 1fr)"})),y=n("span",{name:m,slot:"activity"})(({theme:{typography:e}})=>({blockSize:`calc(${e.caption.lineHeight} * 1em)`,display:"grid",placeItems:"center"})),w=n(l,{name:m,slot:"activityIcon"})({fontSize:14,'[data-chips="active"] &':{animation:"phx-assistant-turn 2.4s linear infinite","@media (prefers-reduced-motion: reduce)":{animation:"none"}},"@keyframes phx-assistant-turn":{to:{rotate:"360deg"}}}),b=n("span",{name:m,slot:"chip"})(({theme:{palette:e,spacing:t}})=>({cursor:"default",display:"inline-block",whiteSpace:"nowrap","&:not(:last-of-type)::after":{color:e.text.secondary,content:'"\xb7"',display:"inline-block",marginInline:t(.75),textDecoration:"none"},'&[data-chip="failed"]':{color:e.error.main},'&[data-chip="flawed"]':{textDecoration:"line-through",textDecorationColor:e.error.main}})),v=n(i,{name:m,slot:"undoButton"})(({theme:{palette:e,shape:t,spacing:i}})=>({alignItems:"center",animation:"phx-assistant-undo-in 150ms ease-out",borderRadius:t.borderRadius,color:e.primary.main,display:"inline-flex",font:"inherit",gap:i(.5),marginInlineStart:i(1),verticalAlign:"top","&:hover":{textDecoration:"underline"},"@media (prefers-reduced-motion: reduce)":{animation:"none"},"@keyframes phx-assistant-undo-in":{from:{opacity:0}}})),C=o(({tool:t})=>{let{chip:i,input:n,result:o}=t,l=d(c),m=d(p),k=d(h),x=d(u),y=d(f),w=d(g),v=r(i.label).with({kind:"text"},({text:e})=>e).with({kind:"updateDesign"},()=>l).with({kind:"readDesign"},()=>m).exhaustive(),C=s(()=>{console.info(`Assistant tool call "${v}"`,{input:n,result:o})},[n,v,o]);return e(a,{title:r(i).with({errorCode:"cancelled"},()=>x).with({errorCode:"no_result"},()=>y).with({errorCode:"tool_budget"},()=>w).with({state:"failed"},{state:"flawed"},()=>k).otherwise(()=>""),placement:"top-start",children:e(b,{onClick:C,"data-chip":i.state,children:v})})});export const AssistantToolChips=o(({tools:i,isActive:a,canUndo:n,onUndo:o})=>{let r=d(k),m=s(()=>{o(new Set(i.map(({id:e})=>e)))},[o,i]);return t(x,{"data-chips":a?"active":"done","aria-busy":a,children:[e(y,{children:e(w,{name:"Gear"})}),t("div",{children:[i.map(t=>e(C,{tool:t},t.id)),n&&t(v,{onClick:m,children:[e(l,{name:"ArrowCounterClockwise",fontSize:"inherit"}),r]})]})]})});
@@ -1,7 +1,12 @@
1
+ import type { AssistantFormsVisibility } from './thread-items.js';
1
2
  export interface AssistantMarkdownProps {
2
3
  readonly markdown: string;
3
4
  /** True while the text is still arriving, so markup the model has not finished is completed. */
4
5
  readonly isStreaming: boolean;
6
+ readonly forms: AssistantFormsVisibility;
5
7
  }
6
- /** Assistant text of the thread: Markdown with lists, tables, links and code, without a bubble. */
7
- export declare const AssistantMarkdown: import("react").MemoExoticComponent<({ markdown, isStreaming }: AssistantMarkdownProps) => import("react/jsx-runtime").JSX.Element>;
8
+ /**
9
+ * Assistant text of the thread: Markdown with lists, tables, alerts, links, entity links, references, images, code and forms,
10
+ * without a bubble. A form fence the model is still writing shows a placeholder.
11
+ */
12
+ export declare const AssistantMarkdown: import("react").MemoExoticComponent<({ markdown, isStreaming, forms }: AssistantMarkdownProps) => import("react/jsx-runtime").JSX.Element>;
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{styled as e}from"@mui/material";import{memo as o}from"react";import a from"react-markdown";import i from"remark-gfm";import{completeStreamedMarkdown as n}from"./streamed-markdown.js";import{AssistantPanelName as t}from"./theme.js";let l=e("div",{name:t,slot:"assistantMessage"})(({theme:{palette:r,shape:e,spacing:o,typography:a}})=>({overflowWrap:"anywhere","& > :first-child":{marginBlockStart:0},"& > :last-child":{marginBlockEnd:0},"p, ul, ol, pre, blockquote":{marginBlock:o(1)},"h1, h2, h3, h4, h5, h6":{...a.subtitle2,marginBlock:o(1.5,.5)},"ul, ol":{paddingInlineStart:o(2.5)},a:{color:r.primary.main},code:{background:r.action.hover,borderRadius:e.borderRadius/2,fontFamily:"ui-monospace, Menlo, monospace",fontSize:"0.9em",paddingInline:o(.5)},pre:{background:r.action.hover,borderRadius:e.borderRadius,overflowX:"auto",padding:o(1),code:{background:"none",padding:0}},blockquote:{borderInlineStart:`2px solid ${r.divider}`,color:r.text.secondary,marginInline:0,paddingInlineStart:o(1.5)},"th, td":{borderBlockEnd:`1px solid ${r.divider}`,padding:o(.5,1),textAlign:"start",verticalAlign:"top"}})),d=e("div")({overflowX:"auto",table:{borderCollapse:"collapse",inlineSize:"100%"}}),m={a:({node:e,children:o,...a})=>r("a",{...a,target:"_blank",rel:"noopener noreferrer",children:o}),table:({node:e,children:o,...a})=>r(d,{children:r("table",{...a,children:o})})},s=[i],c=["img"];export const AssistantMarkdown=o(({markdown:e,isStreaming:o})=>r(l,{children:r(a,{components:m,remarkPlugins:s,disallowedElements:c,children:o?n(e):e})}));
1
+ import{jsx as e,Fragment as r}from"react/jsx-runtime";import{styled as n}from"@mui/material";import{createContext as i,memo as o,useContext as t,useMemo as l}from"react";import a,{defaultUrlTransform as d}from"react-markdown";import m from"remark-gfm";import{AssistantAlert as s,isAlertKind as c,remarkAlerts as u}from"./alert/index.js";import{AssistantEntityLink as p}from"./entity-link/index.js";import{AssistantForm as h}from"./form/index.js";import{AssistantReferenceLink as f,isAssistantLinkHref as g,parseAssistantLinkTarget as k}from"./reference-link/index.js";import{AssistantImage as b}from"./resource-image/index.js";import{completeStreamedMarkdown as v,hasOpenFence as x}from"./streamed-markdown.js";import{AssistantPanelName as y}from"./theme.js";let j=n("div",{name:y,slot:"assistantMessage"})(({theme:{palette:e,shape:r,spacing:n,typography:i}})=>({overflowWrap:"anywhere","& > :first-child":{marginBlockStart:0},"& > :last-child":{marginBlockEnd:0},"p, ul, ol, pre, blockquote":{marginBlock:n(1)},"h1, h2, h3, h4, h5, h6":{...i.subtitle2,marginBlock:n(1.5,.5)},"ul, ol":{paddingInlineStart:n(2.5)},a:{color:e.primary.main},code:{background:e.action.hover,borderRadius:r.borderRadius/2,fontFamily:"ui-monospace, Menlo, monospace",fontSize:"0.9em",paddingInline:n(.5)},pre:{background:e.action.hover,borderRadius:r.borderRadius,overflowX:"auto",padding:n(1),code:{background:"none",padding:0}},blockquote:{borderInlineStart:`2px solid ${e.divider}`,color:e.text.secondary,marginInline:0,paddingInlineStart:n(1.5)},"th, td":{borderBlockEnd:`1px solid ${e.divider}`,padding:n(.5,1),textAlign:"start",verticalAlign:"top"}})),w=n("div")({overflowX:"auto",table:{borderCollapse:"collapse",inlineSize:"100%"}}),S=i({forms:"hidden",openFenceEnd:void 0,isStreaming:!1}),A=({source:r,end:n})=>{let{forms:i,openFenceEnd:o,isStreaming:l}=t(S);return"hidden"===i?null:null!=n&&n===o?l?e(h,{source:r,status:"writing"}):null:e(h,{source:r,status:"disabled"===i?"waiting":"ready"})},B={a:({node:n,children:i,href:o,...t})=>{if(null==o||!g(o))return e("a",{...t,href:o,target:"_blank",rel:"noopener noreferrer",children:i});let l=k(o);return null==l?e(r,{children:i}):"entity"===l.kind?e(p,{id:l.id,children:i}):e(f,{target:l,children:i})},blockquote:({node:r,children:n,...i})=>{let o=r?.properties.dataAlert;return c(o)?e(s,{kind:o,children:n}):e("blockquote",{...i,children:n})},img:({src:r,alt:n})=>e(b,{src:r,alt:n}),pre:({node:r,children:n,...i})=>{let o=(e=>{let[r]=e?.children??[];if(r?.type!=="element"||"code"!==r.tagName)return;let{className:n}=r.properties;if(Array.isArray(n)&&n.includes("language-form"))return r.children.map(e=>"text"===e.type?e.value:"").join("")})(r);return null==o?e("pre",{...i,children:n}):e(A,{source:o,end:r?.position?.end.offset})},table:({node:r,children:n,...i})=>e(w,{children:e("table",{...i,children:n})})},I=[m,u],q=e=>g(e)?e:d(e);export const AssistantMarkdown=o(({markdown:r,isStreaming:n,forms:i})=>{let o=n?v(r):r,t=x(r)?o.length:void 0,d=l(()=>({forms:i,openFenceEnd:t,isStreaming:n}),[i,t,n]);return e(j,{children:e(S.Provider,{value:d,children:e(a,{components:B,remarkPlugins:I,urlTransform:q,children:o})})})});
@@ -1 +1 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import{IconButton as s,Tooltip as a,Typography as i,styled as n}from"@mui/material";import{useCallback as r}from"react";import{useLocalizable as o}from"#package/react-sdk";import{PhxIcon as l}from"#package/ui-sdk";import{useConfigurator as m}from"../../application-runtime/index.js";import{AssistantComposer as d}from"./AssistantComposer.js";import{AssistantThread as p}from"./AssistantThread.js";import{AssistantPanelName as c}from"./theme.js";import{useIsAssistantPanelOpen as u}from"./use-is-assistant-panel-open.js";let b={id:"sdk.assistant.panel.title",message:"Assistant"},f={id:"sdk.assistant.panel.close.label",message:"Close assistant"};export const ASSISTANT_PANEL_SLOT="slot[assistant]";let g=n("section",{name:c,slot:"root"})(({theme:{palette:e}})=>({background:`var(--phx-sidebar-background, ${e.background.paper})`,border:"var(--phx-sidebar-border, 0)",borderRadius:"inherit",display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gridTemplateRows:"min-content minmax(0, 1fr) min-content",inset:0,overflow:"hidden",position:"absolute",zIndex:1})),h=n("header",{name:c,slot:"header"})(({theme:{palette:e,spacing:t}})=>({alignItems:"center",borderBlockEnd:`1px solid ${e.divider}`,display:"flex",gap:t(1),justifyContent:"space-between",paddingBlock:t(1),paddingInline:`var(--phx-sidebar-padding, ${t(2)}) ${t(1)}`})),x=n(i,{name:c,slot:"title"})({fontWeight:600}),k=n(s,{name:c,slot:"closeButton"})({}),j=e=>{e.target instanceof Element&&e.target.closest("button")&&e.preventDefault()};export const AssistantPanel=()=>{let{assistantSystem:s}=m(),i=u(),n=o(b),c=o(f),v=r(()=>{s.setOpen(!1)},[s]);return i?t(g,{"data-sidebar":"slot[assistant]","aria-label":n,onMouseDown:j,children:[t(h,{children:[e(x,{variant:"subtitle1",component:"h2",children:n}),e(a,{title:c,placement:"top",children:e(k,{size:"small","aria-label":c,onClick:v,children:e(l,{name:"X"})})})]}),e(p,{}),e(d,{})]}):null};
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{IconButton as s,Tooltip as a,Typography as n,styled as i}from"@mui/material";import{useCallback as r}from"react";import{useLocalizable as o}from"#package/react-sdk";import{PhxIcon as l}from"#package/ui-sdk";import{useConfigurator as m}from"../../application-runtime/index.js";import{AssistantComposer as d}from"./AssistantComposer.js";import{AssistantThread as p}from"./AssistantThread.js";import{AssistantPanelName as c}from"./theme.js";import{useIsAssistantPanelOpen as u}from"./use-is-assistant-panel-open.js";let b={id:"sdk.assistant.panel.title",message:"Assistant"},f={id:"sdk.assistant.panel.close.label",message:"Close assistant"};export const ASSISTANT_PANEL_SLOT="slot[assistant]";let g=i("section",{name:c,slot:"root"})(({theme:{palette:e}})=>({background:`var(--phx-sidebar-background, ${e.background.paper})`,border:"var(--phx-sidebar-border, 0)",borderRadius:"inherit",display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gridTemplateRows:"min-content minmax(0, 1fr) min-content",inset:0,overflow:"hidden",position:"absolute",zIndex:1})),h=i("header",{name:c,slot:"header"})(({theme:{palette:e,spacing:t}})=>({alignItems:"center",borderBlockEnd:`1px solid ${e.divider}`,display:"flex",gap:t(1),justifyContent:"space-between",paddingBlock:t(1),paddingInline:`var(--phx-sidebar-padding, ${t(2)}) ${t(1)}`})),x=i(n,{name:c,slot:"title"})({fontWeight:600}),k=i(s,{name:c,slot:"closeButton"})({}),j=e=>{e.target instanceof Element&&e.target.closest('button, [role="button"]')&&e.preventDefault()};export const AssistantPanel=()=>{let{assistantSystem:s}=m(),n=u(),i=o(b),c=o(f),v=r(()=>{s.setOpen(!1)},[s]);return n?t(g,{"data-sidebar":"slot[assistant]","aria-label":i,onMouseDown:j,children:[t(h,{children:[e(x,{variant:"subtitle1",component:"h2",children:i}),e(a,{title:c,placement:"top",children:e(k,{size:"small","aria-label":c,onClick:v,children:e(l,{name:"X"})})})]}),e(p,{}),e(d,{})]}):null};
@@ -1 +1 @@
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
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Trans as i}from"@lingui/react";import{Button as t,styled as s}from"@mui/material";import{useCallback as r,useMemo as n}from"react";import{match as o}from"ts-pattern";import{useEagerObservableValue as l}from"#package/react-sdk";import{PhxIcon as d}from"#package/ui-sdk";import{useConfigurator as m}from"../../application-runtime/index.js";import{AssistantToolChips as c}from"./AssistantChips.js";import{AssistantMarkdown as h}from"./AssistantMarkdown.js";import{describeAssistantFailure as p}from"./assistant-failure.js";import{EntityLinkSelectionProvider as g,useCreateEntityLinkSelection as u}from"./entity-link/index.js";import{AssistantPanelName as f}from"./theme.js";import{buildEarlierThreadItems as k,buildThreadView as v}from"./thread-items.js";import{useFollowStream as b}from"./use-follow-stream.js";let w=s("div",{name:f,slot:"thread"})({display:"grid",position:"relative"}),x=s("div",{name:f,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"}})),y=s("div",{name:f,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"})),T=s("div",{name:f,slot:"greeting"})({}),C=s("div",{name:f,slot:"status"})(({theme:{palette:e,typography:a}})=>({...a.caption,color:e.text.secondary})),S=s("div",{name:f,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}})),j=s(t,{name:f,slot:"earlierButton"})({alignSelf:"center"}),I=s("div",{name:f,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)})),B=s(t,{name:f,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}})),E=({item:a,isActive:t,undoableToolCallId:s,onUndo:r})=>o(a).with({kind:"user"},({text:a})=>e(y,{children:a})).with({kind:"text"},({markdown:a,isStreaming:i,forms:t})=>e(h,{markdown:a,isStreaming:i,forms:t})).with({kind:"tools"},({tools:a})=>e(c,{tools:a,isActive:t,canUndo:a.some(({id:e})=>e===s),onUndo:r})).with({kind:"separator"},()=>e(S,{role:"separator",children:e(i,{id:"sdk.assistant.thread.earlierSummarized",message:"Earlier conversation summarized"})})).exhaustive();export const AssistantThread=()=>{let{assistantSystem:s}=m(),c=l(s.chat$),{messages:h,isLoading:f,isResuming:y,earlierThreads:S}=c,A=l(s.undoTipToolCallId$),R=f?void 0:A,{items:L,isThinking:z}=n(()=>v(h,f,y),[h,f,y]),$=n(()=>k(S),[S]),U=n(()=>L.filter(({kind:e})=>"user"===e).length,[L]),D=c.error?p(c.failedStatus):void 0,{scrollerRef:M,hasUnseenContent:W,handleScroll:q,scrollToEnd:H}=b(n(()=>({messages:h,isThinking:z,isResuming:y,failure:D?.kind}),[h,z,y,D?.kind]),U),N=u(),Y=r(e=>{e.target instanceof Element&&e.target.closest('a, button, input, label, select, textarea, [role="button"], [role="tooltip"]')||window.getSelection()?.isCollapsed!==!1&&N.release()},[N]),F=!c.isLoaded&&0===$.length&&!y&&!D;return a(w,{children:[e(g,{selection:N,children:a(x,{ref:M,onScroll:q,onClick:Y,role:"log","aria-live":"polite",children:[c.isLoaded&&0===L.length&&0===$.length&&!f&&!y&&!D&&e(T,{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."})}),F&&e(C,{children:e(i,{id:"sdk.assistant.thread.loading",message:"Loading the conversation…"})}),c.isLoadingEarlierThread&&e(C,{children:e(i,{id:"sdk.assistant.thread.loadingEarlier",message:"Loading the earlier conversation…"})}),c.hasEarlierThread&&!c.isLoadingEarlierThread&&e(j,{size:"small",color:"inherit",onClick:s.loadEarlierThread,children:e(i,{id:"sdk.assistant.thread.showEarlier.label",message:"Show earlier conversation"})}),$.map(a=>e(E,{item:a,isActive:!1,undoableToolCallId:R,onUndo:s.undoToolCalls},a.id)),L.map(a=>e(E,{item:a,isActive:f&&a===L.at(-1),undoableToolCallId:R,onUndo:s.undoToolCalls},a.id)),y&&e(C,{children:e(i,{id:"sdk.assistant.thread.resuming",message:"Resuming the conversation…"})}),z&&e(C,{children:e(i,{id:"sdk.assistant.thread.thinking",message:"Thinking…"})}),D&&a(I,{role:"alert",children:[e("span",{children:o(D.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()}),D.canRetry&&e(t,{size:"small",variant:"outlined",color:"inherit",onClick:s.reloadThread,children:e(i,{id:"sdk.assistant.failure.retry.label",message:"Try again"})})]})]})}),W&&e(B,{size:"small",onClick:H,endIcon:e(d,{name:"CaretDown"}),children:e(i,{id:"sdk.assistant.thread.newReply.label",message:"New reply"})})]})};
@@ -0,0 +1,8 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { AlertKind } from './remark-alerts.js';
3
+ export interface AssistantAlertProps {
4
+ readonly kind: AlertKind;
5
+ readonly children: ReactNode;
6
+ }
7
+ /** A GitHub alert in a reply: its content as Markdown, marked by the colour and icon of its kind. */
8
+ export declare const AssistantAlert: import("react").MemoExoticComponent<({ kind, children }: AssistantAlertProps) => import("react/jsx-runtime").JSX.Element>;
@@ -0,0 +1 @@
1
+ import{jsx as r,jsxs as i}from"react/jsx-runtime";import{alpha as o,styled as t}from"@mui/material";import{memo as n}from"react";import{PhxIcon as a}from"#package/ui-sdk";import{AssistantPanelName as e}from"../theme.js";let l={note:{color:"info",icon:"Info"},tip:{color:"success",icon:"Lightbulb"},important:{color:"primary",icon:"WarningCircle"},warning:{color:"warning",icon:"Warning"},caution:{color:"error",icon:"XCircle"}},c=t("div",{name:e,slot:"alert"})(({theme:{palette:r,shape:i,spacing:t,typography:n}})=>({borderInlineStart:"3px solid",borderRadius:i.borderRadius,display:"grid",gap:t(1),gridTemplateColumns:"min-content minmax(0, 1fr)",marginBlock:t(1),padding:t(1,1.5),...Object.fromEntries(Object.entries(l).map(([i,{color:t}])=>[`&[data-alert="${i}"]`,{background:o(r[t].main,.08),borderInlineStartColor:r[t].main,"& > :first-child":{color:r[t].main}}])),"& > :last-child > :first-child":{marginBlockStart:0},"& > :last-child > :last-child":{marginBlockEnd:0},"& > :first-child":{blockSize:`calc(${n.body2.lineHeight} * 1em)`,display:"grid",placeItems:"center"}}));export const AssistantAlert=n(({kind:o,children:t})=>i(c,{role:"note","data-alert":o,children:[r("span",{children:r(a,{name:l[o].icon})}),r("div",{children:t})]}));
@@ -0,0 +1,2 @@
1
+ export { AssistantAlert } from './AssistantAlert.js';
2
+ export { isAlertKind, remarkAlerts } from './remark-alerts.js';
@@ -0,0 +1 @@
1
+ export{AssistantAlert}from"./AssistantAlert.js";export{isAlertKind,remarkAlerts}from"./remark-alerts.js";
@@ -0,0 +1,10 @@
1
+ import type { Root } from 'mdast';
2
+ /** The kinds of GitHub alerts a reply can write, each with its own colour and icon. */
3
+ export type AlertKind = 'note' | 'tip' | 'important' | 'warning' | 'caution';
4
+ export declare const isAlertKind: (value: unknown) => value is AlertKind;
5
+ /**
6
+ * Remark plugin for GitHub alerts: a blockquote whose first line is a marker such as `[!WARNING]`
7
+ * loses the marker and carries its kind as the `dataAlert` property (`data-alert` in the page), for the `blockquote` override to render as a
8
+ * callout. A blockquote with an unknown marker stays as it is.
9
+ */
10
+ export declare const remarkAlerts: () => (tree: Root) => void;
@@ -0,0 +1 @@
1
+ let e=["note","tip","important","warning","caution"],t=/^\[!([a-z]+)\][ \t]*(?:\n|$)/i;export const isAlertKind=t=>"string"==typeof t&&e.some(e=>e===t);let r=e=>{let[r]=e.children;if(r?.type!=="paragraph")return;let[n,l]=r.children;if(n?.type!=="text")return;let i=t.exec(n.value),a=i?.[1]?.toLowerCase();if(null==i||!isAlertKind(a))return;let o=n.value.slice(i[0].length),c=!i[0].endsWith("\n")&&l?.type==="break";if(i[0].endsWith("\n")||null==l||c)return""===o?r.children.splice(0,c?2:1):n.value=o,0===r.children.length&&e.children.shift(),a},n=e=>{for(let t of e){if("blockquote"===t.type){let e=r(t);if(null!=e){t.data={...t.data,hProperties:{...t.data?.hProperties,dataAlert:e}};continue}}"children"in t&&n(t.children)}};export const remarkAlerts=()=>e=>{n(e.children)};
@@ -0,0 +1,13 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type DomainEntityId } from '#package/domain';
3
+ export interface AssistantEntityLinkProps {
4
+ readonly id: DomainEntityId<string>;
5
+ /** The text the assistant gave the link; the id itself is never shown. */
6
+ readonly children: ReactNode;
7
+ }
8
+ /**
9
+ * An entity the assistant named in a reply, shown as its label. It follows the configurator live:
10
+ * a click selects the entity when the scene can select it, the link shows when the entity is
11
+ * selected or hovered in the scene, and it is muted once the entity is gone.
12
+ */
13
+ export declare const AssistantEntityLink: import("react").MemoExoticComponent<({ id, children }: AssistantEntityLinkProps) => import("react/jsx-runtime").JSX.Element>;
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{styled as t}from"@mui/material";import{memo as n,useCallback as i,useEffect as r,useRef as o}from"react";import{sceneEntitySelectHotspotComponent as a,selectableComponent as l}from"#package/domain";import{FrontendAnalyticsFactory as s,useDomain as c,useFirstRenderedComponent as d,useHoveredDomainEntityId as m,useRenderedSelector as u,useSelectEntity as p,useSelectedDomainEntityId as k,useStoreSelector as y}from"#package/react-sdk";import{assistantReferenceStyles as f}from"../reference-link/index.js";import{AssistantPanelName as g}from"../theme.js";import{useEntityLinkSelection as h}from"./entity-link-selection.js";import{resolveEntityLinkState as v}from"./entity-link-state.js";let b=t("span",{name:g,slot:"entityLink"})(e=>({...f(e),'&[data-entity-link="plain"], &[data-entity-link="missing"]':{cursor:"auto","&:hover":{background:"none"}},'&[data-selected="true"]':{textDecorationStyle:"solid"}})),S={interactive:void 0,plain:"plain",missing:"muted"},j=({kind:t,isSelected:n,children:i})=>e(b,{"data-entity-link":t,"data-reference":S[t],"data-selected":n,children:i}),x=({id:t,isSelected:n,children:u})=>{let{navigationSystem:k}=c(),y=d({entityIds:[t],componentTypes:[l]}),f=d({entityIds:[t],componentTypes:[a]}),{kind:g,canHover:S}=v({isSelectable:null!=y,isHoverDisabled:y?.state.hoverable===!1,hasSelectHotspot:null!=f}),x=m()===t,E=p(s.AssistantEntityLinkClicked),T=h(),D=i(()=>{T?.remember(t),E(t)},[t,T,E]),H=o(!1),L=i(()=>{S&&(H.current=!0,k.debouncedToggleHover(t))},[S,t,k]),I=i(()=>{H.current&&(H.current=!1,k.debouncedToggleHover(null))},[k]),A=i(e=>{"touch"!==e.pointerType&&L()},[L]),C=i(e=>{e.currentTarget.matches(":focus-visible")&&L()},[L]),P=i(e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),D())},[D]);return(r(()=>I,[S,I,t]),"interactive"!==g)?e(j,{kind:g,isSelected:n,children:u}):e(b,{role:"button",tabIndex:0,"data-entity-link":g,"data-selected":n,"data-hovered":S&&x,"aria-current":n?"true":void 0,onClick:D,onKeyDown:P,onPointerEnter:A,onPointerLeave:I,onFocus:C,onBlur:I,children:u})};export const AssistantEntityLink=n(({id:t,children:n})=>{let{domain:i}=c(),r=y(e=>null!=i.getEntity(t,e.state),[i,t]),o=u(e=>null!=i.getEntity(t,e.state),[i,t]),a=k()===t;return r?o?e(x,{id:t,isSelected:a,children:n}):e(j,{kind:"plain",isSelected:a,children:n}):e(j,{kind:"missing",isSelected:!1,children:n})});
@@ -0,0 +1,22 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { DomainEntityId } from '#package/domain';
3
+ /**
4
+ * The selection an entity link made, held for the thread the links are in. A click elsewhere in
5
+ * the thread takes back what a link selected, so a user can look at an entity and let it go again.
6
+ * A selection made anywhere else, in the scene, a hotspot or the sidebar, is never taken back.
7
+ */
8
+ export interface EntityLinkSelection {
9
+ /** Records that a link is selecting this entity; call it before the select update is committed. */
10
+ readonly remember: (id: DomainEntityId<string>) => void;
11
+ /** Deselects the entity a link selected, when it is still the selected one, and forgets it. */
12
+ readonly release: () => void;
13
+ }
14
+ /** Creates the selection the entity links of one thread share; the thread provides it to them. */
15
+ export declare const useCreateEntityLinkSelection: () => EntityLinkSelection;
16
+ export interface EntityLinkSelectionProviderProps {
17
+ readonly selection: EntityLinkSelection;
18
+ readonly children: ReactNode;
19
+ }
20
+ export declare const EntityLinkSelectionProvider: ({ selection, children }: EntityLinkSelectionProviderProps) => import("react/jsx-runtime").JSX.Element;
21
+ /** The selection of the thread the link is in, or `null` for a link rendered outside a thread. */
22
+ export declare const useEntityLinkSelection: () => EntityLinkSelection | null;
@@ -0,0 +1 @@
1
+ import{jsx as t}from"react/jsx-runtime";import{createContext as e,useCallback as r,useContext as n,useEffect as l,useMemo as c,useRef as i}from"react";import{useDeselect as o,useDomain as u,useSelectedDomainEntityId as a}from"#package/react-sdk";let s=e(null);export const useCreateEntityLinkSelection=()=>{let{storeSystem:t,navigationSystem:e}=u(),n=o(),s=a(),m=i(null);l(()=>{s!==m.current&&(m.current=null)},[s]);let p=r(t=>{m.current=t},[]),S=r(()=>{let r=m.current;m.current=null,null!=r&&e.getActiveSelectionState(t.stateSlices.committed.value.state)===r&&n()},[n,e,t]);return c(()=>({remember:p,release:S}),[p,S])};export const EntityLinkSelectionProvider=({selection:e,children:r})=>t(s.Provider,{value:e,children:r});export const useEntityLinkSelection=()=>n(s);