@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,32 @@
|
|
|
1
|
+
export interface UseShareLinksOptions {
|
|
2
|
+
/** Whether the links are generated; `true` by default. A layout passes whether its share dialog is open. */
|
|
3
|
+
readonly enabled?: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* What a project layout needs to share the configuration.
|
|
7
|
+
* - `available`: whether sharing is offered, that is `applicationConfig.shareDisabled` is not set and at least one
|
|
8
|
+
* kind of link is enabled; the built-in share button renders nothing otherwise.
|
|
9
|
+
* - `ownerLinkAvailable` and `readLinkAvailable`: whether each kind of link is enabled
|
|
10
|
+
* (`applicationConfig.shareOwnerLinkDisabled`, `applicationConfig.shareReadRevisionLinkDisabled`).
|
|
11
|
+
* - `ownerLink`: a link that opens the configuration for editing, or `null` while it loads, is disabled or the
|
|
12
|
+
* hook is not `enabled`.
|
|
13
|
+
* - `readLink`: a link that opens the current revision of the configuration for viewing, `null` in the same cases.
|
|
14
|
+
* The configuration is saved before the link is generated; while the hook is enabled, each commit of the
|
|
15
|
+
* configuration generates a new link, and `readLink` is `null` again until it arrives.
|
|
16
|
+
* - `isLoading`: whether an enabled link is still being generated.
|
|
17
|
+
*/
|
|
18
|
+
export interface UseShareLinksResult {
|
|
19
|
+
readonly available: boolean;
|
|
20
|
+
readonly ownerLinkAvailable: boolean;
|
|
21
|
+
readonly readLinkAvailable: boolean;
|
|
22
|
+
readonly ownerLink: string | null;
|
|
23
|
+
readonly readLink: string | null;
|
|
24
|
+
readonly isLoading: boolean;
|
|
25
|
+
}
|
|
26
|
+
export type UseShareLinks = (options?: UseShareLinksOptions) => UseShareLinksResult;
|
|
27
|
+
/**
|
|
28
|
+
* Hook to generate the links that share the configuration, as the built-in share dialog does. The links expire
|
|
29
|
+
* after `applicationConfig.shareExpiration` hours, or never without it. Generating a link saves the configuration,
|
|
30
|
+
* so a layout enables the hook only while its share dialog is open. It does not check read mode.
|
|
31
|
+
*/
|
|
32
|
+
export declare const useShareLinks: UseShareLinks;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useQuery as e}from"@tanstack/react-query";import{useMemo as t}from"react";import{applicationConfigComponent as i}from"#package/domain";import{useConfigurationId as r}from"../../application-runtime/index.js";import{useStoreSelector as a}from"../common-hooks/index.js";import{useFirstRootComponent as n}from"../component-hooks/index.js";import{useGenerateShareLink as s}from"./generate-share-link-hooks.js";export const useShareLinks=(o={})=>{let{enabled:l=!0}=o,d=n(i),m=s(),c=r(),h=d?.state.shareExpiration,k=d?.state.shareDisabled??!1,p=!k&&!d?.state.shareOwnerLinkDisabled,u=!k&&!d?.state.shareReadRevisionLinkDisabled,y=l&&u,f=a(e=>({entities:e.state.entities,rootEntityId:e.state.rootEntityId}),[],y),b=e({queryKey:["share-owner-link",c],staleTime:1/0,queryFn:()=>m({access:"o",expiration:h}),enabled:l&&p}),q=e({queryKey:y?["share-revision-link",c,f.entities,f.rootEntityId]:["share-revision-link",c,"disabled"],queryFn:()=>m({access:"rr",expiration:h}),enabled:y}),x=l&&p&&b.data?.link||null,F=y&&q.isFetchedAfterMount&&q.data?.link||null,g=l&&p&&b.isLoading||y&&q.isFetching&&!q.isFetchedAfterMount;return t(()=>({available:p||u,ownerLinkAvailable:p,readLinkAvailable:u,ownerLink:x,readLink:F,isLoading:g}),[p,u,x,F,g])};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useCallback as t,useEffect as
|
|
1
|
+
import{useCallback as t,useEffect as a,useMemo as o}from"react";import{horizontalTabsComponent as e,sidebarTabsComponent as i}from"#package/domain";import{FrontendAnalyticsFactory as n,useAnalyticsService as s,useIsDev as r}from"../../application-runtime/index.js";import{useResolveLocalizable as l}from"../../localizable/index.js";import{useDomain as m}from"../common-hooks/index.js";import{useComponents as p}from"../component-hooks/index.js";import{useActiveNavigationState as c}from"./navigation-hooks.js";import{useSelectedDomainEntityId as b}from"./selection-hooks.js";let h=(t,o)=>{let e=r();a(()=>{e&&t&&console.warn(o)},[e,t,o])};export const useTabNavigation=(a={})=>{let{source:r="auto",entityId:v}=a,g=c(),d=b(),f=l(),T=s(),{navigationSystem:u,storeSystem:z}=m(),S=p({componentTypes:[i],entityIds:[v??d]}),j=p({componentTypes:[e]}),N="horizontalTabs"!==r&&S.length>0,k="sidebarTabs"!==r&&j.length>0,x=N?"sidebarTabs":k?"horizontalTabs":null;h(N&&k,"Both sidebarTabs and horizontalTabs are active, so useTabNavigation shows the sidebarTabs. Remove one of them from the spec, or pass `source` to choose."),h("horizontalTabs"===x&&j.length>1,"Several horizontalTabs are active, so useTabNavigation shows the first one. Keep one active, for example with $filter.");let y=o(()=>"sidebarTabs"===x?S.flatMap(t=>t.state.tabs):"horizontalTabs"===x?j[0]?.state.tabs??[]:[],[x,S,j]),w=y.filter(t=>0===t.navigationStates.length);h(w.length>0,`The ${x} tabs ${w.map(t=>`"${f(t.label)}"`).join(", ")} have no navigation states, so useTabNavigation leaves them out. Give each tab at least one navigation state.`);let $=o(()=>y.flatMap(t=>{let a=t.navigationStates[0];return void 0===a?[]:[{tab:t,state:a}]}).map(({tab:t,state:a},o)=>({index:o,label:f(t.label),icon:"string"==typeof t.icon?t.icon:void 0,iconNode:"string"==typeof t.icon||null===t.icon?void 0:t.icon,navigationStates:t.navigationStates,state:a,isActive:t.navigationStates.includes(g)})),[y,g,f]),A=$.find(t=>t.isActive)??null,C=t(t=>{let a="number"==typeof t?$[t]:$.find(a=>a.navigationStates.includes(t));a&&("horizontalTabs"===x&&T.push(n.TopNavigationStepClicked(a.state)),z.stageAndCommit([u.getNavigationUpdate(a.state)]))},[$,x,T,z,u]);return{source:x,tabs:$,activeTab:A,select:C}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useCallback as o}from"react";import{FrontendAnalyticsFactory as e,useAnalyticsService as
|
|
1
|
+
import{useCallback as o,useMemo as n}from"react";import{FrontendAnalyticsFactory as e,useAnalyticsService as t}from"../../application-runtime/index.js";import{useDomain as d,useEagerObservableValue as r}from"../common-hooks/index.js";export const useUndoRedo=()=>{let i=t(),{undoSystem:c}=d(),{canUndo:m,canRedo:p}=r(c.can$),u=o(()=>{c.canUndo()&&(i.push(e.UndoButtonClicked()),c.undo())},[i,c]),s=o(()=>{c.canRedo()&&(i.push(e.RedoButtonClicked()),c.redo())},[i,c]);return n(()=>({canUndo:m,canRedo:p,undo:u,redo:s}),[m,p,u,s])};
|
|
@@ -8,7 +8,7 @@ export * from './invalid-deployment/index.js';
|
|
|
8
8
|
export * from './web-component/index.js';
|
|
9
9
|
export * from './localizable/index.js';
|
|
10
10
|
export * from './loading-state/index.js';
|
|
11
|
-
export * from './responsive-state/index.js';
|
|
12
11
|
export * from './elements/index.js';
|
|
12
|
+
export * from './scene-control-elements/index.js';
|
|
13
13
|
export * from './handlers/index.js';
|
|
14
14
|
export * from './application-runtime/index.js';
|
package/dist/react-sdk/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./theme/index.js";export*from"./utils/index.js";export*from"./session/index.js";export*from"./domain-context/index.js";export*from"./domain-application-context/index.js";export*from"./domain-controls/index.js";export*from"./invalid-deployment/index.js";export*from"./web-component/index.js";export*from"./localizable/index.js";export*from"./loading-state/index.js";export*from"./
|
|
1
|
+
export*from"./theme/index.js";export*from"./utils/index.js";export*from"./session/index.js";export*from"./domain-context/index.js";export*from"./domain-application-context/index.js";export*from"./domain-controls/index.js";export*from"./invalid-deployment/index.js";export*from"./web-component/index.js";export*from"./localizable/index.js";export*from"./loading-state/index.js";export*from"./elements/index.js";export*from"./scene-control-elements/index.js";export*from"./handlers/index.js";export*from"./application-runtime/index.js";
|
|
@@ -22,10 +22,15 @@ export declare class LoadingStateManager {
|
|
|
22
22
|
private readonly _phases$;
|
|
23
23
|
private readonly _hasError$;
|
|
24
24
|
private readonly _expectedPhases$;
|
|
25
|
+
private readonly _expectationCounts;
|
|
25
26
|
readonly startPhase: (phase: LoadingPhase) => void;
|
|
26
27
|
readonly endPhase: (id: string) => void;
|
|
27
28
|
readonly reportError: () => void;
|
|
28
29
|
readonly clearError: () => void;
|
|
30
|
+
/**
|
|
31
|
+
* Marks a phase as expected before it starts. Expectations are counted: the phase stays expected
|
|
32
|
+
* until every `expectPhase` call for it has been matched by a `dropExpectation`.
|
|
33
|
+
*/
|
|
29
34
|
readonly expectPhase: (id: string) => void;
|
|
30
35
|
readonly dropExpectation: (id: string) => void;
|
|
31
36
|
readonly state$: Observable<LoadingState>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e;import{BehaviorSubject as s,combineLatest as
|
|
1
|
+
var e;import{BehaviorSubject as s,combineLatest as t,distinctUntilChanged as a,map as h}from"rxjs";export var BuiltInLoadingPhase=((e={}).SessionAuth="session-auth",e.PublishedData="published-data",e.FrontendData="frontend-data",e.BackendData="backend-data",e.DataFetch="data-fetch",e.SceneAssets="scene-assets",e);export class LoadingStateManager{_phases$=new s(new Map);_hasError$=new s(!1);_expectedPhases$=new s(new Set);_expectationCounts=new Map;startPhase=e=>{let s=new Map(this._phases$.value);s.set(e.id,e),this._phases$.next(s)};endPhase=e=>{let s=this._phases$.value;if(!s.has(e))return;let t=new Map(s);t.delete(e),this._phases$.next(t)};reportError=()=>{this._hasError$.next(!0)};clearError=()=>{this._hasError$.next(!1)};expectPhase=e=>{let s=this._expectationCounts.get(e)??0;if(this._expectationCounts.set(e,s+1),s>0)return;let t=new Set(this._expectedPhases$.value);t.add(e),this._expectedPhases$.next(t)};dropExpectation=e=>{let s=this._expectationCounts.get(e);if(void 0===s)return;if(s>1)return void this._expectationCounts.set(e,s-1);this._expectationCounts.delete(e);let t=new Set(this._expectedPhases$.value);t.delete(e),this._expectedPhases$.next(t)};state$=t([this._phases$,this._hasError$,this._expectedPhases$]).pipe(h(([e,s,t])=>{let a;return{isLoading:(a=Array.from(e.values())).length>0,hasError:s,phases:a,expectedPhaseIds:t}}),a((e,s)=>e.isLoading===s.isLoading&&e.hasError===s.hasError&&e.expectedPhaseIds===s.expectedPhaseIds&&e.phases.length===s.phases.length&&e.phases.every((e,t)=>e.id===s.phases[t]?.id&&e.progress===s.phases[t]?.progress&&e.label===s.phases[t]?.label)))}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Localizable } from '@salsita-ai/common/utils';
|
|
2
|
+
import type { DomainEntityId } from '#package/domain';
|
|
3
|
+
import type { SceneControlTooltipVisibility } from './scene-control-tooltip-visibility.js';
|
|
4
|
+
/**
|
|
5
|
+
* The name of the entity element that renders a `sceneEntityAddFab`. Its default, the built-in
|
|
6
|
+
* add-entity FAB, is registered in `defaultConfiguratorElements`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const AddEntityFabName = "AddEntityFab";
|
|
9
|
+
/**
|
|
10
|
+
* Props of the `AddEntityFab` element, rendered for each `sceneEntityAddFab` of an entity, at the
|
|
11
|
+
* position the component sets. The recipes it can add are not computed up front: the built-in FAB
|
|
12
|
+
* reads them with `useGroupedRecipeOptions(entityId, instanceNames, fixableViolations)` when it
|
|
13
|
+
* opens its menu, and a replacement does the same.
|
|
14
|
+
*/
|
|
15
|
+
export interface AddEntityFabElementProps {
|
|
16
|
+
/** The entity the FAB adds children to. */
|
|
17
|
+
readonly entityId: DomainEntityId<string>;
|
|
18
|
+
/** The `childEntityRecipes` instances whose recipes the FAB offers; all of them when not set. */
|
|
19
|
+
readonly instanceNames?: readonly string[];
|
|
20
|
+
/** Violations a new entity may cause without disabling its recipe (the component's `hiddenViolations`). */
|
|
21
|
+
readonly fixableViolations?: readonly string[];
|
|
22
|
+
/** The name of a Phoenix icon. */
|
|
23
|
+
readonly icon?: string;
|
|
24
|
+
/** A visible text label. */
|
|
25
|
+
readonly label?: Localizable;
|
|
26
|
+
/** The tooltip text. */
|
|
27
|
+
readonly title?: Localizable;
|
|
28
|
+
/** When the tooltip shows: `on-hover` unless the component sets it. */
|
|
29
|
+
readonly tooltipVisibility: SceneControlTooltipVisibility;
|
|
30
|
+
/** Add the only recipe directly, without a menu. */
|
|
31
|
+
readonly skipMenuWhenOnlyOne?: boolean;
|
|
32
|
+
/** Render nothing when there is no recipe. */
|
|
33
|
+
readonly hideWhenNone?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** Renders the `AddEntityFab` element for an entity. */
|
|
36
|
+
export declare const AddEntityFabElement: import("react").MemoExoticComponent<(props: AddEntityFabElementProps) => import("react/jsx-runtime").JSX.Element>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{memo as e,useMemo as n}from"react";import{PhoenixEntityElementWithChildren as r}from"../elements/index.js";export const AddEntityFabName="AddEntityFab";export const AddEntityFabElement=e(e=>{let{entityId:d,instanceNames:i,fixableViolations:m,icon:o,label:a,title:s,tooltipVisibility:p,skipMenuWhenOnlyOne:x,hideWhenNone:y}=e,E=n(()=>({instanceNames:i,fixableViolations:m,icon:o,label:a,title:s,tooltipVisibility:p,skipMenuWhenOnlyOne:x,hideWhenNone:y}),[i,m,o,a,s,p,x,y]);return t(r,{kind:"AddEntityFab",entityId:d,elementProps:E})});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type SyntheticEvent } from 'react';
|
|
2
|
+
import type { Localizable } from '@salsita-ai/common/utils';
|
|
3
|
+
import type { DomainEntityId } from '#package/domain';
|
|
4
|
+
import type { SceneControlTooltipVisibility } from './scene-control-tooltip-visibility.js';
|
|
5
|
+
/**
|
|
6
|
+
* The name of the entity element that renders a `sceneEntityDeleteFab`. Its default, the built-in
|
|
7
|
+
* delete-entity FAB, is registered in `defaultConfiguratorElements`.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DeleteEntityFabName = "DeleteEntityFab";
|
|
10
|
+
/**
|
|
11
|
+
* Props of the `DeleteEntityFab` element, rendered for each `sceneEntityDeleteFab` of an entity, at
|
|
12
|
+
* the position the component sets.
|
|
13
|
+
*/
|
|
14
|
+
export interface DeleteEntityFabElementProps {
|
|
15
|
+
/** The entity the FAB deletes. */
|
|
16
|
+
readonly entityId: DomainEntityId<string>;
|
|
17
|
+
/** The name of a Phoenix icon. */
|
|
18
|
+
readonly icon?: string;
|
|
19
|
+
/** A visible text label. */
|
|
20
|
+
readonly label?: Localizable;
|
|
21
|
+
/** The tooltip text. */
|
|
22
|
+
readonly title?: Localizable;
|
|
23
|
+
/** When the tooltip shows: `on-hover` unless the component sets it. */
|
|
24
|
+
readonly tooltipVisibility: SceneControlTooltipVisibility;
|
|
25
|
+
/**
|
|
26
|
+
* Deletes the entity and pushes the delete analytics event. Pass it straight to `onClick`: given
|
|
27
|
+
* an event, it stops the event's propagation so the click does not reach the scene.
|
|
28
|
+
*/
|
|
29
|
+
readonly onDelete: (event?: SyntheticEvent) => void;
|
|
30
|
+
/** True when deleting would cause a violation the component does not allow. */
|
|
31
|
+
readonly disabled: boolean;
|
|
32
|
+
/** Why deleting is disabled, when it is. */
|
|
33
|
+
readonly disabledHint: string | undefined;
|
|
34
|
+
/** Logs the dry run of the deletion to the console, for debugging. */
|
|
35
|
+
readonly trace: () => void;
|
|
36
|
+
}
|
|
37
|
+
type DeleteEntityFabElementConfig = Omit<DeleteEntityFabElementProps, 'onDelete' | 'disabled' | 'disabledHint' | 'trace'>;
|
|
38
|
+
interface Props extends DeleteEntityFabElementConfig {
|
|
39
|
+
/** Violations deleting may cause without disabling the FAB (the component's `hiddenViolations`). */
|
|
40
|
+
readonly fixableViolations?: readonly string[];
|
|
41
|
+
}
|
|
42
|
+
/** Renders the `DeleteEntityFab` element for an entity, with the deletion it performs. */
|
|
43
|
+
export declare const DeleteEntityFabElement: import("react").MemoExoticComponent<(props: Props) => import("react/jsx-runtime").JSX.Element>;
|
|
44
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{memo as e,useCallback as i,useMemo as o}from"react";import{FrontendAnalyticsFactory as n}from"../application-runtime/index.js";import{useDeletedEntity as r}from"../domain-controls/index.js";import{PhoenixEntityElementWithChildren as m}from"../elements/index.js";export const DeleteEntityFabName="DeleteEntityFab";export const DeleteEntityFabElement=e(e=>{let{entityId:a,fixableViolations:s,icon:l,label:p,title:d,tooltipVisibility:c}=e,x=i(()=>n.EntityDeleteHotspotClicked(a),[a]),{disabled:y,hints:E,remove:b,trace:f}=r(a,s,x),j=i(t=>{t?.stopPropagation(),b()},[b]),D=o(()=>({icon:l,label:p,title:d,tooltipVisibility:c,onDelete:j,disabled:y,disabledHint:E,trace:f}),[l,p,d,c,j,y,E,f]);return t(m,{kind:"DeleteEntityFab",entityId:a,elementProps:D})});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type SyntheticEvent } from 'react';
|
|
2
|
+
import type { Localizable } from '@salsita-ai/common/utils';
|
|
3
|
+
import type { DomainEntityId } from '#package/domain';
|
|
4
|
+
import type { SceneControlTooltipVisibility } from './scene-control-tooltip-visibility.js';
|
|
5
|
+
/**
|
|
6
|
+
* The name of the entity element that renders a `sceneEntityNavigationHotspot`. Its default, the
|
|
7
|
+
* built-in navigation hotspot, is registered in `defaultConfiguratorElements`.
|
|
8
|
+
*/
|
|
9
|
+
export declare const NavigationHotspotName = "NavigationHotspot";
|
|
10
|
+
/**
|
|
11
|
+
* Props of the `NavigationHotspot` element, rendered for each `sceneEntityNavigationHotspot` of an
|
|
12
|
+
* entity, at the position the component sets.
|
|
13
|
+
*/
|
|
14
|
+
export interface NavigationHotspotElementProps {
|
|
15
|
+
/** The entity the hotspot is attached to. */
|
|
16
|
+
readonly entityId: DomainEntityId<string>;
|
|
17
|
+
/** The navigation state the hotspot goes to. */
|
|
18
|
+
readonly navigationState: string;
|
|
19
|
+
/** The tooltip text. */
|
|
20
|
+
readonly title?: Localizable;
|
|
21
|
+
/** When the tooltip shows: `on-hover` unless the component sets it. */
|
|
22
|
+
readonly tooltipVisibility: SceneControlTooltipVisibility;
|
|
23
|
+
/**
|
|
24
|
+
* Goes to `navigationState`, pushed onto the navigation stack or replacing the current state as
|
|
25
|
+
* the component sets. Pass it straight to `onClick`: given an event, it prevents the event's
|
|
26
|
+
* default and stops its propagation so the click does not reach the scene.
|
|
27
|
+
*/
|
|
28
|
+
readonly onNavigate: (event?: SyntheticEvent) => void;
|
|
29
|
+
}
|
|
30
|
+
interface Props extends Omit<NavigationHotspotElementProps, 'onNavigate'> {
|
|
31
|
+
/** Push `navigationState` onto the navigation stack instead of replacing the current state. */
|
|
32
|
+
readonly pushToStack?: boolean;
|
|
33
|
+
/** The states `navigationState` can be stacked onto. */
|
|
34
|
+
readonly canStackOnto?: readonly string[];
|
|
35
|
+
}
|
|
36
|
+
/** Renders the `NavigationHotspot` element for an entity, with the navigation it performs. */
|
|
37
|
+
export declare const NavigationHotspotElement: import("react").MemoExoticComponent<(props: Props) => import("react/jsx-runtime").JSX.Element>;
|
|
38
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{memo as e,useCallback as o,useMemo as a}from"react";import{useDomain as i}from"../domain-context/index.js";import{PhoenixEntityElementWithChildren as n}from"../elements/index.js";export const NavigationHotspotName="NavigationHotspot";export const NavigationHotspotElement=e(e=>{let{entityId:s,navigationState:m,pushToStack:r,canStackOnto:p,title:g,tooltipVisibility:d}=e,{navigationSystem:l,storeSystem:v}=i(),c=o(t=>{t?.preventDefault(),t?.stopPropagation();let e=r?l.getPushNavigationUpdate(m,v.stateSlices.committed.value.state,{canStackOnto:p}):l.getNavigationUpdate(m);v.stageAndCommit([e])},[l,m,r,v,p]);return t(n,{kind:"NavigationHotspot",entityId:s,elementProps:a(()=>({navigationState:m,title:g,tooltipVisibility:d,onNavigate:c}),[m,g,d,c])})});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type SyntheticEvent } from 'react';
|
|
2
|
+
import type { Localizable } from '@salsita-ai/common/utils';
|
|
3
|
+
import type { DomainEntityId } from '#package/domain';
|
|
4
|
+
import type { SceneControlTooltipVisibility } from './scene-control-tooltip-visibility.js';
|
|
5
|
+
/**
|
|
6
|
+
* The name of the entity element that renders a `sceneEntitySelectHotspot`. Its default, the
|
|
7
|
+
* built-in selection hotspot, is registered in `defaultConfiguratorElements`.
|
|
8
|
+
*/
|
|
9
|
+
export declare const SelectionHotspotName = "SelectionHotspot";
|
|
10
|
+
/**
|
|
11
|
+
* Props of the `SelectionHotspot` element, rendered for each `sceneEntitySelectHotspot` of an
|
|
12
|
+
* entity, at the position the component sets.
|
|
13
|
+
*/
|
|
14
|
+
export interface SelectionHotspotElementProps {
|
|
15
|
+
/** The entity the hotspot selects. */
|
|
16
|
+
readonly entityId: DomainEntityId<string>;
|
|
17
|
+
/** The tooltip text. */
|
|
18
|
+
readonly title?: Localizable;
|
|
19
|
+
/** When the tooltip shows: `on-hover` unless the component sets it. */
|
|
20
|
+
readonly tooltipVisibility: SceneControlTooltipVisibility;
|
|
21
|
+
/**
|
|
22
|
+
* Selects the entity and pushes the selection-hotspot analytics event. Pass it straight to
|
|
23
|
+
* `onClick`: given an event, it stops the event's propagation so the click does not reach the scene.
|
|
24
|
+
*/
|
|
25
|
+
readonly onSelect: (event?: SyntheticEvent) => void;
|
|
26
|
+
}
|
|
27
|
+
type Props = Omit<SelectionHotspotElementProps, 'onSelect'>;
|
|
28
|
+
/** Renders the `SelectionHotspot` element for an entity, with the selection it performs. */
|
|
29
|
+
export declare const SelectionHotspotElement: import("react").MemoExoticComponent<(props: Props) => import("react/jsx-runtime").JSX.Element>;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{memo as o,useCallback as e,useMemo as i}from"react";import{FrontendAnalyticsFactory as n}from"../application-runtime/index.js";import{useSelectEntity as r}from"../domain-context/index.js";import{PhoenixEntityElementWithChildren as m}from"../elements/index.js";export const SelectionHotspotName="SelectionHotspot";export const SelectionHotspotElement=o(o=>{let{entityId:p,title:s,tooltipVisibility:c}=o,l=r(n.SelectionHotspotClicked),a=e(t=>{t?.stopPropagation(),l(p)},[p,l]);return t(m,{kind:"SelectionHotspot",entityId:p,elementProps:i(()=>({title:s,tooltipVisibility:c,onSelect:a}),[s,c,a])})});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Localizable } from '@salsita-ai/common/utils';
|
|
2
|
+
import type { DomainEntityId, ToolMenuFabOption } from '#package/domain';
|
|
3
|
+
import type { SceneControlTooltipVisibility } from './scene-control-tooltip-visibility.js';
|
|
4
|
+
/**
|
|
5
|
+
* The name of the entity element that renders a `toolMenuFab`. Its default, the built-in tool-menu
|
|
6
|
+
* FAB, is registered in `defaultConfiguratorElements`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const ToolMenuFabName = "ToolMenuFab";
|
|
9
|
+
/**
|
|
10
|
+
* Props of the `ToolMenuFab` element, rendered for each `toolMenuFab` of an entity, at the position
|
|
11
|
+
* the component sets.
|
|
12
|
+
*/
|
|
13
|
+
export interface ToolMenuFabElementProps {
|
|
14
|
+
/** The entity the FAB is attached to. */
|
|
15
|
+
readonly entityId: DomainEntityId<string>;
|
|
16
|
+
/** The tools the menu offers, each with its `label`, optional `icon` and `toolState`. */
|
|
17
|
+
readonly options: readonly ToolMenuFabOption[];
|
|
18
|
+
/** The name of a Phoenix icon; the built-in FAB shows `PencilSimpleBold` when it is not set. */
|
|
19
|
+
readonly icon?: string;
|
|
20
|
+
/** The tooltip text, which the built-in menu also shows as its heading. */
|
|
21
|
+
readonly title?: Localizable;
|
|
22
|
+
/** When the tooltip shows: `on-hover` unless the component sets it. */
|
|
23
|
+
readonly tooltipVisibility: SceneControlTooltipVisibility;
|
|
24
|
+
/** Switches to the given tool state, the `toolState` of one of the `options`. */
|
|
25
|
+
readonly onSelectTool: (toolState: string) => void;
|
|
26
|
+
}
|
|
27
|
+
type Props = Omit<ToolMenuFabElementProps, 'onSelectTool'>;
|
|
28
|
+
/** Renders the `ToolMenuFab` element for an entity, with the tool switch it performs. */
|
|
29
|
+
export declare const ToolMenuFabElement: import("react").MemoExoticComponent<(props: Props) => import("react/jsx-runtime").JSX.Element>;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{memo as o,useCallback as t,useMemo as n}from"react";import{useDomain as m}from"../domain-context/index.js";import{PhoenixEntityElementWithChildren as r}from"../elements/index.js";export const ToolMenuFabName="ToolMenuFab";export const ToolMenuFabElement=o(o=>{let{entityId:a,options:i,icon:s,title:l,tooltipVisibility:p}=o,{navigationSystem:d,storeSystem:x}=m(),u=t(e=>{x.stageAndCommit([d.getToolUpdate(e)])},[d,x]);return e(r,{kind:"ToolMenuFab",entityId:a,elementProps:n(()=>({options:i,icon:s,title:l,tooltipVisibility:p,onSelectTool:u}),[i,s,l,p,u])})});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type PhoenixEntityElementRegistration } from '#package/domain';
|
|
2
|
+
import { type AddEntityFabElementProps } from './AddEntityFabElement.js';
|
|
3
|
+
/**
|
|
4
|
+
* Registers a project's add-entity FAB as the `AddEntityFab` entity element, with its props typed.
|
|
5
|
+
* Registering an entity element under that name with `createCustomPhoenixEntityElement` works too,
|
|
6
|
+
* but its component is then typed as taking only `entityId` and `children`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const createAddEntityFab: (Element: (props: AddEntityFabElementProps) => JSX.Element | null) => PhoenixEntityElementRegistration;
|
|
9
|
+
export type CreateAddEntityFab = (Element: (props: AddEntityFabElementProps) => JSX.Element | null) => PhoenixEntityElementRegistration;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createCustomPhoenixEntityElement as t}from"#package/domain";import{AddEntityFabName as o}from"./AddEntityFabElement.js";export const createAddEntityFab=a=>t(o,a);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type PhoenixEntityElementRegistration } from '#package/domain';
|
|
2
|
+
import { type DeleteEntityFabElementProps } from './DeleteEntityFabElement.js';
|
|
3
|
+
/**
|
|
4
|
+
* Registers a project's delete-entity FAB as the `DeleteEntityFab` entity element, with its props
|
|
5
|
+
* typed. Registering an entity element under that name with `createCustomPhoenixEntityElement`
|
|
6
|
+
* works too, but its component is then typed as taking only `entityId` and `children`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const createDeleteEntityFab: (Element: (props: DeleteEntityFabElementProps) => JSX.Element | null) => PhoenixEntityElementRegistration;
|
|
9
|
+
export type CreateDeleteEntityFab = (Element: (props: DeleteEntityFabElementProps) => JSX.Element | null) => PhoenixEntityElementRegistration;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createCustomPhoenixEntityElement as e}from"#package/domain";import{DeleteEntityFabName as t}from"./DeleteEntityFabElement.js";export const createDeleteEntityFab=o=>e(t,o);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type PhoenixEntityElementRegistration } from '#package/domain';
|
|
2
|
+
import { type NavigationHotspotElementProps } from './NavigationHotspotElement.js';
|
|
3
|
+
/**
|
|
4
|
+
* Registers a project's navigation hotspot as the `NavigationHotspot` entity element, with its
|
|
5
|
+
* props typed. Registering an entity element under that name with
|
|
6
|
+
* `createCustomPhoenixEntityElement` works too, but its component is then typed as taking only
|
|
7
|
+
* `entityId` and `children`.
|
|
8
|
+
*/
|
|
9
|
+
export declare const createNavigationHotspot: (Element: (props: NavigationHotspotElementProps) => JSX.Element | null) => PhoenixEntityElementRegistration;
|
|
10
|
+
export type CreateNavigationHotspot = (Element: (props: NavigationHotspotElementProps) => JSX.Element | null) => PhoenixEntityElementRegistration;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createCustomPhoenixEntityElement as o}from"#package/domain";import{NavigationHotspotName as t}from"./NavigationHotspotElement.js";export const createNavigationHotspot=a=>o(t,a);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type PhoenixEntityElementRegistration } from '#package/domain';
|
|
2
|
+
import { type SelectionHotspotElementProps } from './SelectionHotspotElement.js';
|
|
3
|
+
/**
|
|
4
|
+
* Registers a project's selection hotspot as the `SelectionHotspot` entity element, with its props
|
|
5
|
+
* typed. Registering an entity element under that name with `createCustomPhoenixEntityElement`
|
|
6
|
+
* works too, but its component is then typed as taking only `entityId` and `children`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const createSelectionHotspot: (Element: (props: SelectionHotspotElementProps) => JSX.Element | null) => PhoenixEntityElementRegistration;
|
|
9
|
+
export type CreateSelectionHotspot = (Element: (props: SelectionHotspotElementProps) => JSX.Element | null) => PhoenixEntityElementRegistration;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createCustomPhoenixEntityElement as o}from"#package/domain";import{SelectionHotspotName as t}from"./SelectionHotspotElement.js";export const createSelectionHotspot=e=>o(t,e);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type PhoenixEntityElementRegistration } from '#package/domain';
|
|
2
|
+
import { type ToolMenuFabElementProps } from './ToolMenuFabElement.js';
|
|
3
|
+
/**
|
|
4
|
+
* Registers a project's tool-menu FAB as the `ToolMenuFab` entity element, with its props typed.
|
|
5
|
+
* Registering an entity element under that name with `createCustomPhoenixEntityElement` works too,
|
|
6
|
+
* but its component is then typed as taking only `entityId` and `children`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const createToolMenuFab: (Element: (props: ToolMenuFabElementProps) => JSX.Element | null) => PhoenixEntityElementRegistration;
|
|
9
|
+
export type CreateToolMenuFab = (Element: (props: ToolMenuFabElementProps) => JSX.Element | null) => PhoenixEntityElementRegistration;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createCustomPhoenixEntityElement as o}from"#package/domain";import{ToolMenuFabName as e}from"./ToolMenuFabElement.js";export const createToolMenuFab=a=>o(e,a);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { AddEntityFabElement, AddEntityFabName, type AddEntityFabElementProps } from './AddEntityFabElement.js';
|
|
2
|
+
export { DeleteEntityFabElement, DeleteEntityFabName, type DeleteEntityFabElementProps, } from './DeleteEntityFabElement.js';
|
|
3
|
+
export { NavigationHotspotElement, NavigationHotspotName, type NavigationHotspotElementProps, } from './NavigationHotspotElement.js';
|
|
4
|
+
export { SelectionHotspotElement, SelectionHotspotName, type SelectionHotspotElementProps, } from './SelectionHotspotElement.js';
|
|
5
|
+
export { ToolMenuFabElement, ToolMenuFabName, type ToolMenuFabElementProps } from './ToolMenuFabElement.js';
|
|
6
|
+
export { createAddEntityFab, type CreateAddEntityFab } from './create-add-entity-fab.js';
|
|
7
|
+
export { createDeleteEntityFab, type CreateDeleteEntityFab } from './create-delete-entity-fab.js';
|
|
8
|
+
export { createNavigationHotspot, type CreateNavigationHotspot } from './create-navigation-hotspot.js';
|
|
9
|
+
export { createSelectionHotspot, type CreateSelectionHotspot } from './create-selection-hotspot.js';
|
|
10
|
+
export { createToolMenuFab, type CreateToolMenuFab } from './create-tool-menu-fab.js';
|
|
11
|
+
export { type SceneControlTooltipVisibility } from './scene-control-tooltip-visibility.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{AddEntityFabElement,AddEntityFabName}from"./AddEntityFabElement.js";export{DeleteEntityFabElement,DeleteEntityFabName}from"./DeleteEntityFabElement.js";export{NavigationHotspotElement,NavigationHotspotName}from"./NavigationHotspotElement.js";export{SelectionHotspotElement,SelectionHotspotName}from"./SelectionHotspotElement.js";export{ToolMenuFabElement,ToolMenuFabName}from"./ToolMenuFabElement.js";export{createAddEntityFab}from"./create-add-entity-fab.js";export{createDeleteEntityFab}from"./create-delete-entity-fab.js";export{createNavigationHotspot}from"./create-navigation-hotspot.js";export{createSelectionHotspot}from"./create-selection-hotspot.js";export{createToolMenuFab}from"./create-tool-menu-fab.js";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* When an in-scene control shows its tooltip: `on-hover` on hover, `forced` always once the camera
|
|
3
|
+
* has been still, `forced-when-still` while the camera is still, `hidden` never.
|
|
4
|
+
*/
|
|
5
|
+
export type SceneControlTooltipVisibility = 'on-hover' | 'forced' | 'forced-when-still' | 'hidden';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{createRoot as t}from"react-dom/client";import{Subject as r,Subscription as o,filter as s,scan as i}from"rxjs";import{v4 as n}from"uuid";import{standardWebComponentEvents as a,standardWebComponentProperties as l}from"#package/domain";import{WebComponentApp as c}from"./WebComponentApp.js";import{createEventDispatcher as u,createStorage as p,createWebComponentApi as h}from"./create-web-component-api.js";import{createAttributeNameToPropertyMap as
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{createRoot as t}from"react-dom/client";import{Subject as r,Subscription as o,filter as s,scan as i}from"rxjs";import{v4 as n}from"uuid";import{standardWebComponentEvents as a,standardWebComponentProperties as l}from"#package/domain";import{WebComponentApp as c}from"./WebComponentApp.js";import{createEventDispatcher as u,createStorage as p,createWebComponentApi as h}from"./create-web-component-api.js";import{registerGodModeTarget as b}from"./god-mode/index.js";import{createAttributeNameToPropertyMap as d,createEventTypeByDescriptorMap as m,deriveWebComponentContract as f}from"./web-component-contract.js";let y=Symbol("storagesByPropertyDescriptor"),g=Symbol("reactRoot"),v=Symbol("pendingDisconnection"),j=Symbol("setProperty"),S=Symbol("activeSubscriptions"),P=Symbol("propertiesWithStorages"),w=Symbol("container"),C=Symbol("applicationRuntime"),x=Symbol("webComponentApi"),A=Symbol("PreviousPropertyValues"),E=Symbol("Events"),O=Symbol("Uuid"),$=(e,t,r)=>{let o=t?.attributeParser;if(!o)throw Error("Attribute parser is not defined");try{let e=o(r);return{success:!0,data:e}}catch(t){return console.error(`Failed to parse attribute ${e}, ignoring`,t),{success:!1}}};export const createWebComponent=k=>{let{RootComponent:D,webComponentOptions:B,embeddedIntegration:M,applicationRuntimeFactory:W}=k,F=f(B),{properties:V,events:q}=F,N=d(V),R=m(q),T=class Salsita3dConfigurator extends HTMLElement{[y];[g];[v]=null;[S]=[];[P];[w];[C];[x];[A]=new Map;[E]=new r;[O]=n();get applicationRuntime(){return this[C]}static observedAttributes=Array.from(N.keys());[j](e,t,r){let o=t.schema.safeParse(r);if(!o.success)return void console.error(`Invalid value provided for property ${e}, ignoring`,o.error);let s=this[y].get(t);if(!s)return void console.error(`Subject not found for property descriptor of ${e}`);let i=s.isSet;s.isSet=!0,i&&s.subject.value===o.data||s.subject.next(o.data)}constructor(){super(),this[w]=this.attachShadow({mode:"closed"}),this[P]=Object.entries(V).map(([e,t])=>{if(Object.prototype.hasOwnProperty.call(this,e)){let r=t.schema.safeParse(this[e]);if(delete this[e],r.success)return{name:e,propertyDescriptor:t,storage:p(t,r.data)};console.error(`Failed to validate property ${e}, ignoring`,r.error)}if(t.attributeParser&&t.attributeNames){let r=t.attributeNames.map(e=>this.getAttribute(e)).find(e=>null!==e)??null;if(null!==r){let o=$(e,t,r);if(o.success){let r=t.schema.safeParse(o.data);if(r.success)return{name:e,propertyDescriptor:t,storage:p(t,r.data)};console.error(`Failed to validate attribute ${e}, ignoring`,r.error)}}}return{name:e,propertyDescriptor:t,storage:p(t,t.defaultValue)}}),this[y]=new Map(this[P].map(({propertyDescriptor:e,storage:t})=>[e,t])),this[x]=h({element:this,eventTypeByDescriptor:R,events:this[E],propertiesWithStorages:this[P],storagesByPropertyDescriptor:this[y]}),this[C]=W({webComponentOptions:F,webComponentApi:this[x]})}connectedCallback(){let r;if(null!==this[v]){this[v]=null,this[C].actions.webComponent.startNewGeneration();return}let n=this[C],p=this[x],h=u({element:this,eventTypeByDescriptor:R,storagesByPropertyDescriptor:this[y]},!0),d=this[P].map(({name:e,storage:t})=>t.subject.pipe(i((e,t)=>[e[1],t],[t.subject.value,t.subject.value]),s(([e,t])=>e!==t)).subscribe(([t,r])=>{h(a.propertyChanged,{name:e,oldValue:t,newValue:r})})),m=e=>{if(e)for(let[t,r]of Object.entries(e)){let e=this[P].find(({name:e})=>e===t);if(e){let{storage:o,propertyDescriptor:s}=e;this[A].has(t)||this[A].set(t,o.subject.value);let i=s.schema.safeParse(r);i.success?(o.subject.next(i.data),o.isSet=!0):console.error(`Failed to apply web component property override for "${t}":`,i.error)}}else{for(let[e,t]of this[A]){let r=this[P].find(({name:t})=>t===e);if(r){let{storage:e}=r;e.subject.next(t)}}this[A].clear()}},f=new o(n.subscribe(()=>{let e=n.selectors.overrides.getWebComponentProperties();e!==r&&(r=e,m(e))})),j=new o(b(this,n.actions.environment.setGodMode));this[S]=[...d,f,j],this[g]=t(this[w]),this[g].render(e(c,{runtime:n,container:this[w],children:e(D,{})}));let E=p.getPropertyValue(l.onAttached);if(E)try{E(this)}catch(e){console.error("Error in onAttached handler",e)}this.dispatchEvent(new CustomEvent("attached",{bubbles:!0}))}disconnectedCallback(){let e={};this[v]=e,queueMicrotask(()=>{this[v]===e&&(this[v]=null,this[S].forEach(e=>{e.unsubscribe()}),this[g]?.unmount(),this[g]=void 0)})}attributeChangedCallback(e,t,r){let o=N.get(e);if(!o)throw Error(`Property descriptor not found for attribute: ${e}, despite the attribute being observed`);if(null===r)return o.required?void console.error(`Cannot unset a required attribute ${e}, ignoring`):void this[j](e,o,o.defaultValue);let s=$(e,o,r);s.success&&this[j](e,o,s.data)}};return Object.entries(V).forEach(([e,t])=>{Object.defineProperty(T.prototype,e,{enumerable:!0,configurable:!1,get(){return this[y].get(t).subject.value},set(r){this[j](e,t,r)}})}),M&&(Object.defineProperty(T.prototype,"$events",{enumerable:!1,configurable:!1,get(){return this[E]}}),Object.defineProperty(T.prototype,"uuid",{enumerable:!1,configurable:!1,get(){return this[O]}})),T};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turns god mode on or off from the browser console, for the applications mounted on the page.
|
|
3
|
+
*
|
|
4
|
+
* - `window.__salsita.setGodMode(true)` switches every mounted application and remembers the value
|
|
5
|
+
* for the tab's session, so applications created later, and after a reload, start with it.
|
|
6
|
+
* - `window.__salsita.setGodMode(true, $0)` switches only the application whose custom element is
|
|
7
|
+
* given, here the one selected in the browser's element inspector.
|
|
8
|
+
* - `window.__salsita.setGodMode(false, 'my-configurator')` switches only the application whose
|
|
9
|
+
* custom element is the first match of the CSS selector.
|
|
10
|
+
*
|
|
11
|
+
* A targeted call is not remembered. A target that matches no mounted application changes
|
|
12
|
+
* nothing and logs an error.
|
|
13
|
+
*/
|
|
14
|
+
export type SetGodMode = (godMode: boolean, target?: Element | string) => void;
|
|
15
|
+
declare global {
|
|
16
|
+
interface Window {
|
|
17
|
+
__salsita: {
|
|
18
|
+
setGodMode: SetGodMode;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Makes a mounted application reachable through `window.__salsita.setGodMode` (see
|
|
24
|
+
* {@link SetGodMode}) and installs the global. Returns the function that removes the application
|
|
25
|
+
* again.
|
|
26
|
+
*
|
|
27
|
+
* @param element The application's custom element, which a targeted call names.
|
|
28
|
+
* @param setRuntimeGodMode Publishes the value to the application's own runtime.
|
|
29
|
+
*/
|
|
30
|
+
export declare const registerGodModeTarget: (element: Element, setRuntimeGodMode: (godMode: boolean) => void) => (() => void);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{GOD_MODE_SESSION_STORAGE_KEY as e}from"#package/domain";let t=new Map,o=(o,n)=>{if(void 0===n){sessionStorage.setItem(e,o.toString()),t.forEach(e=>{e(o)});return}let i="string"==typeof n?document.querySelector(n):n,r=null===i?void 0:t.get(i);void 0===r?console.error("setGodMode: the target is not the element of a mounted application; nothing changed.",n):r(o)};export const registerGodModeTarget=(e,n)=>(t.set(e,n),window.__salsita={...window.__salsita,setGodMode:o},()=>{t.get(e)===n&&t.delete(e)});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { registerGodModeTarget, type SetGodMode } from './god-mode-registry.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{registerGodModeTarget}from"./god-mode-registry.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as a}from"react/jsx-runtime";import{SvgIcon as r}from"@mui/material";export default(m=>a(r,{...m,children:a("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",viewBox:"0 0 256 256",children:a("path",{d:"M176 232a8 8 0 0 1-8 8H88a8 8 0 0 1 0-16h80a8 8 0 0 1 8 8m40-128a87.55 87.55 0 0 1-33.64 69.21A16.24 16.24 0 0 0 176 186v6a16 16 0 0 1-16 16H96a16 16 0 0 1-16-16v-6a16 16 0 0 0-6.23-12.66A87.59 87.59 0 0 1 40 104.49C39.74 56.83 78.26 17.14 125.88 16A88 88 0 0 1 216 104m-16 0a72 72 0 0 0-73.74-72c-39 .92-70.47 33.39-70.26 72.39a71.65 71.65 0 0 0 27.64 56.3A32 32 0 0 1 96 186v6h64v-6a32.15 32.15 0 0 1 12.47-25.35A71.65 71.65 0 0 0 200 104m-16.11-9.34a57.6 57.6 0 0 0-46.56-46.55 8 8 0 0 0-2.66 15.78c16.57 2.79 30.63 16.85 33.44 33.45A8 8 0 0 0 176 104a9 9 0 0 0 1.35-.11 8 8 0 0 0 6.54-9.23"})})}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{SvgIcon as a}from"@mui/material";export default(l=>r(a,{...l,children:r("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",viewBox:"0 0 256 256",children:r("path",{d:"M165.66 101.66 139.31 128l26.35 26.34a8 8 0 0 1-11.32 11.32L128 139.31l-26.34 26.35a8 8 0 0 1-11.32-11.32L116.69 128l-26.35-26.34a8 8 0 0 1 11.32-11.32L128 116.69l26.34-26.35a8 8 0 0 1 11.32 11.32M232 128A104 104 0 1 1 128 24a104.11 104.11 0 0 1 104 104m-16 0a88 88 0 1 0-88 88 88.1 88.1 0 0 0 88-88"})})}));
|
|
@@ -61,6 +61,7 @@ import ImageSquareBold from './ImageSquareBold.js';
|
|
|
61
61
|
import Info from './Info.js';
|
|
62
62
|
import InfoBold from './InfoBold.js';
|
|
63
63
|
import Key from './Key.js';
|
|
64
|
+
import Lightbulb from './Lightbulb.js';
|
|
64
65
|
import List from './List.js';
|
|
65
66
|
import ListBullets from './ListBullets.js';
|
|
66
67
|
import ListChecks from './ListChecks.js';
|
|
@@ -104,6 +105,7 @@ import WarningCircleDuotone from './WarningCircleDuotone.js';
|
|
|
104
105
|
import WarningDuotone from './WarningDuotone.js';
|
|
105
106
|
import X from './X.js';
|
|
106
107
|
import XBold from './XBold.js';
|
|
108
|
+
import XCircle from './XCircle.js';
|
|
107
109
|
export declare const Icon: {
|
|
108
110
|
readonly Alarm: typeof Alarm;
|
|
109
111
|
readonly ArrowClockwise: typeof ArrowClockwise;
|
|
@@ -168,6 +170,7 @@ export declare const Icon: {
|
|
|
168
170
|
readonly Info: typeof Info;
|
|
169
171
|
readonly InfoBold: typeof InfoBold;
|
|
170
172
|
readonly Key: typeof Key;
|
|
173
|
+
readonly Lightbulb: typeof Lightbulb;
|
|
171
174
|
readonly List: typeof List;
|
|
172
175
|
readonly ListBullets: typeof ListBullets;
|
|
173
176
|
readonly ListChecks: typeof ListChecks;
|
|
@@ -211,4 +214,5 @@ export declare const Icon: {
|
|
|
211
214
|
readonly WarningDuotone: typeof WarningDuotone;
|
|
212
215
|
readonly X: typeof X;
|
|
213
216
|
readonly XBold: typeof XBold;
|
|
217
|
+
readonly XCircle: typeof XCircle;
|
|
214
218
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import o from"./Alarm.js";import r from"./ArrowClockwise.js";import m from"./ArrowCounterClockwise.js";import t from"./ArrowLeft.js";import i from"./ArrowRight.js";import s from"./ArrowRightBold.js";import p from"./ArrowsHorizontal.js";import f from"./ArrowsIn.js";import j from"./ArrowsOut.js";import e from"./ArrowsOutCardinal.js";import l from"./Basketball.js";import a from"./BoundingBox.js";import
|
|
1
|
+
import o from"./Alarm.js";import r from"./ArrowClockwise.js";import m from"./ArrowCounterClockwise.js";import t from"./ArrowLeft.js";import i from"./ArrowRight.js";import s from"./ArrowRightBold.js";import p from"./ArrowsHorizontal.js";import f from"./ArrowsIn.js";import j from"./ArrowsOut.js";import e from"./ArrowsOutCardinal.js";import l from"./Basketball.js";import a from"./BoundingBox.js";import u from"./BracketsCurly.js";import n from"./BuildingBold.js";import C from"./CameraRotate.js";import d from"./CaretDown.js";import B from"./CaretLeft.js";import c from"./CaretLeftBold.js";import g from"./CaretRight.js";import h from"./CaretRightBold.js";import A from"./Check.js";import P from"./CheckCircle.js";import w from"./CheckCircleDuotone.js";import S from"./Circle.js";import k from"./Cloud.js";import D from"./CloudArrowUp.js";import L from"./CopySimpleBold.js";import y from"./Cube.js";import F from"./CubeDuotone.js";import M from"./CurrencyDollar.js";import R from"./CurrencyEur.js";import I from"./CursorClick.js";import T from"./CustomAiAssistant.js";import b from"./CustomAiAssistantBold.js";import O from"./CustomAr.js";import W from"./CustomBigAiAssistant.js";import x from"./CustomMeasureCm.js";import E from"./CustomMeasureFt.js";import H from"./CustomMeasureIn.js";import G from"./CustomMeasureM.js";import U from"./CustomMeasureMm.js";import V from"./DotsSixVerticalBold.js";import X from"./DotsThreeVertical.js";import v from"./DotsThreeVerticalBold.js";import z from"./Export.js";import Q from"./EyeBold.js";import q from"./EyeClosedBold.js";import K from"./FileArrowUp.js";import N from"./FilePlus.js";import J from"./FileText.js";import Y from"./FireBold.js";import Z from"./Flame.js";import $ from"./FolderOpen.js";import _ from"./FolderStarBold.js";import oo from"./Gear.js";import or from"./GridFour.js";import om from"./HardDrives.js";import ot from"./House.js";import oi from"./Image.js";import os from"./ImageSquareBold.js";import op from"./Info.js";import of from"./InfoBold.js";import oj from"./Key.js";import oe from"./Lightbulb.js";import ol from"./List.js";import oa from"./ListBullets.js";import ou from"./ListChecks.js";import on from"./Lock.js";import oC from"./MagicWand.js";import od from"./MagnifyingGlassBold.js";import oB from"./NavigationArrow.js";import oc from"./PaintBrush.js";import og from"./Palette.js";import oh from"./PaletteBold.js";import oA from"./PaperPlaneRightBold.js";import oP from"./PaperPlaneTilt.js";import ow from"./PauseBold.js";import oS from"./PencilSimpleBold.js";import ok from"./PlayBold.js";import oD from"./Plus.js";import oL from"./PlusBold.js";import oy from"./PlusCircle.js";import oF from"./PlusCircleBold.js";import oM from"./PushPin.js";import oR from"./PushPinSlash.js";import oI from"./Question.js";import oT from"./QuestionDuotone.js";import ob from"./RocketLaunchBold.js";import oO from"./SalsitaLogo.js";import oW from"./Scan.js";import ox from"./ShoppingCartSimple.js";import oE from"./SignOut.js";import oH from"./SignOutBold.js";import oG from"./SlidersBold.js";import oU from"./SlidersHorizontal.js";import oV from"./SubsetOfRaw.js";import oX from"./TagBold.js";import ov from"./Trash.js";import oz from"./TrashSimpleBold.js";import oQ from"./UsersBold.js";import oq from"./Warning.js";import oK from"./WarningCircle.js";import oN from"./WarningCircleBold.js";import oJ from"./WarningCircleDuotone.js";import oY from"./WarningDuotone.js";import oZ from"./X.js";import o$ from"./XBold.js";import o_ from"./XCircle.js";export const Icon={Alarm:o,ArrowClockwise:r,ArrowCounterClockwise:m,ArrowLeft:t,ArrowRight:i,ArrowRightBold:s,ArrowsHorizontal:p,ArrowsIn:f,ArrowsOut:j,ArrowsOutCardinal:e,Basketball:l,BoundingBox:a,BracketsCurly:u,BuildingBold:n,CameraRotate:C,CaretDown:d,CaretLeft:B,CaretLeftBold:c,CaretRight:g,CaretRightBold:h,Check:A,CheckCircle:P,CheckCircleDuotone:w,Circle:S,Cloud:k,CloudArrowUp:D,CopySimpleBold:L,Cube:y,CubeDuotone:F,CurrencyDollar:M,CurrencyEur:R,CursorClick:I,CustomAiAssistant:T,CustomAiAssistantBold:b,CustomAr:O,CustomBigAiAssistant:W,CustomMeasureCm:x,CustomMeasureFt:E,CustomMeasureIn:H,CustomMeasureM:G,CustomMeasureMm:U,DotsSixVerticalBold:V,DotsThreeVertical:X,DotsThreeVerticalBold:v,Export:z,EyeBold:Q,EyeClosedBold:q,FileArrowUp:K,FilePlus:N,FileText:J,FireBold:Y,Flame:Z,FolderOpen:$,FolderStarBold:_,Gear:oo,GridFour:or,HardDrives:om,House:ot,Image:oi,ImageSquareBold:os,Info:op,InfoBold:of,Key:oj,Lightbulb:oe,List:ol,ListBullets:oa,ListChecks:ou,Lock:on,MagicWand:oC,MagnifyingGlassBold:od,NavigationArrow:oB,PaintBrush:oc,Palette:og,PaletteBold:oh,PaperPlaneRightBold:oA,PaperPlaneTilt:oP,PauseBold:ow,PencilSimpleBold:oS,PlayBold:ok,Plus:oD,PlusBold:oL,PlusCircle:oy,PlusCircleBold:oF,PushPin:oM,PushPinSlash:oR,Question:oI,QuestionDuotone:oT,RocketLaunchBold:ob,SalsitaLogo:oO,Scan:oW,ShoppingCartSimple:ox,SignOut:oE,SignOutBold:oH,SlidersBold:oG,SlidersHorizontal:oU,SubsetOfRaw:oV,TagBold:oX,Trash:ov,TrashSimpleBold:oz,UsersBold:oQ,Warning:oq,WarningCircle:oK,WarningCircleBold:oN,WarningCircleDuotone:oJ,WarningDuotone:oY,X:oZ,XBold:o$,XCircle:o_};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const CustomIcons=["custom-ai-assistant","custom-ai-assistant-bold","custom-ar","custom-big-ai-assistant","custom-measure-cm","custom-measure-ft","custom-measure-in","custom-measure-m","custom-measure-mm","SalsitaLogo","subset-of-raw"];export const PhosphorIcons={bold:["arrow-right","building","caret-left","caret-right","copy-simple","dots-six-vertical","dots-three-vertical","eye-closed","eye","fire","folder-star","image-square","info","magnifying-glass","palette","paper-plane-right","pause","pencil-simple","play","plus","plus-circle","rocket-launch","sign-out","sliders","tag","trash-simple","users","warning-circle","x"],duotone:["check-circle","cube","question","warning-circle","warning"],regular:["alarm","arrow-clockwise","arrow-counter-clockwise","arrow-left","arrow-left","arrow-right","arrows-horizontal","arrows-in","arrows-out","arrows-out-cardinal","basketball","bounding-box","brackets-curly","camera-rotate","caret-down","caret-left","caret-right","check","check-circle","circle","cloud","cloud-arrow-up","cube","currency-dollar","currency-eur","cursor-click","dots-three-vertical","export","file-arrow-up","file-plus","file-text","flame","gear","folder-open","grid-four","hard-drives","house","image","info","key","list","list-bullets","list-checks","lock","magic-wand","navigation-arrow","paint-brush","palette","paper-plane-tilt","plus","plus-circle","push-pin","push-pin-slash","question","scan","shopping-cart-simple","sign-out","sliders-horizontal","trash","warning","warning-circle","x"]};
|
|
1
|
+
export const CustomIcons=["custom-ai-assistant","custom-ai-assistant-bold","custom-ar","custom-big-ai-assistant","custom-measure-cm","custom-measure-ft","custom-measure-in","custom-measure-m","custom-measure-mm","SalsitaLogo","subset-of-raw"];export const PhosphorIcons={bold:["arrow-right","building","caret-left","caret-right","copy-simple","dots-six-vertical","dots-three-vertical","eye-closed","eye","fire","folder-star","image-square","info","magnifying-glass","palette","paper-plane-right","pause","pencil-simple","play","plus","plus-circle","rocket-launch","sign-out","sliders","tag","trash-simple","users","warning-circle","x"],duotone:["check-circle","cube","question","warning-circle","warning"],regular:["alarm","arrow-clockwise","arrow-counter-clockwise","arrow-left","arrow-left","arrow-right","arrows-horizontal","arrows-in","arrows-out","arrows-out-cardinal","basketball","bounding-box","brackets-curly","camera-rotate","caret-down","caret-left","caret-right","check","check-circle","circle","cloud","cloud-arrow-up","cube","currency-dollar","currency-eur","cursor-click","dots-three-vertical","export","file-arrow-up","file-plus","file-text","flame","gear","folder-open","grid-four","hard-drives","house","image","info","key","lightbulb","list","list-bullets","list-checks","lock","magic-wand","navigation-arrow","paint-brush","palette","paper-plane-tilt","plus","plus-circle","push-pin","push-pin-slash","question","scan","shopping-cart-simple","sign-out","sliders-horizontal","trash","warning","warning-circle","x","x-circle"]};
|