@salsita-ai/sdk 0.50.0-develop.d87b28256e → 0.50.0-develop.d96df76afa
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.
- package/dist/application-spec/errors/diagnostic-codes.d.ts +9 -0
- package/dist/application-spec/errors/diagnostic-codes.js +1 -1
- package/dist/application-spec/errors/diagnostic-messages.d.ts +10 -1
- package/dist/application-spec/errors/diagnostic-messages.js +1 -1
- package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
- package/dist/application-spec/generate-application/code/templates/application-types.js +6 -6
- package/dist/application-spec/generate-application/code/templates/common/doc-comment.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/common/doc-comment.js +1 -0
- package/dist/application-spec/generate-application/code/templates/configurator-globals.d.ts +2 -1
- package/dist/application-spec/generate-application/code/templates/configurator-globals.js +19 -6
- package/dist/application-spec/generate-application/code/templates/global-definition/generate-action-types.js +7 -7
- package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.d.ts +12 -0
- package/dist/application-spec/generate-application/code/templates/global-definition/generate-assistant-form-element-types.js +7 -0
- package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.js +24 -22
- package/dist/application-spec/generate-application/code/templates/global-definition/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/global-definition/index.js +1 -1
- package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +2 -1
- package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
- package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +33 -3
- package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
- package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.d.ts +9 -0
- package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-form-elements.js +1 -0
- package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +4 -1
- package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
- package/dist/configurator/app-loader-content/DefaultAppLoaderContent.d.ts +2 -0
- package/dist/configurator/app-loader-content/DefaultAppLoaderContent.js +5 -0
- package/dist/configurator/app-loader-content/app-loader-content-name.d.ts +5 -0
- package/dist/configurator/app-loader-content/app-loader-content-name.js +1 -0
- package/dist/configurator/app-loader-content/index.d.ts +2 -0
- package/dist/configurator/app-loader-content/index.js +1 -0
- package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +12 -2
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/canvas-system.d.ts +8 -0
- package/dist/configurator/application-runtime/extensions/systems/canvas-system.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.d.ts +8 -0
- package/dist/configurator/application-runtime/extensions/systems/export-system/export-busy-error.js +1 -0
- package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.d.ts +23 -1
- package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +14 -1
- package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +45 -4
- package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.d.ts +14 -5
- package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
- package/dist/configurator/common/configurator-interface.d.ts +90 -4
- package/dist/configurator/common/configurator-interface.js +1 -1
- package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.d.ts +3 -3
- package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.js +1 -1
- package/dist/configurator/configurator-context/PreviewContextProvider.js +1 -1
- package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +4 -0
- package/dist/configurator/configurator-context/configurator-routing/ConfiguratorRoutingProvider.js +1 -1
- package/dist/configurator/index.d.ts +1 -0
- package/dist/configurator/index.js +1 -1
- package/dist/configurator/pages/ConfiguratorErrorPage.d.ts +0 -1
- package/dist/configurator/pages/ConfiguratorErrorPage.js +1 -1
- package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
- package/dist/configurator/pages/default-configurator-elements.d.ts +4 -3
- package/dist/configurator/pages/default-configurator-elements.js +1 -1
- package/dist/configurator/pages/default-elements/index.d.ts +1 -0
- package/dist/configurator/pages/default-elements/index.js +1 -1
- package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.d.ts +3 -0
- package/dist/configurator/pages/default-elements/scene-controls/BuiltInAddEntityFab.js +1 -0
- package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.d.ts +3 -0
- package/dist/configurator/pages/default-elements/scene-controls/BuiltInDeleteEntityFab.js +1 -0
- package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.d.ts +3 -0
- package/dist/configurator/pages/default-elements/scene-controls/BuiltInNavigationHotspot.js +1 -0
- package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.d.ts +3 -0
- package/dist/configurator/pages/default-elements/scene-controls/BuiltInSelectionHotspot.js +1 -0
- package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.d.ts +3 -0
- package/dist/configurator/pages/default-elements/scene-controls/BuiltInToolMenuFab.js +1 -0
- package/dist/configurator/pages/default-elements/scene-controls/index.d.ts +6 -0
- package/dist/configurator/pages/default-elements/scene-controls/index.js +1 -0
- package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.d.ts +6 -0
- package/dist/configurator/pages/default-elements/scene-controls/scene-control-elements.js +1 -0
- package/dist/configurator/scene/index.d.ts +1 -0
- package/dist/configurator/scene/index.js +1 -1
- package/dist/configurator/scene/scene-controls/ToolFab.d.ts +4 -0
- package/dist/configurator/scene/scene-controls/ToolFab.js +1 -1
- package/dist/configurator/scene/scene-controls/use-scene-control-tooltip.d.ts +2 -1
- package/dist/configurator/scene/scene-entity/scene-controls/SceneEntityHtmlHotspots.js +1 -1
- package/dist/configurator/toolbar-actions/index.d.ts +3 -0
- package/dist/configurator/toolbar-actions/index.js +1 -0
- package/dist/configurator/toolbar-actions/use-assistant-panel.d.ts +18 -0
- package/dist/configurator/toolbar-actions/use-assistant-panel.js +1 -0
- package/dist/configurator/toolbar-actions/use-measurements.d.ts +35 -0
- package/dist/configurator/toolbar-actions/use-measurements.js +1 -0
- package/dist/configurator/toolbar-actions/use-toolbar-actions.d.ts +100 -0
- package/dist/configurator/toolbar-actions/use-toolbar-actions.js +1 -0
- package/dist/configurator/toolbar-actions/use-toolbar-help.d.ts +7 -0
- package/dist/configurator/toolbar-actions/use-toolbar-help.js +1 -0
- package/dist/configurator/ui/assistant/AssistantChips.d.ts +3 -2
- package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
- package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +1 -1
- package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
- package/dist/configurator/ui/assistant/alert/AssistantAlert.d.ts +8 -0
- package/dist/configurator/ui/assistant/alert/AssistantAlert.js +1 -0
- package/dist/configurator/ui/assistant/alert/index.d.ts +2 -0
- package/dist/configurator/ui/assistant/alert/index.js +1 -0
- package/dist/configurator/ui/assistant/alert/remark-alerts.d.ts +10 -0
- package/dist/configurator/ui/assistant/alert/remark-alerts.js +1 -0
- package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -1
- package/dist/configurator/ui/assistant/form/compose-answer.d.ts +1 -1
- package/dist/configurator/ui/assistant/form/compose-answer.js +1 -1
- package/dist/configurator/ui/assistant/form/form-model.d.ts +3 -4
- package/dist/configurator/ui/assistant/form/form-state.d.ts +1 -1
- package/dist/configurator/ui/assistant/form/index.d.ts +2 -0
- package/dist/configurator/ui/assistant/form/index.js +1 -1
- package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +3 -2
- package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -1
- package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +1 -1
- package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -1
- package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.d.ts +3 -0
- package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.js +1 -0
- package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.d.ts +31 -0
- package/dist/configurator/ui/assistant/form/registry/create-assistant-form-element.js +1 -0
- package/dist/configurator/ui/assistant/form/{form-element-definition.d.ts → registry/form-element-definition.d.ts} +3 -1
- package/dist/configurator/ui/assistant/form/registry/form-element-definition.js +1 -0
- package/dist/configurator/ui/assistant/form/{form-registry.d.ts → registry/form-registry.d.ts} +2 -2
- package/dist/configurator/ui/assistant/form/registry/form-registry.js +1 -0
- package/dist/configurator/ui/assistant/form/registry/index.d.ts +6 -0
- package/dist/configurator/ui/assistant/form/registry/index.js +1 -0
- package/dist/configurator/ui/assistant/form/registry/use-form-registry.d.ts +8 -0
- package/dist/configurator/ui/assistant/form/registry/use-form-registry.js +1 -0
- package/dist/configurator/ui/assistant/form-elements/FormCard.d.ts +9 -0
- package/dist/configurator/ui/assistant/form-elements/FormCard.js +1 -0
- package/dist/configurator/ui/assistant/form-elements/FormConfirm.d.ts +9 -0
- package/dist/configurator/ui/assistant/form-elements/FormConfirm.js +1 -0
- package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +4 -1
- package/dist/configurator/ui/assistant/form-elements/FormNumber.d.ts +9 -0
- package/dist/configurator/ui/assistant/form-elements/FormNumber.js +1 -0
- package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +4 -1
- package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +4 -1
- package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -1
- package/dist/configurator/ui/assistant/form-elements/FormSwatch.d.ts +10 -0
- package/dist/configurator/ui/assistant/form-elements/FormSwatch.js +1 -0
- package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +4 -1
- package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -1
- package/dist/configurator/ui/assistant/form-elements/clamp-form-number.d.ts +10 -0
- package/dist/configurator/ui/assistant/form-elements/clamp-form-number.js +1 -0
- package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +20 -16
- package/dist/configurator/ui/assistant/form-elements/index.d.ts +4 -0
- package/dist/configurator/ui/assistant/form-elements/index.js +1 -1
- package/dist/configurator/ui/assistant/index.d.ts +3 -0
- package/dist/configurator/ui/assistant/index.js +1 -1
- package/dist/configurator/ui/assistant/resource-image/index.d.ts +1 -1
- package/dist/configurator/ui/assistant/resource-image/index.js +1 -1
- package/dist/configurator/ui/assistant/resource-image/resource-path.d.ts +0 -9
- package/dist/configurator/ui/assistant/resource-image/resource-path.js +1 -1
- package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.d.ts +9 -0
- package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.js +1 -0
- package/dist/configurator/ui/assistant/screenshots/index.d.ts +2 -0
- package/dist/configurator/ui/assistant/screenshots/index.js +1 -0
- package/dist/configurator/ui/assistant/screenshots/tool-screenshots.d.ts +14 -0
- package/dist/configurator/ui/assistant/screenshots/tool-screenshots.js +1 -0
- package/dist/configurator/ui/assistant/streamed-markdown.d.ts +2 -2
- package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
- package/dist/configurator/ui/assistant/tool-chip.js +1 -1
- package/dist/configurator/ui/configurator-layout/slots/canvas/LayoutCanvas.js +1 -1
- package/dist/configurator/ui/configurator-layout/slots/canvas/SharedCanvas.js +1 -1
- package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.d.ts +5 -0
- package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.js +1 -0
- package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
- package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -1
- package/dist/configurator/ui/index.d.ts +1 -0
- package/dist/configurator/ui/index.js +1 -1
- package/dist/configurator/ui/legacy/layout/common/ReactiveInterfaceLayout.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/AppLoader.js +2 -6
- package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/LanguageMenuAction.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/LanguageToolbarButton.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/MeasurementsMenuAction.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/MeasurementsToolbarButton.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/ShareToolbarButton.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/measurements/DimensionUnitSelector.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/measurements/MeasurementsIndicatorsSwitch.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/share/ShareModal.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/share/use-share.d.ts +7 -8
- package/dist/configurator/ui/phoenix-layout-elements/share/use-share.js +1 -1
- package/dist/docs/complex-use-cases/focus-mode.mdx +2 -0
- package/dist/docs/fabs/basic.mdx +4 -0
- package/dist/docs/index.json +62 -1
- package/dist/docs/layouts/custom-layout.mdx +4 -2
- package/dist/docs/layouts/gallery/ardent-compressor.mdx +3516 -0
- package/dist/docs/layouts/gallery/fenwick-window.mdx +2803 -0
- package/dist/docs/layouts/gallery/ferrule-bar-station.mdx +6567 -0
- package/dist/docs/layouts/gallery/kestrel-kettle.mdx +1858 -0
- package/dist/docs/layouts/gallery/sunfold-solar.mdx +2683 -0
- package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
- package/dist/docs/other-features/navigation-hotspot.mdx +2 -0
- package/dist/docs/phoenix/configurator-interface.mdx +93 -10
- package/dist/docs/phoenix/layout-slots.mdx +4 -4
- package/dist/docs/phoenix/sdk-builder-workflow.mdx +1 -1
- package/dist/docs/phoenix/testing.mdx +2 -2
- package/dist/docs/selection-and-highlight/hotspots.mdx +2 -0
- package/dist/domain/application/assistant/assistant-manifest.d.ts +16 -1
- package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +8 -1
- package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
- package/dist/domain/application/assistant/form/assistant-form-element-name.d.ts +11 -0
- package/dist/domain/application/assistant/form/assistant-form-element-name.js +8 -0
- package/dist/domain/application/assistant/form/assistant-form-elements.d.ts +174 -0
- package/dist/domain/application/assistant/form/assistant-form-elements.js +1 -0
- package/dist/domain/application/assistant/form/assistant-resource-path.d.ts +10 -0
- package/dist/domain/application/assistant/form/assistant-resource-path.js +1 -0
- package/dist/domain/application/assistant/form/index.d.ts +4 -0
- package/dist/domain/application/assistant/form/index.js +1 -0
- package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
- package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
- package/dist/domain/application/assistant/index.d.ts +2 -3
- package/dist/domain/application/assistant/index.js +1 -1
- package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -1
- package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +2 -0
- package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -1
- package/dist/domain/available-system-components.d.ts +1 -1
- package/dist/domain/available-system-components.js +1 -1
- package/dist/domain/domain-context/store-system/store-system.d.ts +5 -0
- package/dist/domain/domain-context/store-system/store-system.js +1 -1
- package/dist/domain/domain-runtime/domain-runtime.d.ts +4 -0
- package/dist/domain/domain-runtime/environment/types.d.ts +1 -1
- package/dist/domain/domain-runtime/spec/index.d.ts +1 -1
- package/dist/domain/domain-runtime/spec/index.js +1 -1
- package/dist/domain/domain-runtime/spec/initialize.js +1 -1
- package/dist/domain/domain-runtime/spec/module-checks/element-registration.d.ts +15 -1
- package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -1
- package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.d.ts +12 -0
- package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.js +1 -0
- package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +2 -1
- package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -1
- package/dist/domain/domain-runtime/spec/selectors.d.ts +3 -1
- package/dist/domain/domain-runtime/spec/selectors.js +1 -1
- package/dist/domain/extensions/export-images/agent-screenshot.d.ts +24 -0
- package/dist/domain/extensions/export-images/agent-screenshot.js +1 -0
- package/dist/domain/extensions/{client-side-image.d.ts → export-images/client-side-image.d.ts} +2 -2
- package/dist/domain/extensions/export-images/client-side-image.js +1 -0
- package/dist/domain/extensions/export-images/index.d.ts +3 -0
- package/dist/domain/extensions/export-images/index.js +1 -0
- package/dist/domain/extensions/{save-template-thumbnail.d.ts → export-images/save-template-thumbnail.d.ts} +2 -2
- package/dist/domain/extensions/export-images/save-template-thumbnail.js +1 -0
- package/dist/domain/extensions/index.d.ts +1 -2
- package/dist/domain/extensions/index.js +1 -1
- package/dist/domain/mocks/create-mock-domain-runtime.d.ts +2 -0
- package/dist/editor/domain-editors/DomainSpecContext.js +1 -1
- package/dist/editor/domain-editors/apply-spec-update.d.ts +8 -1
- package/dist/editor/domain-editors/apply-spec-update.js +1 -1
- package/dist/editor/domain-editors/use-implementation-files.js +1 -1
- package/dist/editor/screenshot/ScreenshotHandler.js +1 -1
- package/dist/i18n/locales/cs/messages.js +1 -1
- package/dist/i18n/locales/da/messages.js +1 -1
- package/dist/i18n/locales/de/messages.js +1 -1
- package/dist/i18n/locales/de-AT/messages.js +1 -1
- package/dist/i18n/locales/en/messages.js +1 -1
- package/dist/i18n/locales/en-AU/messages.js +1 -1
- package/dist/i18n/locales/en-GB/messages.js +1 -1
- package/dist/i18n/locales/es/messages.js +1 -1
- package/dist/i18n/locales/fr/messages.js +1 -1
- package/dist/i18n/locales/hu/messages.js +1 -1
- package/dist/i18n/locales/it/messages.js +1 -1
- package/dist/i18n/locales/nl/messages.js +1 -1
- package/dist/i18n/locales/pl/messages.js +1 -1
- package/dist/i18n/locales/pt/messages.js +1 -1
- package/dist/i18n/locales/ro/messages.js +1 -1
- package/dist/i18n/locales/sk/messages.js +1 -1
- package/dist/i18n/locales/tr/messages.js +1 -1
- package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +16 -0
- package/dist/legacy/domain-spec/spec/domain-spec.js +1 -1
- package/dist/react-sdk/application-runtime/common-services/analytics/frontend-analytics.d.ts +4 -0
- package/dist/react-sdk/application-runtime/hooks/index.d.ts +1 -0
- package/dist/react-sdk/application-runtime/hooks/index.js +1 -1
- package/dist/react-sdk/application-runtime/hooks/responsive/index.d.ts +3 -0
- package/dist/react-sdk/application-runtime/hooks/responsive/index.js +1 -0
- package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.d.ts +9 -0
- package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-actions.js +1 -0
- package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.d.ts +26 -0
- package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.js +1 -0
- package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.d.ts +10 -0
- package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-state.js +1 -0
- package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.d.ts +24 -0
- package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.js +1 -0
- package/dist/react-sdk/application-runtime/hooks/use-phoenix-element-slots.d.ts +2 -1
- package/dist/react-sdk/application-runtime/index.d.ts +1 -0
- package/dist/react-sdk/application-runtime/integration/initialize.d.ts +7 -6
- package/dist/react-sdk/application-runtime/integration/initialize.js +1 -1
- package/dist/react-sdk/application-runtime/integration/selectors.d.ts +11 -2
- package/dist/react-sdk/application-runtime/integration/selectors.js +1 -1
- package/dist/react-sdk/application-runtime/integration/types.d.ts +5 -2
- package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
- package/dist/react-sdk/application-runtime/responsive/actions.d.ts +47 -0
- package/dist/react-sdk/application-runtime/responsive/actions.js +1 -0
- package/dist/react-sdk/application-runtime/responsive/index.d.ts +4 -0
- package/dist/react-sdk/application-runtime/responsive/index.js +1 -0
- package/dist/react-sdk/application-runtime/responsive/initialize.d.ts +3 -0
- package/dist/react-sdk/application-runtime/responsive/initialize.js +1 -0
- package/dist/react-sdk/application-runtime/responsive/selectors.d.ts +20 -0
- package/dist/react-sdk/application-runtime/responsive/selectors.js +1 -0
- package/dist/react-sdk/application-runtime/responsive/types.d.ts +104 -0
- package/dist/react-sdk/application-runtime/routing/routing-service.d.ts +34 -2
- package/dist/react-sdk/application-runtime/routing/routing-service.js +1 -1
- package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +91 -2
- package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
- package/dist/react-sdk/domain-context/common-hooks/index.d.ts +9 -0
- package/dist/react-sdk/domain-context/common-hooks/index.js +1 -0
- package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.d.ts +23 -0
- package/dist/react-sdk/domain-context/common-hooks/use-configuration-save-state.js +1 -0
- package/dist/react-sdk/domain-context/component-hooks/index.d.ts +1 -0
- package/dist/react-sdk/domain-context/component-hooks/index.js +1 -0
- package/dist/react-sdk/domain-context/component-hooks/use-component.js +1 -1
- package/dist/react-sdk/domain-context/entity-hooks/use-domain-entity-state.js +1 -1
- package/dist/react-sdk/domain-context/entity-hooks/use-entity-price.js +1 -1
- package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-id.js +1 -1
- package/dist/react-sdk/domain-context/entity-hooks/use-root-entity-state.js +1 -1
- package/dist/react-sdk/domain-context/index.d.ts +4 -0
- package/dist/react-sdk/domain-context/index.js +1 -1
- package/dist/react-sdk/domain-context/system-hooks/composition-hooks.js +1 -1
- package/dist/react-sdk/domain-context/system-hooks/dimension-hooks.js +1 -1
- package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.d.ts +8 -0
- package/dist/react-sdk/domain-context/system-hooks/generate-share-link-hooks.js +1 -0
- package/dist/react-sdk/domain-context/system-hooks/hover-hooks.js +1 -1
- package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.d.ts +24 -0
- package/dist/react-sdk/domain-context/system-hooks/locale-switch-hooks.js +1 -0
- package/dist/react-sdk/domain-context/system-hooks/navigation-hooks.js +1 -1
- package/dist/react-sdk/domain-context/system-hooks/selection-hooks.js +1 -1
- package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.d.ts +32 -0
- package/dist/react-sdk/domain-context/system-hooks/share-links-hooks.js +1 -0
- package/dist/react-sdk/domain-context/system-hooks/tab-navigation-hooks.js +1 -1
- package/dist/react-sdk/domain-context/system-hooks/undo-redo-hooks.js +1 -1
- package/dist/react-sdk/index.d.ts +1 -1
- package/dist/react-sdk/index.js +1 -1
- package/dist/react-sdk/loading-state/loading-state-manager.d.ts +5 -0
- package/dist/react-sdk/loading-state/loading-state-manager.js +1 -1
- package/dist/react-sdk/scene-control-elements/AddEntityFabElement.d.ts +36 -0
- package/dist/react-sdk/scene-control-elements/AddEntityFabElement.js +1 -0
- package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.d.ts +44 -0
- package/dist/react-sdk/scene-control-elements/DeleteEntityFabElement.js +1 -0
- package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.d.ts +38 -0
- package/dist/react-sdk/scene-control-elements/NavigationHotspotElement.js +1 -0
- package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.d.ts +30 -0
- package/dist/react-sdk/scene-control-elements/SelectionHotspotElement.js +1 -0
- package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.d.ts +30 -0
- package/dist/react-sdk/scene-control-elements/ToolMenuFabElement.js +1 -0
- package/dist/react-sdk/scene-control-elements/create-add-entity-fab.d.ts +9 -0
- package/dist/react-sdk/scene-control-elements/create-add-entity-fab.js +1 -0
- package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.d.ts +9 -0
- package/dist/react-sdk/scene-control-elements/create-delete-entity-fab.js +1 -0
- package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.d.ts +10 -0
- package/dist/react-sdk/scene-control-elements/create-navigation-hotspot.js +1 -0
- package/dist/react-sdk/scene-control-elements/create-selection-hotspot.d.ts +9 -0
- package/dist/react-sdk/scene-control-elements/create-selection-hotspot.js +1 -0
- package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.d.ts +9 -0
- package/dist/react-sdk/scene-control-elements/create-tool-menu-fab.js +1 -0
- package/dist/react-sdk/scene-control-elements/index.d.ts +11 -0
- package/dist/react-sdk/scene-control-elements/index.js +1 -0
- package/dist/react-sdk/scene-control-elements/scene-control-tooltip-visibility.d.ts +5 -0
- package/dist/react-sdk/web-component/create-web-component.js +1 -1
- package/dist/react-sdk/web-component/god-mode/god-mode-registry.d.ts +30 -0
- package/dist/react-sdk/web-component/god-mode/god-mode-registry.js +1 -0
- package/dist/react-sdk/web-component/god-mode/index.d.ts +1 -0
- package/dist/react-sdk/web-component/god-mode/index.js +1 -0
- package/dist/ui-sdk/icons/__generated/Lightbulb.d.ts +3 -0
- package/dist/ui-sdk/icons/__generated/Lightbulb.js +1 -0
- package/dist/ui-sdk/icons/__generated/XCircle.d.ts +3 -0
- package/dist/ui-sdk/icons/__generated/XCircle.js +1 -0
- package/dist/ui-sdk/icons/__generated/index.d.ts +4 -0
- package/dist/ui-sdk/icons/__generated/index.js +1 -1
- package/dist/ui-sdk/icons/icons-registry.js +1 -1
- package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.d.ts +2 -2
- package/dist/ui-sdk/responsive-application/responsive-state-store.d.ts +11 -9
- package/dist/ui-sdk/responsive-application/use-store-responsive-info.js +1 -1
- package/dist/ui-sdk/theme/types.d.ts +5 -1
- package/package.json +13 -3
- package/schema/domain-spec.json +140 -0
- package/dist/configurator/ui/assistant/form/built-in-form-registry.d.ts +0 -10
- package/dist/configurator/ui/assistant/form/built-in-form-registry.js +0 -1
- package/dist/configurator/ui/assistant/form/form-registry.js +0 -8
- package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.d.ts +0 -4
- package/dist/configurator/ui/phoenix-layout-elements/language/use-locale-options.js +0 -1
- package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.d.ts +0 -4
- package/dist/configurator/ui/phoenix-layout-elements/measurements/use-measurements-visibility.js +0 -1
- package/dist/domain/application/assistant/assistant-form-elements.d.ts +0 -28
- package/dist/domain/application/assistant/assistant-form-elements.js +0 -1
- package/dist/domain/extensions/client-side-image.js +0 -1
- package/dist/domain/extensions/save-template-thumbnail.js +0 -1
- package/dist/react-sdk/application-runtime/runtime/god-mode.d.ts +0 -19
- package/dist/react-sdk/application-runtime/runtime/god-mode.js +0 -1
- package/dist/react-sdk/responsive-state/ResponsiveStateProvider.d.ts +0 -25
- package/dist/react-sdk/responsive-state/ResponsiveStateProvider.js +0 -1
- package/dist/react-sdk/responsive-state/canvas-padding.d.ts +0 -14
- package/dist/react-sdk/responsive-state/index.d.ts +0 -5
- package/dist/react-sdk/responsive-state/index.js +0 -1
- package/dist/react-sdk/responsive-state/responsive-state-manager.d.ts +0 -111
- package/dist/react-sdk/responsive-state/responsive-state-manager.js +0 -1
- package/dist/react-sdk/responsive-state/use-responsive-state-manager.d.ts +0 -10
- package/dist/react-sdk/responsive-state/use-responsive-state-manager.js +0 -1
- package/dist/react-sdk/responsive-state/use-responsive-state.d.ts +0 -11
- package/dist/react-sdk/responsive-state/use-responsive-state.js +0 -1
- /package/dist/{configurator/ui/assistant/form/form-element-definition.js → react-sdk/application-runtime/responsive/types.js} +0 -0
- /package/dist/react-sdk/{responsive-state/canvas-padding.js → scene-control-elements/scene-control-tooltip-visibility.js} +0 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What an element of an assistant form collects: a `group` all its children, a `choice` exactly one
|
|
3
|
+
* of its options, a `choices` any number of them; an `option` is something to pick and an `input` a
|
|
4
|
+
* free value.
|
|
5
|
+
*/
|
|
6
|
+
export type AssistantFormRole = 'group' | 'choice' | 'choices' | 'option' | 'input';
|
|
7
|
+
/** The type an attribute of a form element is validated and coerced to; the model writes every attribute as a string. */
|
|
8
|
+
export interface AssistantFormAttribute {
|
|
9
|
+
readonly type: 'string' | 'number' | 'integer' | 'boolean';
|
|
10
|
+
/** The words a string, or the numbers a number, may be; a number's are written as text in the markup. */
|
|
11
|
+
readonly enum?: readonly (string | number)[];
|
|
12
|
+
/** A JSON Schema `pattern` a string attribute must match, such as a resource path or a `#rrggbb` color. */
|
|
13
|
+
readonly pattern?: string;
|
|
14
|
+
/** The bounds a number attribute must be within, as in JSON Schema. */
|
|
15
|
+
readonly minimum?: number;
|
|
16
|
+
readonly maximum?: number;
|
|
17
|
+
/** The bounds of a string attribute's length, as in JSON Schema. */
|
|
18
|
+
readonly minLength?: number;
|
|
19
|
+
readonly maxLength?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* An element the assistant can write inside a ```` ```form ```` fence of its reply to ask the user
|
|
23
|
+
* something. The panel renders it, and the SDK prompt lists it, so the model and the panel agree on
|
|
24
|
+
* one set of elements: the built-ins below, followed by the project's own, which its YAML declares
|
|
25
|
+
* under `assistant.formElements` with the fields up to `required`.
|
|
26
|
+
*/
|
|
27
|
+
export interface AssistantFormElementDescriptor {
|
|
28
|
+
/** The tag: lowercase, and never the name of an HTML element. */
|
|
29
|
+
readonly name: string;
|
|
30
|
+
readonly role: AssistantFormRole;
|
|
31
|
+
/** What the element is for, printed in the prompt after its signature. */
|
|
32
|
+
readonly description: string;
|
|
33
|
+
/**
|
|
34
|
+
* Attributes beyond the built-in `label`, in the order the prompt lists them. An option or an
|
|
35
|
+
* input that takes a `value` declares it like any other: by convention an option answers with
|
|
36
|
+
* it instead of its label, and an input starts with it.
|
|
37
|
+
*/
|
|
38
|
+
readonly attributes: Readonly<Record<string, AssistantFormAttribute>>;
|
|
39
|
+
readonly required?: readonly string[];
|
|
40
|
+
/**
|
|
41
|
+
* An input the user answers with one action, such as a `confirm`: a form whose only question it
|
|
42
|
+
* is sends on that action, without a submit button, as a lone `choice` sends on the first pick.
|
|
43
|
+
*/
|
|
44
|
+
readonly quick?: true;
|
|
45
|
+
/**
|
|
46
|
+
* The attributes an option can answer with besides `label`, in the order its component tries
|
|
47
|
+
* them. An option that declares them and has none of them, nor `label`, makes its form fail.
|
|
48
|
+
*/
|
|
49
|
+
readonly identity?: readonly string[];
|
|
50
|
+
}
|
|
51
|
+
/** What an attribute's declaration makes of its value: one of its words, a string, a number or a boolean. */
|
|
52
|
+
export type AssistantFormAttributeValue<ATTRIBUTE extends AssistantFormAttribute> = ATTRIBUTE extends {
|
|
53
|
+
readonly enum: readonly (infer WORD)[];
|
|
54
|
+
} ? WORD : ATTRIBUTE['type'] extends 'string' ? string : ATTRIBUTE['type'] extends 'boolean' ? boolean : number;
|
|
55
|
+
type RequiredAttributeName<DESCRIPTOR> = DESCRIPTOR extends {
|
|
56
|
+
readonly required: readonly (infer NAME)[];
|
|
57
|
+
} ? NAME : never;
|
|
58
|
+
/**
|
|
59
|
+
* The attributes a form element's component gets, typed from its descriptor: the declared ones,
|
|
60
|
+
* optional unless `required`. The form validates the markup against the same descriptor, so the
|
|
61
|
+
* component can rely on these types.
|
|
62
|
+
*/
|
|
63
|
+
export type AssistantFormElementAttributes<DESCRIPTOR extends AssistantFormElementDescriptor> = {
|
|
64
|
+
readonly [NAME in keyof DESCRIPTOR['attributes'] as NAME extends RequiredAttributeName<DESCRIPTOR> ? NAME : never]: AssistantFormAttributeValue<DESCRIPTOR['attributes'][NAME]>;
|
|
65
|
+
} & {
|
|
66
|
+
readonly [NAME in keyof DESCRIPTOR['attributes'] as NAME extends RequiredAttributeName<DESCRIPTOR> ? never : NAME]?: AssistantFormAttributeValue<DESCRIPTOR['attributes'][NAME]>;
|
|
67
|
+
};
|
|
68
|
+
/** The elements every assistant form understands, in the order the prompt lists them. */
|
|
69
|
+
export declare const ASSISTANT_BUILT_IN_FORM_ELEMENTS: readonly [{
|
|
70
|
+
readonly name: 'group';
|
|
71
|
+
readonly role: 'group';
|
|
72
|
+
readonly description: 'Puts related questions together under its label.';
|
|
73
|
+
readonly attributes: {};
|
|
74
|
+
}, {
|
|
75
|
+
readonly name: 'choice';
|
|
76
|
+
readonly role: 'choice';
|
|
77
|
+
readonly description: 'The user picks exactly one of its options.';
|
|
78
|
+
readonly attributes: {};
|
|
79
|
+
}, {
|
|
80
|
+
readonly name: 'choices';
|
|
81
|
+
readonly role: 'choices';
|
|
82
|
+
readonly description: 'The user picks any number of its options.';
|
|
83
|
+
readonly attributes: {};
|
|
84
|
+
}, {
|
|
85
|
+
readonly name: 'reply';
|
|
86
|
+
readonly role: 'option';
|
|
87
|
+
readonly description: 'A short answer shown as a button.';
|
|
88
|
+
readonly attributes: {
|
|
89
|
+
readonly value: {
|
|
90
|
+
readonly type: 'string';
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
}, {
|
|
94
|
+
readonly name: 'card';
|
|
95
|
+
readonly role: 'option';
|
|
96
|
+
readonly description: 'A tile with an optional picture over its label and a one-line `description`. `image` is a path you read on an `imageUrl` field. Without `value` or `label` it sends its `description`, or else its `image`.';
|
|
97
|
+
readonly attributes: {
|
|
98
|
+
readonly value: {
|
|
99
|
+
readonly type: 'string';
|
|
100
|
+
};
|
|
101
|
+
readonly description: {
|
|
102
|
+
readonly type: 'string';
|
|
103
|
+
};
|
|
104
|
+
readonly image: {
|
|
105
|
+
readonly type: 'string';
|
|
106
|
+
readonly pattern: string;
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
readonly identity: readonly ["value", "description", "image"];
|
|
110
|
+
}, {
|
|
111
|
+
readonly name: 'swatch';
|
|
112
|
+
readonly role: 'option';
|
|
113
|
+
readonly description: 'A small tile of a color or a material, without text: its label shows on hover. `color` is `#rrggbb`, as on the `color` field of an option, and `image` a path you read on an `imageUrl` field. Without `value` or `label` it sends its `color`, or else its `image`.';
|
|
114
|
+
readonly attributes: {
|
|
115
|
+
readonly value: {
|
|
116
|
+
readonly type: 'string';
|
|
117
|
+
};
|
|
118
|
+
readonly color: {
|
|
119
|
+
readonly type: 'string';
|
|
120
|
+
readonly pattern: '^#[0-9a-fA-F]{6}$';
|
|
121
|
+
};
|
|
122
|
+
readonly image: {
|
|
123
|
+
readonly type: 'string';
|
|
124
|
+
readonly pattern: string;
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
readonly identity: readonly ["value", "color", "image"];
|
|
128
|
+
}, {
|
|
129
|
+
readonly name: 'text';
|
|
130
|
+
readonly role: 'input';
|
|
131
|
+
readonly description: 'A single line the user types.';
|
|
132
|
+
readonly attributes: {
|
|
133
|
+
readonly value: {
|
|
134
|
+
readonly type: 'string';
|
|
135
|
+
};
|
|
136
|
+
readonly placeholder: {
|
|
137
|
+
readonly type: 'string';
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
}, {
|
|
141
|
+
readonly name: 'number';
|
|
142
|
+
readonly role: 'input';
|
|
143
|
+
readonly description: 'A number the user types, with a slider when both `min` and `max` are given. The answer carries the `unit`, as in `Length: 240 cm`.';
|
|
144
|
+
readonly attributes: {
|
|
145
|
+
readonly value: {
|
|
146
|
+
readonly type: 'number';
|
|
147
|
+
};
|
|
148
|
+
readonly min: {
|
|
149
|
+
readonly type: 'number';
|
|
150
|
+
};
|
|
151
|
+
readonly max: {
|
|
152
|
+
readonly type: 'number';
|
|
153
|
+
};
|
|
154
|
+
readonly step: {
|
|
155
|
+
readonly type: 'number';
|
|
156
|
+
};
|
|
157
|
+
readonly unit: {
|
|
158
|
+
readonly type: 'string';
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
}, {
|
|
162
|
+
readonly name: 'confirm';
|
|
163
|
+
readonly role: 'input';
|
|
164
|
+
readonly description: "A yes or no question, shown as two buttons. It answers with the user's own words for yes and no, such as `Yes` or `Ano`, and alone in a form it sends on the click.";
|
|
165
|
+
readonly attributes: {};
|
|
166
|
+
readonly quick: true;
|
|
167
|
+
}];
|
|
168
|
+
/** The name of a built-in form element. */
|
|
169
|
+
export type AssistantBuiltInFormElementName = (typeof ASSISTANT_BUILT_IN_FORM_ELEMENTS)[number]['name'];
|
|
170
|
+
/** The attributes the component of a built-in form element gets, typed from its descriptor. */
|
|
171
|
+
export type AssistantBuiltInFormElementAttributes<NAME extends AssistantBuiltInFormElementName> = AssistantFormElementAttributes<Extract<(typeof ASSISTANT_BUILT_IN_FORM_ELEMENTS)[number], {
|
|
172
|
+
readonly name: NAME;
|
|
173
|
+
}>>;
|
|
174
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ASSISTANT_RESOURCE_PATH_PATTERN as e}from"./assistant-resource-path.js";export const ASSISTANT_BUILT_IN_FORM_ELEMENTS=[{name:"group",role:"group",description:"Puts related questions together under its label.",attributes:{}},{name:"choice",role:"choice",description:"The user picks exactly one of its options.",attributes:{}},{name:"choices",role:"choices",description:"The user picks any number of its options.",attributes:{}},{name:"reply",role:"option",description:"A short answer shown as a button.",attributes:{value:{type:"string"}}},{name:"card",role:"option",description:"A tile with an optional picture over its label and a one-line `description`. `image` is a path you read on an `imageUrl` field. Without `value` or `label` it sends its `description`, or else its `image`.",attributes:{value:{type:"string"},description:{type:"string"},image:{type:"string",pattern:e}},identity:["value","description","image"]},{name:"swatch",role:"option",description:"A small tile of a color or a material, without text: its label shows on hover. `color` is `#rrggbb`, as on the `color` field of an option, and `image` a path you read on an `imageUrl` field. Without `value` or `label` it sends its `color`, or else its `image`.",attributes:{value:{type:"string"},color:{type:"string",pattern:"^#[0-9a-fA-F]{6}$"},image:{type:"string",pattern:e}},identity:["value","color","image"]},{name:"text",role:"input",description:"A single line the user types.",attributes:{value:{type:"string"},placeholder:{type:"string"}}},{name:"number",role:"input",description:"A number the user types, with a slider when both `min` and `max` are given. The answer carries the `unit`, as in `Length: 240 cm`.",attributes:{value:{type:"number"},min:{type:"number"},max:{type:"number"},step:{type:"number"},unit:{type:"string"}}},{name:"confirm",role:"input",description:"A yes or no question, shown as two buttons. It answers with the user's own words for yes and no, such as `Yes` or `Ano`, and alone in a form it sends on the click.",attributes:{},quick:!0}];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A path into the project's resources, the kind stored on `imageUrl` fields: no scheme and no host,
|
|
3
|
+
* so resolving it never leaves the resources origin. A backslash, a control character or leading
|
|
4
|
+
* whitespace is refused too, because the URL parser reads a backslash as a slash and strips the
|
|
5
|
+
* others, which would turn `\\host` or ` //host` into an address on another host.
|
|
6
|
+
*
|
|
7
|
+
* Written as a JSON Schema `pattern`, so the `image` attribute of a form element applies the same
|
|
8
|
+
* rule as the images of a reply.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ASSISTANT_RESOURCE_PATH_PATTERN: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const ASSISTANT_RESOURCE_PATH_PATTERN=String.raw`^(?![a-zA-Z][a-zA-Z0-9+.-]*:)(?!//)[^\s\\\x00-\x1f][^\\\x00-\x1f]*$`;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ASSISTANT_FORM_NAME_PATTERN, isHtmlElementName } from './assistant-form-element-name.js';
|
|
2
|
+
export { ASSISTANT_BUILT_IN_FORM_ELEMENTS } from './assistant-form-elements.js';
|
|
3
|
+
export type { AssistantBuiltInFormElementAttributes, AssistantBuiltInFormElementName, AssistantFormAttribute, AssistantFormAttributeValue, AssistantFormElementAttributes, AssistantFormElementDescriptor, AssistantFormRole, } from './assistant-form-elements.js';
|
|
4
|
+
export { ASSISTANT_RESOURCE_PATH_PATTERN } from './assistant-resource-path.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{ASSISTANT_FORM_NAME_PATTERN,isHtmlElementName}from"./assistant-form-element-name.js";export{ASSISTANT_BUILT_IN_FORM_ELEMENTS}from"./assistant-form-elements.js";export{ASSISTANT_RESOURCE_PATH_PATTERN}from"./assistant-resource-path.js";
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { AssistantManifest } from './assistant-manifest.js';
|
|
2
|
+
import { type AssistantFormElementDescriptor } from './form/index.js';
|
|
3
|
+
/** How the prompt writes an element: its tag with each attribute and what it takes. Exported for tests. */
|
|
4
|
+
export declare const formElementSignature: ({ name, role, attributes }: AssistantFormElementDescriptor) => string;
|
|
2
5
|
/** SDK-version conventions for using the manifest's capabilities and reading their results. */
|
|
3
6
|
export declare const generateAssistantPrompt: (assistant: AssistantManifest) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ASSISTANT_BUILT_IN_FORM_ELEMENTS as e}from"./
|
|
1
|
+
import{ASSISTANT_BUILT_IN_FORM_ELEMENTS as e}from"./form/index.js";let t=[["Containers",["group","choice","choices"]],["Options",["option"]],["Inputs",["input"]]];export const formElementSignature=({name:e,role:t,attributes:a})=>{let n=["label",...Object.entries(a).map(([e,t])=>((e,{type:t,enum:a})=>a?`${e}="${a.join("|")}"`:"string"===t?e:`${e}="<${t}>"`)(e,t))];return"option"===t||"input"===t?`<${e} ${n.join(" ")} />`:`<${e} ${n.join(" ")}>…</${e}>`};export const generateAssistantPrompt=a=>{let n,s=Object.values(a.childRecipes??{}).some(e=>e.length>0),i=Object.values(a.replaceRecipes??{}).some(e=>e.length>0),o=Object.values(a.fieldOptions??{}).some(e=>e.length>0),r=Object.keys(a.actions??{}).length>0,h=(a.deletableTypes?.length??0)>0||Object.values(a.writableFields??{}).some(e=>Object.keys(e).length>0)||s||i||r,l=s||i||o,d=[...s?["`childRecipes` is what can be added to it"]:[],...i?["`replaceRecipes` what it can be replaced with"]:[],...o?["`<field>Options` the values a field accepts"]:[]],c=["`selected`",...(a.navigationFields??[]).map(e=>`\`${e}\``)].join(", ");return[["Tools","- Put related operations in one call and select only the fields you need.",...h?[`- Use a mutation inside \`query\` to answer a what-if about a change ${l?"the lists under `meta` do not show":"before making it"}.`,"- Use `apply` only for what the user asked for."]:["- Nothing in this configurator can be changed through you. Say so when the user asks for a change."],"- When an operation fails, its `errors` say why and what to send instead."],...h?[["After a change","- A change is made only when the `apply` result has `committed: true`. Otherwise `errors` or `message` says what happened; without either, nothing changed. Never say a change was made when it was not.","- `sideEffects` names the major or unexpected things the configurator changed along with your change. Tell the user about them when committed; otherwise they describe what would happen. Smaller adjustments are not listed.","- A mutation returns the state after the change: use the ids and values it returned, not the ones you sent.",...r?["- When one mutation does the whole of what the user asked, use it instead of building the same change from several others."]:[]]]:[],...l?[["What can be done to an entity",`- \`meta\` lists what is possible right now: ${d.join(", ")}. Read the list before such a change and before telling the user what is available.`,`- You can select \`dryRun\` on ${[...s||i?["recipes"]:[],...o?["options"]:[]].join(" or ")} to look ahead and pick one that meets what the user asked for. It is optional before a change.`,"- Read the lists again after a change, unless their descriptions say they stay the same."]]:[],["The `[changes]` block","- Every user message starts with it: a glimpse of what the user did in the configurator since your last turn.",`- \`[changes: none]\`, or only ${c} lines: what you know still holds. Do not query it again.`,"- Other lines are a hint at what to read again: `A` added, `D` deleted, `M` modified with the fields. Text after `#` says what caused the line; `reset: undo/redo` says the user undid or redid changes.","- Read computed fields again when a listed change may affect them.","- `[changes: unavailable]` and `[changes: too many (n)]`: read again before relying on anything you read earlier.",...h?["- Your applied changes are not listed, except those waiting for user approval: they appear once approved."]:[]],["Reading the schema","- Take ids from results.",...(a.deletableTypes?.length??0)>0||i?["- The id of a deleted or replaced entity is gone and may later be given to another entity."]:[],`- A field whose name starts with \`_\` is computed: read it${h?", never write it":""}.`,"- Numbers are in the unit the field description names. Convert when the user uses another unit."],["Links","- You may link an entity of the current configuration when you speak about that very entity: `[the left burner](entity:CookingTop-1)`. It helps the user find it in the configurator.",...l?["- Whenever you name recipes or options you read from `meta`, in a list, a table or a sentence, link each one: `[Single gas burner](recipe:KitchenRange-1/top/gas_single)` or `[Oak](option:Cabinet-2/finishOptions/oak)`. The link shows the user its picture or color and its description, so never draw previews yourself. The target is the entity id, the recipe group id or the options field you read, and the key or value, each encoded as in a URL."]:[]],["Replies","- Write Markdown only, never HTML: the panel does not render it.","- An image, ``, is shown only when its path is relative.","- To make a warning or a key note stand out, write a GitHub alert: a blockquote whose first line is only `[!WARNING]` or `[!NOTE]`. Use it sparingly."],["Forms","- To ask the user something they answer by picking or typing, end your reply with a form: a fenced code block with the language `form`. It holds only elements, written as lowercase tags with string attributes, without Markdown or text.","- Every element takes `label`, the text the user sees; on a container or an input it also names the answer. An option or an input whose signature lists `value` takes it: an option sends it instead of its label, and an input starts with it.",'- A bare attribute in a signature takes any text, `name="<type>"` takes a value of that type written as text, such as `min="<number>"`, and `name="a|b"` takes one of the words listed.',"- Options can also stand on their own, outside a `choice` or `choices`.","- An element or attribute not listed here, or an element other than an option inside a `choice` or `choices`, makes the whole form fail.","- The answer is the user's next message. Each container or input gives a line `Label: value`, or the bare value without a label; the lines of a labelled container are indented by two spaces under it, a `choices` lists each picked option on its own line, and `—` marks what was left unanswered.",'- Example: `<choice label="Plinth"><reply label="Black" /><reply label="Oak" /></choice>` is answered with `Plinth: Oak`.',"- The chat shows the answer as the user's own message, so a `value` reads as natural words, never as an id, key or code. Give `value` only when the label alone would be unclear as an answer, and map the answer's labels back to ids yourself.",...(n=[...e,...a.formElements??[]],t.flatMap(([e,t])=>{let a=n.filter(({role:e})=>t.includes(e));return 0===a.length?[]:[`- ${e}:`,...a.map(e=>` - \`${formElementSignature(e)}\`: ${(({description:e,required:t=[]})=>0===t.length?e:`${e} Requires ${t.map(e=>`\`${e}\``).join(", ")}.`)(e)}`)]}))],...a.lenses?.declarations?[["Built-in fragments","- These fragments are already defined for every operation. Spread one by name on a field of its type, as in `field { ...FragmentName }`, instead of listing its fields.","- A fragment is a starting selection: add the other fields you need next to the spread, by name from the schema.","- Never define a fragment with one of these names.","",a.lenses.declarations]]:[]].map(e=>e.join("\n")).join("\n\n")};
|
|
@@ -3,9 +3,8 @@ export type { AssistantResolvedManifest, AssistantDeclaredField, AssistantDeclar
|
|
|
3
3
|
export { buildAssistantManifest } from './build-assistant-manifest.js';
|
|
4
4
|
export type { AssistantFieldExposure } from './create-assistant-execution-schema.js';
|
|
5
5
|
export { AssistantFieldClashError, createAssistantExecutionSchema } from './create-assistant-execution-schema.js';
|
|
6
|
-
export type { AssistantFieldSource, AssistantRecipeGroup, AssistantFieldOptions, AssistantManifest, } from './assistant-manifest.js';
|
|
6
|
+
export type { AssistantFieldSource, AssistantRecipeGroup, AssistantFieldOptions, AssistantScreenshotView, AssistantManifest, } from './assistant-manifest.js';
|
|
7
7
|
export { generateAssistantPrompt } from './generate-assistant-prompt.js';
|
|
8
8
|
export * from './session-setup/index.js';
|
|
9
9
|
export { describeAssistantValues, mergeAssistantFields, resolveAssistantField } from './assistant-fields.js';
|
|
10
|
-
export
|
|
11
|
-
export type { AssistantFormAttribute, AssistantFormElementDescriptor, AssistantFormRole, } from './assistant-form-elements.js';
|
|
10
|
+
export * from './form/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{ASSISTANT_HINTS}from"./assistant-resolved-manifest.js";export{buildAssistantManifest}from"./build-assistant-manifest.js";export{AssistantFieldClashError,createAssistantExecutionSchema}from"./create-assistant-execution-schema.js";export{generateAssistantPrompt}from"./generate-assistant-prompt.js";export*from"./session-setup/index.js";export{describeAssistantValues,mergeAssistantFields,resolveAssistantField}from"./assistant-fields.js";export
|
|
1
|
+
export{ASSISTANT_HINTS}from"./assistant-resolved-manifest.js";export{buildAssistantManifest}from"./build-assistant-manifest.js";export{AssistantFieldClashError,createAssistantExecutionSchema}from"./create-assistant-execution-schema.js";export{generateAssistantPrompt}from"./generate-assistant-prompt.js";export*from"./session-setup/index.js";export{describeAssistantValues,mergeAssistantFields,resolveAssistantField}from"./assistant-fields.js";export*from"./form/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ASSISTANT_AI_PROVIDERS as e,ASSISTANT_MODEL_TIERS as t,ASSISTANT_REASONING_LEVELS as
|
|
1
|
+
import{ASSISTANT_AI_PROVIDERS as e,ASSISTANT_MODEL_TIERS as t,ASSISTANT_REASONING_LEVELS as s}from"@salsita-ai/contracts/assistant";import{describeAssistantValues as i,mergeAssistantFields as n,resolveAssistantField as o}from"../assistant-fields.js";import{ASSISTANT_HINTS as r}from"../assistant-resolved-manifest.js";import{projectAssistantSetupManifest as a}from"./assistant-setup-manifest.js";export class AssistantSetupError extends Error{constructor(e,t){super(`${e}: ${t}`),this.name="AssistantSetupError"}}let l=(e,t)=>{throw new AssistantSetupError(e,t)},p=(e,t,s)=>{for(let i of((null===t||"object"!=typeof t||Array.isArray(t))&&l(s,"expected an object; omit an entry to remove it"),Object.keys(t)))Object.hasOwn(e,i)||l(`${s}.${i}`,"not declared in the spec; remove this key")},c=(e,t)=>Object.hasOwn(e,t)?e[t]:void 0,d=(e,t,s)=>(void 0!==e&&"string"!=typeof e&&l(`${s}.description`,"expected a string"),e??t),u=(e,t,s)=>(void 0!==e&&!1!==e&&l(`${s}.allowDryRuns`,"can only disable dry-runs; omit this flag or set false"),!1!==e&&t);export const applyAssistantSetup=(f,m,b)=>{if(null===b)return null;let y=a(f,m),g=f.declarations;p({entities:{},deletable:{},writable:{},childRecipes:{},replaceRecipes:{},screenshots:{},actions:{},instructions:"",ai:{}},b,"assistant"),p(y.entities,b.entities,"assistant.entities"),p(y.deletable,b.deletable,"assistant.deletable"),p(y.writable,b.writable,"assistant.writable"),p(y.actions,b.actions,"assistant.actions"),p(y.screenshots,b.screenshots,"assistant.screenshots");let h=Object.fromEntries(Object.entries(b.entities).map(([e,t])=>{let s=`assistant.entities.${e}`;p(y.entities[e],t,s);let n=g.entities[e];return[e,Object.entries(t).map(([e,t])=>{p({description:""},t,`${s}.${e}`);let o=n.find(t=>t.source===e),r=d(t.description,o.valueDescription,`${s}.${e}`);return{...o,valueDescription:r,description:i(r,o.enumValues),describedByManifest:void 0!==t.description||o.describedByManifest}})]})),v=(e,t,s)=>l(`assistant.entities.${e}`,`conflicting sources ${t} and ${s}`),$=n([],c(h,"AnyDomainEntity")??[],()=>void 0,v),w=new Map([["AnyDomainEntity",$]]);for(let e of Object.keys(f.aliases))"AnyDomainEntity"!==e&&w.set(e,n([$],c(h,e)??[],()=>void 0,v));for(let e of f.entityTypes){let t=Object.entries(f.aliases).filter(([t,s])=>"AnyDomainEntity"!==t&&s.includes(e));w.set(e,n([$,...t.map(([e])=>w.get(e)??[])],c(h,e)??[],t=>g.enumValues[e]?.[t],v))}let j=Object.fromEntries([...w].map(([e,t])=>[e,t.map(t=>o(t,c(h,e)??[]))])),O=new Map,T=new Map;for(let[e,t]of Object.entries(b.writable)){let s=`assistant.writable.${e}`;for(let[i,n]of(p(y.writable[e],t,s),Object.entries(t))){let t=`${s}.${i}`,o=g.writable[e][i];for(let[e,{field:s,options:r,exposedDescription:a}]of(p(Object.values(o.members).some(e=>e.options)?{options:{}}:{},n,t),void 0!==n.options&&(p({validate:!0,allowDryRuns:!1},n.options,`${t}.options`),void 0!==n.options.validate&&!0!==n.options.validate&&l(`${t}.options.validate`,"can only enable validation; omit this flag or set true"),u(n.options.allowDryRuns,!0,`${t}.options`)),Object.entries(o.members))){let p=c(h,e)?.find(e=>e.source===i)?.name??w.get(e)?.find(e=>e.source===i)?.name,d=p??i;void 0===p&&w.get(e)?.some(e=>e.name===i&&e.source!==i)&&l(t,`narrowing leaves ${e}.${i} bound to another read field; retain its original exposure or remove this writable property`);let f=O.get(e)??new Map;if([...f.values()].some(e=>e.name===d&&e.property!==i)&&l(t,`narrowing maps multiple writable properties to ${e}.${d}; retain their original exposures or remove the conflicting property`),f.has(i)||f.set(i,{...s,name:d,...void 0===p?{}:{description:a}}),O.set(e,f),r){let s=o.defaultOptionsName?`${d}Options`:r.options.edgeName;T.get(e)?.some(e=>e.options.edgeName===s||e.options.field===d)&&l(`${t}.options`,`narrowing duplicates options edge ${e}.${s}; retain the original field exposures or remove the conflicting writable declaration`),T.set(e,[...T.get(e)??[],{hints:r.hints,options:{...r.options,field:d,edgeName:s,validate:n.options?.validate??r.options.validate,dryRuns:u(n.options?.allowDryRuns,r.options.dryRuns,`${t}.options`)}}])}}}}for(let[e,t]of Object.entries(f.optionsEdges))for(let s of t){let t=f.writableTypes.find(t=>t.entityType===e)?.fields.find(e=>e.name===s.options.field)?.property;if(s.options.validate&&t&&O.get(e)?.has(t)&&!T.get(e)?.some(s=>s.options.field===O.get(e)?.get(t)?.name&&s.options.validate)){let s=Object.keys(b.writable).find(s=>Object.hasOwn(b.writable[s],t)&&g.writable[s]?.[t]?.members[e]);l(`assistant.writable.${s}.${t}`,`cannot remove declared validation while another declaration keeps ${e}.${t} writable; remove all writable declarations for it`)}}let x=e=>{p(y[e],b[e],`assistant.${e}`);let t=new Map;for(let[s,i]of Object.entries(b[e])){let n=`assistant.${e}.${s}`;p({groups:{}},i,n),p(y[e][s].groups,i.groups,`${n}.groups`);let o=g[e][s],a=Object.entries(i.groups).map(([e,t])=>{let s=`${n}.groups.${e}`;p({description:"",allowDryRuns:!1},t,s);let i=o.groups.find(t=>t.instanceName===e);return{...i,description:d(t.description,i.description,s),dryRuns:u(t.allowDryRuns,i.dryRuns,s)}});for(let e of f.entityTypes.includes(s)?[s]:f.aliases[s]??[]){let s=t.get(e);t.set(e,{groups:[...s?.groups??[],...a],hints:r.filter(e=>o.hints.includes(e)||s?.hints.includes(e))})}}return Object.fromEntries(f.entityTypes.flatMap(e=>{let s=t.get(e);return s?.groups.length?[[e,s]]:[]}))},E=new Map;for(let[e,t]of Object.entries(b.screenshots)){let s=`assistant.screenshots.${e}`;p(y.screenshots[e],t,s);let i=f.entityTypes.includes(e)?[e]:f.aliases[e]??[];for(let[n,o]of Object.entries(t)){let t=`${s}.${n}`;p({description:""},o,t);let r=g.screenshots[e].find(e=>e.instanceName===n),a={...r,description:d(o.description,r.description,t)??r.description};for(let e of i)E.set(e,[...E.get(e)??[],a])}}for(let[e,t]of Object.entries(b.deletable))p({},t,`assistant.deletable.${e}`);let R=new Set(Object.keys(b.deletable).flatMap(e=>f.entityTypes.includes(e)?[e]:f.aliases[e]??[])),M=f.actionFields.flatMap(e=>{let t=c(b.actions,e.actionName);if(void 0===t)return[];let s=`assistant.actions.${e.actionName}`;return p({description:""},t,s),[{...e,description:d(t.description,e.description,s)}]}),D=m;if(m){void 0!==b.ai&&p({...m.ai,maxThreadSize:void 0},b.ai,"assistant.ai");let i={...m.ai,...Object.fromEntries(Object.entries(b.ai??{}).filter(([,e])=>void 0!==e))};e.includes(i.provider)&&t.includes(i.model)&&s.includes(i.reasoning)||l("assistant.ai","expected a supported provider, model and reasoning level"),void 0!==i.maxThreadSize&&(!Number.isInteger(i.maxThreadSize)||i.maxThreadSize<=0)&&l("assistant.ai.maxThreadSize","expected a positive whole number of input tokens"),void 0!==b.instructions&&"string"!=typeof b.instructions&&l("assistant.instructions","expected a string"),D={instructions:""===b.instructions?null:b.instructions??m.instructions,ai:i}}return{resolved:{...f,fields:j,deletableTypes:f.entityTypes.filter(e=>R.has(e)),writableTypes:f.entityTypes.flatMap(e=>{let t=[...O.get(e)?.values()??[]];return t.length?[{entityType:e,fields:t}]:[]}),optionsEdges:Object.fromEntries(T),childRecipes:x("childRecipes"),replaceRecipes:x("replaceRecipes"),screenshots:Object.fromEntries(f.entityTypes.flatMap(e=>{let t=E.get(e);return t?[[e,t]]:[]})),actionFields:M},settings:D}};
|
|
@@ -12,6 +12,8 @@ export interface AssistantSetupManifest<ENTITIES extends DomainEntity<string> =
|
|
|
12
12
|
};
|
|
13
13
|
readonly childRecipes: Readonly<Record<string, AssistantSetupRecipes>>;
|
|
14
14
|
readonly replaceRecipes: Readonly<Record<string, AssistantSetupRecipes>>;
|
|
15
|
+
/** The screenshot views under their original entity or alias key, keyed by `agentScreenshot` instance name. */
|
|
16
|
+
readonly screenshots: Readonly<Record<string, Readonly<Record<string, AssistantSetupField>>>>;
|
|
15
17
|
readonly actions: {
|
|
16
18
|
readonly [ACTION in keyof ACTIONS]?: AssistantSetupField;
|
|
17
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const projectAssistantSetupManifest=(e,
|
|
1
|
+
export const projectAssistantSetupManifest=(e,t)=>{let i=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{groups:Object.fromEntries(t.groups.map(e=>[e.instanceName,{...void 0===e.description?{}:{description:e.description},...!e.dryRuns?{allowDryRuns:!1}:{}}]))}])),s=e.declarations;return{entities:Object.fromEntries(Object.entries(s.entities).map(([e,t])=>[e,Object.fromEntries(t.map(e=>[e.source,{...!e.describedByManifest||void 0===e.valueDescription?{}:{description:e.valueDescription}}]))])),deletable:Object.fromEntries(s.deletable.map(e=>[e,{}])),writable:Object.fromEntries(Object.entries(s.writable).map(([e,t])=>[e,Object.fromEntries(Object.entries(t).map(([e,t])=>{let i=Object.values(t.members).find(e=>e.options)?.options?.options;return[e,i?{options:{...i.validate?{validate:!0}:{},...!i.dryRuns?{allowDryRuns:!1}:{}}}:{}]}))])),childRecipes:i(s.childRecipes),replaceRecipes:i(s.replaceRecipes),screenshots:Object.fromEntries(Object.entries(s.screenshots).map(([e,t])=>[e,Object.fromEntries(t.map(({instanceName:e,description:t})=>[e,{description:t}]))])),actions:Object.fromEntries(e.actionFields.map(e=>[e.actionName,void 0===e.description?{}:{description:e.description}])),...t?{instructions:t.instructions??void 0,ai:{...t.ai}}:{}}};
|
|
@@ -4,7 +4,7 @@ import { type SystemComponentTypeConstraint } from './core/index.js';
|
|
|
4
4
|
*
|
|
5
5
|
* To add a new component the domain spec, add it to this array
|
|
6
6
|
*/
|
|
7
|
-
export declare const availableSystemComponents: [import("./index.js").SystemComponentType<"applicationConfig", import("./index.js").ApplicationConfigComponentState, never>, import("./index.js").SystemComponentType<"price", import("./index.js").PriceComponentState, never>, import("./index.js").SystemComponentType<"detail", import("./index.js").DetailComponentState, never>, import("./index.js").SystemComponentType<"canvasConfig", import("./index.js").CanvasConfigComponentState, never>, import("./index.js").SystemComponentType<"canvasCustomEnvironment", import("./index.js").CanvasCustomEnvironmentComponentState, never>, import("./index.js").SystemComponentType<"canvasPresetEnvironment", import("./index.js").CanvasPresetEnvironmentComponentState, never>, import("./index.js").SystemComponentType<"dimensionIndicator", import("./index.js").DimensionIndicatorComponentState, never>, import("./index.js").SystemComponentType<"angleIndicator", import("./index.js").AngleIndicatorComponentState, never>, import("./index.js").SystemComponentType<"dragHandle", import("./index.js").DragHandleComponentState, "draggableRotationY" | "draggableX" | "draggableY" | "draggableZ">, import("./index.js").SystemComponentType<"rotationHandle", import("./index.js").RotationHandleComponentState, never>, import("./index.js").SystemComponentType<"rotatable", import("./index.js").RotatableComponentState, "rotation">, import("./index.js").SystemComponentType<"sketching", import("./index.js").SketchingComponentState, never>, import("./index.js").SystemComponentType<"sketchingDraw", import("./index.js").SketchingDrawComponentState, never>, import("./index.js").SystemComponentType<"sketchingEdit", import("./index.js").SketchingEditComponentState, never>, import("./index.js").SystemComponentType<"sketchingLine", import("./index.js").SketchingLineComponentState, "angle" | "length" | "x" | "y">, import("./index.js").SystemComponentType<"sketchingRectangle", import("./index.js").SketchingRectangleComponentState, "angle" | "depth" | "width" | "x" | "y">, import("./index.js").SystemComponentType<"sceneEntityRemoteObject", import("./index.js").SceneEntityRemoteObjectComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObject", import("./index.js").SceneEntityObjectComponentState, never>, import("./index.js").SystemComponentType<"customSceneEntity", import("./index.js").CustomSceneEntityComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityWallObject", import("./index.js").SceneEntityWallObjectComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityFloorObject", import("./index.js").SceneEntityFloorObjectComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityBoxObject", import("./index.js").SceneEntityBoxObjectComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityAmbientLight", import("./index.js").SceneEntityAmbientLightComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityDirectionalLight", import("./index.js").SceneEntityDirectionalLightComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityPointLight", import("./index.js").SceneEntityPointLightComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityRectAreaLight", import("./index.js").SceneEntityRectAreaLightComponentState, never>, import("./index.js").SystemComponentType<"sceneEntitySpotLight", import("./index.js").SceneEntitySpotLightComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityProperties", import("./index.js").SceneEntityPropertiesComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectProperties", import("./index.js").SceneEntityObjectPropertiesComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectGroup", import("./index.js").SceneEntityObjectGroupComponentState, never>, import("./index.js").SystemComponentType<"hiddenEntity", import("./index.js").HiddenEntityComponentState, never>, import("./index.js").SystemComponentType<"cameraBasedHiddenEntity", import("./index.js").CameraBasedHiddenEntityComponentState, never>, import("./index.js").SystemComponentType<"cameraBasedHiddenEntityObject", import("./index.js").CameraBasedHiddenEntityObjectComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityRemoteMaterialOverride", import("./index.js").SceneEntityRemoteMaterialOverrideComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityLocalMaterialOverride", import("./index.js").SceneEntityLocalMaterialOverrideComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectRemoteMaterialOverride", import("./index.js").SceneEntityObjectRemoteMaterialOverrideComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectLocalMaterialOverride", import("./index.js").SceneEntityObjectLocalMaterialOverrideComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectTransmissiveMaterialOverride", import("./index.js").SceneEntityObjectTransmissiveMaterialOverrideComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityTransmissiveMaterialOverride", import("./index.js").SceneEntityTransmissiveMaterialOverrideComponentState, never>, import("./index.js").SystemComponentType<"materialOverridePropertyTransition", import("./index.js").MaterialOverridePropertyTransitionComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityAnimation", import("./index.js").SceneEntityAnimationComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectClip", import("./index.js").SceneEntityObjectClipComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectTextDecal", import("./index.js").SceneEntityObjectTextDecalComponentState, never>, import("./index.js").SystemComponentType<"fitRootPerspectiveCamera", import("./index.js").FitRootPerspectiveCameraComponentState, never>, import("./index.js").SystemComponentType<"fitRootOrthographicCamera", import("./index.js").FitRootOrthographicCameraComponentState, never>, import("./index.js").SystemComponentType<"fitEntityPerspectiveCamera", import("./index.js").FitEntityPerspectiveCameraComponentState, never>, import("./index.js").SystemComponentType<"fitEntityOrthographicCamera", import("./index.js").FitEntityOrthographicCameraComponentState, never>, import("./index.js").SystemComponentType<"fitSelectionPerspectiveCamera", import("./index.js").FitSelectionPerspectiveCameraComponentState, never>, import("./index.js").SystemComponentType<"fitSelectionOrthographicCamera", import("./index.js").FitSelectionOrthographicCameraComponentState, never>, import("./index.js").SystemComponentType<"staticPerspectiveCamera", import("./index.js").StaticPerspectiveCameraComponentState, never>, import("./index.js").SystemComponentType<"staticOrthographicCamera", import("./index.js").StaticOrthographicCameraComponentState, never>, import("./index.js").SystemComponentType<"autorotateCamera", import("./index.js").AutorotateCameraComponentState, never>, import("./index.js").SystemComponentType<"boundingBox", import("./index.js").BoundingBoxComponentState, never>, import("./index.js").SystemComponentType<"boundingSphere", import("./index.js").BoundingSphereComponentState, never>, import("./index.js").SystemComponentType<"pivotPoint", import("./index.js").PivotPointComponentState, never>, import("./index.js").SystemComponentType<"snapPoint", import("./index.js").SnapPointComponentState, never>, import("./index.js").SystemComponentType<"snapEdge", import("./index.js").SnapEdgeComponentState, never>, import("./index.js").SystemComponentType<"snapPlane", import("./index.js").SnapPlaneComponentState, never>, import("./index.js").SystemComponentType<"snapAxis", import("./index.js").SnapAxisComponentState, never>, import("./index.js").SystemComponentType<"collisionBoxGeometry", import("./index.js").CollisionBoxGeometryComponentState, never>, import("./index.js").SystemComponentType<"collisionGeometry", import("./index.js").CollisionGeometryComponentState, never>, import("./index.js").SystemComponentType<"collisionPointGeometry", import("./index.js").CollisionPointGeometryComponentState, never>, import("./index.js").SystemComponentType<"constraint", import("./index.js").ConstraintComponentState, never>, import("./index.js").SystemComponentType<"selectable", import("./index.js").SelectableComponentState, never>, import("./index.js").SystemComponentType<"htmlHotspot", import("./index.js").HtmlHotspotComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectHtmlHotspot", import("./index.js").SceneEntityObjectHtmlHotspotComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityControl", import("./index.js").SceneEntityControlComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityAddFab", import("./index.js").SceneEntityAddFabComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityDeleteFab", import("./index.js").SceneEntityDeleteFabComponentState, never>, import("./index.js").SystemComponentType<"sceneEntitySelectHotspot", import("./index.js").SceneEntitySelectHotspotComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityNavigationHotspot", import("./index.js").SceneEntityNavigationHotspotComponentState, never>, import("./index.js").SystemComponentType<"toolMenuFab", import("./index.js").ToolMenuFabComponentState, never>, import("./index.js").SystemComponentType<"exitToolModeFab", import("./index.js").ExitToolModeFabComponentState, never>, import("./index.js").SystemComponentType<"entityHeader", import("./index.js").EntityHeaderComponentState, never>, import("./index.js").SystemComponentType<"propertyPage", import("./index.js").PropertyPageComponentState, never>, import("./index.js").SystemComponentType<"toolbar", import("./index.js").ToolbarComponentState, never>, import("./index.js").SystemComponentType<"viewControls", import("./index.js").ViewControlsComponentState, never>, import("./index.js").SystemComponentType<"toolControls", import("./index.js").ToolControlsComponentState, never>, import("./index.js").SystemComponentType<"sidebarTabs", import("./index.js").SidebarTabsComponentState, never>, import("./index.js").SystemComponentType<"horizontalTabs", import("./index.js").HorizontalTabsComponentState, never>, import("./index.js").SystemComponentType<"navigationSteps", import("./index.js").NavigationStepsComponentState, never>, import("./index.js").SystemComponentType<"finalizeAction", import("./index.js").FinalizeActionComponentState, never>, import("./index.js").SystemComponentType<"otherAction", import("./index.js").OtherActionComponentState, never>, import("./index.js").SystemComponentType<"basicSidebarFooter", import("./index.js").BasicSidebarFooterComponentState, never>, import("./index.js").SystemComponentType<"universalSidebarFooter", import("./index.js").UniversalSidebarFooterComponentState, never>, import("./index.js").SystemComponentType<"readSidebarFooter", import("./index.js").ReadSidebarFooterComponentState, never>, import("./index.js").SystemComponentType<"customSidebarFooter", import("./index.js").CustomSidebarFooterComponentState, never>, import("./index.js").SystemComponentType<"hiddenSidebarFooter", import("./index.js").HiddenSidebarFooterComponentState, never>, import("./index.js").SystemComponentType<"canvasPadding", import("./index.js").CanvasPaddingComponentState, never>, import("./index.js").SystemComponentType<"floatingHeader", import("./index.js").FloatingHeaderComponentState, never>, import("./index.js").SystemComponentType<"customHeader", import("./index.js").CustomHeaderComponentState, never>, import("./index.js").SystemComponentType<"fixedHeader", import("./index.js").FixedHeaderComponentState, never>, import("./index.js").SystemComponentType<"hiddenHeader", import("./index.js").HiddenHeaderComponentState, never>, import("./index.js").SystemComponentType<"replaceEntityRecipes", import("./index.js").ReplaceEntityRecipesComponentState, never>, import("./index.js").SystemComponentType<"replaceEntityRecipeHierarchy", import("./index.js").ReplaceEntityRecipeHierarchyComponentState, never>, import("./index.js").SystemComponentType<"childEntityRecipes", import("./index.js").ChildEntityRecipesComponentState, never>, import("./index.js").SystemComponentType<"childEntityRecipeHierarchy", import("./index.js").ChildEntityRecipeHierarchyComponentState, never>, import("./index.js").SystemComponentType<"materialSwatch", import("./index.js").MaterialSwatchComponentState, "selectedSwatchKey">, import("./index.js").SystemComponentType<"offsetAnchors", import("./index.js").OffsetAnchorsComponentState, never>, import("./index.js").SystemComponentType<"offsetIndicator", import("./index.js").OffsetIndicatorComponentState, never>, import("./index.js").SystemComponentType<"distanceDimension", import("./index.js").DistanceDimensionComponentState, "value">, import("./index.js").SystemComponentType<"angleDimension", import("./index.js").AngleValue, "value">, import("./index.js").SystemComponentType<"genericDimension", import("./index.js").GenericValue, "value">, import("./index.js").SystemComponentType<"distanceDimensionSelect", import("./index.js").DistanceDimensionSelectComponentState, "value">, import("./index.js").SystemComponentType<"colorValue", import("./index.js").ColorValueComponentState, "value">, import("./index.js").SystemComponentType<"textValue", import("./index.js").TextValueComponentState, "value">, import("./index.js").SystemComponentType<"multilingualTextValue", import("./index.js").MultilingualTextValueComponentState, "value">, import("./index.js").SystemComponentType<"attributeSelection", import("./index.js").AttributeSelectionComponentState, "value">, import("./index.js").SystemComponentType<"attributeSwitch", import("./index.js").AttributeSwitchComponentState, "value">, import("./index.js").SystemComponentType<"childEntitySelection", import("./index.js").ChildEntitySelectionComponentState, never>, import("./index.js").SystemComponentType<"size", import("./index.js").SizeComponentState, "sizeX" | "sizeY" | "sizeZ">, import("./index.js").SystemComponentType<"offset", import("./index.js").OffsetComponentState, "offsetX" | "offsetY" | "offsetZ">, import("./index.js").SystemComponentType<"editableAngleIndicator", import("./index.js").EditableAngleIndicatorComponentState, never>, import("./index.js").SystemComponentType<"editableDistanceDimensionIndicator", import("./index.js").EditableDistanceDimensionIndicatorComponentState, never>, import("./index.js").SystemComponentType<"editableOffsetIndicator", import("./index.js").EditableOffsetIndicatorComponentState, never>, import("./index.js").SystemComponentType<"editableSizeIndicator", import("./index.js").EditableSizeIndicatorComponentState, never>, import("./index.js").SystemComponentType<"listSelectorDimensionIndicator", import("./index.js").ListSelectorDimensionIndicatorComponentState, never>, import("./index.js").SystemComponentType<"hotspotDragHandle", import("./index.js").HotspotDragHandleComponentState, "draggableX" | "draggableY" | "draggableZ">, import("./index.js").SystemComponentType<"simpleSummary", import("./index.js").SimpleSummaryComponentState, never>, import("./index.js").SystemComponentType<"clientSideImage", import("./index.js").ClientSideImageComponentState, never>, import("./index.js").SystemComponentType<"saveTemplateThumbnail", import("./index.js").SaveTemplateThumbnailComponentState, never>, import("./index.js").SystemComponentType<"projectedEntities", import("./index.js").ProjectedEntitiesComponentState, never>, import("./index.js").SystemComponentType<"violations", import("./index.js").ViolationComponentState, never>];
|
|
7
|
+
export declare const availableSystemComponents: [import("./index.js").SystemComponentType<"applicationConfig", import("./index.js").ApplicationConfigComponentState, never>, import("./index.js").SystemComponentType<"price", import("./index.js").PriceComponentState, never>, import("./index.js").SystemComponentType<"detail", import("./index.js").DetailComponentState, never>, import("./index.js").SystemComponentType<"canvasConfig", import("./index.js").CanvasConfigComponentState, never>, import("./index.js").SystemComponentType<"canvasCustomEnvironment", import("./index.js").CanvasCustomEnvironmentComponentState, never>, import("./index.js").SystemComponentType<"canvasPresetEnvironment", import("./index.js").CanvasPresetEnvironmentComponentState, never>, import("./index.js").SystemComponentType<"dimensionIndicator", import("./index.js").DimensionIndicatorComponentState, never>, import("./index.js").SystemComponentType<"angleIndicator", import("./index.js").AngleIndicatorComponentState, never>, import("./index.js").SystemComponentType<"dragHandle", import("./index.js").DragHandleComponentState, "draggableRotationY" | "draggableX" | "draggableY" | "draggableZ">, import("./index.js").SystemComponentType<"rotationHandle", import("./index.js").RotationHandleComponentState, never>, import("./index.js").SystemComponentType<"rotatable", import("./index.js").RotatableComponentState, "rotation">, import("./index.js").SystemComponentType<"sketching", import("./index.js").SketchingComponentState, never>, import("./index.js").SystemComponentType<"sketchingDraw", import("./index.js").SketchingDrawComponentState, never>, import("./index.js").SystemComponentType<"sketchingEdit", import("./index.js").SketchingEditComponentState, never>, import("./index.js").SystemComponentType<"sketchingLine", import("./index.js").SketchingLineComponentState, "angle" | "length" | "x" | "y">, import("./index.js").SystemComponentType<"sketchingRectangle", import("./index.js").SketchingRectangleComponentState, "angle" | "depth" | "width" | "x" | "y">, import("./index.js").SystemComponentType<"sceneEntityRemoteObject", import("./index.js").SceneEntityRemoteObjectComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObject", import("./index.js").SceneEntityObjectComponentState, never>, import("./index.js").SystemComponentType<"customSceneEntity", import("./index.js").CustomSceneEntityComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityWallObject", import("./index.js").SceneEntityWallObjectComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityFloorObject", import("./index.js").SceneEntityFloorObjectComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityBoxObject", import("./index.js").SceneEntityBoxObjectComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityAmbientLight", import("./index.js").SceneEntityAmbientLightComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityDirectionalLight", import("./index.js").SceneEntityDirectionalLightComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityPointLight", import("./index.js").SceneEntityPointLightComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityRectAreaLight", import("./index.js").SceneEntityRectAreaLightComponentState, never>, import("./index.js").SystemComponentType<"sceneEntitySpotLight", import("./index.js").SceneEntitySpotLightComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityProperties", import("./index.js").SceneEntityPropertiesComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectProperties", import("./index.js").SceneEntityObjectPropertiesComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectGroup", import("./index.js").SceneEntityObjectGroupComponentState, never>, import("./index.js").SystemComponentType<"hiddenEntity", import("./index.js").HiddenEntityComponentState, never>, import("./index.js").SystemComponentType<"cameraBasedHiddenEntity", import("./index.js").CameraBasedHiddenEntityComponentState, never>, import("./index.js").SystemComponentType<"cameraBasedHiddenEntityObject", import("./index.js").CameraBasedHiddenEntityObjectComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityRemoteMaterialOverride", import("./index.js").SceneEntityRemoteMaterialOverrideComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityLocalMaterialOverride", import("./index.js").SceneEntityLocalMaterialOverrideComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectRemoteMaterialOverride", import("./index.js").SceneEntityObjectRemoteMaterialOverrideComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectLocalMaterialOverride", import("./index.js").SceneEntityObjectLocalMaterialOverrideComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectTransmissiveMaterialOverride", import("./index.js").SceneEntityObjectTransmissiveMaterialOverrideComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityTransmissiveMaterialOverride", import("./index.js").SceneEntityTransmissiveMaterialOverrideComponentState, never>, import("./index.js").SystemComponentType<"materialOverridePropertyTransition", import("./index.js").MaterialOverridePropertyTransitionComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityAnimation", import("./index.js").SceneEntityAnimationComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectClip", import("./index.js").SceneEntityObjectClipComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectTextDecal", import("./index.js").SceneEntityObjectTextDecalComponentState, never>, import("./index.js").SystemComponentType<"fitRootPerspectiveCamera", import("./index.js").FitRootPerspectiveCameraComponentState, never>, import("./index.js").SystemComponentType<"fitRootOrthographicCamera", import("./index.js").FitRootOrthographicCameraComponentState, never>, import("./index.js").SystemComponentType<"fitEntityPerspectiveCamera", import("./index.js").FitEntityPerspectiveCameraComponentState, never>, import("./index.js").SystemComponentType<"fitEntityOrthographicCamera", import("./index.js").FitEntityOrthographicCameraComponentState, never>, import("./index.js").SystemComponentType<"fitSelectionPerspectiveCamera", import("./index.js").FitSelectionPerspectiveCameraComponentState, never>, import("./index.js").SystemComponentType<"fitSelectionOrthographicCamera", import("./index.js").FitSelectionOrthographicCameraComponentState, never>, import("./index.js").SystemComponentType<"staticPerspectiveCamera", import("./index.js").StaticPerspectiveCameraComponentState, never>, import("./index.js").SystemComponentType<"staticOrthographicCamera", import("./index.js").StaticOrthographicCameraComponentState, never>, import("./index.js").SystemComponentType<"autorotateCamera", import("./index.js").AutorotateCameraComponentState, never>, import("./index.js").SystemComponentType<"boundingBox", import("./index.js").BoundingBoxComponentState, never>, import("./index.js").SystemComponentType<"boundingSphere", import("./index.js").BoundingSphereComponentState, never>, import("./index.js").SystemComponentType<"pivotPoint", import("./index.js").PivotPointComponentState, never>, import("./index.js").SystemComponentType<"snapPoint", import("./index.js").SnapPointComponentState, never>, import("./index.js").SystemComponentType<"snapEdge", import("./index.js").SnapEdgeComponentState, never>, import("./index.js").SystemComponentType<"snapPlane", import("./index.js").SnapPlaneComponentState, never>, import("./index.js").SystemComponentType<"snapAxis", import("./index.js").SnapAxisComponentState, never>, import("./index.js").SystemComponentType<"collisionBoxGeometry", import("./index.js").CollisionBoxGeometryComponentState, never>, import("./index.js").SystemComponentType<"collisionGeometry", import("./index.js").CollisionGeometryComponentState, never>, import("./index.js").SystemComponentType<"collisionPointGeometry", import("./index.js").CollisionPointGeometryComponentState, never>, import("./index.js").SystemComponentType<"constraint", import("./index.js").ConstraintComponentState, never>, import("./index.js").SystemComponentType<"selectable", import("./index.js").SelectableComponentState, never>, import("./index.js").SystemComponentType<"htmlHotspot", import("./index.js").HtmlHotspotComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityObjectHtmlHotspot", import("./index.js").SceneEntityObjectHtmlHotspotComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityControl", import("./index.js").SceneEntityControlComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityAddFab", import("./index.js").SceneEntityAddFabComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityDeleteFab", import("./index.js").SceneEntityDeleteFabComponentState, never>, import("./index.js").SystemComponentType<"sceneEntitySelectHotspot", import("./index.js").SceneEntitySelectHotspotComponentState, never>, import("./index.js").SystemComponentType<"sceneEntityNavigationHotspot", import("./index.js").SceneEntityNavigationHotspotComponentState, never>, import("./index.js").SystemComponentType<"toolMenuFab", import("./index.js").ToolMenuFabComponentState, never>, import("./index.js").SystemComponentType<"exitToolModeFab", import("./index.js").ExitToolModeFabComponentState, never>, import("./index.js").SystemComponentType<"entityHeader", import("./index.js").EntityHeaderComponentState, never>, import("./index.js").SystemComponentType<"propertyPage", import("./index.js").PropertyPageComponentState, never>, import("./index.js").SystemComponentType<"toolbar", import("./index.js").ToolbarComponentState, never>, import("./index.js").SystemComponentType<"viewControls", import("./index.js").ViewControlsComponentState, never>, import("./index.js").SystemComponentType<"toolControls", import("./index.js").ToolControlsComponentState, never>, import("./index.js").SystemComponentType<"sidebarTabs", import("./index.js").SidebarTabsComponentState, never>, import("./index.js").SystemComponentType<"horizontalTabs", import("./index.js").HorizontalTabsComponentState, never>, import("./index.js").SystemComponentType<"navigationSteps", import("./index.js").NavigationStepsComponentState, never>, import("./index.js").SystemComponentType<"finalizeAction", import("./index.js").FinalizeActionComponentState, never>, import("./index.js").SystemComponentType<"otherAction", import("./index.js").OtherActionComponentState, never>, import("./index.js").SystemComponentType<"basicSidebarFooter", import("./index.js").BasicSidebarFooterComponentState, never>, import("./index.js").SystemComponentType<"universalSidebarFooter", import("./index.js").UniversalSidebarFooterComponentState, never>, import("./index.js").SystemComponentType<"readSidebarFooter", import("./index.js").ReadSidebarFooterComponentState, never>, import("./index.js").SystemComponentType<"customSidebarFooter", import("./index.js").CustomSidebarFooterComponentState, never>, import("./index.js").SystemComponentType<"hiddenSidebarFooter", import("./index.js").HiddenSidebarFooterComponentState, never>, import("./index.js").SystemComponentType<"canvasPadding", import("./index.js").CanvasPaddingComponentState, never>, import("./index.js").SystemComponentType<"floatingHeader", import("./index.js").FloatingHeaderComponentState, never>, import("./index.js").SystemComponentType<"customHeader", import("./index.js").CustomHeaderComponentState, never>, import("./index.js").SystemComponentType<"fixedHeader", import("./index.js").FixedHeaderComponentState, never>, import("./index.js").SystemComponentType<"hiddenHeader", import("./index.js").HiddenHeaderComponentState, never>, import("./index.js").SystemComponentType<"replaceEntityRecipes", import("./index.js").ReplaceEntityRecipesComponentState, never>, import("./index.js").SystemComponentType<"replaceEntityRecipeHierarchy", import("./index.js").ReplaceEntityRecipeHierarchyComponentState, never>, import("./index.js").SystemComponentType<"childEntityRecipes", import("./index.js").ChildEntityRecipesComponentState, never>, import("./index.js").SystemComponentType<"childEntityRecipeHierarchy", import("./index.js").ChildEntityRecipeHierarchyComponentState, never>, import("./index.js").SystemComponentType<"materialSwatch", import("./index.js").MaterialSwatchComponentState, "selectedSwatchKey">, import("./index.js").SystemComponentType<"offsetAnchors", import("./index.js").OffsetAnchorsComponentState, never>, import("./index.js").SystemComponentType<"offsetIndicator", import("./index.js").OffsetIndicatorComponentState, never>, import("./index.js").SystemComponentType<"distanceDimension", import("./index.js").DistanceDimensionComponentState, "value">, import("./index.js").SystemComponentType<"angleDimension", import("./index.js").AngleValue, "value">, import("./index.js").SystemComponentType<"genericDimension", import("./index.js").GenericValue, "value">, import("./index.js").SystemComponentType<"distanceDimensionSelect", import("./index.js").DistanceDimensionSelectComponentState, "value">, import("./index.js").SystemComponentType<"colorValue", import("./index.js").ColorValueComponentState, "value">, import("./index.js").SystemComponentType<"textValue", import("./index.js").TextValueComponentState, "value">, import("./index.js").SystemComponentType<"multilingualTextValue", import("./index.js").MultilingualTextValueComponentState, "value">, import("./index.js").SystemComponentType<"attributeSelection", import("./index.js").AttributeSelectionComponentState, "value">, import("./index.js").SystemComponentType<"attributeSwitch", import("./index.js").AttributeSwitchComponentState, "value">, import("./index.js").SystemComponentType<"childEntitySelection", import("./index.js").ChildEntitySelectionComponentState, never>, import("./index.js").SystemComponentType<"size", import("./index.js").SizeComponentState, "sizeX" | "sizeY" | "sizeZ">, import("./index.js").SystemComponentType<"offset", import("./index.js").OffsetComponentState, "offsetX" | "offsetY" | "offsetZ">, import("./index.js").SystemComponentType<"editableAngleIndicator", import("./index.js").EditableAngleIndicatorComponentState, never>, import("./index.js").SystemComponentType<"editableDistanceDimensionIndicator", import("./index.js").EditableDistanceDimensionIndicatorComponentState, never>, import("./index.js").SystemComponentType<"editableOffsetIndicator", import("./index.js").EditableOffsetIndicatorComponentState, never>, import("./index.js").SystemComponentType<"editableSizeIndicator", import("./index.js").EditableSizeIndicatorComponentState, never>, import("./index.js").SystemComponentType<"listSelectorDimensionIndicator", import("./index.js").ListSelectorDimensionIndicatorComponentState, never>, import("./index.js").SystemComponentType<"hotspotDragHandle", import("./index.js").HotspotDragHandleComponentState, "draggableX" | "draggableY" | "draggableZ">, import("./index.js").SystemComponentType<"simpleSummary", import("./index.js").SimpleSummaryComponentState, never>, import("./index.js").SystemComponentType<"clientSideImage", import("./index.js").ClientSideImageComponentState, never>, import("./index.js").SystemComponentType<"saveTemplateThumbnail", import("./index.js").SaveTemplateThumbnailComponentState, never>, import("./index.js").SystemComponentType<"agentScreenshot", import("./index.js").AgentScreenshotComponentState, never>, import("./index.js").SystemComponentType<"projectedEntities", import("./index.js").ProjectedEntitiesComponentState, never>, import("./index.js").SystemComponentType<"violations", import("./index.js").ViolationComponentState, never>];
|
|
8
8
|
/**
|
|
9
9
|
* Get component by name from all domain spec available components
|
|
10
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{violationsComponent as e}from"./core/index.js";import{
|
|
1
|
+
import{violationsComponent as e}from"./core/index.js";import{agentScreenshotComponent as o,angleIndicatorComponent as n,attributeSwitchComponent as m,autorotateCameraComponent as s,basicSidebarFooterComponent as t,cameraBasedHiddenEntityComponent as p,cameraBasedHiddenEntityObjectComponent as a,canvasConfigComponent as i,canvasCustomEnvironmentComponent as r,canvasPaddingComponent as x,canvasPresetEnvironmentComponent as c,childEntityRecipeHierarchyComponent as l,clientSideImageComponent as y,colorValueComponent as d,customHeaderComponent as f,customSidebarFooterComponent as j,dimensionIndicatorComponent as b,editableAngleIndicatorComponent as v,editableDistanceDimensionIndicatorComponent as C,editableOffsetIndicatorComponent as S,editableSizeIndicatorComponent as w,entityHeaderComponent as B,exitToolModeFabComponent as M,finalizeActionComponent as N,fitSelectionOrthographicCameraComponent as g,fitSelectionPerspectiveCameraComponent as h,fixedHeaderComponent as k,floatingHeaderComponent as q,hiddenHeaderComponent as u,hiddenSidebarFooterComponent as z,horizontalTabsComponent as A,htmlHotspotComponent as D,listSelectorDimensionIndicatorComponent as E,multilingualTextValueComponent as F,navigationStepsComponent as G,offsetAnchorsComponent as H,offsetComponent as I,offsetIndicatorComponent as J,otherActionComponent as K,propertyPageComponent as L,readSidebarFooterComponent as O,replaceEntityRecipeHierarchyComponent as P,rotatableComponent as Q,rotationHandleComponent as R,saveTemplateThumbnailComponent as T,sceneEntityAddFabComponent as U,sceneEntityAnimationComponent as V,sceneEntityControlComponent as W,sceneEntityDeleteFabComponent as X,sceneEntityFloorObjectComponent as Y,sceneEntityNavigationHotspotComponent as Z,sceneEntityObjectHtmlHotspotComponent as $,sceneEntitySelectHotspotComponent as _,sceneEntityWallObjectComponent as ee,selectableComponent as eo,sidebarTabsComponent as en,simpleSummaryComponent as em,sizeComponent as es,sketchingDrawComponent as et,sketchingEditComponent as ep,textValueComponent as ea,toolControlsComponent as ei,toolMenuFabComponent as er,toolbarComponent as ex,universalSidebarFooterComponent as ec,viewControlsComponent as el}from"./extensions/index.js";import{angleDimensionComponent as ey,applicationConfigComponent as ed,attributeSelectionComponent as ef,boundingBoxComponent as ej,boundingSphereComponent as eb,childEntityRecipesComponent as ev,childEntitySelectionComponent as eC,collisionBoxGeometryComponent as eS,collisionGeometryComponent as ew,collisionPointGeometryComponent as eB,constraintComponent as eM,customSceneEntityComponent as eN,detailComponent as eg,distanceDimensionComponent as eh,distanceDimensionSelectComponent as ek,dragHandleComponent as eq,fitEntityOrthographicCameraComponent as eu,fitEntityPerspectiveCameraComponent as ez,fitRootOrthographicCameraComponent as eA,fitRootPerspectiveCameraComponent as eD,genericDimensionComponent as eE,hiddenEntityComponent as eF,hotspotDragHandleComponent as eG,materialOverridePropertyTransitionComponent as eH,materialSwatchComponent as eI,pivotPointComponent as eJ,priceComponent as eK,projectedEntitiesComponent as eL,replaceEntityRecipesComponent as eO,sceneEntityAmbientLightComponent as eP,sceneEntityBoxObjectComponent as eQ,sceneEntityDirectionalLightComponent as eR,sceneEntityLocalMaterialOverrideComponent as eT,sceneEntityObjectClipComponent as eU,sceneEntityObjectComponent as eV,sceneEntityObjectGroupComponent as eW,sceneEntityObjectLocalMaterialOverrideComponent as eX,sceneEntityObjectPropertiesComponent as eY,sceneEntityObjectRemoteMaterialOverrideComponent as eZ,sceneEntityObjectTextDecalComponent as e$,sceneEntityObjectTransmissiveMaterialOverrideComponent as e_,sceneEntityPointLightComponent as e0,sceneEntityPropertiesComponent as e1,sceneEntityRectAreaLightComponent as e2,sceneEntityRemoteMaterialOverrideComponent as e3,sceneEntityRemoteObjectComponent as e4,sceneEntitySpotLightComponent as e5,sceneEntityTransmissiveMaterialOverrideComponent as e6,sketchingComponent as e7,sketchingLineComponent as e8,sketchingRectangleComponent as e9,snapAxisComponent as oe,snapEdgeComponent as oo,snapPlaneComponent as on,snapPointComponent as om,staticOrthographicCameraComponent as os,staticPerspectiveCameraComponent as ot}from"./system-components/index.js";export const availableSystemComponents=[ed,eK,eg,i,r,c,b,n,eq,R,Q,e7,et,ep,e8,e9,e4,eV,eN,ee,Y,eQ,eP,eR,e0,e2,e5,e1,eY,eW,eF,p,a,e3,eT,eZ,eX,e_,e6,eH,V,eU,e$,eD,eA,ez,eu,h,g,ot,os,s,ej,eb,eJ,om,oo,on,oe,eS,ew,eB,eM,eo,D,$,W,U,X,_,Z,er,M,B,L,ex,el,ei,en,A,G,N,K,t,ec,O,j,z,x,q,f,k,u,eO,P,ev,l,eI,H,J,eh,ey,eE,ek,d,ea,F,ef,m,eC,es,I,v,C,S,w,E,eG,em,y,T,o,eL,e];export const componentsByName=new Map(availableSystemComponents.map(e=>[e.name,e]));
|
|
@@ -53,6 +53,11 @@ export declare class StoreSystem<ENTITIES extends DomainEntity<string>, $MAP ext
|
|
|
53
53
|
private readonly _context;
|
|
54
54
|
readonly stateSlices: Readonly<Record<StateSliceName, ObservableWithLastValue<StateEmission<ENTITIES, $MAP>>>>;
|
|
55
55
|
get isInitialized(): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* True while a change the user is making, such as a drag, is staged and neither committed nor
|
|
58
|
+
* rolled back. A hover is shown through a staged emission too, but stages no updates.
|
|
59
|
+
*/
|
|
60
|
+
get hasStagedUpdates(): boolean;
|
|
56
61
|
private _onBeforeCommitHooks;
|
|
57
62
|
private readonly committed;
|
|
58
63
|
private readonly potentiallyInvalid;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{CompositeKeyMap as e,assertExistence as t,isEqualArray as i}from"@salsita-ai/common/utils";import{domainEntityTypeFromId as r,dragStateComponent as o,getComponentSystemFilterState as s,hoverStateComponent as n,isEqualComponentInstance as a,isSystemViewportStateComponentSnapshot as d,isVirtualEntityId as m,selectionStateComponent as l,systemUpdateFactory as c,systemVirtualEntityId as p}from"../../core/index.js";import{projectedEntitiesComponent as h}from"../../system-components/index.js";import{cloneEvalCache as v,createEvalCacheToken as f,getEvalCache as g,setEvalCache as u}from"../../utils/eval-cache.js";import{createCascadeDeletesTransformer as y,createCascadeRefPruningTransformer as S}from"../relation-transformers/index.js";import{applyUpdates as I}from"./apply-updates.js";import{LifecycleStateSlice as _}from"./lifecycle-state-slice.js";import{mergeReconciliationsUpdates as x,reconcileProjectedEntities as T}from"./reconcile-projected-entities.js";let E={uninitializedError:"StoreSystem is not initialized."},k=f({clone:e=>e}),w=class InvalidInitialStateError extends Error{emission;childError;constructor(e,t,i){let r="";"uncaught"===e.validity.severity&&(r=`: ${e.validity.error.message}`),("fatal"===e.validity.severity||"fixable"===e.validity.severity)&&(r=`: ${e.validity.entityViolations.map(e=>{let i=e.violation.message;return null!=i?t(i):e.violation.type}).join(", ")}`),super(`Initial state is not valid! Severity: ${e.validity.severity}, Cause: ${r}`),this.emission=e,this.childError=i,this.name="InvalidInitialStateError"}},b=(e,t)=>{try{return e()}catch(e){throw t(e),e}};export class StoreSystem{_context;stateSlices;get isInitialized(){return this.committed.isInitialized}_onBeforeCommitHooks=[];committed=new _(E);potentiallyInvalid=new _(E);rendered=new _(E);stagedUpdates=void 0;transformToDataUpdates=(e,t)=>{let i=!1,r=e.map(e=>"modifyComponent"===e.kind?(i=!0,this.componentModificationToDataUpdate(e,t)):e);return i?r:e};createInitialTransformPipe=()=>[{transformer:this.transformToDataUpdates,priority:1/0,registrationToken:{},name:"TransformToDataUpdates"}];transformPipe=this.createInitialTransformPipe();_cascadeDeletesTransformer=(...e)=>(this._cascadeDeletesTransformerMemo??=y(this._context.selectors.getCompositionProjections()))(...e);_cascadeDeletesTransformerMemo;_refPruningTransformer=(...e)=>(this._refPruningTransformerMemo??=S(this._context.selectors.getComponentReader()))(...e);_refPruningTransformerMemo;_deselectOnDeleteTransformer=(e,t)=>{let i=new Set(e.filter(e=>"deleteEntity"===e.kind).map(e=>e.entityId));if(0===i.size)return e;let r=s(t).selectedEntityId;return r&&i.has(r)?[...e,c.EphemeralRecordModification({componentInstance:{entityId:p,componentType:l},updateTag:"AutoDeselectRemovedProjectedEntity",writableState:{selectedEntityId:t.rootEntityId}})]:e};constructor(e){this._context=e,this.stateSlices={committed:this.committed.observable,rendered:this.rendered.observable,potentiallyInvalid:this.potentiallyInvalid.observable}}_validateState=e=>this._context.selectors.getValidationProjections().validateState(e);initialize=()=>{let e=this._context.selectors.getInitialDomainState();this.stagedUpdates=void 0;let t=this._validateState(e),i={kind:"reset",state:e,validity:t,tag:void 0,transformationLog:void 0},r=i;if(!r.validity.valid&&"fatal"===r.validity.severity||"fixable"===r.validity.severity){this._context.domainServicesSelectors.getLogger().debug("Trying to fix initial emission:",r);let e=r.state,{transformedUpdates:t,transformationLog:i}=this.applyTransformers([],e,"committed"),o=I(this.transformToDataUpdates(t,e),e);v(e,o),r={kind:"reset",state:o,validity:this._validateState(o),tag:"fixed",transformationLog:i}}if(!r.validity.valid){if(this._context.domainServicesSelectors.getLogger().error("Invalid initial emission:",{initialEmission:i,fixedEmission:r}),"uncaught"===r.validity.severity)throw new w(r,this._context.domainServicesSelectors.getResolveLocalizable(),r.validity.error??void 0);throw new w(r,this._context.domainServicesSelectors.getResolveLocalizable())}this.committed.next(r),this.rendered.next(r),this.potentiallyInvalid.next(r)};registerTransformer(e,i,r){let o={};return((e,i,r)=>{let o=0;for(;o<e.length&&0>=r(t(e[o]),i);)o++;e.splice(o,0,i)})(this.transformPipe,{registrationToken:o,transformer:i,priority:e,name:r},(e,t)=>e.priority===t.priority?0:e.priority<t.priority?-1:1),()=>{let e=this.transformPipe.findIndex(e=>e.registrationToken===o);-1!==e&&this.transformPipe.splice(e,1)}}onBeforeCommit(e){return this._onBeforeCommitHooks.push(e),()=>{this._onBeforeCommitHooks=this._onBeforeCommitHooks.filter(t=>t!==e)}}componentModificationToDataUpdate=(e,t)=>{let i=e.entityId;if(!m(i)){let t=this._context.selectors.getComponentReaderIndexes().opticMap.get(r(i))?.get(e.componentInstance.componentType)?.get(e.componentInstance.instanceName);if(t?.kind==="simple"){let r=t.write(e.writableState);return{kind:"modifyDomainEntity",entityId:i,updateTag:e.updateTag,stateDelta:r,hint:e.hint,agentHint:e.agentHint,origin:e}}}let o=t.ephemeralRecords.find(t=>a(t.componentInstance,e.componentInstance));if(o)return{kind:"modifyEphemeralRecord",entityId:e.entityId,updateTag:e.updateTag,componentInstance:o.componentInstance,writableState:e.writableState,hint:e.hint,agentHint:e.agentHint};throw Error(`Component ${e.componentInstance.componentType.name} is not attached on entity #${e.entityId}`)};getNewState=(e,t)=>{let i=I(this.transformToDataUpdates(e,t),t);return v(this.rendered.isInitialized?this.rendered.value.state:t,i),i};applyTransformers(e,t,i){let r=this._context.environmentSelectors.getEnvironmentIsDev()?[]:void 0;return{transformedUpdates:this.transformPipe.reduce((e,{transformer:o,name:s})=>{let n,a=r?[]:void 0,d=a?(e,t,i)=>{n=e,a.push({phase:e,message:t,data:i})}:void 0,m=b(()=>o(e,t,i,d),o=>{this._context.domainServicesSelectors.getLogger().error("Error while applying transformer!",{name:s,updates:e,previousState:t,kind:i,transformationLog:r},o instanceof Error?o:Error(String(o)))});return a&&r&&r.push({name:s,status:n??(m===e?"no-event":"apply"),entries:a,updatesIn:e,updatesOut:m}),m},e),transformationLog:r}}_updateProjectedEntities(e,t,r){if(!e.validity.valid)return e;let o=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[h]},e.state),s=g(e.previousState,k);if(s&&i(s,o))return e;let n=0,a=e,d=[];for(;a.validity.valid;){n++;let i=T(a.state.entities,o,t);if(0===i.length)break;if(n>10)throw Error(`Maximum number of reconciliation rounds reached: 10. Projected entities seem to be recursively depending on themselves.
|
|
1
|
+
import{CompositeKeyMap as e,assertExistence as t,isEqualArray as i}from"@salsita-ai/common/utils";import{domainEntityTypeFromId as r,dragStateComponent as o,getComponentSystemFilterState as s,hoverStateComponent as n,isEqualComponentInstance as a,isSystemViewportStateComponentSnapshot as d,isVirtualEntityId as m,selectionStateComponent as l,systemUpdateFactory as c,systemVirtualEntityId as p}from"../../core/index.js";import{projectedEntitiesComponent as h}from"../../system-components/index.js";import{cloneEvalCache as v,createEvalCacheToken as f,getEvalCache as g,setEvalCache as u}from"../../utils/eval-cache.js";import{createCascadeDeletesTransformer as y,createCascadeRefPruningTransformer as S}from"../relation-transformers/index.js";import{applyUpdates as I}from"./apply-updates.js";import{LifecycleStateSlice as _}from"./lifecycle-state-slice.js";import{mergeReconciliationsUpdates as x,reconcileProjectedEntities as T}from"./reconcile-projected-entities.js";let E={uninitializedError:"StoreSystem is not initialized."},k=f({clone:e=>e}),w=class InvalidInitialStateError extends Error{emission;childError;constructor(e,t,i){let r="";"uncaught"===e.validity.severity&&(r=`: ${e.validity.error.message}`),("fatal"===e.validity.severity||"fixable"===e.validity.severity)&&(r=`: ${e.validity.entityViolations.map(e=>{let i=e.violation.message;return null!=i?t(i):e.violation.type}).join(", ")}`),super(`Initial state is not valid! Severity: ${e.validity.severity}, Cause: ${r}`),this.emission=e,this.childError=i,this.name="InvalidInitialStateError"}},b=(e,t)=>{try{return e()}catch(e){throw t(e),e}};export class StoreSystem{_context;stateSlices;get isInitialized(){return this.committed.isInitialized}get hasStagedUpdates(){return void 0!==this.stagedUpdates}_onBeforeCommitHooks=[];committed=new _(E);potentiallyInvalid=new _(E);rendered=new _(E);stagedUpdates=void 0;transformToDataUpdates=(e,t)=>{let i=!1,r=e.map(e=>"modifyComponent"===e.kind?(i=!0,this.componentModificationToDataUpdate(e,t)):e);return i?r:e};createInitialTransformPipe=()=>[{transformer:this.transformToDataUpdates,priority:1/0,registrationToken:{},name:"TransformToDataUpdates"}];transformPipe=this.createInitialTransformPipe();_cascadeDeletesTransformer=(...e)=>(this._cascadeDeletesTransformerMemo??=y(this._context.selectors.getCompositionProjections()))(...e);_cascadeDeletesTransformerMemo;_refPruningTransformer=(...e)=>(this._refPruningTransformerMemo??=S(this._context.selectors.getComponentReader()))(...e);_refPruningTransformerMemo;_deselectOnDeleteTransformer=(e,t)=>{let i=new Set(e.filter(e=>"deleteEntity"===e.kind).map(e=>e.entityId));if(0===i.size)return e;let r=s(t).selectedEntityId;return r&&i.has(r)?[...e,c.EphemeralRecordModification({componentInstance:{entityId:p,componentType:l},updateTag:"AutoDeselectRemovedProjectedEntity",writableState:{selectedEntityId:t.rootEntityId}})]:e};constructor(e){this._context=e,this.stateSlices={committed:this.committed.observable,rendered:this.rendered.observable,potentiallyInvalid:this.potentiallyInvalid.observable}}_validateState=e=>this._context.selectors.getValidationProjections().validateState(e);initialize=()=>{let e=this._context.selectors.getInitialDomainState();this.stagedUpdates=void 0;let t=this._validateState(e),i={kind:"reset",state:e,validity:t,tag:void 0,transformationLog:void 0},r=i;if(!r.validity.valid&&"fatal"===r.validity.severity||"fixable"===r.validity.severity){this._context.domainServicesSelectors.getLogger().debug("Trying to fix initial emission:",r);let e=r.state,{transformedUpdates:t,transformationLog:i}=this.applyTransformers([],e,"committed"),o=I(this.transformToDataUpdates(t,e),e);v(e,o),r={kind:"reset",state:o,validity:this._validateState(o),tag:"fixed",transformationLog:i}}if(!r.validity.valid){if(this._context.domainServicesSelectors.getLogger().error("Invalid initial emission:",{initialEmission:i,fixedEmission:r}),"uncaught"===r.validity.severity)throw new w(r,this._context.domainServicesSelectors.getResolveLocalizable(),r.validity.error??void 0);throw new w(r,this._context.domainServicesSelectors.getResolveLocalizable())}this.committed.next(r),this.rendered.next(r),this.potentiallyInvalid.next(r)};registerTransformer(e,i,r){let o={};return((e,i,r)=>{let o=0;for(;o<e.length&&0>=r(t(e[o]),i);)o++;e.splice(o,0,i)})(this.transformPipe,{registrationToken:o,transformer:i,priority:e,name:r},(e,t)=>e.priority===t.priority?0:e.priority<t.priority?-1:1),()=>{let e=this.transformPipe.findIndex(e=>e.registrationToken===o);-1!==e&&this.transformPipe.splice(e,1)}}onBeforeCommit(e){return this._onBeforeCommitHooks.push(e),()=>{this._onBeforeCommitHooks=this._onBeforeCommitHooks.filter(t=>t!==e)}}componentModificationToDataUpdate=(e,t)=>{let i=e.entityId;if(!m(i)){let t=this._context.selectors.getComponentReaderIndexes().opticMap.get(r(i))?.get(e.componentInstance.componentType)?.get(e.componentInstance.instanceName);if(t?.kind==="simple"){let r=t.write(e.writableState);return{kind:"modifyDomainEntity",entityId:i,updateTag:e.updateTag,stateDelta:r,hint:e.hint,agentHint:e.agentHint,origin:e}}}let o=t.ephemeralRecords.find(t=>a(t.componentInstance,e.componentInstance));if(o)return{kind:"modifyEphemeralRecord",entityId:e.entityId,updateTag:e.updateTag,componentInstance:o.componentInstance,writableState:e.writableState,hint:e.hint,agentHint:e.agentHint};throw Error(`Component ${e.componentInstance.componentType.name} is not attached on entity #${e.entityId}`)};getNewState=(e,t)=>{let i=I(this.transformToDataUpdates(e,t),t);return v(this.rendered.isInitialized?this.rendered.value.state:t,i),i};applyTransformers(e,t,i){let r=this._context.environmentSelectors.getEnvironmentIsDev()?[]:void 0;return{transformedUpdates:this.transformPipe.reduce((e,{transformer:o,name:s})=>{let n,a=r?[]:void 0,d=a?(e,t,i)=>{n=e,a.push({phase:e,message:t,data:i})}:void 0,m=b(()=>o(e,t,i,d),o=>{this._context.domainServicesSelectors.getLogger().error("Error while applying transformer!",{name:s,updates:e,previousState:t,kind:i,transformationLog:r},o instanceof Error?o:Error(String(o)))});return a&&r&&r.push({name:s,status:n??(m===e?"no-event":"apply"),entries:a,updatesIn:e,updatesOut:m}),m},e),transformationLog:r}}_updateProjectedEntities(e,t,r){if(!e.validity.valid)return e;let o=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[h]},e.state),s=g(e.previousState,k);if(s&&i(s,o))return e;let n=0,a=e,d=[];for(;a.validity.valid;){n++;let i=T(a.state.entities,o,t);if(0===i.length)break;if(n>10)throw Error(`Maximum number of reconciliation rounds reached: 10. Projected entities seem to be recursively depending on themselves.
|
|
2
2
|
If expressions populating 'projectedEntities' components rely on other projected entities, make sure that the dependencies do not have cycles.`);let s=(d=x(d,i)).map(e=>e.dataUpdate),m=this._cascadeDeletesTransformer(s,e.previousState,r,void 0,t),l=this._refPruningTransformer(m,e.previousState,r,void 0,t),c=this._deselectOnDeleteTransformer(l,e.previousState,r,void 0,t);if(!(a=this.prepareStateEmissionWithoutTransformation([...t,...c],e.previousState,r)).validity.valid)return this._context.domainServicesSelectors.getLogger().error("Reconciliation of projected entities led to an invalid state! Reconciliation skipped.",{emission:a}),e;o=this._context.selectors.getComponentReader().readManyComponents({componentTypes:[h]},a.state)}return u(a.state,k,o),a}prepareStateEmission(e,t,i){let{transformedUpdates:r,transformationLog:o}=this.applyTransformers(e,t,i),s=this.prepareStateEmissionWithoutTransformation(r,t,i);return{...this._updateProjectedEntities(s,r,i),transformationLog:o}}emissionCache=new e([Map,WeakMap,WeakMap,WeakMap,WeakMap]);getEmissionCacheKey=(e,t,i)=>[e,t,i,this._context.selectors.getStoreRuntimeDependencies(),this._context.selectors.getExpressionContext()];prepareStateEmissionWithoutTransformation=(e,t,i)=>{let r=this.getEmissionCacheKey(i,t,e),o=this.emissionCache.get(r);if(o)return o;let s=b(()=>this.transformToDataUpdates(e,t),r=>{this._context.domainServicesSelectors.getLogger().error("Error while transforming updates to data updates!",{updates:e,previousState:t,kind:i},r instanceof Error?r:Error(String(r)))}),n=b(()=>I(s,t),r=>{this._context.domainServicesSelectors.getLogger().error("Error while applying updates!",{updates:e,previousState:t,kind:i,dataUpdates:s},r instanceof Error?r:Error(String(r)))});v(this.rendered.isInitialized?this.rendered.value.state:t,n);let a=this._validateState(n);"uncaught"===a.severity&&this._context.domainServicesSelectors.getLogger().error("There was an uncaught validation error:",{updates:e,dataUpdates:s,previousState:t,newState:n,kind:i},a.error);let d={kind:i,previousState:t,state:n,updates:s,validity:a,transformationLog:void 0};return this.emissionCache.set(r,d),d};stage(e,t=!0){this.stagedUpdates=e;let i=this.prepareStateEmission(e,this.committed.value.state,"staged");return t&&this.emit(i),i}emit(e){"staged"===e.kind?e.validity.valid&&this.rendered.nextIfDifferent(e):(e.validity.valid?(this.committed.nextIfDifferent(e),this.rendered.nextIfDifferent(e)):this.rendered.nextIfDifferent(this.committed.value),this.potentiallyInvalid.nextIfDifferent(e))}commit=()=>{if(void 0===this.stagedUpdates)return;let e=this.prepareStateEmission(this.stagedUpdates,this.committed.value.state,"committed"),t=()=>{if(this._onBeforeCommitHooks.some(i=>!1===i(e,t))){this._context.domainServicesSelectors.getLogger().debug("Commit was canceled by one of the onBeforeCommit hooks! Resetting rendered state.",e),this.rollback();return}this.stagedUpdates=void 0,this._context.domainServicesSelectors.getLogger().debug("commit",e),this.emit(e)};t()};commitPrepared=e=>{if("committed"!==e.kind||!e.validity.valid)throw Error(`commitPrepared received a ${e.validity.valid?e.kind:"invalid"} emission, but only a valid committed emission can become the committed state. Prepare the emission with kind "committed" and check its validity before committing it.`);let t=()=>e.previousState===this.committed.value.state;if(!t())return"conflict";let i=()=>{t()?r():this._context.domainServicesSelectors.getLogger().warn("A held commit was dropped, because the committed state changed since it was prepared.",e)},r=()=>this._onBeforeCommitHooks.some(t=>!1===t(e,i))?(this._context.domainServicesSelectors.getLogger().debug("A prepared commit was held by one of the onBeforeCommit hooks.",e),!1):(this._context.domainServicesSelectors.getLogger().debug("commitPrepared",e),this.stagedUpdates=void 0,this.emit(e),!0);return r()?"committed":"held"};rollback=()=>{void 0!==this.stagedUpdates&&(this.stagedUpdates=void 0,this.emit(this.committed.value))};_resetInteractionState(e){return e.ephemeralRecords.some(e=>{let t;return(t=e.componentInstance.componentType)===n||t===o})?{...e,ephemeralRecords:e.ephemeralRecords.map(e=>e.componentInstance.componentType===n?{...e,state:{hoveredEntityId:null}}:e.componentInstance.componentType===o?{...e,state:{draggedEntityId:null}}:e)}:e}_preserveViewportState(e,t){let i=t.ephemeralRecords.find(d),r=e.ephemeralRecords.filter(e=>!d(e));return{...e,ephemeralRecords:i?[...r,i]:r}}reset(e,t){let i=this.committed.value.state,r=this._preserveViewportState(e,i),o=this._resetInteractionState(r),s=this._validateState(o);if(!s.valid)throw Error("Cannot reset to an invalid state");this.stagedUpdates=void 0,this.emit({kind:"reset",state:o,validity:s,tag:t,transformationLog:void 0})}stageAndCommit(e){if(0!==e.length){this.stagedUpdates=e;try{this.commit()}finally{this.stagedUpdates=void 0}}}}
|
|
@@ -86,6 +86,7 @@ export declare function createDomainRuntimeSlices<State extends DomainRuntimeSta
|
|
|
86
86
|
selectElementSlots: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, {
|
|
87
87
|
entityElements: Record<string, (props: import("./index.js").CustomPhoenixEntityElementProps) => JSX.Element>;
|
|
88
88
|
layoutElements: Record<string, (props: import("react").PropsWithChildren) => JSX.Element>;
|
|
89
|
+
assistantFormElements: Record<string, import("react").ComponentType<never>>;
|
|
89
90
|
hashes: Record<string, string>;
|
|
90
91
|
}>;
|
|
91
92
|
selectDataConfig: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").DataSpec | null>;
|
|
@@ -129,6 +130,7 @@ export declare function createDomainRuntimeSlices<State extends DomainRuntimeSta
|
|
|
129
130
|
getElementSlots: () => {
|
|
130
131
|
entityElements: Record<string, (props: import("./index.js").CustomPhoenixEntityElementProps) => JSX.Element>;
|
|
131
132
|
layoutElements: Record<string, (props: import("react").PropsWithChildren) => JSX.Element>;
|
|
133
|
+
assistantFormElements: Record<string, import("react").ComponentType<never>>;
|
|
132
134
|
hashes: Record<string, string>;
|
|
133
135
|
};
|
|
134
136
|
getDataConfig: () => import("../index.js").DataSpec | null;
|
|
@@ -684,6 +686,7 @@ export declare const createDomainRuntime: (props: Omit<Props<DomainRuntimeState>
|
|
|
684
686
|
selectElementSlots: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, {
|
|
685
687
|
entityElements: Record<string, (props: import("./index.js").CustomPhoenixEntityElementProps) => JSX.Element>;
|
|
686
688
|
layoutElements: Record<string, (props: import("react").PropsWithChildren) => JSX.Element>;
|
|
689
|
+
assistantFormElements: Record<string, import("react").ComponentType<never>>;
|
|
687
690
|
hashes: Record<string, string>;
|
|
688
691
|
}>;
|
|
689
692
|
selectDataConfig: import("@salsita-ai/common/utils").Selector<import("./index.js").SpecSelectorState, import("../index.js").DataSpec | null>;
|
|
@@ -727,6 +730,7 @@ export declare const createDomainRuntime: (props: Omit<Props<DomainRuntimeState>
|
|
|
727
730
|
getElementSlots: () => {
|
|
728
731
|
entityElements: Record<string, (props: import("./index.js").CustomPhoenixEntityElementProps) => JSX.Element>;
|
|
729
732
|
layoutElements: Record<string, (props: import("react").PropsWithChildren) => JSX.Element>;
|
|
733
|
+
assistantFormElements: Record<string, import("react").ComponentType<never>>;
|
|
730
734
|
hashes: Record<string, string>;
|
|
731
735
|
};
|
|
732
736
|
getDataConfig: () => import("../index.js").DataSpec | null;
|
|
@@ -18,7 +18,7 @@ export interface ApplicationEnvironmentConfig {
|
|
|
18
18
|
/**
|
|
19
19
|
* Whether the maintenance "god mode" is enabled — it unlocks destructive admin tooling
|
|
20
20
|
* (eg. the maintenance menu). Seeded from session storage during mount and toggled at
|
|
21
|
-
* runtime via the `window.__salsita.setGodMode` global (see `
|
|
21
|
+
* runtime via the `window.__salsita.setGodMode` global, per runtime (see `SetGodMode`).
|
|
22
22
|
*/
|
|
23
23
|
readonly godMode: boolean;
|
|
24
24
|
/**
|
|
@@ -4,6 +4,6 @@ export * from './actions.js';
|
|
|
4
4
|
export * from './create-violation-expressions.js';
|
|
5
5
|
export * from './initialize.js';
|
|
6
6
|
export * from './memoize-expression.js';
|
|
7
|
-
export { type PhoenixEntityElementProps, type PhoenixEntityElementRegistration, type PhoenixLayoutElementRegistration, type PhoenixIconRegistration, type ElementRegistration, type CustomPhoenixEntityElementProps, type PhoenixLayoutElementDefinition, type PhoenixEntityElementDefinition, type CreateCustomPhoenixLayoutElement, type CreateCustomPhoenixEntityElement, createPhoenixLayoutElement, createPhoenixEntityElement, createCustomPhoenixLayoutElement, createCustomPhoenixEntityElement, resolveElementModule, resolveElementModules, type PhoenixHandlerDefinition, type SystemPhoenixHandlerDefinition, type PhoenixHandlerRegistration, type SystemPhoenixHandlerRegistration, type SystemPhoenixAsyncHandlerDefinition, type SystemPhoenixAsyncHandlerRegistration, type HandlerRegistration, type CreatePhoenixHandler, createPhoenixHandler, createSystemPhoenixHandler, createSystemPhoenixAsyncHandler, resolveHandlerModule, resolveHandlerModules, type ProjectModule, resolveActionModules, resolveComponentOpticModules, type ExpressionModule, resolveExpressionModules, resolveImportedTransformers, resolveTransformerModule, resolveTransformerModules, resolveInvariantModules, } from './module-checks/index.js';
|
|
7
|
+
export { type PhoenixEntityElementProps, type PhoenixEntityElementRegistration, type PhoenixLayoutElementRegistration, type PhoenixIconRegistration, type AssistantFormElementRegistration, type ElementRegistration, type CustomPhoenixEntityElementProps, type PhoenixLayoutElementDefinition, type PhoenixEntityElementDefinition, type CreateCustomPhoenixLayoutElement, type CreateCustomPhoenixEntityElement, createPhoenixLayoutElement, createPhoenixEntityElement, createCustomPhoenixLayoutElement, createCustomPhoenixEntityElement, createAssistantFormElement, findAssistantFormElementErrors, resolveElementModule, resolveElementModules, type PhoenixHandlerDefinition, type SystemPhoenixHandlerDefinition, type PhoenixHandlerRegistration, type SystemPhoenixHandlerRegistration, type SystemPhoenixAsyncHandlerDefinition, type SystemPhoenixAsyncHandlerRegistration, type HandlerRegistration, type CreatePhoenixHandler, createPhoenixHandler, createSystemPhoenixHandler, createSystemPhoenixAsyncHandler, resolveHandlerModule, resolveHandlerModules, type ProjectModule, resolveActionModules, resolveComponentOpticModules, type ExpressionModule, resolveExpressionModules, resolveImportedTransformers, resolveTransformerModule, resolveTransformerModules, resolveInvariantModules, } from './module-checks/index.js';
|
|
8
8
|
export * from './prepare-action-implementations.js';
|
|
9
9
|
export * from './prepare-domain-expressions.js';
|