@salsita-ai/sdk 0.50.0-develop.f81ab6ac76 → 0.50.0-develop.fbe43b9a2d
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/ConfiguratorApp.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/camera-control-system/camera-control-system.d.ts +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 +107 -4
- package/dist/configurator/common/configurator-interface.js +1 -1
- package/dist/configurator/configuration-not-found-page/create-configuration-not-found-page.d.ts +9 -0
- package/dist/configurator/configuration-not-found-page/create-configuration-not-found-page.js +1 -0
- package/dist/configurator/configuration-not-found-page/index.d.ts +1 -0
- package/dist/configurator/configuration-not-found-page/index.js +1 -1
- package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.d.ts +12 -0
- package/dist/configurator/configurator-context/ConfiguratorResponsiveProvider.js +1 -0
- package/dist/configurator/configurator-context/PreviewContextProvider.js +1 -1
- package/dist/configurator/configurator-context/ViewportStateSync.d.ts +2 -2
- package/dist/configurator/configurator-context/ViewportStateSync.js +1 -1
- package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.d.ts +10 -0
- package/dist/configurator/configurator-context/configurator-routing/ConfiguratorRoutingProvider.js +1 -1
- package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.d.ts +6 -0
- package/dist/configurator/configurator-error-page/BuiltInConfiguratorErrorPage.js +1 -0
- package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.d.ts +12 -0
- package/dist/configurator/configurator-error-page/ConfiguratorErrorPageElement.js +1 -0
- package/dist/configurator/configurator-error-page/create-configurator-error-page.d.ts +9 -0
- package/dist/configurator/configurator-error-page/create-configurator-error-page.js +1 -0
- package/dist/configurator/configurator-error-page/index.d.ts +3 -0
- package/dist/configurator/configurator-error-page/index.js +1 -0
- package/dist/configurator/index.d.ts +3 -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/PresetCreationErrorPage.d.ts +1 -1
- package/dist/configurator/pages/PresetCreationErrorPage.js +1 -1
- package/dist/configurator/pages/default-configurator-elements.d.ts +4 -2
- 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/pages/error-boundaries/GeneralErrorBoundary.js +1 -1
- 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.d.ts +1 -1
- package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -1
- package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +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/header/common/step-navigation/DesktopNavigationSteps.d.ts +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/DesktopNavigationSteps.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.d.ts +2 -8
- package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.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/configurator/ui/phoenix-layout-elements/sidebar-footer/common/FinalizeActions.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/NextStepButton.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/PreviousStepButton.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 +3515 -0
- package/dist/docs/layouts/gallery/fenwick-window.mdx +2732 -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 +2671 -0
- package/dist/docs/other-features/client-side-rendering/declarative.mdx +1 -1
- package/dist/docs/other-features/error-5xx.mdx +1 -1
- package/dist/docs/other-features/navigation-hotspot.mdx +2 -0
- package/dist/docs/other-features/not-found-404.mdx +1 -1
- package/dist/docs/phoenix/configurator-interface.mdx +199 -66
- package/dist/docs/phoenix/finalization.mdx +1 -1
- package/dist/docs/phoenix/layout-slots.mdx +5 -5
- 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/use-phoenix-element-slots.d.ts +2 -1
- 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/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 +4 -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 +8 -0
- package/dist/react-sdk/domain-context/common-hooks/index.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/step-navigation-hooks.d.ts +57 -0
- package/dist/react-sdk/domain-context/system-hooks/step-navigation-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/elements/configurator-error-page-props.d.ts +20 -0
- package/dist/react-sdk/elements/index.d.ts +1 -0
- package/dist/react-sdk/handlers/FinalizeActionRunner.d.ts +13 -0
- package/dist/react-sdk/handlers/FinalizeActionRunner.js +1 -0
- package/dist/react-sdk/handlers/FinalizeActionsHost.d.ts +10 -0
- package/dist/react-sdk/handlers/FinalizeActionsHost.js +1 -0
- package/dist/react-sdk/handlers/FinalizeActionsProvider.d.ts +11 -0
- package/dist/react-sdk/handlers/FinalizeActionsProvider.js +1 -0
- package/dist/react-sdk/handlers/finalize-actions-context.d.ts +6 -0
- package/dist/react-sdk/handlers/finalize-actions-context.js +1 -0
- package/dist/react-sdk/handlers/finalize-actions-store.d.ts +23 -0
- package/dist/react-sdk/handlers/finalize-actions-store.js +1 -0
- package/dist/react-sdk/handlers/index.d.ts +5 -0
- package/dist/react-sdk/handlers/index.js +1 -1
- package/dist/react-sdk/handlers/use-finalize-action.d.ts +3 -2
- package/dist/react-sdk/handlers/use-finalize-action.js +1 -1
- package/dist/react-sdk/handlers/use-finalize-actions.d.ts +53 -0
- package/dist/react-sdk/handlers/use-finalize-actions.js +1 -0
- package/dist/react-sdk/index.d.ts +2 -0
- 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/responsive-state/ResponsiveStateProvider.d.ts +25 -0
- package/dist/react-sdk/responsive-state/ResponsiveStateProvider.js +1 -0
- package/dist/react-sdk/responsive-state/canvas-padding.d.ts +14 -0
- package/dist/react-sdk/responsive-state/canvas-padding.js +1 -0
- package/dist/react-sdk/responsive-state/index.d.ts +5 -0
- package/dist/react-sdk/responsive-state/index.js +1 -0
- package/dist/react-sdk/responsive-state/responsive-state-manager.d.ts +111 -0
- package/dist/react-sdk/responsive-state/responsive-state-manager.js +1 -0
- package/dist/react-sdk/responsive-state/use-responsive-state-manager.d.ts +10 -0
- package/dist/react-sdk/responsive-state/use-responsive-state-manager.js +1 -0
- package/dist/react-sdk/responsive-state/use-responsive-state.d.ts +11 -0
- package/dist/react-sdk/responsive-state/use-responsive-state.js +1 -0
- 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/scene-control-elements/scene-control-tooltip-visibility.js +1 -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 +9 -0
- package/dist/ui-sdk/responsive-application/ResponsiveApplicationProvider.js +1 -1
- package/dist/ui-sdk/responsive-application/index.d.ts +1 -0
- package/dist/ui-sdk/responsive-application/responsive-state-store.d.ts +57 -0
- package/dist/ui-sdk/responsive-application/responsive-state-store.js +1 -0
- package/dist/ui-sdk/responsive-application/use-store-responsive-info.d.ts +7 -0
- package/dist/ui-sdk/responsive-application/use-store-responsive-info.js +1 -0
- 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/{configurator/ui/assistant/form/form-element-definition.js → react-sdk/elements/configurator-error-page-props.js} +0 -0
|
@@ -93,6 +93,7 @@ export declare function createApplicationRuntimeSlices<State extends Application
|
|
|
93
93
|
selectElementSlots: import("@salsita-ai/common/utils").Selector<import("#package/domain").SpecSelectorState, {
|
|
94
94
|
entityElements: Record<string, (props: import("#package/domain").CustomPhoenixEntityElementProps) => JSX.Element>;
|
|
95
95
|
layoutElements: Record<string, (props: import("react").PropsWithChildren) => JSX.Element>;
|
|
96
|
+
assistantFormElements: Record<string, import("react").ComponentType<never>>;
|
|
96
97
|
hashes: Record<string, string>;
|
|
97
98
|
}>;
|
|
98
99
|
selectDataConfig: import("@salsita-ai/common/utils").Selector<import("#package/domain").SpecSelectorState, import("#package/domain").DataSpec | null>;
|
|
@@ -136,6 +137,7 @@ export declare function createApplicationRuntimeSlices<State extends Application
|
|
|
136
137
|
getElementSlots: () => {
|
|
137
138
|
entityElements: Record<string, (props: import("#package/domain").CustomPhoenixEntityElementProps) => JSX.Element>;
|
|
138
139
|
layoutElements: Record<string, (props: import("react").PropsWithChildren) => JSX.Element>;
|
|
140
|
+
assistantFormElements: Record<string, import("react").ComponentType<never>>;
|
|
139
141
|
hashes: Record<string, string>;
|
|
140
142
|
};
|
|
141
143
|
getDataConfig: () => import("#package/domain").DataSpec | null;
|
|
@@ -596,7 +598,6 @@ export declare function createApplicationRuntimeSlices<State extends Application
|
|
|
596
598
|
getUnauthenticatedClient: () => import("../../../client/contract.js").UnauthenticatedPhoenixApiClient;
|
|
597
599
|
};
|
|
598
600
|
integration: {
|
|
599
|
-
selectAdminIntegrationService: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, import("../index.js").AdminIntegrationService>;
|
|
600
601
|
selectIntegrationState: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, IntegrationState>;
|
|
601
602
|
selectEmbeddedView: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, import("../index.js").EmbeddedView>;
|
|
602
603
|
selectPresetEmbeddedState: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, import("../index.js").PresetEmbeddedView | null>;
|
|
@@ -761,6 +762,7 @@ declare const createApplicationRuntimeImpl: <EXTENSIONS extends readonly AnyAppl
|
|
|
761
762
|
selectElementSlots: import("@salsita-ai/common/utils").Selector<import("#package/domain").SpecSelectorState, {
|
|
762
763
|
entityElements: Record<string, (props: import("#package/domain").CustomPhoenixEntityElementProps) => JSX.Element>;
|
|
763
764
|
layoutElements: Record<string, (props: import("react").PropsWithChildren) => JSX.Element>;
|
|
765
|
+
assistantFormElements: Record<string, import("react").ComponentType<never>>;
|
|
764
766
|
hashes: Record<string, string>;
|
|
765
767
|
}>;
|
|
766
768
|
selectDataConfig: import("@salsita-ai/common/utils").Selector<import("#package/domain").SpecSelectorState, import("#package/domain").DataSpec | null>;
|
|
@@ -804,6 +806,7 @@ declare const createApplicationRuntimeImpl: <EXTENSIONS extends readonly AnyAppl
|
|
|
804
806
|
getElementSlots: () => {
|
|
805
807
|
entityElements: Record<string, (props: import("#package/domain").CustomPhoenixEntityElementProps) => JSX.Element>;
|
|
806
808
|
layoutElements: Record<string, (props: import("react").PropsWithChildren) => JSX.Element>;
|
|
809
|
+
assistantFormElements: Record<string, import("react").ComponentType<never>>;
|
|
807
810
|
hashes: Record<string, string>;
|
|
808
811
|
};
|
|
809
812
|
getDataConfig: () => import("#package/domain").DataSpec | null;
|
|
@@ -1264,7 +1267,6 @@ declare const createApplicationRuntimeImpl: <EXTENSIONS extends readonly AnyAppl
|
|
|
1264
1267
|
getUnauthenticatedClient: () => import("../../../client/contract.js").UnauthenticatedPhoenixApiClient;
|
|
1265
1268
|
};
|
|
1266
1269
|
integration: {
|
|
1267
|
-
selectAdminIntegrationService: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, import("../index.js").AdminIntegrationService>;
|
|
1268
1270
|
selectIntegrationState: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, IntegrationState>;
|
|
1269
1271
|
selectEmbeddedView: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, import("../index.js").EmbeddedView>;
|
|
1270
1272
|
selectPresetEmbeddedState: import("@salsita-ai/common/utils").Selector<import("../index.js").IntegrationSelectorState, import("../index.js").PresetEmbeddedView | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{BehaviorSubject as e}from"rxjs";import{memoOnce as t}from"@salsita-ai/common/utils";import{
|
|
1
|
+
import{BehaviorSubject as e}from"rxjs";import{memoOnce as t}from"@salsita-ai/common/utils";import{ImplementationErrors as i,createDomainRuntimeSlices as n,findAssistantFormElementErrors as o,resolveIsDev as s}from"#package/domain";import{initializeAnalyticsService as r}from"../common-services/analytics/analytics-service.js";import{initializeI18n as a,initializeLogger as c}from"../common-services/initialize.js";import{createCommonServicesSelectors as l}from"../common-services/selectors.js";import{createDomainApplicationContextSelectors as m}from"../domain-application-context/index.js";import{createIntegrationActions as p,createIntegrationSelectors as u,initializeIntegration as g}from"../integration/index.js";import{createRoutingActions as d,createRoutingSelectors as S,initializeRouting as v}from"../routing/index.js";import{SessionService as x,createSessionRuntimeActions as f,createSessionRuntimeSelectors as C,initializeSessionRuntime as y}from"../session/index.js";export function createApplicationRuntimeSlices(e){let{config:A,bootConfig:b,getSubject:w,getConfiguratorExtensions:j}=e,R=s(A),h=c(A,R),E={analyticsService:r(A,h,R),i18n:a(A),logger:h},{initialize:I,selectors:z,actions:D}=n({config:A,services:E,getSubject:w,getExtensionSystems:e=>P[e].getInitializableSystems()}),T=I(),{assistant:L,elements:O}=T.spec.configurator,U=o(L?.formElements??[],O);if(U.length>0)throw new i(U);let k=p({setIntegration:e=>{let t=w(),i=e(t.value.integration);t.next({...t.value,integration:i})}}),G=u({getState:()=>w().value,actions:k}),$=g(),q=d({setRouting:e=>{let t=w(),i=e(t.value.routing);t.next({...t.value,routing:i})}}),B=S({getState:()=>w().value,actions:q,accessActions:D.access,loadedDataActions:D.loadedData,domainServicesSelectors:z.domainServices,overridesSelectors:z.overrides}),F=v(),H=l({getState:()=>w().value,environmentSelectors:z.environment,specSelectors:z.spec,accessSelectors:z.access,domainServicesSelectors:z.domainServices,webComponentOptions:b.webComponentOptions,webComponentApi:b.webComponentApi,getSessionService:()=>N(),routingSelectors:B}),J=f({setSessionRuntime:e=>{let t=w(),i=e(t.value.session);t.next({...t.value,session:i})}}),K=C({getState:()=>w().value,sessionContextSelectors:z.sessionContext}),M=y(),N=t(()=>new x({getLogger:()=>z.domainServices.getLogger(),getAnalyticsService:()=>z.domainServices.getAnalyticsService(),getUnauthenticatedClient:H.getUnauthenticatedClient,environmentSelectors:z.environment,sessionActions:J,setSessionContext:D.sessionContext.setSessionContext,sessionSelectors:K,specSelectors:z.spec})),P={configurator:m({applicationType:"configurator",commonServicesSelectors:H,domainServicesSelectors:z.domainServices,domainContextSelectors:z.domainContext.configurator,getApplicationRuntimeExtensions:j}),admin:m({applicationType:"admin",commonServicesSelectors:H,domainServicesSelectors:z.domainServices,domainContextSelectors:z.domainContext.admin,getApplicationRuntimeExtensions:()=>[]})};return h.info(`Configurator Application loaded with deployment ID: ${A.deploymentId}!`),h.appendToGlobalContext({deploymentId:A.deploymentId}),{getState:()=>w().value,initialize:()=>({...T,integration:$,routing:F,session:M}),selectors:{...z,commonServices:H,integration:G,routing:B,session:K,domainApplicationContext:P},actions:{...D,integration:k,routing:q,session:J}}}export function createApplicationRuntime(t,i,n){return((t,i,n)=>{let o=null,s=null,r=()=>{if(!o)throw Error("Subject not yet initialized!");return o},{initialize:a,...c}=createApplicationRuntimeSlices({config:t,bootConfig:i,getSubject:r,getConfiguratorExtensions:()=>s});return s=n?n(c):[],c.selectors.domainApplicationContext.configurator.getSystems(),o=new e(a()),{...c,getState:()=>r().value,subscribe:e=>{let t=r().subscribe(()=>e());return()=>t.unsubscribe()}}})(t,i,n)}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './use-configurator-messages.js';
|
|
2
|
+
export * from './use-domain-context.js';
|
|
3
|
+
export * from './use-entity-selector.js';
|
|
4
|
+
export * from './use-observable-selector.js';
|
|
5
|
+
export * from './use-slices.js';
|
|
6
|
+
export * from './use-state-slice.js';
|
|
7
|
+
export * from './use-state-validity.js';
|
|
8
|
+
export * from './use-store-selector.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"./use-configurator-messages.js";export*from"./use-domain-context.js";export*from"./use-entity-selector.js";export*from"./use-observable-selector.js";export*from"./use-slices.js";export*from"./use-state-slice.js";export*from"./use-state-validity.js";export*from"./use-store-selector.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './use-component.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"./use-component.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useMemo as t}from"react";import{useApplicationRuntimeSelector as e}from"../../application-runtime/index.js";import{useDomainContextSelectors as n
|
|
1
|
+
import{useMemo as t}from"react";import{useApplicationRuntimeSelector as e}from"../../application-runtime/index.js";import{useDomainContextSelectors as n,useRenderedSelector as o,useStoreSelector as r}from"../common-hooks/index.js";let s=t=>[t.componentType,t.entityId,t.instanceName,t.componentTypes?.length,...t.componentTypes??[],t.entityIds?.length,...t.entityIds??[],t.instanceNames?.length,...t.instanceNames??[]],a=o=>{let r=n(),{componentReader:a}=r.getDomainSystems(),p=t(()=>a.isComponentTypeAttached(o),[a,e(r.getComponentReaderIndexes),...s(o)]);return{componentReader:a,isActive:p}};export const useComponent=t=>{let{entityId:e,componentType:n,instanceName:o}=t,{componentReader:s,isActive:p}=a({entityId:e,componentType:n,instanceName:o}),m=r(t=>s.readOneComponent({entityId:e,componentType:n,instanceName:o},t.state),[s,e,n,o],p);return null===m?null:m?.state};export const useRenderedComponent=t=>{let{entityId:e,componentType:n,instanceName:r}=t,{componentReader:s,isActive:p}=a({entityId:e,componentType:n,instanceName:r}),m=o(t=>s.readOneComponent({entityId:e,componentType:n,instanceName:r},t.state),[s,e,n,r],p);return null===m?null:m?.state};export const useComponents=t=>{let{entityIds:e,componentTypes:n,instanceNames:o}=t,{componentReader:p,isActive:m}=a({entityIds:e,componentTypes:n,instanceNames:o});return r(t=>p.readManyComponents({entityIds:e,componentTypes:n,instanceNames:o},t.state),[p,...s({entityIds:e,componentTypes:n,instanceNames:o})],m)};export const useDynamicComponents=t=>{let{entityIds:e,componentTypes:n,instanceNames:o}=t,{componentReader:s,isActive:p}=a({entityIds:e,componentTypes:n,instanceNames:o});return r(t=>s.readManyComponents({entityIds:e,componentTypes:n,instanceNames:o},t.state),[s,n,e,o],p)};export const useRenderedComponents=t=>{let{entityIds:e,componentTypes:n,instanceNames:r}=t,{componentReader:p,isActive:m}=a({entityIds:e,componentTypes:n,instanceNames:r});return o(t=>p.readManyComponents({entityIds:e,componentTypes:n,instanceNames:r},t.state),[p,...s({entityIds:e,componentTypes:n,instanceNames:r})],m)};export const useFirstComponent=t=>{let{entityIds:e,componentTypes:n,instanceNames:o}=t,{componentReader:p,isActive:m}=a({entityIds:e,componentTypes:n,instanceNames:o});return r(t=>p.readFirstComponent({entityIds:e,componentTypes:n,instanceNames:o},t.state),[p,...s({entityIds:e,componentTypes:n,instanceNames:o})],m)};export const useFirstRenderedComponent=t=>{let{entityIds:e,componentTypes:n,instanceNames:r}=t,{componentReader:p,isActive:m}=a({entityIds:e,componentTypes:n,instanceNames:r});return o(t=>p.readFirstComponent({entityIds:e,componentTypes:n,instanceNames:r},t.state),[p,...s({entityIds:e,componentTypes:n,instanceNames:r})],m)};export const useRootComponents=e=>{let n=t(()=>Array.isArray(e)?e:[e],[e]),{componentReader:o,isActive:p}=a({componentTypes:n});return r(t=>o.readManyComponents({componentTypes:n,entityIds:[t.state.rootEntityId]},t.state),[o,...s({componentTypes:n})],p)};export const useRootRenderedComponents=e=>{let n=t(()=>Array.isArray(e)?e:[e],[e]),{componentReader:r,isActive:p}=a({componentTypes:n});return o(t=>r.readManyComponents({componentTypes:n,entityIds:[t.state.rootEntityId]},t.state),[r,...s({componentTypes:n})],p)};export const useFirstRootComponent=e=>{let n=t(()=>Array.isArray(e)?e:[e],[e]),{componentReader:o,isActive:p}=a({componentTypes:n});return r(t=>o.readFirstRootComponent({componentTypes:n},t.state),[o,...s({componentTypes:n})],p)};export const useFirstRootRenderedComponent=e=>{let n=t(()=>Array.isArray(e)?e:[e],[e]),{componentReader:r,isActive:p}=a({componentTypes:n});return o(t=>r.readFirstRootComponent({componentTypes:n},t.state),[r,...s({componentTypes:n})],p)};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useDomain as t
|
|
1
|
+
import{useDomain as t,useRenderedSelector as e,useStoreSelector as n}from"../common-hooks/index.js";export const useDomainEntityState=e=>{let{domain:o}=t();return n(t=>o.get$Entity(e,t.state),[o,e])};export const useDomainEntityRenderedState=n=>{let{domain:o}=t();return e(t=>o.get$Entity(n,t.state),[o,n])};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useLingui as t}from"@lingui/react";import{priceComponent as e}from"#package/domain";import{useFirstComponent as
|
|
1
|
+
import{useLingui as t}from"@lingui/react";import{priceComponent as e}from"#package/domain";import{useFirstComponent as r}from"../component-hooks/index.js";import{useRootEntityId as o}from"./use-root-entity-id.js";export const useEntityPrice=o=>{let n=r({componentTypes:[e],entityIds:[o]}),{i18n:i}=t(),c=n?.state?.currency??"USD",s=n?.state.price;return void 0===s?null:i.number(s,{style:"currency",currency:c})};export const useRootEntityPrice=()=>{let t=o();return useEntityPrice(t)};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useRenderedSelector as t,useStoreSelector as o}from"../common-hooks/
|
|
1
|
+
import{useRenderedSelector as t,useStoreSelector as o}from"../common-hooks/index.js";export const useRootEntityId=()=>o(t=>t.state.rootEntityId,[]);export const useRootEntityRenderedId=()=>t(t=>t.state.rootEntityId,[]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useDomain as t
|
|
1
|
+
import{useDomain as t,useRenderedSelector as e,useStoreSelector as o}from"../common-hooks/index.js";export const useRootEntityState=()=>{let{domain:e}=t();return o(t=>e.getRoot$Entity(t.state),[e])};export const useRootEntityRenderedState=()=>{let{domain:o}=t();return e(t=>o.getRoot$Entity(t.state),[o])};
|
|
@@ -12,6 +12,10 @@ export { useActiveNavigationState, type UseActiveNavigationState, useActiveViewS
|
|
|
12
12
|
export { useComposition, type UseComposition } from './system-hooks/composition-hooks.js';
|
|
13
13
|
export { useUndoRedo, type UseUndoRedo, type UseUndoRedoResult } from './system-hooks/undo-redo-hooks.js';
|
|
14
14
|
export { useTabNavigation, type TabEntry, type TabSource, type UseTabNavigation, type UseTabNavigationOptions, type UseTabNavigationResult, } from './system-hooks/tab-navigation-hooks.js';
|
|
15
|
+
export { useStepNavigation, type NavigationStepEntry, type StepStatus, type UseStepNavigation, type UseStepNavigationResult, } from './system-hooks/step-navigation-hooks.js';
|
|
16
|
+
export { useLocaleSwitch, type UseLocaleSwitch, type UseLocaleSwitchResult, type LocaleOption, } from './system-hooks/locale-switch-hooks.js';
|
|
17
|
+
export { useGenerateShareLink, type GenerateShareLinkOptions } from './system-hooks/generate-share-link-hooks.js';
|
|
18
|
+
export { useShareLinks, type UseShareLinks, type UseShareLinksOptions, type UseShareLinksResult, } from './system-hooks/share-links-hooks.js';
|
|
15
19
|
export { useHoveredDomainEntityId, useHoveredEntity, useHoveredEntityId, type UseHoveredDomainEntityId, type UseHoveredEntity, type UseHoveredEntityId, } from './system-hooks/hover-hooks.js';
|
|
16
20
|
export { type UseRootEntityState, useRootEntityState, useRootEntityRenderedState, } from './entity-hooks/use-root-entity-state.js';
|
|
17
21
|
export { type UseRootEntityId, useRootEntityId, useRootEntityRenderedId } from './entity-hooks/use-root-entity-id.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{useDomain}from"./common-hooks/use-domain-context.js";export{useStoreSelector,useRenderedSelector,useRenderedSelector$,useStoreSelector$}from"./common-hooks/use-store-selector.js";export{useEagerObservableSelector,usePatientObservableSelector,usePatientObservableValue,useEagerObservableValue}from"./common-hooks/use-observable-selector.js";export{useStateValidity,useMapViolationHints,useControlViolations,useFinalizeViolations}from"./common-hooks/use-state-validity.js";export{useConfiguratorMessages}from"./common-hooks/use-configurator-messages.js";export{useComponent,useRenderedComponent,useComponents,useDynamicComponents,useRenderedComponents,useRootComponents,useRootRenderedComponents,useFirstComponent,useFirstRenderedComponent,useFirstRootComponent,useFirstRootRenderedComponent}from"./component-hooks/use-component.js";export{useCommittedState,useCommittedSlice,useRenderedSlice,useRenderedState}from"./common-hooks/use-slices.js";export{useDomainEntityState,useDomainEntityRenderedState}from"./entity-hooks/use-domain-entity-state.js";export{useEntityPrice,useRootEntityPrice}from"./entity-hooks/use-entity-price.js";export{useSelectEntity,useSelectedEntity,useSelectedEntityId,useSelectedDomainEntityId,useDeselect,useSelectParent}from"./system-hooks/selection-hooks.js";export{useActiveNavigationState,useActiveViewState,useSetViewState,useActiveToolState,useIsFullscreenActive,useSetFullscreen,useActiveViewports,useDraggedDomainEntityId,useNavigate,usePushNavigate,usePopNavigate}from"./system-hooks/navigation-hooks.js";export{useComposition}from"./system-hooks/composition-hooks.js";export{useUndoRedo}from"./system-hooks/undo-redo-hooks.js";export{useTabNavigation}from"./system-hooks/tab-navigation-hooks.js";export{useHoveredDomainEntityId,useHoveredEntity,useHoveredEntityId}from"./system-hooks/hover-hooks.js";export{useRootEntityState,useRootEntityRenderedState}from"./entity-hooks/use-root-entity-state.js";export{useRootEntityId,useRootEntityRenderedId}from"./entity-hooks/use-root-entity-id.js";export{useEntitySelector,useRootEntitySelector,useRenderedEntitySelector,useRenderedRootEntitySelector}from"./common-hooks/use-entity-selector.js";export{useDimensionState,useDimensions,useDimensionConfig}from"./system-hooks/dimension-hooks.js";
|
|
1
|
+
export{useDomain}from"./common-hooks/use-domain-context.js";export{useStoreSelector,useRenderedSelector,useRenderedSelector$,useStoreSelector$}from"./common-hooks/use-store-selector.js";export{useEagerObservableSelector,usePatientObservableSelector,usePatientObservableValue,useEagerObservableValue}from"./common-hooks/use-observable-selector.js";export{useStateValidity,useMapViolationHints,useControlViolations,useFinalizeViolations}from"./common-hooks/use-state-validity.js";export{useConfiguratorMessages}from"./common-hooks/use-configurator-messages.js";export{useComponent,useRenderedComponent,useComponents,useDynamicComponents,useRenderedComponents,useRootComponents,useRootRenderedComponents,useFirstComponent,useFirstRenderedComponent,useFirstRootComponent,useFirstRootRenderedComponent}from"./component-hooks/use-component.js";export{useCommittedState,useCommittedSlice,useRenderedSlice,useRenderedState}from"./common-hooks/use-slices.js";export{useDomainEntityState,useDomainEntityRenderedState}from"./entity-hooks/use-domain-entity-state.js";export{useEntityPrice,useRootEntityPrice}from"./entity-hooks/use-entity-price.js";export{useSelectEntity,useSelectedEntity,useSelectedEntityId,useSelectedDomainEntityId,useDeselect,useSelectParent}from"./system-hooks/selection-hooks.js";export{useActiveNavigationState,useActiveViewState,useSetViewState,useActiveToolState,useIsFullscreenActive,useSetFullscreen,useActiveViewports,useDraggedDomainEntityId,useNavigate,usePushNavigate,usePopNavigate}from"./system-hooks/navigation-hooks.js";export{useComposition}from"./system-hooks/composition-hooks.js";export{useUndoRedo}from"./system-hooks/undo-redo-hooks.js";export{useTabNavigation}from"./system-hooks/tab-navigation-hooks.js";export{useStepNavigation}from"./system-hooks/step-navigation-hooks.js";export{useLocaleSwitch}from"./system-hooks/locale-switch-hooks.js";export{useGenerateShareLink}from"./system-hooks/generate-share-link-hooks.js";export{useShareLinks}from"./system-hooks/share-links-hooks.js";export{useHoveredDomainEntityId,useHoveredEntity,useHoveredEntityId}from"./system-hooks/hover-hooks.js";export{useRootEntityState,useRootEntityRenderedState}from"./entity-hooks/use-root-entity-state.js";export{useRootEntityId,useRootEntityRenderedId}from"./entity-hooks/use-root-entity-id.js";export{useEntitySelector,useRootEntitySelector,useRenderedEntitySelector,useRenderedRootEntitySelector}from"./common-hooks/use-entity-selector.js";export{useDimensionState,useDimensions,useDimensionConfig}from"./system-hooks/dimension-hooks.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useDomain as o
|
|
1
|
+
import{useDomain as o,useRenderedSelector as e}from"../common-hooks/index.js";export const useComposition=()=>{let{compositionProjections:t}=o();return e(o=>t.getTree(o.state),[t])};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useCallback as t}from"react";import{useDomain as e
|
|
1
|
+
import{useCallback as t}from"react";import{useDomain as e,useStoreSelector as o}from"../common-hooks/index.js";export const useDimensionConfig=()=>{let{dimensionSystem:t}=e();return o(e=>t.getDimensionConfig(e.state),[t])};export const useDimensionState=()=>{let{dimensionSystem:t}=e();return o(e=>t.state.get(e.state),[t])};export const useDimensions=()=>{let{dimensionSystem:o}=e(),{storeSystem:s}=e();return{setGlobalUnit:t(t=>{let e=o.getSetGlobalUnitUpdates(t,s.stateSlices.committed.value.state);s.stageAndCommit(e)},[o,s])}};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AccessLevel } from '@salsita-ai/contracts/api';
|
|
2
|
+
export interface GenerateShareLinkOptions {
|
|
3
|
+
access: AccessLevel;
|
|
4
|
+
expiration?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare const useGenerateShareLink: () => (options: GenerateShareLinkOptions) => Promise<{
|
|
7
|
+
readonly link: string;
|
|
8
|
+
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useCallback as e}from"react";import{match as r}from"ts-pattern";import{applicationConfigComponent as t}from"#package/domain";import{useAuthorizedClient as a,useConfigurationId as o,useDomainApplication as i}from"../../application-runtime/index.js";import{useFirstRootComponent as n}from"../component-hooks/index.js";export const useGenerateShareLink=()=>{let s=n(t),m=s?.state.shareStrategy??"deployment-registered",{configurationPersistSystem:c}=i(),d=o(),p=a();return e(async e=>{let t=r(m).with("deployment-registered",()=>void 0).with("current-frontend",()=>{let e=new URL(window.location.href);return e.searchParams.delete("cid"),e.searchParams.delete("ca"),e.toString()}).exhaustive(),a=await c.save();return p.generateShareLink(d,"rr"===e.access?a:void 0,e.expiration,e.access,t)},[m,c,p,d])};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useDomain as t
|
|
1
|
+
import{useDomain as t,useRenderedSelector as e}from"../common-hooks/index.js";export const useHoveredDomainEntityId=()=>{let{navigationSystem:o}=t();return e(t=>o.getActiveHoverState(t.state),[o])};export const useHoveredEntityId=t=>{let e=useHoveredDomainEntityId();return e&&t?.isId(e)?e:null};export const useHoveredEntity=o=>{let n=useHoveredEntityId(o),{domain:r}=t();return e(t=>n?r.get$Entity(n,t.state):null,[r,n])};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** A language the configurator offers, with its name in that language. */
|
|
2
|
+
export interface LocaleOption {
|
|
3
|
+
readonly locale: string;
|
|
4
|
+
readonly displayName: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* What a project layout needs to offer a language switch.
|
|
8
|
+
* - `locales`: the spec's `applicationConfig.availableLocales` (`['en']` without it), each with its own name.
|
|
9
|
+
* - `locale`: the active locale.
|
|
10
|
+
* - `setLocale`: activates a locale, falling back to a supported one as `useLinguiActivate` does.
|
|
11
|
+
* - `available`: whether there is more than one locale to choose from, the built-in rule for showing the switch.
|
|
12
|
+
*/
|
|
13
|
+
export interface UseLocaleSwitchResult {
|
|
14
|
+
readonly locales: readonly LocaleOption[];
|
|
15
|
+
readonly locale: string;
|
|
16
|
+
readonly setLocale: (locale: string) => void;
|
|
17
|
+
readonly available: boolean;
|
|
18
|
+
}
|
|
19
|
+
export type UseLocaleSwitch = () => UseLocaleSwitchResult;
|
|
20
|
+
/**
|
|
21
|
+
* Hook to list the languages the configurator offers and switch between them, as the built-in toolbar's language
|
|
22
|
+
* button and the menu's language action do. It re-renders when the language changes.
|
|
23
|
+
*/
|
|
24
|
+
export declare const useLocaleSwitch: UseLocaleSwitch;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useLingui as e}from"@lingui/react";import{useMemo as a}from"react";import{applicationConfigComponent as o}from"#package/domain";import{useLinguiActivate as l}from"../../localizable/index.js";import{useFirstRootComponent as t}from"../component-hooks/index.js";export const useLocaleSwitch=()=>{let{i18n:r}=e(),i=t(o),m=l(),n=i?.state.availableLocales,c=a(()=>(n??["en"]).map(e=>{let a=new Intl.DisplayNames([e],{type:"language",fallback:"code"});return{locale:e,displayName:a.of(e)??e}}),[n]),p=r.locale;return a(()=>({locales:c,locale:p,setLocale:e=>{m(e)},available:c.length>1}),[c,p,m])};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useCallback as t}from"react";import{useDomain as e
|
|
1
|
+
import{useCallback as t}from"react";import{useDomain as e,useStoreSelector as a}from"../common-hooks/index.js";export const useActiveNavigationState=()=>{let{navigationSystem:t}=e();return a(e=>t.getActiveNavigationState(e.state),[t])};export const useActiveViewState=()=>{let{navigationSystem:t}=e();return a(e=>t.getActiveViewState(e.state),[t])};export const useSetViewState=()=>{let{storeSystem:a,navigationSystem:o}=e();return t(t=>{a.stageAndCommit([o.getViewUpdate(t)])},[a,o])};export const useActiveToolState=()=>{let{navigationSystem:t}=e();return a(e=>t.getActiveToolState(e.state),[t])};export const useIsFullscreenActive=()=>{let{navigationSystem:t}=e();return a(e=>t.getActiveFullscreenState(e.state),[t])};export const useSetFullscreen=()=>{let{storeSystem:a,navigationSystem:o}=e();return t(t=>{a.stageAndCommit([o.getFullscreenUpdate(t)])},[a,o])};export const useDraggedDomainEntityId=()=>{let{navigationSystem:t}=e();return a(e=>t.getActiveDragState(e.state),[t])};export const useActiveViewports=()=>{let{navigationSystem:t}=e();return a(e=>t.getActiveViewportState(e.state),[t])};export const useNavigate=()=>{let{storeSystem:a,navigationSystem:o}=e();return t(t=>{a.stageAndCommit([o.getNavigationUpdate(t)])},[a,o])};export const usePushNavigate=()=>{let{storeSystem:a,navigationSystem:o}=e();return t(t=>{a.stageAndCommit([o.getPushNavigationUpdate(t,a.stateSlices.committed.value.state)])},[a,o])};export const usePopNavigate=()=>{let{storeSystem:a,navigationSystem:o}=e();return t(()=>{let t=o.getPopNavigationUpdate(a.stateSlices.committed.value.state);t&&a.stageAndCommit([t])},[a,o])};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useCallback as e}from"react";import{useAnalyticsService as t}from"../../application-runtime/index.js";import{useDomain as
|
|
1
|
+
import{useCallback as e}from"react";import{useAnalyticsService as t}from"../../application-runtime/index.js";import{useDomain as n,useStoreSelector as r}from"../common-hooks/index.js";export const useSelectedDomainEntityId=()=>{let{navigationSystem:e}=n();return r(t=>e.getActiveSelectionState(t.state),[e])};export const useSelectedEntityId=e=>{let t=useSelectedDomainEntityId();return e?.isId(t)?t:null};export const useSelectEntity=r=>{let{storeSystem:s,navigationSystem:o}=n(),i=t();return e(e=>{s.stageAndCommit([o.getSelectUpdate(e)]),r&&i.push(r(e))},[s,o,r,i])};export const useSelectParent=(r,s,o)=>{let{storeSystem:i,navigationSystem:l,compositionProjections:c}=n(),a=t();return e(()=>{let e=c.getTree(i.stateSlices.committed.value.state).map.get(r);if(e?.parent){i.stageAndCommit([l.getSelectUpdate(e.parent.id)]),o&&a.push(o(e.parent.id));return}s&&(i.stageAndCommit([l.getSelectUpdate(s)]),o&&a.push(o(s)))},[i,l,r,c,s,o,a])};export const useDeselect=r=>{let{storeSystem:s,navigationSystem:o}=n(),i=t();return e(()=>{s.stageAndCommit([o.getDeselectUpdate()]),r&&i.push(r())},[s,o,r,i])};export const useSelectedEntity=e=>{let t=useSelectedEntityId(e),{domain:s}=n();return r(e=>t?s.get$Entity(t,e.state):null,[s,t])};
|
|
@@ -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])};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a step stands relative to the active step: before it, the active step itself, or after it.
|
|
3
|
+
*/
|
|
4
|
+
export type StepStatus = 'complete' | 'active' | 'upcoming';
|
|
5
|
+
/**
|
|
6
|
+
* One step of the spec, ready to render.
|
|
7
|
+
*/
|
|
8
|
+
export interface NavigationStepEntry<NAVIGATION_STATE extends string = string> {
|
|
9
|
+
/** Position of the step in `steps`; what `goTo` takes */
|
|
10
|
+
readonly index: number;
|
|
11
|
+
/** The step's label, resolved for the active locale */
|
|
12
|
+
readonly label: string;
|
|
13
|
+
/** The step's navigation states; the step is active while one of them is */
|
|
14
|
+
readonly navigationStates: readonly NAVIGATION_STATE[];
|
|
15
|
+
/** `navigationStates[0]`, the state `goTo`, `next` and `previous` enter */
|
|
16
|
+
readonly state: NAVIGATION_STATE;
|
|
17
|
+
/** Before, at or after the active step; `'upcoming'` for every step while no step is active */
|
|
18
|
+
readonly status: StepStatus;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The steps of the spec and the means to move between them.
|
|
22
|
+
* - `steps`: the steps in spec order. `activeStep` and `activeIndex`: the first step whose navigation states include
|
|
23
|
+
* the active one, or `null` and -1 while the active navigation state belongs to no step.
|
|
24
|
+
* - `isFirst` and `isLast`: whether the active step is the first or the last one; a single step is both.
|
|
25
|
+
* - `canGoNext` and `canGoPrevious`: whether a step follows or precedes the active one. While no step is active, the
|
|
26
|
+
* next step is the first one and there is no previous step.
|
|
27
|
+
* - `next` and `previous`: enter the following or preceding step; each does nothing without one.
|
|
28
|
+
* - `goTo`: enters a step, given by its index or by any of its navigation states; an unknown step does nothing.
|
|
29
|
+
*/
|
|
30
|
+
export interface UseStepNavigationResult<NAVIGATION_STATE extends string = string> {
|
|
31
|
+
readonly steps: readonly NavigationStepEntry<NAVIGATION_STATE>[];
|
|
32
|
+
readonly activeStep: NavigationStepEntry<NAVIGATION_STATE> | null;
|
|
33
|
+
readonly activeIndex: number;
|
|
34
|
+
readonly isFirst: boolean;
|
|
35
|
+
readonly isLast: boolean;
|
|
36
|
+
readonly canGoNext: boolean;
|
|
37
|
+
readonly canGoPrevious: boolean;
|
|
38
|
+
readonly next: () => void;
|
|
39
|
+
readonly previous: () => void;
|
|
40
|
+
readonly goTo: (step: number | NAVIGATION_STATE) => void;
|
|
41
|
+
}
|
|
42
|
+
export type UseStepNavigation<NAVIGATION_STATE extends string> = () => UseStepNavigationResult<NAVIGATION_STATE>;
|
|
43
|
+
/**
|
|
44
|
+
* Hook to read the steps the spec declares in `navigationSteps` and to move between them, as the built-in step
|
|
45
|
+
* buttons and the header's stepper do.
|
|
46
|
+
* - It reads the first active `navigationSteps` instance on the root entity, the one the built-in layout shows, so
|
|
47
|
+
* several instances can be switched with `$filter`. Without one, `steps` is empty, `activeIndex` is -1 and the
|
|
48
|
+
* actions do nothing.
|
|
49
|
+
* - A step without navigation states cannot be entered and is left out, with a warning in development.
|
|
50
|
+
* - `next` and `previous` read the committed state when they are called, so a second call before React renders
|
|
51
|
+
* again moves one step further from where the first one arrived, never skipping a step on stale state.
|
|
52
|
+
* - Each action that enters a step pushes the analytics event of the built-in control: the next-step button's,
|
|
53
|
+
* the previous-step button's, or the header stepper's for `goTo`. An action that does nothing pushes nothing.
|
|
54
|
+
*
|
|
55
|
+
* It enforces no order (`goTo` enters any step) and does not check read mode.
|
|
56
|
+
*/
|
|
57
|
+
export declare const useStepNavigation: () => UseStepNavigationResult;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useCallback as t,useEffect as e,useMemo as a}from"react";import{navigationStepsComponent as o}from"#package/domain";import{FrontendAnalyticsFactory as i,useAnalyticsService as n,useIsDev as s}from"../../application-runtime/index.js";import{useResolveLocalizable as l}from"../../localizable/index.js";import{useDomain as p}from"../common-hooks/use-domain-context.js";import{useFirstRootComponent as m}from"../component-hooks/use-component.js";import{useActiveNavigationState as r}from"./navigation-hooks.js";let v=t=>t.flatMap(t=>{let e=t.navigationStates[0];return void 0===e?[]:[{step:t,state:e}]});export const useStepNavigation=()=>{var g,c;let d,u=m(o),S=r(),f=l(),h=n(),{componentReader:x,navigationSystem:N,storeSystem:k}=p(),j=a(()=>u?.state.steps??[],[u]),C=j.filter(t=>0===t.navigationStates.length);g=C.length>0,c=`The navigationSteps ${C.map(t=>`"${f(t.label)}"`).join(", ")} have no navigation states, so useStepNavigation leaves them out. Give each step at least one navigation state.`,e(()=>{d&&g&&console.warn(c)},[d=s(),g,c]);let b=a(()=>v(j),[j]),A=b.findIndex(({step:t})=>t.navigationStates.includes(S)),G=a(()=>b.map(({step:t,state:e},a)=>{let o=a<A?"complete":a===A?"active":"upcoming";return{index:a,label:f(t.label),navigationStates:t.navigationStates,state:e,status:o}}),[b,A,f]),T=t((t,e)=>{let a=k.stateSlices.committed.value.state,i=x.readFirstRootComponent({componentTypes:[o]},a),n=v(i?.state.steps??[]),s=N.getActiveNavigationState(a),l=n.findIndex(({step:t})=>t.navigationStates.includes(s)),p=n[l+t]?.state;void 0!==p&&(h.push(e()),k.stageAndCommit([N.getNavigationUpdate(p)]))},[h,x,N,k]),y=t(()=>T(1,i.NextStepButtonClicked),[T]),B=t(()=>T(-1,i.PreviousStepButtonClicked),[T]),F=t(t=>{let e="number"==typeof t?G[t]:G.find(e=>e.navigationStates.includes(t));e&&(h.push(i.TopNavigationStepClicked(e.state)),k.stageAndCommit([N.getNavigationUpdate(e.state)]))},[G,h,k,N]);return{steps:G,activeStep:G[A]??null,activeIndex:A,isFirst:0===A,isLast:-1!==A&&A===G.length-1,canGoNext:A+1<G.length,canGoPrevious:A>0,next:y,previous:B,goTo:F}};
|
|
@@ -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])};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Why the configurator shows its error page:
|
|
3
|
+
* - `uncaughtError`: rendering the configurator failed with an error nothing else handled;
|
|
4
|
+
* - `presetCreationFailed`: starting a configuration from a preset failed on a start screen that has
|
|
5
|
+
* no preset grid to return to (a single preset).
|
|
6
|
+
*/
|
|
7
|
+
export type ConfiguratorErrorReason = 'uncaughtError' | 'presetCreationFailed';
|
|
8
|
+
/**
|
|
9
|
+
* The props of the `ConfiguratorErrorPage` element, the page the configurator shows in production
|
|
10
|
+
* when it cannot go on; a project registers its page with `createConfiguratorErrorPage`. In
|
|
11
|
+
* development the configurator shows its detailed error pages instead.
|
|
12
|
+
*/
|
|
13
|
+
export interface ConfiguratorErrorPageProps {
|
|
14
|
+
readonly reason: ConfiguratorErrorReason;
|
|
15
|
+
/**
|
|
16
|
+
* Tries again: after an `uncaughtError` it renders the configurator again, after
|
|
17
|
+
* `presetCreationFailed` it reloads the page.
|
|
18
|
+
*/
|
|
19
|
+
readonly onRetry: () => void;
|
|
20
|
+
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
export type { ConfiguratorErrorPageProps, ConfiguratorErrorReason } from './configurator-error-page-props.js';
|
|
1
2
|
export { PhoenixEntityElement, PhoenixEntityElements, PhoenixEntityElementWithChildren, type PhoenixEntityElementProps, type PhoenixEntityElementsProps, type PhoenixEntityElementWithChildrenProps, } from './PhoenixEntityElement.js';
|
|
2
3
|
export { PhoenixLayoutElement, PhoenixLayoutElements, PhoenixLayoutElementWithChildren, usePhoenixLayoutElementExists, type PhoenixLayoutElementProps, type PhoenixLayoutElementsProps, type PhoenixLayoutElementWithChildrenProps, } from './PhoenixLayoutElement.js';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { FinalizeActionsStore } from './finalize-actions-store.js';
|
|
2
|
+
interface FinalizeActionRunnerProps {
|
|
3
|
+
/** The component key of the `finalizeAction` the runner runs */
|
|
4
|
+
readonly actionKey: string;
|
|
5
|
+
readonly handler: string;
|
|
6
|
+
readonly store: FinalizeActionsStore;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The hidden runner of one `finalizeAction`. `PhoenixHandlerBoundary` remounts it, its error boundary included,
|
|
10
|
+
* when the handler's source changes, so an edited or fixed handler takes effect without a reload.
|
|
11
|
+
*/
|
|
12
|
+
export declare const FinalizeActionRunner: (props: FinalizeActionRunnerProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{useLayoutEffect as e}from"react";import{ErrorBoundary as n}from"react-error-boundary";import{useLogger as i}from"../application-runtime/index.js";import{PhoenixHandlerBoundary as o}from"./PhoenixHandlerBoundary.js";import{useFinalizeAction as a}from"./use-finalize-action.js";let t=({actionKey:r,handler:n,store:i})=>{let o=a(n);return e(()=>{i.publish(r,{status:"ready",action:o})}),e(()=>()=>i.remove(r),[r,i]),null},l=({actionKey:r,handler:n,store:o,error:a})=>{let t=i();return e(()=>{let e=a instanceof Error?a:Error(String(a??"The finalize handler failed."),{cause:a});return t.error(`The finalize handler "${n}" failed to load, so its finalize action cannot run.`,{error:e.message}),o.publish(r,{status:"failed",error:e}),()=>o.remove(r)},[r,a,n,t,o]),null};export const FinalizeActionRunner=e=>r(o,{name:e.handler,children:r(n,{fallbackRender:({error:n})=>r(l,{...e,error:n}),children:r(t,{...e})})});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs the spec's finalize actions for `useFinalizeActions()`. For every active `finalizeAction` component it
|
|
3
|
+
* mounts a hidden runner, which calls `useFinalizeAction` with the component's handler and publishes its state into
|
|
4
|
+
* the enclosing `FinalizeActionsProvider`. It renders nothing.
|
|
5
|
+
*
|
|
6
|
+
* The configurator mounts it once beside the configurator layout, inside its `ModalProvider`, so a handler can use
|
|
7
|
+
* `useModal`; a project does not mount it. The handlers' hooks run here, outside the layout, so a handler uses only
|
|
8
|
+
* what the configurator provides above its layout.
|
|
9
|
+
*/
|
|
10
|
+
export declare const FinalizeActionsHost: () => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as n,Fragment as i}from"react/jsx-runtime";import{useContext as t,useEffect as o}from"react";import{finalizeActionComponent as e,getComponentSnapshotKey as r}from"#package/domain";import{useLogger as a}from"../application-runtime/index.js";import{useComponents as s}from"../domain-context/index.js";import{FinalizeActionRunner as m}from"./FinalizeActionRunner.js";import{FinalizeActionsContext as l}from"./finalize-actions-context.js";export const FinalizeActionsHost=()=>{let c=t(l),p=s({componentTypes:[e]}),u=a(),d=null!==c;return(o(()=>{d||u.warn("FinalizeActionsHost is mounted outside a FinalizeActionsProvider, so it runs no finalize actions.")},[d,u]),null===c)?null:n(i,{children:p.map(i=>{let t=r(i);return n(m,{actionKey:t,handler:i.state.handler,store:c},t)})})};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Holds the state of the spec's finalize actions for `useFinalizeActions()` in its children; the runners of
|
|
4
|
+
* `FinalizeActionsHost`, mounted somewhere inside it, publish into it.
|
|
5
|
+
*
|
|
6
|
+
* The configurator mounts it once above its `ModalProvider`, so a dialog a layout opens with `useModal` sees the
|
|
7
|
+
* actions too; a project does not mount it.
|
|
8
|
+
*/
|
|
9
|
+
export declare const FinalizeActionsProvider: ({ children }: {
|
|
10
|
+
readonly children: ReactNode;
|
|
11
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{useState as i}from"react";import{FinalizeActionsContext as o}from"./finalize-actions-context.js";import{createFinalizeActionsStore as t}from"./finalize-actions-store.js";export const FinalizeActionsProvider=({children:e})=>{let[n]=i(t);return r(o.Provider,{value:n,children:e})};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { FinalizeActionsStore } from './finalize-actions-store.js';
|
|
2
|
+
/**
|
|
3
|
+
* The store of the enclosing `FinalizeActionsProvider`, or `null` outside one. The built-in finalize buttons read
|
|
4
|
+
* the outcome of a run from it, which outlives the button; a layout uses `useFinalizeActions()` instead.
|
|
5
|
+
*/
|
|
6
|
+
export declare const FinalizeActionsContext: import("react").Context<FinalizeActionsStore | null>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createContext as t}from"react";export const FinalizeActionsContext=t(null);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { UseFinalizeActionResult } from './use-finalize-action.js';
|
|
2
|
+
/**
|
|
3
|
+
* What the hidden runner of one `finalizeAction` publishes: the state of its `useFinalizeAction` call, or the error
|
|
4
|
+
* its handler threw while it was resolved, in which case the action cannot run.
|
|
5
|
+
*/
|
|
6
|
+
export type FinalizeActionRunnerState = {
|
|
7
|
+
readonly status: 'ready';
|
|
8
|
+
readonly action: UseFinalizeActionResult;
|
|
9
|
+
} | {
|
|
10
|
+
readonly status: 'failed';
|
|
11
|
+
readonly error: Error;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* The runner states of the active `finalizeAction` components, by component key. `FinalizeActionsProvider` owns
|
|
15
|
+
* one; the runners of `FinalizeActionsHost` publish into it and `useFinalizeActions()` reads it.
|
|
16
|
+
*/
|
|
17
|
+
export interface FinalizeActionsStore {
|
|
18
|
+
readonly subscribe: (listener: () => void) => () => void;
|
|
19
|
+
readonly getSnapshot: () => ReadonlyMap<string, FinalizeActionRunnerState>;
|
|
20
|
+
readonly publish: (key: string, state: FinalizeActionRunnerState) => void;
|
|
21
|
+
readonly remove: (key: string) => void;
|
|
22
|
+
}
|
|
23
|
+
export declare const createFinalizeActionsStore: () => FinalizeActionsStore;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const createFinalizeActionsStore=()=>{let t=new Map,e=new Set,a=a=>{t=a,e.forEach(t=>t())};return{subscribe:t=>(e.add(t),()=>{e.delete(t)}),getSnapshot:()=>t,publish:(e,i)=>{var n;n=t.get(e),(void 0===n||n.status!==i.status||("failed"===n.status||"failed"===i.status?"failed"!==n.status||"failed"!==i.status||n.error!==i.error:n.action.run!==i.action.run||n.action.isPending!==i.action.isPending||n.action.error!==i.action.error||n.action.disabled!==i.action.disabled||n.action.hints!==i.action.hints))&&a(new Map(t).set(e,i))},remove:e=>{if(!t.has(e))return;let i=new Map(t);i.delete(e),a(i)}}};
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
export { usePhoenixHandler, useSystemPhoenixHandler, useSystemPhoenixAsyncHandler } from './PhoenixHandler.js';
|
|
2
2
|
export { PhoenixHandlerBoundary } from './PhoenixHandlerBoundary.js';
|
|
3
3
|
export { type UseFinalizeAction, type UseFinalizeActionResult, useFinalizeAction } from './use-finalize-action.js';
|
|
4
|
+
export { FinalizeActionsHost } from './FinalizeActionsHost.js';
|
|
5
|
+
export { FinalizeActionsProvider } from './FinalizeActionsProvider.js';
|
|
6
|
+
export { FinalizeActionsContext } from './finalize-actions-context.js';
|
|
7
|
+
export { type FinalizeActionRunnerState, type FinalizeActionsStore } from './finalize-actions-store.js';
|
|
8
|
+
export { type FinalizeActionEntry, type UseFinalizeActions, type UseFinalizeActionsResult, useFinalizeActions, } from './use-finalize-actions.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export{usePhoenixHandler,useSystemPhoenixHandler,useSystemPhoenixAsyncHandler}from"./PhoenixHandler.js";export{PhoenixHandlerBoundary}from"./PhoenixHandlerBoundary.js";export{useFinalizeAction}from"./use-finalize-action.js";
|
|
1
|
+
export{usePhoenixHandler,useSystemPhoenixHandler,useSystemPhoenixAsyncHandler}from"./PhoenixHandler.js";export{PhoenixHandlerBoundary}from"./PhoenixHandlerBoundary.js";export{useFinalizeAction}from"./use-finalize-action.js";export{FinalizeActionsHost}from"./FinalizeActionsHost.js";export{FinalizeActionsProvider}from"./FinalizeActionsProvider.js";export{FinalizeActionsContext}from"./finalize-actions-context.js";export{useFinalizeActions}from"./use-finalize-actions.js";
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* What a project layout needs to show and run one `finalizeAction` of the spec.
|
|
3
3
|
* - `run`: pushes the finalize-button analytics event, then runs the action's handler. Does nothing while
|
|
4
|
-
* `disabled` or `isPending`.
|
|
4
|
+
* `disabled` or `isPending`. The promise it returns never rejects: it resolves after the handler has settled and
|
|
5
|
+
* React has had the chance to render the outcome, or at once when the run does nothing; a failure is `error`.
|
|
5
6
|
* - `isPending`: the handler is running.
|
|
6
7
|
* - `error`: what the handler's last run rejected with, `null` after a run that resolved and while a new run is
|
|
7
8
|
* pending. A rejection that is not an `Error` is wrapped in one, with the rejected value as its `cause`. No snackbar
|
|
@@ -13,7 +14,7 @@
|
|
|
13
14
|
* running, and a component mounted afterwards starts with `isPending` false and no `error`.
|
|
14
15
|
*/
|
|
15
16
|
export interface UseFinalizeActionResult {
|
|
16
|
-
readonly run: () => void
|
|
17
|
+
readonly run: () => Promise<void>;
|
|
17
18
|
readonly isPending: boolean;
|
|
18
19
|
readonly error: Error | null;
|
|
19
20
|
readonly disabled: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useMutation as r}from"@tanstack/react-query";import{useCallback as
|
|
1
|
+
import{useMutation as r}from"@tanstack/react-query";import{useCallback as t,useRef as e}from"react";import{FrontendAnalyticsFactory as n,useAnalyticsService as i,useLogger as a}from"../application-runtime/index.js";import{useFinalizeViolations as o}from"../domain-context/index.js";import{usePhoenixHandler as c}from"./PhoenixHandler.js";export const useFinalizeAction=s=>{let{handler:l}=c(s),m=i(),u=a(),{disabled:f,hints:d}=o(),h=e(!1),{mutateAsync:p,isPending:w,error:y}=r({mutationFn:async()=>{try{await l()}catch(r){throw r instanceof Error?r:Error(null==r?"The finalize handler failed without a reason.":String(r),{cause:r})}finally{h.current=!1}},onError:r=>{u.error("Failed to finalize",{error:r.message})}});return{run:t(async()=>{if(!f&&!h.current){h.current=!0,m.push(n.FinalizeButtonClicked());try{await p()}catch{}await new Promise(r=>setTimeout(r,0))}},[m,f,p]),isPending:w,error:y,disabled:f,hints:d}};
|