@umbraco-cms/backoffice 17.2.2 → 17.3.0-rc2
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/custom-elements.json +514 -147
- package/dist-cms/apps/app/app-auth.controller.d.ts +2 -1
- package/dist-cms/apps/app/app-auth.controller.js +9 -32
- package/dist-cms/apps/app/app-auth.element.d.ts +11 -0
- package/dist-cms/apps/app/app-auth.element.js +19 -0
- package/dist-cms/apps/app/app.element.d.ts +5 -1
- package/dist-cms/apps/app/app.element.js +43 -45
- package/dist-cms/assets/lang/ar.js +2 -0
- package/dist-cms/assets/lang/bs.js +1 -0
- package/dist-cms/assets/lang/cs.js +1 -0
- package/dist-cms/assets/lang/cy.js +4 -2
- package/dist-cms/assets/lang/da.js +9 -0
- package/dist-cms/assets/lang/de.js +5 -1
- package/dist-cms/assets/lang/en.js +20 -1
- package/dist-cms/assets/lang/es.js +5 -1
- package/dist-cms/assets/lang/fr.js +4 -2
- package/dist-cms/assets/lang/he.js +2 -0
- package/dist-cms/assets/lang/hr.js +1 -0
- package/dist-cms/assets/lang/it.js +3 -0
- package/dist-cms/assets/lang/ja.js +61 -23
- package/dist-cms/assets/lang/ko.js +2 -0
- package/dist-cms/assets/lang/nb.js +1 -0
- package/dist-cms/assets/lang/nl.js +4 -1
- package/dist-cms/assets/lang/pl.js +3 -1
- package/dist-cms/assets/lang/pt-br.js +2 -0
- package/dist-cms/assets/lang/pt.js +4 -0
- package/dist-cms/assets/lang/ro.js +4 -0
- package/dist-cms/assets/lang/ru.js +3 -1
- package/dist-cms/assets/lang/sv.js +1 -0
- package/dist-cms/assets/lang/tr.js +1 -0
- package/dist-cms/assets/lang/uk.js +3 -1
- package/dist-cms/assets/lang/vi.js +4 -0
- package/dist-cms/assets/lang/zh-tw.js +1 -0
- package/dist-cms/assets/lang/zh.js +1 -0
- package/dist-cms/external/openid/src/index.d.ts +242 -17
- package/dist-cms/external/openid/src/index.js +245 -16
- package/dist-cms/external/rxjs/index.d.ts +1 -1
- package/dist-cms/external/rxjs/index.js +1 -1
- package/dist-cms/external/uui/package.json +2 -2
- package/dist-cms/libs/context-api/consume/context-consumer.js +58 -32
- package/dist-cms/packages/block/block/conditions/block-workspace-is-readonly.condition.d.ts +8 -0
- package/dist-cms/packages/block/block/conditions/block-workspace-is-readonly.condition.js +15 -0
- package/dist-cms/packages/block/block/conditions/manifests.js +7 -0
- package/dist-cms/packages/block/block/conditions/types.d.ts +4 -1
- package/dist-cms/packages/block/block/context/block-manager.context.d.ts +1 -0
- package/dist-cms/packages/block/block/context/block-manager.context.js +63 -13
- package/dist-cms/packages/block/block/events/block-inserted.event.d.ts +14 -0
- package/dist-cms/packages/block/block/events/block-inserted.event.js +6 -0
- package/dist-cms/packages/block/block/events/index.d.ts +1 -0
- package/dist-cms/packages/block/block/events/index.js +1 -0
- package/dist-cms/packages/block/block/index.d.ts +1 -0
- package/dist-cms/packages/block/block/index.js +1 -0
- package/dist-cms/packages/block/block/workspace/block-element-manager.d.ts +2 -2
- package/dist-cms/packages/block/block/workspace/block-element-manager.js +4 -7
- package/dist-cms/packages/block/block/workspace/block-workspace.context.d.ts +4 -0
- package/dist-cms/packages/block/block/workspace/block-workspace.context.js +14 -1
- package/dist-cms/packages/block/block/workspace/manifests.js +8 -0
- package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-content-no-router.element.d.ts +1 -0
- package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-content-no-router.element.js +127 -20
- package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-property.element.d.ts +1 -0
- package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-property.element.js +12 -0
- package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit.element.d.ts +1 -0
- package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit.element.js +74 -3
- package/dist-cms/packages/block/block-grid/block-grid-manager/block-grid-manager.context.js +1 -0
- package/dist-cms/packages/block/block-grid/components/block-grid-block/block-grid-block.element.js +3 -2
- package/dist-cms/packages/block/block-grid/components/block-grid-block-inline/block-grid-block-inline.element.d.ts +1 -0
- package/dist-cms/packages/block/block-grid/components/block-grid-block-inline/block-grid-block-inline.element.js +21 -8
- package/dist-cms/packages/block/block-grid/components/block-grid-block-unsupported/block-grid-block-unsupported.element.js +1 -3
- package/dist-cms/packages/block/block-grid/components/block-grid-entries/block-grid-entries.context.js +13 -2
- package/dist-cms/packages/block/block-grid/components/block-grid-entries/block-grid-entries.element.d.ts +1 -1
- package/dist-cms/packages/block/block-grid/components/block-grid-entries/block-grid-entries.element.js +39 -11
- package/dist-cms/packages/block/block-grid/components/block-grid-entry/block-grid-entry.element.js +26 -12
- package/dist-cms/packages/block/block-grid/components/ref-grid-block/ref-grid-block.element.js +4 -1
- package/dist-cms/packages/block/block-grid/property-actions/manifests.js +8 -1
- package/dist-cms/packages/block/block-grid/property-editors/block-grid-editor/property-editor-ui-block-grid.element.js +5 -0
- package/dist-cms/packages/block/block-list/components/block-list-entry/block-list-entry.element.js +19 -7
- package/dist-cms/packages/block/block-list/components/inline-list-block/inline-list-block.element.js +25 -1
- package/dist-cms/packages/block/block-list/components/ref-list-block/ref-list-block.element.js +5 -0
- package/dist-cms/packages/block/block-list/components/unsupported-list-block/unsupported-list-block.element.js +1 -0
- package/dist-cms/packages/block/block-list/context/block-list-entries.context.js +21 -3
- package/dist-cms/packages/block/block-list/context/block-list-manager.context.js +1 -0
- package/dist-cms/packages/block/block-list/manifests.js +8 -0
- package/dist-cms/packages/block/block-list/property-editors/block-list-editor/property-editor-ui-block-list.element.d.ts +1 -1
- package/dist-cms/packages/block/block-list/property-editors/block-list-editor/property-editor-ui-block-list.element.js +48 -30
- package/dist-cms/packages/block/block-rte/components/block-rte-entry/block-rte-entry.element.d.ts +2 -1
- package/dist-cms/packages/block/block-rte/components/block-rte-entry/block-rte-entry.element.js +81 -9
- package/dist-cms/packages/block/block-rte/context/block-rte-entries.context.d.ts +10 -3
- package/dist-cms/packages/block/block-rte/context/block-rte-entries.context.js +80 -15
- package/dist-cms/packages/block/block-rte/context/block-rte-entry.context.js +1 -1
- package/dist-cms/packages/block/block-rte/context/block-rte-manager.context.d.ts +14 -0
- package/dist-cms/packages/block/block-rte/context/block-rte-manager.context.js +36 -0
- package/dist-cms/packages/block/block-rte/property-value-cloner/property-value-cloner-block-rte.cloner.js +22 -12
- package/dist-cms/packages/block/block-single/components/block-single-entry/block-single-entry.element.js +13 -4
- package/dist-cms/packages/block/block-single/components/inline-single-block/inline-single-block.element.js +1 -0
- package/dist-cms/packages/block/block-single/components/ref-single-block/ref-single-block.element.js +4 -1
- package/dist-cms/packages/block/block-single/context/block-single-entries.context.js +20 -2
- package/dist-cms/packages/block/block-single/context/block-single-manager.context.js +1 -0
- package/dist-cms/packages/block/block-single/property-editors/block-single-editor/property-editor-ui-block-single.element.js +22 -24
- package/dist-cms/packages/block/vite.config.js +1 -0
- package/dist-cms/packages/content/content/audit-log/audit-log-action/audit-log-action-default.kind.d.ts +3 -0
- package/dist-cms/packages/content/content/audit-log/audit-log-action/audit-log-action-default.kind.js +18 -0
- package/dist-cms/packages/content/content/audit-log/audit-log-action/audit-log-action.element.d.ts +19 -0
- package/dist-cms/packages/content/content/audit-log/audit-log-action/audit-log-action.element.js +54 -0
- package/dist-cms/packages/content/content/audit-log/audit-log-action/audit-log-action.extension.d.ts +14 -0
- package/dist-cms/packages/content/content/audit-log/audit-log-action/content-rollback.audit-log-action.kind.d.ts +3 -0
- package/dist-cms/packages/content/content/audit-log/audit-log-action/content-rollback.audit-log-action.kind.js +22 -0
- package/dist-cms/packages/content/content/audit-log/audit-log-action/manifests.d.ts +2 -0
- package/dist-cms/packages/content/content/audit-log/audit-log-action/manifests.js +3 -0
- package/dist-cms/packages/content/content/audit-log/audit-log-action/types.d.ts +17 -0
- package/dist-cms/packages/content/content/audit-log/audit-log-action/types.js +1 -0
- package/dist-cms/packages/content/content/audit-log/index.d.ts +4 -0
- package/dist-cms/packages/content/content/audit-log/index.js +2 -0
- package/dist-cms/packages/content/content/audit-log/info-app/content-audit-log-workspace-info-app.element.d.ts +21 -0
- package/dist-cms/packages/content/content/audit-log/info-app/content-audit-log-workspace-info-app.element.js +220 -0
- package/dist-cms/packages/content/content/audit-log/info-app/content-audit-log-workspace-info-app.kind.d.ts +2 -0
- package/dist-cms/packages/content/content/audit-log/info-app/content-audit-log-workspace-info-app.kind.js +12 -0
- package/dist-cms/packages/content/content/audit-log/info-app/manifests.d.ts +2 -0
- package/dist-cms/packages/content/content/audit-log/info-app/manifests.js +2 -0
- package/dist-cms/packages/content/content/audit-log/info-app/types.d.ts +14 -0
- package/dist-cms/packages/content/content/audit-log/info-app/types.js +1 -0
- package/dist-cms/packages/content/content/audit-log/manifests.d.ts +2 -0
- package/dist-cms/packages/content/content/audit-log/manifests.js +6 -0
- package/dist-cms/packages/content/content/collection/manager/content-collection-manager.controller.js +7 -0
- package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.context.d.ts +1 -3
- package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.element.d.ts +8 -4
- package/dist-cms/packages/content/content/components/property-type-based-property/property-type-based-property.element.js +56 -44
- package/dist-cms/packages/content/content/global-components/content-workspace-property.element.d.ts +1 -0
- package/dist-cms/packages/content/content/global-components/content-workspace-property.element.js +12 -0
- package/dist-cms/packages/content/content/index.d.ts +2 -0
- package/dist-cms/packages/content/content/index.js +2 -0
- package/dist-cms/packages/content/content/manifests.js +4 -0
- package/dist-cms/packages/content/content/rollback/entity-action/content-rollback.action.d.ts +7 -0
- package/dist-cms/packages/content/content/rollback/entity-action/content-rollback.action.js +26 -0
- package/dist-cms/packages/content/content/rollback/entity-action/content-rollback.action.kind.d.ts +3 -0
- package/dist-cms/packages/content/content/rollback/entity-action/content-rollback.action.kind.js +23 -0
- package/dist-cms/packages/content/content/rollback/entity-action/manifests.d.ts +1 -0
- package/dist-cms/packages/content/content/rollback/entity-action/manifests.js +2 -0
- package/dist-cms/packages/content/content/rollback/entity-action/types.d.ts +14 -0
- package/dist-cms/packages/content/content/rollback/entity-action/types.js +1 -0
- package/dist-cms/packages/content/content/rollback/index.d.ts +6 -0
- package/dist-cms/packages/content/content/rollback/index.js +2 -0
- package/dist-cms/packages/content/content/rollback/manifests.d.ts +1 -0
- package/dist-cms/packages/content/content/rollback/manifests.js +3 -0
- package/dist-cms/packages/content/content/rollback/modal/constants.d.ts +4 -0
- package/dist-cms/packages/content/content/rollback/modal/constants.js +8 -0
- package/dist-cms/packages/content/content/rollback/modal/content-rollback-modal.element.d.ts +22 -0
- package/dist-cms/packages/content/content/rollback/modal/content-rollback-modal.element.js +509 -0
- package/dist-cms/packages/content/content/rollback/modal/manifests.d.ts +1 -0
- package/dist-cms/packages/content/content/rollback/modal/manifests.js +9 -0
- package/dist-cms/packages/content/content/rollback/modal/types.d.ts +6 -0
- package/dist-cms/packages/content/content/rollback/modal/types.js +1 -0
- package/dist-cms/packages/content/content/rollback/rollback-repository.interface.d.ts +21 -0
- package/dist-cms/packages/content/content/rollback/rollback-repository.interface.js +1 -0
- package/dist-cms/packages/content/content/rollback/types.d.ts +20 -0
- package/dist-cms/packages/content/content/rollback/types.js +1 -0
- package/dist-cms/packages/content/content/types.d.ts +1 -0
- package/dist-cms/packages/content/content/workspace/content-detail-workspace-base.d.ts +3 -0
- package/dist-cms/packages/content/content/workspace/content-detail-workspace-base.js +53 -10
- package/dist-cms/packages/content/content-type/constants.d.ts +1 -0
- package/dist-cms/packages/content/content-type/constants.js +1 -0
- package/dist-cms/packages/content/content-type/entity-content-type/conditions/constants.d.ts +1 -0
- package/dist-cms/packages/content/content-type/entity-content-type/conditions/constants.js +1 -0
- package/dist-cms/packages/content/content-type/entity-content-type/conditions/manifests.d.ts +1 -0
- package/dist-cms/packages/content/content-type/entity-content-type/conditions/manifests.js +2 -0
- package/dist-cms/packages/content/content-type/entity-content-type/conditions/types.d.ts +1 -0
- package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/constants.d.ts +4 -0
- package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/constants.js +4 -0
- package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/entity-content-type-unique.condition.d.ts +7 -0
- package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/entity-content-type-unique.condition.js +26 -0
- package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/manifests.d.ts +1 -0
- package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/manifests.js +10 -0
- package/dist-cms/packages/content/content-type/entity-content-type/conditions/unique/types.d.ts +21 -0
- package/dist-cms/packages/content/content-type/entity-content-type/constants.d.ts +1 -0
- package/dist-cms/packages/content/content-type/entity-content-type/constants.js +1 -0
- package/dist-cms/packages/content/content-type/entity-content-type/context/entity-content-type.context-token.d.ts +3 -0
- package/dist-cms/packages/content/content-type/entity-content-type/context/entity-content-type.context-token.js +2 -0
- package/dist-cms/packages/content/content-type/entity-content-type/context/entity-content-type.context.d.ts +12 -0
- package/dist-cms/packages/content/content-type/entity-content-type/context/entity-content-type.context.js +26 -0
- package/dist-cms/packages/content/content-type/entity-content-type/context/index.d.ts +2 -0
- package/dist-cms/packages/content/content-type/entity-content-type/context/index.js +2 -0
- package/dist-cms/packages/content/content-type/entity-content-type/index.d.ts +3 -0
- package/dist-cms/packages/content/content-type/entity-content-type/index.js +2 -0
- package/dist-cms/packages/content/content-type/entity-content-type/manifests.d.ts +1 -0
- package/dist-cms/packages/content/content-type/entity-content-type/manifests.js +2 -0
- package/dist-cms/packages/content/content-type/entity-content-type/types.d.ts +1 -0
- package/dist-cms/packages/content/content-type/global-components/content-type-workspace-editor-header.element.js +9 -2
- package/dist-cms/packages/content/content-type/index.d.ts +1 -0
- package/dist-cms/packages/content/content-type/index.js +1 -0
- package/dist-cms/packages/content/content-type/manifests.js +7 -1
- package/dist-cms/packages/content/content-type/repository/structure/content-type-structure-data-source.interface.d.ts +2 -0
- package/dist-cms/packages/content/content-type/repository/structure/content-type-structure-repository-base.d.ts +2 -2
- package/dist-cms/packages/content/content-type/repository/structure/content-type-structure-repository-base.js +2 -3
- package/dist-cms/packages/content/content-type/repository/structure/content-type-structure-repository.interface.d.ts +2 -0
- package/dist-cms/packages/content/content-type/structure/content-type-move-root-containers-into-first-tab-helper.class.d.ts +1 -1
- package/dist-cms/packages/content/content-type/structure/content-type-move-root-containers-into-first-tab-helper.class.js +16 -6
- package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.d.ts +21 -0
- package/dist-cms/packages/content/content-type/structure/content-type-structure-manager.class.js +95 -21
- package/dist-cms/packages/content/content-type/types.d.ts +2 -3
- package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-group.element.js +2 -0
- package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-property.element.js +14 -11
- package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-tab.element.js +1 -0
- package/dist-cms/packages/content/property-type/workspace/views/settings/property-workspace-view-settings.element.js +1 -1
- package/dist-cms/packages/core/audit-log/audit-log-repository.interface.d.ts +3 -2
- package/dist-cms/packages/core/audit-log/index.d.ts +1 -1
- package/dist-cms/packages/core/audit-log/types.d.ts +12 -0
- package/dist-cms/packages/core/auth/auth.context.d.ts +69 -18
- package/dist-cms/packages/core/auth/auth.context.js +537 -71
- package/dist-cms/packages/core/auth/components/index.d.ts +1 -0
- package/dist-cms/packages/core/auth/components/index.js +1 -0
- package/dist-cms/packages/core/auth/components/umb-auth-view.element.d.ts +26 -0
- package/dist-cms/packages/core/auth/components/umb-auth-view.element.js +287 -0
- package/dist-cms/packages/core/auth/constants.d.ts +3 -0
- package/dist-cms/packages/core/auth/constants.js +3 -0
- package/dist-cms/packages/core/auth/controllers/auth-session-timeout.controller.d.ts +1 -2
- package/dist-cms/packages/core/auth/controllers/auth-session-timeout.controller.js +96 -82
- package/dist-cms/packages/core/auth/modals/umb-app-auth-modal.element.d.ts +2 -9
- package/dist-cms/packages/core/auth/modals/umb-app-auth-modal.element.js +16 -256
- package/dist-cms/packages/core/auth/modals/umb-auth-timeout-modal.element.js +5 -1
- package/dist-cms/packages/core/auth/modals/umb-auth-timeout-modal.token.d.ts +2 -0
- package/dist-cms/packages/core/auth/umb-auth-client.d.ts +49 -0
- package/dist-cms/packages/core/auth/umb-auth-client.js +172 -0
- package/dist-cms/packages/core/backend-api/sdk.gen.d.ts +1787 -1
- package/dist-cms/packages/core/backend-api/sdk.gen.js +1962 -0
- package/dist-cms/packages/core/backend-api/types.gen.d.ts +454 -2
- package/dist-cms/packages/core/backend-api/types.gen.js +7 -0
- package/dist-cms/packages/core/collection/collection-item-picker-modal/collection-item-picker-modal.element.js +6 -0
- package/dist-cms/packages/core/collection/collection-item-picker-modal/types.d.ts +3 -0
- package/dist-cms/packages/core/collection/components/collection-filter-field.element.js +1 -0
- package/dist-cms/packages/core/collection/components/pagination/collection-pagination.element.d.ts +2 -0
- package/dist-cms/packages/core/collection/components/pagination/collection-pagination.element.js +21 -1
- package/dist-cms/packages/core/collection/default/collection-default.context.js +22 -20
- package/dist-cms/packages/core/collection/item/entity-collection-item-card/default-collection-item-card.element.d.ts +2 -2
- package/dist-cms/packages/core/collection/item/entity-collection-item-card/default-collection-item-card.element.js +1 -0
- package/dist-cms/packages/core/collection/item/entity-collection-item-ref/default-collection-item-ref.element.d.ts +4 -1
- package/dist-cms/packages/core/collection/item/entity-collection-item-ref/default-collection-item-ref.element.js +1 -0
- package/dist-cms/packages/core/collection/item/umb-entity-collection-item-element-base.element.d.ts +1 -0
- package/dist-cms/packages/core/collection/item/umb-entity-collection-item-element-base.element.js +19 -0
- package/dist-cms/packages/core/collection/types.d.ts +1 -1
- package/dist-cms/packages/core/collection/view/card/card-collection-view.element.js +1 -4
- package/dist-cms/packages/core/collection/view/collection-view.manager.d.ts +2 -0
- package/dist-cms/packages/core/collection/view/collection-view.manager.js +14 -3
- package/dist-cms/packages/core/collection/view/ref/ref-collection-view.element.js +1 -4
- package/dist-cms/packages/core/collection/view/umb-collection-view-element-base.d.ts +7 -7
- package/dist-cms/packages/core/collection/view/umb-collection-view-element-base.js +1 -1
- package/dist-cms/packages/core/collection/workspace-view/collection-workspace-view.element.js +1 -0
- package/dist-cms/packages/core/components/dropdown/dropdown.element.d.ts +1 -0
- package/dist-cms/packages/core/components/dropdown/dropdown.element.js +6 -1
- package/dist-cms/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.d.ts +12 -4
- package/dist-cms/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.js +67 -19
- package/dist-cms/packages/core/culture/manifests.d.ts +1 -1
- package/dist-cms/packages/core/entity-action/entity-action-list.element.d.ts +10 -1
- package/dist-cms/packages/core/entity-action/entity-action-list.element.js +45 -20
- package/dist-cms/packages/core/entity-action/global-components/entity-actions-dropdown/entity-actions-dropdown.element.d.ts +0 -1
- package/dist-cms/packages/core/entity-action/global-components/entity-actions-dropdown/entity-actions-dropdown.element.js +5 -23
- package/dist-cms/packages/core/entity-bulk-action/common/duplicate-to/duplicate-to.action.kind.js +1 -1
- package/dist-cms/packages/core/entity-bulk-action/entity-bulk-action.element.js +1 -1
- package/dist-cms/packages/core/entity-item/entity-item-ref/default-item-ref.element.d.ts +4 -1
- package/dist-cms/packages/core/entity-item/entity-item-ref/default-item-ref.element.js +2 -1
- package/dist-cms/packages/core/entity-item/entity-item-ref/entity-item-ref.element.js +13 -1
- package/dist-cms/packages/{extension-insights → core/extension}/collection/extension-collection.element.d.ts +1 -1
- package/dist-cms/packages/{extension-insights → core/extension}/collection/extension-collection.element.js +5 -5
- package/dist-cms/packages/core/extension/collection/index.d.ts +2 -0
- package/dist-cms/packages/core/extension/collection/index.js +2 -0
- package/dist-cms/packages/core/extension/collection/repository/extension-collection.repository.d.ts +12 -0
- package/dist-cms/packages/core/extension/collection/repository/extension-collection.repository.js +49 -0
- package/dist-cms/packages/core/extension/collection/types.d.ts +13 -0
- package/dist-cms/packages/core/extension/collection/types.js +1 -0
- package/dist-cms/packages/core/extension/collection/views/manifests.d.ts +1 -0
- package/dist-cms/packages/{extension-insights → core/extension}/collection/views/manifests.js +2 -3
- package/dist-cms/packages/{extension-insights → core/extension}/collection/views/table/extension-table-collection-view.element.d.ts +1 -1
- package/dist-cms/packages/{extension-insights → core/extension}/collection/views/table/extension-table-collection-view.element.js +9 -9
- package/dist-cms/packages/core/extension/entity.d.ts +2 -0
- package/dist-cms/packages/core/extension/entity.js +1 -0
- package/dist-cms/packages/core/extension/global-components/index.d.ts +1 -0
- package/dist-cms/packages/core/extension/global-components/index.js +1 -0
- package/dist-cms/packages/core/extension/global-components/input-extension.element.d.ts +19 -0
- package/dist-cms/packages/core/extension/global-components/input-extension.element.js +73 -0
- package/dist-cms/packages/core/extension/index.d.ts +5 -0
- package/dist-cms/packages/core/extension/index.js +4 -0
- package/dist-cms/packages/core/extension/item/data/index.d.ts +2 -0
- package/dist-cms/packages/core/extension/item/data/index.js +2 -0
- package/dist-cms/packages/core/extension/item/data/item.data-source.d.ts +7 -0
- package/dist-cms/packages/core/extension/item/data/item.data-source.js +24 -0
- package/dist-cms/packages/core/extension/item/data/item.repository.d.ts +7 -0
- package/dist-cms/packages/core/extension/item/data/item.repository.js +9 -0
- package/dist-cms/packages/core/extension/item/data/item.store.context-token.d.ts +3 -0
- package/dist-cms/packages/core/extension/item/data/item.store.context-token.js +2 -0
- package/dist-cms/packages/core/extension/item/data/item.store.d.ts +17 -0
- package/dist-cms/packages/core/extension/item/data/item.store.js +18 -0
- package/dist-cms/packages/core/extension/item/data/manifests.d.ts +1 -0
- package/dist-cms/packages/core/extension/item/data/manifests.js +15 -0
- package/dist-cms/packages/core/extension/item/data/types.d.ts +6 -0
- package/dist-cms/packages/core/extension/item/data/types.js +1 -0
- package/dist-cms/packages/core/extension/item/index.d.ts +1 -0
- package/dist-cms/packages/core/extension/item/index.js +1 -0
- package/dist-cms/packages/core/extension/item/manifests.d.ts +1 -0
- package/dist-cms/packages/core/extension/item/manifests.js +2 -0
- package/dist-cms/packages/core/extension/item/types.d.ts +1 -0
- package/dist-cms/packages/core/extension/item/types.js +1 -0
- package/dist-cms/packages/core/extension/manifests.d.ts +1 -0
- package/dist-cms/packages/core/extension/manifests.js +8 -0
- package/dist-cms/packages/core/extension/picker-data-source/extension.picker-data-source.d.ts +29 -0
- package/dist-cms/packages/core/extension/picker-data-source/extension.picker-data-source.js +54 -0
- package/dist-cms/packages/core/extension/picker-data-source/index.d.ts +1 -0
- package/dist-cms/packages/core/extension/picker-data-source/index.js +1 -0
- package/dist-cms/packages/core/extension/picker-data-source/types.d.ts +4 -0
- package/dist-cms/packages/core/extension/picker-data-source/types.js +1 -0
- package/dist-cms/packages/core/extension/types.d.ts +2 -0
- package/dist-cms/packages/core/extension/types.js +1 -0
- package/dist-cms/packages/{extension-insights/entity-actions/unregister → core/extension/unregister/entity-action}/unregister-extension.action.d.ts +1 -1
- package/dist-cms/packages/{extension-insights/entity-actions/unregister → core/extension/unregister/entity-action}/unregister-extension.action.js +5 -5
- package/dist-cms/packages/{extension-insights/entity-actions → core/extension/unregister}/manifests.d.ts +1 -1
- package/dist-cms/packages/core/extension/unregister/manifests.js +2 -0
- package/dist-cms/packages/core/extension-registry/components/extension-slot/extension-slot.element.d.ts +172 -22
- package/dist-cms/packages/core/extension-registry/components/extension-slot/extension-slot.element.js +147 -27
- package/dist-cms/packages/core/extension-registry/components/extension-with-api-slot/extension-with-api-slot.element.d.ts +216 -35
- package/dist-cms/packages/core/extension-registry/components/extension-with-api-slot/extension-with-api-slot.element.js +168 -38
- package/dist-cms/packages/core/http-client/index.d.ts +14 -0
- package/dist-cms/packages/core/http-client/index.js +24 -4
- package/dist-cms/packages/core/icon-registry/icon-dictionary.json +1 -1
- package/dist-cms/packages/core/icon-registry/icons/icon-badge.d.ts +1 -1
- package/dist-cms/packages/core/icon-registry/icons/icon-badge.js +1 -1
- package/dist-cms/packages/core/lit-element/directives/destroy.lit-directive.d.ts +1 -0
- package/dist-cms/packages/core/lit-element/directives/destroy.lit-directive.js +17 -3
- package/dist-cms/packages/core/manifests.js +7 -1
- package/dist-cms/packages/core/modal/common/index.d.ts +1 -0
- package/dist-cms/packages/core/modal/common/index.js +1 -0
- package/dist-cms/packages/core/modal/common/info/index.d.ts +3 -0
- package/dist-cms/packages/core/modal/common/info/index.js +3 -0
- package/dist-cms/packages/core/modal/common/info/info-modal.controller.d.ts +9 -0
- package/dist-cms/packages/core/modal/common/info/info-modal.controller.js +11 -0
- package/dist-cms/packages/core/modal/common/info/info-modal.element.d.ts +16 -0
- package/dist-cms/packages/core/modal/common/info/info-modal.element.js +49 -0
- package/dist-cms/packages/core/modal/common/info/info-modal.token.d.ts +8 -0
- package/dist-cms/packages/core/modal/common/info/info-modal.token.js +6 -0
- package/dist-cms/packages/core/modal/common/info/manifests.d.ts +1 -0
- package/dist-cms/packages/core/modal/common/info/manifests.js +8 -0
- package/dist-cms/packages/core/modal/common/manifests.js +2 -0
- package/dist-cms/packages/core/modal/component/index.d.ts +3 -0
- package/dist-cms/packages/core/modal/component/index.js +3 -0
- package/dist-cms/packages/core/modal/component/persistent-modal-dialog.element.d.ts +16 -0
- package/dist-cms/packages/core/modal/component/persistent-modal-dialog.element.js +36 -0
- package/dist-cms/packages/core/modal/context/modal.context.js +1 -2
- package/dist-cms/packages/core/modal/index.d.ts +1 -2
- package/dist-cms/packages/core/modal/index.js +1 -2
- package/dist-cms/packages/core/models/index.d.ts +6 -0
- package/dist-cms/packages/core/picker/search/manager/picker-search.manager.d.ts +5 -0
- package/dist-cms/packages/core/picker/search/manager/picker-search.manager.js +28 -11
- package/dist-cms/packages/core/picker/search/picker-search-result.element.d.ts +4 -1
- package/dist-cms/packages/core/picker/search/picker-search-result.element.js +51 -8
- package/dist-cms/packages/core/picker-data-source/collection-data-source/types.d.ts +11 -0
- package/dist-cms/packages/core/picker-input/picker-input.context.d.ts +2 -1
- package/dist-cms/packages/core/picker-input/picker-input.context.js +17 -3
- package/dist-cms/packages/core/property/components/property/property.element.js +4 -0
- package/dist-cms/packages/core/property/manifests.d.ts +1 -1
- package/dist-cms/packages/core/property/property-value-preset/property-value-preset-variant-builder.controller.js +10 -3
- package/dist-cms/packages/core/property-action/index.d.ts +1 -0
- package/dist-cms/packages/core/property-action/index.js +1 -0
- package/dist-cms/packages/core/property-action/kinds/clear/index.d.ts +1 -0
- package/dist-cms/packages/core/property-action/kinds/clear/index.js +1 -0
- package/dist-cms/packages/core/property-action/kinds/clear/manifests.d.ts +3 -0
- package/dist-cms/packages/core/property-action/kinds/clear/manifests.js +18 -0
- package/dist-cms/packages/core/property-action/kinds/manifests.js +6 -2
- package/dist-cms/packages/core/property-action/manifests.js +1 -21
- package/dist-cms/packages/core/property-editor/ui-picker-modal/property-editor-ui-picker-modal.element.js +44 -10
- package/dist-cms/packages/core/property-editor/ui-picker-modal/property-editor-ui-picker-modal.token.js +1 -1
- package/dist-cms/packages/core/recycle-bin/entity-action/restore-from-recycle-bin/restore-from-recycle-bin.action.kind.js +1 -1
- package/dist-cms/packages/core/repository/detail/read/read-detail-data-source.interface.d.ts +1 -0
- package/dist-cms/packages/core/repository/detail/read/read-detail-repository.interface.d.ts +1 -0
- package/dist-cms/packages/core/repository/repository-details.manager.js +101 -36
- package/dist-cms/packages/core/resources/api-interceptor.controller.d.ts +4 -4
- package/dist-cms/packages/core/resources/api-interceptor.controller.js +39 -35
- package/dist-cms/packages/core/resources/auth-signaler.context.d.ts +20 -0
- package/dist-cms/packages/core/resources/auth-signaler.context.js +30 -0
- package/dist-cms/packages/core/resources/extractUmbNotificationColor.function.d.ts +1 -1
- package/dist-cms/packages/core/resources/index.d.ts +1 -0
- package/dist-cms/packages/core/resources/index.js +1 -0
- package/dist-cms/packages/core/resources/isUmbNotifications.function.d.ts +3 -2
- package/dist-cms/packages/core/resources/isUmbNotifications.function.js +3 -6
- package/dist-cms/packages/core/resources/try-execute/try-execute.controller.js +13 -0
- package/dist-cms/packages/core/resources/try-execute/tryXhrRequest.function.js +1 -1
- package/dist-cms/packages/core/router/conditions/is-routable-context/constants.d.ts +1 -0
- package/dist-cms/packages/core/router/conditions/is-routable-context/constants.js +1 -0
- package/dist-cms/packages/core/router/conditions/is-routable-context/index.d.ts +2 -0
- package/dist-cms/packages/core/router/conditions/is-routable-context/index.js +2 -0
- package/dist-cms/packages/core/router/conditions/is-routable-context/is-routable-context.condition.d.ts +7 -0
- package/dist-cms/packages/core/router/conditions/is-routable-context/is-routable-context.condition.js +18 -0
- package/dist-cms/packages/core/router/conditions/is-routable-context/manifests.d.ts +1 -0
- package/dist-cms/packages/core/router/conditions/is-routable-context/manifests.js +10 -0
- package/dist-cms/packages/core/router/conditions/is-routable-context/types.d.ts +15 -0
- package/dist-cms/packages/core/router/conditions/is-routable-context/types.js +1 -0
- package/dist-cms/packages/core/router/index.d.ts +1 -0
- package/dist-cms/packages/core/router/index.js +1 -0
- package/dist-cms/packages/core/router/manifests.d.ts +1 -0
- package/dist-cms/packages/core/router/manifests.js +2 -0
- package/dist-cms/packages/core/router/types.d.ts +1 -0
- package/dist-cms/packages/core/search/global-search/global-search.extension.d.ts +1 -0
- package/dist-cms/packages/core/search/search-modal/search-modal.element.js +52 -17
- package/dist-cms/packages/core/search/types.d.ts +2 -0
- package/dist-cms/packages/core/server/conditions/constants.d.ts +4 -0
- package/dist-cms/packages/core/server/conditions/constants.js +4 -0
- package/dist-cms/packages/core/server/conditions/index.d.ts +2 -0
- package/dist-cms/packages/core/server/conditions/index.js +1 -0
- package/dist-cms/packages/core/server/conditions/is-production-mode.condition.d.ts +7 -0
- package/dist-cms/packages/core/server/conditions/is-production-mode.condition.js +17 -0
- package/dist-cms/packages/core/server/conditions/manifests.d.ts +1 -0
- package/dist-cms/packages/core/server/conditions/manifests.js +10 -0
- package/dist-cms/packages/core/server/conditions/types.d.ts +14 -0
- package/dist-cms/packages/core/server/conditions/types.js +1 -0
- package/dist-cms/packages/core/server/index.d.ts +1 -0
- package/dist-cms/packages/core/server/index.js +1 -0
- package/dist-cms/packages/core/server/manifests.d.ts +1 -0
- package/dist-cms/packages/core/server/manifests.js +2 -0
- package/dist-cms/packages/core/server/server.context.d.ts +12 -0
- package/dist-cms/packages/core/server/server.context.js +33 -0
- package/dist-cms/packages/core/sorter/sorter.controller.js +35 -16
- package/dist-cms/packages/core/store/detail/detail-store-base.d.ts +7 -0
- package/dist-cms/packages/core/store/detail/detail-store-base.js +9 -0
- package/dist-cms/packages/core/store/detail/detail-store.interface.d.ts +1 -0
- package/dist-cms/packages/core/temporary-file/manifests.d.ts +1 -1
- package/dist-cms/packages/core/temporary-file/temporary-file-manager.class.js +6 -4
- package/dist-cms/packages/core/themes/manifests.d.ts +1 -1
- package/dist-cms/packages/core/tree/default/default-tree.context.d.ts +1 -0
- package/dist-cms/packages/core/tree/default/default-tree.context.js +5 -0
- package/dist-cms/packages/core/tree/entity-actions/duplicate-to/duplicate-to.action.kind.js +1 -1
- package/dist-cms/packages/core/tree/entity-actions/move/move-to.action.d.ts +2 -0
- package/dist-cms/packages/core/tree/entity-actions/move/move-to.action.js +4 -1
- package/dist-cms/packages/core/tree/index.d.ts +1 -0
- package/dist-cms/packages/core/tree/index.js +1 -0
- package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-context-base.js +7 -1
- package/dist-cms/packages/core/tree/tree-item/tree-item-base/tree-item-element-base.js +1 -8
- package/dist-cms/packages/core/utils/index.d.ts +1 -0
- package/dist-cms/packages/core/utils/index.js +1 -0
- package/dist-cms/packages/core/utils/path/get-file-extension.function.d.ts +5 -0
- package/dist-cms/packages/core/utils/path/get-file-extension.function.js +11 -0
- package/dist-cms/packages/core/utils/path/stored-path.function.js +5 -0
- package/dist-cms/packages/core/validation/controllers/validation.controller.d.ts +7 -0
- package/dist-cms/packages/core/validation/controllers/validation.controller.js +64 -22
- package/dist-cms/packages/core/validation/interfaces/validator.interface.d.ts +10 -1
- package/dist-cms/packages/core/vite.config.js +1 -0
- package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-variant-menu-breadcrumb/workspace-variant-menu-breadcrumb.element.d.ts +1 -0
- package/dist-cms/packages/core/workspace/components/workspace-breadcrumb/workspace-variant-menu-breadcrumb/workspace-variant-menu-breadcrumb.element.js +38 -15
- package/dist-cms/packages/core/workspace/controllers/workspace-split-view-manager.controller.d.ts +1 -0
- package/dist-cms/packages/core/workspace/controllers/workspace-split-view-manager.controller.js +1 -0
- package/dist-cms/packages/core/workspace/submittable/submittable-workspace-context-base.d.ts +2 -1
- package/dist-cms/packages/core/workspace/submittable/submittable-workspace-context-base.js +11 -8
- package/dist-cms/packages/data-type/entity-actions/conditions/manifests.d.ts +1 -1
- package/dist-cms/packages/data-type/modals/data-type-picker-flow/data-type-picker-flow-data-type-picker-modal.element.js +19 -4
- package/dist-cms/packages/data-type/modals/data-type-picker-flow/data-type-picker-flow-data-type-picker-modal.token.js +1 -1
- package/dist-cms/packages/data-type/modals/data-type-picker-flow/data-type-picker-flow-modal.element.js +16 -5
- package/dist-cms/packages/data-type/repository/detail/data-type-detail.repository.d.ts +10 -2
- package/dist-cms/packages/data-type/repository/detail/data-type-detail.repository.js +22 -1
- package/dist-cms/packages/data-type/repository/detail/server-data-source/data-type-detail.server.data-source.d.ts +13 -0
- package/dist-cms/packages/data-type/repository/detail/server-data-source/data-type-detail.server.data-source.js +16 -0
- package/dist-cms/packages/data-type/repository/detail/server-data-source/data-type-detail.server.request-manager.js +1 -0
- package/dist-cms/packages/data-type/repository/item/data-type-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/data-type/repository/item/data-type-item.server.request-manager.js +3 -1
- package/dist-cms/packages/data-type/search/data-type-search.server.data-source.js +5 -1
- package/dist-cms/packages/data-type/search/global-search/manifests.js +1 -0
- package/dist-cms/packages/dictionary/entity-action/export/export-dictionary-modal.element.js +4 -4
- package/dist-cms/packages/dictionary/repository/item/dictionary-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/dictionary/repository/item/dictionary-item.server.request-manager.js +3 -1
- package/dist-cms/packages/dictionary/search/dictionary-search.server.data-source.js +5 -1
- package/dist-cms/packages/dictionary/search/global-search/manifests.js +1 -0
- package/dist-cms/packages/documents/document-blueprints/repository/item/document-blueprint-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/documents/document-blueprints/repository/item/document-blueprint-item.server.request-manager.js +3 -1
- package/dist-cms/packages/documents/document-redirect-management/dashboard-redirect-management.element.js +0 -2
- package/dist-cms/packages/documents/document-types/repository/detail/document-type-detail.repository.d.ts +11 -2
- package/dist-cms/packages/documents/document-types/repository/detail/document-type-detail.repository.js +29 -1
- package/dist-cms/packages/documents/document-types/repository/detail/server-data-source/document-type-detail.server.data-source.d.ts +16 -3
- package/dist-cms/packages/documents/document-types/repository/detail/server-data-source/document-type-detail.server.data-source.js +21 -5
- package/dist-cms/packages/documents/document-types/repository/detail/server-data-source/document-type-detail.server.request-manager.js +1 -0
- package/dist-cms/packages/documents/document-types/repository/item/document-type-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/documents/document-types/repository/item/document-type-item.server.request-manager.js +3 -1
- package/dist-cms/packages/documents/document-types/repository/manifests.js +2 -0
- package/dist-cms/packages/documents/document-types/repository/structure/document-type-structure.repository.d.ts +2 -0
- package/dist-cms/packages/documents/document-types/repository/structure/document-type-structure.repository.js +6 -0
- package/dist-cms/packages/documents/document-types/repository/structure/document-type-structure.server.data-source.d.ts +6 -2
- package/dist-cms/packages/documents/document-types/repository/structure/document-type-structure.server.data-source.js +16 -0
- package/dist-cms/packages/documents/document-types/repository/structure/types.d.ts +5 -0
- package/dist-cms/packages/documents/document-types/search/document-type-search.server.data-source.js +6 -1
- package/dist-cms/packages/documents/document-types/search/global-search/manifests.js +1 -0
- package/dist-cms/packages/documents/documents/audit-log/index.d.ts +1 -1
- package/dist-cms/packages/documents/documents/audit-log/index.js +1 -1
- package/dist-cms/packages/documents/documents/audit-log/info-app/document-history-workspace-info-app.element.d.ts +3 -0
- package/dist-cms/packages/documents/documents/audit-log/info-app/document-history-workspace-info-app.element.js +4 -0
- package/dist-cms/packages/documents/documents/audit-log/info-app/manifests.js +5 -2
- package/dist-cms/packages/documents/documents/audit-log/info-app/utils.d.ts +2 -1
- package/dist-cms/packages/documents/documents/audit-log/info-app/utils.js +2 -1
- package/dist-cms/packages/documents/documents/audit-log/manifests.d.ts +1 -2
- package/dist-cms/packages/documents/documents/audit-log/manifests.js +2 -1
- package/dist-cms/packages/documents/documents/audit-log/repository/constants.d.ts +1 -0
- package/dist-cms/packages/documents/documents/audit-log/repository/constants.js +1 -0
- package/dist-cms/packages/documents/documents/audit-log/repository/document-audit-log.repository.d.ts +9 -1
- package/dist-cms/packages/documents/documents/audit-log/repository/document-audit-log.repository.js +11 -0
- package/dist-cms/packages/documents/documents/audit-log/repository/index.d.ts +1 -0
- package/dist-cms/packages/documents/documents/audit-log/repository/index.js +1 -0
- package/dist-cms/packages/documents/documents/audit-log/repository/manifests.d.ts +1 -0
- package/dist-cms/packages/documents/documents/audit-log/repository/manifests.js +9 -0
- package/dist-cms/packages/documents/documents/collection/document-collection.context.d.ts +6 -0
- package/dist-cms/packages/documents/documents/collection/document-collection.context.js +9 -0
- package/dist-cms/packages/documents/documents/collection/item/document-collection-item-card.element.d.ts +7 -3
- package/dist-cms/packages/documents/documents/collection/item/document-collection-item-card.element.js +150 -17
- package/dist-cms/packages/documents/documents/collection/views/manifests.js +1 -6
- package/dist-cms/packages/documents/documents/components/input-document/input-document.context.js +2 -2
- package/dist-cms/packages/documents/documents/entity-actions/duplicate/duplicate-document.action.js +30 -1
- package/dist-cms/packages/documents/documents/entity-actions/duplicate/modal/duplicate-document-modal.element.js +6 -0
- package/dist-cms/packages/documents/documents/entity-actions/duplicate/modal/duplicate-document-modal.token.d.ts +2 -0
- package/dist-cms/packages/documents/documents/entity-actions/move-to/document-move-to.action.d.ts +7 -0
- package/dist-cms/packages/documents/documents/entity-actions/move-to/document-move-to.action.js +31 -0
- package/dist-cms/packages/documents/documents/entity-actions/move-to/manifests.js +1 -0
- package/dist-cms/packages/documents/documents/item/repository/document-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/documents/documents/item/repository/document-item.server.request-manager.js +3 -1
- package/dist-cms/packages/documents/documents/publishing/publish/entity-bulk-action/publish.bulk-action.js +1 -0
- package/dist-cms/packages/documents/documents/publishing/workspace-context/document-publishing.workspace-context.js +13 -7
- package/dist-cms/packages/documents/documents/recycle-bin/entity-action/bulk-trash/document-bulk-trash-with-relation.action.d.ts +5 -0
- package/dist-cms/packages/documents/documents/recycle-bin/entity-action/bulk-trash/document-bulk-trash-with-relation.action.js +18 -0
- package/dist-cms/packages/documents/documents/recycle-bin/entity-action/bulk-trash/manifests.js +1 -0
- package/dist-cms/packages/documents/documents/recycle-bin/entity-action/manifests.js +1 -0
- package/dist-cms/packages/documents/documents/recycle-bin/entity-action/trash/document-trash-with-relation.action.d.ts +5 -0
- package/dist-cms/packages/documents/documents/recycle-bin/entity-action/trash/document-trash-with-relation.action.js +21 -0
- package/dist-cms/packages/documents/documents/rollback/audit-log-action/manifests.d.ts +1 -0
- package/dist-cms/packages/documents/documents/rollback/audit-log-action/manifests.js +26 -0
- package/dist-cms/packages/documents/documents/rollback/constants.d.ts +2 -2
- package/dist-cms/packages/documents/documents/rollback/constants.js +2 -2
- package/dist-cms/packages/documents/documents/rollback/entity-action/manifests.js +7 -8
- package/dist-cms/packages/documents/documents/rollback/entity-action/rollback.action.d.ts +1 -0
- package/dist-cms/packages/documents/documents/rollback/entity-action/rollback.action.js +1 -0
- package/dist-cms/packages/documents/documents/rollback/manifests.js +2 -0
- package/dist-cms/packages/documents/documents/rollback/modal/constants.d.ts +2 -0
- package/dist-cms/packages/documents/documents/rollback/modal/constants.js +2 -0
- package/dist-cms/packages/documents/documents/rollback/modal/rollback-modal.element.d.ts +1 -0
- package/dist-cms/packages/documents/documents/rollback/modal/rollback-modal.element.js +1 -0
- package/dist-cms/packages/documents/documents/rollback/modal/types.d.ts +2 -4
- package/dist-cms/packages/documents/documents/rollback/repository/constants.d.ts +5 -1
- package/dist-cms/packages/documents/documents/rollback/repository/constants.js +5 -1
- package/dist-cms/packages/documents/documents/rollback/repository/index.d.ts +2 -1
- package/dist-cms/packages/documents/documents/rollback/repository/index.js +2 -1
- package/dist-cms/packages/documents/documents/rollback/repository/manifests.js +3 -3
- package/dist-cms/packages/documents/documents/rollback/repository/rollback.repository.d.ts +24 -13
- package/dist-cms/packages/documents/documents/rollback/repository/rollback.repository.js +46 -5
- package/dist-cms/packages/documents/documents/search/document-search.server.data-source.js +2 -0
- package/dist-cms/packages/documents/documents/search/global-search/manifests.js +1 -0
- package/dist-cms/packages/documents/documents/tree/document-tree.context.js +3 -1
- package/dist-cms/packages/documents/documents/tree/tree-item/document-tree-item.context.js +7 -0
- package/dist-cms/packages/documents/documents/url/document-urls-data-resolver.js +4 -1
- package/dist-cms/packages/documents/documents/workspace/document-workspace.context.js +6 -0
- package/dist-cms/packages/extension-insights/entity.d.ts +0 -2
- package/dist-cms/packages/extension-insights/entity.js +0 -1
- package/dist-cms/packages/extension-insights/manifests.js +1 -8
- package/dist-cms/packages/extension-insights/workspace/manifests.js +1 -1
- package/dist-cms/packages/extension-types/index.d.ts +2 -0
- package/dist-cms/packages/language/modals/language-picker/language-picker-modal.element.js +3 -3
- package/dist-cms/packages/language/repository/item/language-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/language/repository/item/language-item.server.request-manager.js +3 -1
- package/dist-cms/packages/management-api/detail/detail-data.request-manager.d.ts +46 -2
- package/dist-cms/packages/management-api/detail/detail-data.request-manager.js +122 -0
- package/dist-cms/packages/management-api/item/item-data.request-manager.d.ts +2 -0
- package/dist-cms/packages/management-api/item/item-data.request-manager.js +69 -12
- package/dist-cms/packages/management-api/server-event/global-context/server-event.context.js +5 -8
- package/dist-cms/packages/media/dropzone/components/input-dropzone/input-dropzone.element.js +3 -1
- package/dist-cms/packages/media/dropzone/dropzone-manager.class.d.ts +1 -1
- package/dist-cms/packages/media/dropzone/dropzone-manager.class.js +2 -2
- package/dist-cms/packages/media/dropzone/types.d.ts +1 -0
- package/dist-cms/packages/media/imaging/components/imaging-thumbnail.element.d.ts +5 -0
- package/dist-cms/packages/media/imaging/components/imaging-thumbnail.element.js +4 -0
- package/dist-cms/packages/media/imaging/imaging.store.js +2 -2
- package/dist-cms/packages/media/imaging/types.d.ts +1 -0
- package/dist-cms/packages/media/media/audit-log/index.d.ts +1 -1
- package/dist-cms/packages/media/media/audit-log/index.js +1 -1
- package/dist-cms/packages/media/media/audit-log/info-app/manifests.js +5 -2
- package/dist-cms/packages/media/media/audit-log/info-app/media-history-workspace-info-app.element.d.ts +3 -0
- package/dist-cms/packages/media/media/audit-log/info-app/media-history-workspace-info-app.element.js +3 -0
- package/dist-cms/packages/media/media/audit-log/info-app/utils.d.ts +1 -0
- package/dist-cms/packages/media/media/audit-log/info-app/utils.js +1 -0
- package/dist-cms/packages/media/media/audit-log/manifests.js +2 -1
- package/dist-cms/packages/media/media/audit-log/repository/constants.d.ts +1 -0
- package/dist-cms/packages/media/media/audit-log/repository/constants.js +1 -0
- package/dist-cms/packages/media/media/audit-log/repository/index.d.ts +1 -0
- package/dist-cms/packages/media/media/audit-log/repository/index.js +1 -0
- package/dist-cms/packages/media/media/audit-log/repository/manifests.d.ts +1 -0
- package/dist-cms/packages/media/media/audit-log/repository/manifests.js +9 -0
- package/dist-cms/packages/media/media/audit-log/repository/media-audit-log.repository.d.ts +9 -1
- package/dist-cms/packages/media/media/audit-log/repository/media-audit-log.repository.js +11 -0
- package/dist-cms/packages/media/media/collection/item/manifests.d.ts +1 -0
- package/dist-cms/packages/media/media/collection/item/manifests.js +10 -0
- package/dist-cms/packages/media/media/collection/item/media-collection-item-card.element.d.ts +23 -0
- package/dist-cms/packages/media/media/collection/item/media-collection-item-card.element.js +117 -0
- package/dist-cms/packages/media/media/collection/item/types.d.ts +31 -0
- package/dist-cms/packages/media/media/collection/item/types.js +1 -0
- package/dist-cms/packages/media/media/collection/manifests.js +2 -0
- package/dist-cms/packages/media/media/collection/media-collection.context.d.ts +6 -0
- package/dist-cms/packages/media/media/collection/media-collection.context.js +9 -0
- package/dist-cms/packages/media/media/collection/repository/media-collection.server.data-source.js +5 -0
- package/dist-cms/packages/media/media/collection/types.d.ts +1 -28
- package/dist-cms/packages/media/media/collection/views/grid/media-grid-collection-view.element.d.ts +5 -6
- package/dist-cms/packages/media/media/collection/views/grid/media-grid-collection-view.element.js +19 -75
- package/dist-cms/packages/media/media/components/input-image-cropper/image-cropper-focus-setter.element.d.ts +1 -0
- package/dist-cms/packages/media/media/components/input-image-cropper/image-cropper-focus-setter.element.js +9 -4
- package/dist-cms/packages/media/media/components/input-image-cropper/input-image-cropper.element.js +15 -0
- package/dist-cms/packages/media/media/components/input-media/input-media.context.d.ts +7 -1
- package/dist-cms/packages/media/media/components/input-media/input-media.context.js +33 -3
- package/dist-cms/packages/media/media/components/input-media/input-media.element.d.ts +3 -1
- package/dist-cms/packages/media/media/components/input-media/input-media.element.js +7 -1
- package/dist-cms/packages/media/media/components/input-rich-media/input-rich-media.element.d.ts +1 -1
- package/dist-cms/packages/media/media/components/input-rich-media/input-rich-media.element.js +1 -1
- package/dist-cms/packages/media/media/components/input-upload-field/input-upload-field.element.js +56 -33
- package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-file.element.d.ts +1 -0
- package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-file.element.js +5 -1
- package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-image.element.js +5 -3
- package/dist-cms/packages/media/media/components/input-upload-field/preview/input-upload-field-svg.element.js +6 -7
- package/dist-cms/packages/media/media/dropzone/media-dropzone.manager.js +104 -25
- package/dist-cms/packages/media/media/entity-actions/move-to/manifests.js +1 -0
- package/dist-cms/packages/media/media/entity-actions/move-to/media-move-to.action.d.ts +7 -0
- package/dist-cms/packages/media/media/entity-actions/move-to/media-move-to.action.js +31 -0
- package/dist-cms/packages/media/media/global-contexts/index.d.ts +1 -0
- package/dist-cms/packages/media/media/global-contexts/index.js +1 -0
- package/dist-cms/packages/media/media/global-contexts/manifests.d.ts +2 -0
- package/dist-cms/packages/media/media/global-contexts/manifests.js +8 -0
- package/dist-cms/packages/media/media/global-contexts/media-configuration.context.d.ts +23 -0
- package/dist-cms/packages/media/media/global-contexts/media-configuration.context.js +38 -0
- package/dist-cms/packages/media/media/index.d.ts +1 -0
- package/dist-cms/packages/media/media/index.js +1 -0
- package/dist-cms/packages/media/media/manifests.js +2 -0
- package/dist-cms/packages/media/media/modals/media-picker/components/media-picker-folder-path.element.d.ts +2 -0
- package/dist-cms/packages/media/media/modals/media-picker/components/media-picker-folder-path.element.js +124 -16
- package/dist-cms/packages/media/media/modals/media-picker/media-picker-modal.element.js +14 -2
- package/dist-cms/packages/media/media/modals/media-picker/types.d.ts +3 -0
- package/dist-cms/packages/media/media/property-editors/media-entity-picker/property-editor-ui-media-entity-picker.element.js +2 -0
- package/dist-cms/packages/media/media/property-editors/media-picker/property-editor-ui-media-picker.element.d.ts +1 -1
- package/dist-cms/packages/media/media/property-editors/media-picker/property-editor-ui-media-picker.element.js +1 -2
- package/dist-cms/packages/media/media/recycle-bin/entity-action/bulk-trash/manifests.js +1 -0
- package/dist-cms/packages/media/media/recycle-bin/entity-action/bulk-trash/media-bulk-trash-with-relation.action.d.ts +5 -0
- package/dist-cms/packages/media/media/recycle-bin/entity-action/bulk-trash/media-bulk-trash-with-relation.action.js +18 -0
- package/dist-cms/packages/media/media/recycle-bin/entity-action/manifests.js +1 -0
- package/dist-cms/packages/media/media/recycle-bin/entity-action/trash/media-trash-with-relation.action.d.ts +5 -0
- package/dist-cms/packages/media/media/recycle-bin/entity-action/trash/media-trash-with-relation.action.js +19 -0
- package/dist-cms/packages/media/media/repository/detail/media-detail.repository.d.ts +11 -0
- package/dist-cms/packages/media/media/repository/detail/media-detail.repository.js +9 -0
- package/dist-cms/packages/media/media/repository/detail/media-detail.server.data-source.d.ts +1 -1
- package/dist-cms/packages/media/media/repository/detail/media-detail.server.data-source.js +2 -2
- package/dist-cms/packages/media/media/repository/item/media-item.server.data-source.js +1 -0
- package/dist-cms/packages/media/media/repository/item/media-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/media/media/repository/item/media-item.server.request-manager.js +3 -1
- package/dist-cms/packages/media/media/repository/item/types.d.ts +2 -1
- package/dist-cms/packages/media/media/search/global-search/manifests.js +1 -0
- package/dist-cms/packages/media/media/search/media-search.server.data-source.js +3 -0
- package/dist-cms/packages/media/media/tree/server-data-source/media-tree.server.data-source.js +1 -0
- package/dist-cms/packages/media/media/tree/tree-item/media-tree-item.context.js +7 -0
- package/dist-cms/packages/media/media/tree/tree-item/media-tree-item.element.d.ts +1 -2
- package/dist-cms/packages/media/media/tree/tree-item/media-tree-item.element.js +9 -40
- package/dist-cms/packages/media/media/url/info-app/media-links-workspace-info-app.element.js +1 -1
- package/dist-cms/packages/media/media/workspace/media-workspace.context.d.ts +1 -1
- package/dist-cms/packages/media/media/workspace/media-workspace.context.js +6 -0
- package/dist-cms/packages/media/media-types/entry-point.js +4 -0
- package/dist-cms/packages/media/media-types/repository/detail/media-type-detail.repository.d.ts +11 -2
- package/dist-cms/packages/media/media-types/repository/detail/media-type-detail.repository.js +29 -1
- package/dist-cms/packages/media/media-types/repository/detail/media-type-detail.server.data-source.d.ts +18 -24
- package/dist-cms/packages/media/media-types/repository/detail/media-type-detail.server.data-source.js +69 -84
- package/dist-cms/packages/media/media-types/repository/detail/server-data-source/media-type-detail.server.cache-invalidation.manager.d.ts +6 -0
- package/dist-cms/packages/media/media-types/repository/detail/server-data-source/media-type-detail.server.cache-invalidation.manager.js +10 -0
- package/dist-cms/packages/media/media-types/repository/detail/server-data-source/media-type-detail.server.cache.d.ts +4 -0
- package/dist-cms/packages/media/media-types/repository/detail/server-data-source/media-type-detail.server.cache.js +3 -0
- package/dist-cms/packages/media/media-types/repository/detail/server-data-source/media-type-detail.server.request-manager.d.ts +7 -0
- package/dist-cms/packages/media/media-types/repository/detail/server-data-source/media-type-detail.server.request-manager.js +18 -0
- package/dist-cms/packages/media/media-types/repository/item/media-type-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/media/media-types/repository/item/media-type-item.server.request-manager.js +3 -1
- package/dist-cms/packages/media/media-types/repository/manifests.js +7 -1
- package/dist-cms/packages/media/media-types/repository/structure/media-type-structure.repository.d.ts +18 -1
- package/dist-cms/packages/media/media-types/repository/structure/media-type-structure.repository.js +8 -4
- package/dist-cms/packages/media/media-types/repository/structure/media-type-structure.server.data-source.d.ts +21 -3
- package/dist-cms/packages/media/media-types/repository/structure/media-type-structure.server.data-source.js +20 -1
- package/dist-cms/packages/media/media-types/repository/structure/types.d.ts +6 -0
- package/dist-cms/packages/media/media-types/search/global-search/manifests.js +1 -0
- package/dist-cms/packages/media/media-types/search/media-type-search.server.data-source.js +5 -1
- package/dist-cms/packages/members/member/collection/action/create-member-collection-action.element.js +1 -0
- package/dist-cms/packages/members/member/collection/member-collection-header.element.js +3 -1
- package/dist-cms/packages/members/member/collection/repository/member-collection.server.data-source.d.ts +1 -1
- package/dist-cms/packages/members/member/collection/repository/member-collection.server.data-source.js +11 -2
- package/dist-cms/packages/members/member/collection/types.d.ts +3 -0
- package/dist-cms/packages/members/member/collection/views/table/member-table-collection-view.element.d.ts +2 -0
- package/dist-cms/packages/members/member/collection/views/table/member-table-collection-view.element.js +41 -1
- package/dist-cms/packages/members/member/components/input-member/input-member.context.js +2 -2
- package/dist-cms/packages/members/member/components/input-member/input-member.element.d.ts +1 -1
- package/dist-cms/packages/members/member/item/repository/member-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/members/member/item/repository/member-item.server.request-manager.js +3 -1
- package/dist-cms/packages/members/member/search/global-search/manifests.js +1 -0
- package/dist-cms/packages/members/member/search/member-search.server.data-source.js +2 -0
- package/dist-cms/packages/members/member/workspace/member/member-workspace.context.js +6 -1
- package/dist-cms/packages/members/member/workspace/member/views/member/member-workspace-view-member.element.js +14 -2
- package/dist-cms/packages/members/member-group/components/input-member-group/input-member-group.element.d.ts +0 -1
- package/dist-cms/packages/members/member-group/components/input-member-group/input-member-group.element.js +0 -3
- package/dist-cms/packages/members/member-group/components/member-group-picker-modal/member-group-picker-modal.element.d.ts +4 -1
- package/dist-cms/packages/members/member-group/components/member-group-picker-modal/member-group-picker-modal.element.js +68 -26
- package/dist-cms/packages/members/member-group/repository/item/member-group-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/members/member-group/repository/item/member-group-item.server.request-manager.js +3 -1
- package/dist-cms/packages/members/member-public-access/modal/public-access-modal.element.d.ts +1 -0
- package/dist-cms/packages/members/member-public-access/modal/public-access-modal.element.js +38 -8
- package/dist-cms/packages/members/member-public-access/repository/public-access.repository.d.ts +1 -1
- package/dist-cms/packages/members/member-public-access/repository/public-access.repository.js +2 -2
- package/dist-cms/packages/members/member-public-access/repository/public-access.server.data.d.ts +2 -1
- package/dist-cms/packages/members/member-public-access/repository/public-access.server.data.js +3 -2
- package/dist-cms/packages/members/member-type/entry-point.js +4 -0
- package/dist-cms/packages/members/member-type/repository/detail/member-type-detail.repository.d.ts +11 -2
- package/dist-cms/packages/members/member-type/repository/detail/member-type-detail.repository.js +29 -1
- package/dist-cms/packages/members/member-type/repository/detail/member-type-detail.server.data-source.d.ts +18 -24
- package/dist-cms/packages/members/member-type/repository/detail/member-type-detail.server.data-source.js +66 -81
- package/dist-cms/packages/members/member-type/repository/detail/server-data-source/member-type-detail.server.cache-invalidation.manager.d.ts +6 -0
- package/dist-cms/packages/members/member-type/repository/detail/server-data-source/member-type-detail.server.cache-invalidation.manager.js +10 -0
- package/dist-cms/packages/members/member-type/repository/detail/server-data-source/member-type-detail.server.cache.d.ts +4 -0
- package/dist-cms/packages/members/member-type/repository/detail/server-data-source/member-type-detail.server.cache.js +3 -0
- package/dist-cms/packages/members/member-type/repository/detail/server-data-source/member-type-detail.server.request-manager.d.ts +7 -0
- package/dist-cms/packages/members/member-type/repository/detail/server-data-source/member-type-detail.server.request-manager.js +18 -0
- package/dist-cms/packages/members/member-type/repository/item/member-type-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/members/member-type/repository/item/member-type-item.server.request-manager.js +3 -1
- package/dist-cms/packages/members/member-type/search/global-search/manifests.js +1 -0
- package/dist-cms/packages/members/member-type/search/member-type-search.server.data-source.js +5 -1
- package/dist-cms/packages/multi-url-picker/components/input-multi-url/input-multi-url.element.d.ts +2 -0
- package/dist-cms/packages/multi-url-picker/components/input-multi-url/input-multi-url.element.js +11 -3
- package/dist-cms/packages/multi-url-picker/constants.d.ts +1 -0
- package/dist-cms/packages/multi-url-picker/constants.js +1 -0
- package/dist-cms/packages/multi-url-picker/document-link-picker-modal/constants.d.ts +1 -0
- package/dist-cms/packages/multi-url-picker/document-link-picker-modal/constants.js +1 -0
- package/dist-cms/packages/multi-url-picker/document-link-picker-modal/document-link-picker-modal.element.d.ts +18 -0
- package/dist-cms/packages/multi-url-picker/document-link-picker-modal/document-link-picker-modal.element.js +139 -0
- package/dist-cms/packages/multi-url-picker/document-link-picker-modal/document-link-picker-modal.token.d.ts +10 -0
- package/dist-cms/packages/multi-url-picker/document-link-picker-modal/document-link-picker-modal.token.js +7 -0
- package/dist-cms/packages/multi-url-picker/document-link-picker-modal/document-link-picker.context.d.ts +12 -0
- package/dist-cms/packages/multi-url-picker/document-link-picker-modal/document-link-picker.context.js +45 -0
- package/dist-cms/packages/multi-url-picker/document-link-picker-modal/manifests.d.ts +6 -0
- package/dist-cms/packages/multi-url-picker/document-link-picker-modal/manifests.js +8 -0
- package/dist-cms/packages/multi-url-picker/index.d.ts +1 -0
- package/dist-cms/packages/multi-url-picker/index.js +1 -0
- package/dist-cms/packages/multi-url-picker/link-picker-modal/link-picker-modal.element.d.ts +2 -3
- package/dist-cms/packages/multi-url-picker/link-picker-modal/link-picker-modal.element.js +95 -52
- package/dist-cms/packages/multi-url-picker/link-picker-modal/link-picker-modal.token.d.ts +4 -0
- package/dist-cms/packages/multi-url-picker/link-picker-modal/types.d.ts +1 -0
- package/dist-cms/packages/multi-url-picker/manifests.js +2 -0
- package/dist-cms/packages/multi-url-picker/property-editor/manifests.js +6 -0
- package/dist-cms/packages/multi-url-picker/property-editor/property-editor-ui-multi-url-picker.element.d.ts +1 -0
- package/dist-cms/packages/multi-url-picker/property-editor/property-editor-ui-multi-url-picker.element.js +7 -0
- package/dist-cms/packages/property-editors/content-picker/components/input-content/input-content.element.d.ts +2 -2
- package/dist-cms/packages/property-editors/content-picker/components/input-content/input-content.element.js +2 -3
- package/dist-cms/packages/property-editors/content-picker/property-editor-ui-content-picker.element.js +18 -8
- package/dist-cms/packages/property-editors/entity-data-picker/conditions/constants.d.ts +1 -0
- package/dist-cms/packages/property-editors/entity-data-picker/conditions/constants.js +1 -0
- package/dist-cms/packages/property-editors/entity-data-picker/conditions/entity-data-picker-supports-text-filter.condition.d.ts +6 -0
- package/dist-cms/packages/property-editors/entity-data-picker/conditions/entity-data-picker-supports-text-filter.condition.js +21 -0
- package/dist-cms/packages/property-editors/entity-data-picker/conditions/manifests.d.ts +2 -0
- package/dist-cms/packages/property-editors/entity-data-picker/conditions/manifests.js +10 -0
- package/dist-cms/packages/property-editors/entity-data-picker/constants.d.ts +1 -0
- package/dist-cms/packages/property-editors/entity-data-picker/constants.js +1 -0
- package/dist-cms/packages/property-editors/entity-data-picker/entry-point.d.ts +1 -0
- package/dist-cms/packages/property-editors/entity-data-picker/entry-point.js +3 -2
- package/dist-cms/packages/property-editors/entity-data-picker/input/entity-data-picker-data-source.context.d.ts +1 -1
- package/dist-cms/packages/property-editors/entity-data-picker/input/input-entity-data.context.d.ts +23 -6
- package/dist-cms/packages/property-editors/entity-data-picker/input/input-entity-data.context.js +35 -30
- package/dist-cms/packages/property-editors/entity-data-picker/input/input-entity-data.element.d.ts +9 -2
- package/dist-cms/packages/property-editors/entity-data-picker/input/input-entity-data.element.js +10 -4
- package/dist-cms/packages/property-editors/entity-data-picker/manifests.js +4 -2
- package/dist-cms/packages/property-editors/entity-data-picker/picker-collection/constants.d.ts +1 -0
- package/dist-cms/packages/property-editors/entity-data-picker/picker-collection/constants.js +1 -0
- package/dist-cms/packages/property-editors/entity-data-picker/picker-collection/manifests.js +18 -1
- package/dist-cms/packages/property-editors/entity-data-picker/picker-collection/views/constants.d.ts +2 -0
- package/dist-cms/packages/property-editors/entity-data-picker/picker-collection/views/constants.js +2 -0
- package/dist-cms/packages/property-editors/entity-data-picker/picker-collection/views/manifests.js +3 -2
- package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/index.d.ts +1 -0
- package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/index.js +1 -0
- package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/picker-views/manifests.d.ts +2 -0
- package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/picker-views/manifests.js +11 -0
- package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/picker-views/picker-views-configuration.element.d.ts +19 -0
- package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/picker-views/picker-views-configuration.element.js +117 -0
- package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/picker-views/types.d.ts +4 -0
- package/dist-cms/packages/property-editors/entity-data-picker/property-editor/config/picker-views/types.js +1 -0
- package/dist-cms/packages/property-editors/entity-data-picker/property-editor/entity-data-picker-property-editor-ui.element.d.ts +2 -1
- package/dist-cms/packages/property-editors/entity-data-picker/property-editor/entity-data-picker-property-editor-ui.element.js +31 -6
- package/dist-cms/packages/property-editors/entity-data-picker/property-editor/manifests.js +10 -0
- package/dist-cms/packages/property-editors/manifests.js +2 -0
- package/dist-cms/packages/property-editors/number/Umbraco.Decimal.js +3 -3
- package/dist-cms/packages/property-editors/slider/slider-property-value-preset.js +4 -1
- package/dist-cms/packages/property-editors/text-box/property-editor-ui-text-box.element.js +27 -1
- package/dist-cms/packages/property-editors/textarea/property-editor-ui-textarea.element.js +32 -5
- package/dist-cms/packages/property-editors/utils/character-count.d.ts +6 -0
- package/dist-cms/packages/property-editors/utils/character-count.js +11 -0
- package/dist-cms/packages/relations/relation-types/collection/views/table/relation-type-table-collection-view.element.js +5 -1
- package/dist-cms/packages/relations/relation-types/index.d.ts +1 -0
- package/dist-cms/packages/relations/relation-types/index.js +1 -0
- package/dist-cms/packages/relations/relation-types/paths.d.ts +7 -0
- package/dist-cms/packages/relations/relation-types/paths.js +9 -0
- package/dist-cms/packages/relations/relations/entity-actions/bulk-trash/modal/bulk-trash-with-relation-modal.element.d.ts +1 -0
- package/dist-cms/packages/relations/relations/entity-actions/bulk-trash/modal/bulk-trash-with-relation-modal.element.js +40 -3
- package/dist-cms/packages/relations/relations/entity-actions/bulk-trash/modal/bulk-trash-with-relation-modal.token.d.ts +1 -0
- package/dist-cms/packages/relations/relations/entity-actions/trash/modal/trash-with-relation-modal.element.d.ts +1 -0
- package/dist-cms/packages/relations/relations/entity-actions/trash/modal/trash-with-relation-modal.element.js +32 -3
- package/dist-cms/packages/relations/relations/entity-actions/trash/modal/trash-with-relation-modal.token.d.ts +1 -0
- package/dist-cms/packages/relations/relations/global-components/confirm-action-modal-entity-references.element.js +2 -4
- package/dist-cms/packages/relations/relations/global-components/confirm-bulk-action-modal-entity-references.element.d.ts +1 -0
- package/dist-cms/packages/relations/relations/global-components/confirm-bulk-action-modal-entity-references.element.js +5 -0
- package/dist-cms/packages/relations/relations/index.d.ts +4 -0
- package/dist-cms/packages/relations/relations/index.js +2 -0
- package/dist-cms/packages/static-file/repository/item/static-file-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/static-file/repository/item/static-file-item.server.request-manager.js +3 -1
- package/dist-cms/packages/templating/local-components/insert-menu/insert-menu.element.d.ts +1 -0
- package/dist-cms/packages/templating/local-components/insert-menu/insert-menu.element.js +6 -0
- package/dist-cms/packages/templating/local-components/production-mode-workspace-action/production-mode-workspace-action.api.d.ts +5 -0
- package/dist-cms/packages/templating/local-components/production-mode-workspace-action/production-mode-workspace-action.api.js +12 -0
- package/dist-cms/packages/templating/local-components/production-mode-workspace-action/production-mode-workspace-action.d.ts +2 -0
- package/dist-cms/packages/templating/local-components/production-mode-workspace-action/production-mode-workspace-action.element.d.ts +12 -0
- package/dist-cms/packages/templating/local-components/production-mode-workspace-action/production-mode-workspace-action.element.js +30 -0
- package/dist-cms/packages/templating/local-components/production-mode-workspace-action/production-mode-workspace-action.js +2 -0
- package/dist-cms/packages/templating/partial-views/entity-actions/create/manifests.js +7 -0
- package/dist-cms/packages/templating/partial-views/entity-actions/manifests.js +7 -0
- package/dist-cms/packages/templating/partial-views/entity-actions/rename/manifests.js +7 -0
- package/dist-cms/packages/templating/partial-views/repository/item/partial-view-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/templating/partial-views/repository/item/partial-view-item.server.request-manager.js +3 -1
- package/dist-cms/packages/templating/partial-views/tree/folder/manifests.js +7 -0
- package/dist-cms/packages/templating/partial-views/workspace/manifests.js +23 -0
- package/dist-cms/packages/templating/partial-views/workspace/partial-view-workspace-editor.element.d.ts +5 -0
- package/dist-cms/packages/templating/partial-views/workspace/partial-view-workspace-editor.element.js +22 -2
- package/dist-cms/packages/templating/scripts/repository/item/script-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/templating/scripts/repository/item/script-item.server.request-manager.js +3 -1
- package/dist-cms/packages/templating/stylesheets/repository/item/stylesheet-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/templating/stylesheets/repository/item/stylesheet-item.server.request-manager.js +3 -1
- package/dist-cms/packages/templating/templates/entity-actions/manifests.js +14 -1
- package/dist-cms/packages/templating/templates/repository/item/template-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/templating/templates/repository/item/template-item.server.request-manager.js +3 -1
- package/dist-cms/packages/templating/templates/search/global-search/manifests.js +1 -0
- package/dist-cms/packages/templating/templates/search/template-search.server.data-source.js +5 -1
- package/dist-cms/packages/templating/templates/workspace/manifests.js +23 -0
- package/dist-cms/packages/templating/templates/workspace/template-workspace-editor.element.d.ts +5 -0
- package/dist-cms/packages/templating/templates/workspace/template-workspace-editor.element.js +29 -9
- package/dist-cms/packages/tiptap/clipboard/block/copy/block-rte-to-block-copy-translator.d.ts +8 -0
- package/dist-cms/packages/tiptap/clipboard/block/copy/block-rte-to-block-copy-translator.js +24 -0
- package/dist-cms/packages/tiptap/clipboard/block/copy/manifest.d.ts +1 -0
- package/dist-cms/packages/tiptap/clipboard/block/copy/manifest.js +10 -0
- package/dist-cms/packages/tiptap/clipboard/block/paste/block-to-block-rte-paste-translator.d.ts +14 -0
- package/dist-cms/packages/tiptap/clipboard/block/paste/block-to-block-rte-paste-translator.js +30 -0
- package/dist-cms/packages/tiptap/clipboard/block/paste/manifest.d.ts +1 -0
- package/dist-cms/packages/tiptap/clipboard/block/paste/manifest.js +10 -0
- package/dist-cms/packages/tiptap/clipboard/manifests.d.ts +1 -0
- package/dist-cms/packages/tiptap/clipboard/manifests.js +11 -0
- package/dist-cms/packages/tiptap/components/input-tiptap/input-tiptap.element.js +3 -2
- package/dist-cms/packages/tiptap/components/statusbar/tiptap-statusbar.element.d.ts +1 -0
- package/dist-cms/packages/tiptap/components/statusbar/tiptap-statusbar.element.js +13 -2
- package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-button-action.element.d.ts +11 -0
- package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-button-action.element.js +32 -0
- package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-button-disabled.element.d.ts +1 -0
- package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-button-disabled.element.js +2 -1
- package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-button.element.d.ts +3 -3
- package/dist-cms/packages/tiptap/components/toolbar/tiptap-toolbar-color-picker-button.element.d.ts +2 -1
- package/dist-cms/packages/tiptap/extensions/block/block.tiptap-api.js +65 -4
- package/dist-cms/packages/tiptap/extensions/bubble-menu/bubble-menu.tiptap-extension.d.ts +5 -0
- package/dist-cms/packages/tiptap/extensions/bubble-menu/bubble-menu.tiptap-extension.js +2 -0
- package/dist-cms/packages/tiptap/extensions/index.d.ts +1 -0
- package/dist-cms/packages/tiptap/extensions/index.js +1 -0
- package/dist-cms/packages/tiptap/extensions/link/link.tiptap-extension.js +2 -1
- package/dist-cms/packages/tiptap/extensions/link/link.tiptap-toolbar-api.js +4 -1
- package/dist-cms/packages/tiptap/extensions/link/manifests.js +1 -2
- package/dist-cms/packages/tiptap/extensions/link/unlink.tiptap-toolbar-api.d.ts +2 -3
- package/dist-cms/packages/tiptap/extensions/link/unlink.tiptap-toolbar-api.js +2 -3
- package/dist-cms/packages/tiptap/extensions/manifests.js +4 -3
- package/dist-cms/packages/tiptap/extensions/table/plugins/table-handle.d.ts +8 -0
- package/dist-cms/packages/tiptap/extensions/table/plugins/table-handle.js +376 -0
- package/dist-cms/packages/tiptap/extensions/table/plugins/table-view.d.ts +9 -0
- package/dist-cms/packages/tiptap/extensions/table/plugins/table-view.js +76 -0
- package/dist-cms/packages/tiptap/extensions/table/table.tiptap-api.js +92 -71
- package/dist-cms/packages/tiptap/extensions/table/table.tiptap-extension.d.ts +2 -7
- package/dist-cms/packages/tiptap/extensions/table/table.tiptap-extension.js +14 -389
- package/dist-cms/packages/tiptap/extensions/tiptap-toolbar-action-button-api-base.d.ts +14 -0
- package/dist-cms/packages/tiptap/extensions/tiptap-toolbar-action-button-api-base.js +16 -0
- package/dist-cms/packages/tiptap/extensions/tiptap-toolbar-action-button.kind.d.ts +2 -0
- package/dist-cms/packages/tiptap/extensions/tiptap-toolbar-action-button.kind.js +9 -0
- package/dist-cms/packages/tiptap/extensions/tiptap-toolbar.extension.d.ts +5 -1
- package/dist-cms/packages/tiptap/extensions/undo-redo/manifests.js +2 -4
- package/dist-cms/packages/tiptap/extensions/undo-redo/redo.tiptap-toolbar-api.d.ts +2 -3
- package/dist-cms/packages/tiptap/extensions/undo-redo/redo.tiptap-toolbar-api.js +2 -3
- package/dist-cms/packages/tiptap/extensions/undo-redo/undo.tiptap-toolbar-api.d.ts +2 -3
- package/dist-cms/packages/tiptap/extensions/undo-redo/undo.tiptap-toolbar-api.js +2 -3
- package/dist-cms/packages/tiptap/manifests.js +6 -1
- package/dist-cms/packages/tiptap/property-editors/constants.d.ts +1 -0
- package/dist-cms/packages/tiptap/property-editors/constants.js +1 -0
- package/dist-cms/packages/tiptap/property-editors/tiptap-rte/constants.d.ts +1 -0
- package/dist-cms/packages/tiptap/property-editors/tiptap-rte/constants.js +1 -0
- package/dist-cms/packages/tiptap/property-editors/tiptap-rte/manifests.js +2 -1
- package/dist-cms/packages/umbraco-news/umbraco-news-dashboard.element.js +1 -1
- package/dist-cms/packages/user/current-user/history/current-user-history-user-profile-app.element.d.ts +2 -0
- package/dist-cms/packages/user/current-user/history/current-user-history-user-profile-app.element.js +52 -5
- package/dist-cms/packages/user/current-user/history/current-user-history.store.d.ts +9 -0
- package/dist-cms/packages/user/current-user/history/current-user-history.store.js +236 -15
- package/dist-cms/packages/user/current-user/modals/current-user/current-user-modal.element.js +5 -7
- package/dist-cms/packages/user/user/repository/item/user-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/user/user/repository/item/user-item.server.request-manager.js +3 -1
- package/dist-cms/packages/user/user/workspace/user/components/user-workspace-assign-access/user-workspace-assign-access.element.js +1 -0
- package/dist-cms/packages/user/user/workspace/user/user-workspace.context.js +6 -3
- package/dist-cms/packages/user/user-group/repository/item/user-group-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/user/user-group/repository/item/user-group-item.server.request-manager.js +3 -1
- package/dist-cms/packages/user/user-group/workspace/user-group/views/user-group-details-workspace-view.element.js +1 -0
- package/dist-cms/packages/webhook/webhook/repository/item/webhook-item.server.request-manager.d.ts +1 -0
- package/dist-cms/packages/webhook/webhook/repository/item/webhook-item.server.request-manager.js +3 -1
- package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
- package/examples/entity-content-type-condition/index.ts +21 -40
- package/examples/entity-content-type-condition/unique-condition-entity-action.ts +9 -0
- package/examples/picker-data-source/example-custom-picker-collection-data-source.ts +108 -20
- package/examples/{entity-content-type-condition → workspace-content-type-condition}/content-type-alias-condition-workspace-view.element.ts +4 -4
- package/examples/{entity-content-type-condition → workspace-content-type-condition}/content-type-unique-condition-workspace-view.element.ts +4 -4
- package/examples/workspace-content-type-condition/index.ts +43 -0
- package/package.json +18 -16
- package/umbraco-package-schema.json +1455 -116
- package/vscode-html-custom-data.json +252 -103
- package/dist-cms/external/openid/src/authorization_request.d.ts +0 -43
- package/dist-cms/external/openid/src/authorization_request.js +0 -89
- package/dist-cms/external/openid/src/authorization_request_handler.d.ts +0 -63
- package/dist-cms/external/openid/src/authorization_request_handler.js +0 -108
- package/dist-cms/external/openid/src/authorization_response.d.ts +0 -40
- package/dist-cms/external/openid/src/authorization_response.js +0 -49
- package/dist-cms/external/openid/src/authorization_service_configuration.d.ts +0 -32
- package/dist-cms/external/openid/src/authorization_service_configuration.js +0 -55
- package/dist-cms/external/openid/src/base64-js/index.d.ts +0 -19
- package/dist-cms/external/openid/src/base64-js/index.js +0 -124
- package/dist-cms/external/openid/src/crypto_utils.d.ts +0 -22
- package/dist-cms/external/openid/src/crypto_utils.js +0 -74
- package/dist-cms/external/openid/src/errors.d.ts +0 -8
- package/dist-cms/external/openid/src/errors.js +0 -23
- package/dist-cms/external/openid/src/flags.d.ts +0 -2
- package/dist-cms/external/openid/src/flags.js +0 -18
- package/dist-cms/external/openid/src/logger.d.ts +0 -5
- package/dist-cms/external/openid/src/logger.js +0 -69
- package/dist-cms/external/openid/src/query_string_utils.d.ts +0 -14
- package/dist-cms/external/openid/src/query_string_utils.js +0 -51
- package/dist-cms/external/openid/src/redirect_based_handler.d.ts +0 -29
- package/dist-cms/external/openid/src/redirect_based_handler.js +0 -159
- package/dist-cms/external/openid/src/revoke_token_request.d.ts +0 -31
- package/dist-cms/external/openid/src/revoke_token_request.js +0 -34
- package/dist-cms/external/openid/src/storage.d.ts +0 -50
- package/dist-cms/external/openid/src/storage.js +0 -59
- package/dist-cms/external/openid/src/token_request.d.ts +0 -33
- package/dist-cms/external/openid/src/token_request.js +0 -69
- package/dist-cms/external/openid/src/token_request_handler.d.ts +0 -27
- package/dist-cms/external/openid/src/token_request_handler.js +0 -58
- package/dist-cms/external/openid/src/token_response.d.ts +0 -65
- package/dist-cms/external/openid/src/token_response.js +0 -77
- package/dist-cms/external/openid/src/types.d.ts +0 -22
- package/dist-cms/external/openid/src/types.js +0 -14
- package/dist-cms/external/openid/src/xhr.d.ts +0 -13
- package/dist-cms/external/openid/src/xhr.js +0 -72
- package/dist-cms/packages/core/auth/auth-flow.d.ts +0 -107
- package/dist-cms/packages/core/auth/auth-flow.js +0 -385
- package/dist-cms/packages/core/auth/workers/token-check.worker.js +0 -104
- package/dist-cms/packages/documents/documents/collection/item/document-grid-collection-card.element.d.ts +0 -23
- package/dist-cms/packages/documents/documents/collection/item/document-grid-collection-card.element.js +0 -155
- package/dist-cms/packages/documents/documents/collection/views/grid/document-grid-collection-view.element.d.ts +0 -17
- package/dist-cms/packages/documents/documents/collection/views/grid/document-grid-collection-view.element.js +0 -98
- package/dist-cms/packages/extension-insights/collection/repository/extension-collection.repository.d.ts +0 -14
- package/dist-cms/packages/extension-insights/collection/repository/extension-collection.repository.js +0 -32
- package/dist-cms/packages/extension-insights/collection/types.d.ts +0 -10
- package/dist-cms/packages/extension-insights/collection/views/manifests.d.ts +0 -2
- package/dist-cms/packages/extension-insights/entity-actions/manifests.js +0 -2
- /package/dist-cms/packages/{extension-insights/entity-actions/unregister/index.js → content/content/audit-log/audit-log-action/audit-log-action.extension.js} +0 -0
- /package/dist-cms/packages/{extension-insights/collection → content/content-type/entity-content-type/conditions}/types.js +0 -0
- /package/dist-cms/packages/{core/auth/workers/token-check.worker.d.ts → content/content-type/entity-content-type/conditions/unique/types.js} +0 -0
- /package/dist-cms/packages/{extension-insights/entity-actions/unregister/index.d.ts → content/content-type/entity-content-type/types.js} +0 -0
- /package/dist-cms/packages/{extension-insights → core/extension}/collection/manifests.d.ts +0 -0
- /package/dist-cms/packages/{extension-insights → core/extension}/collection/manifests.js +0 -0
- /package/dist-cms/packages/{extension-insights → core/extension}/collection/repository/index.d.ts +0 -0
- /package/dist-cms/packages/{extension-insights → core/extension}/collection/repository/index.js +0 -0
- /package/dist-cms/packages/{extension-insights → core/extension}/collection/repository/manifests.d.ts +0 -0
- /package/dist-cms/packages/{extension-insights → core/extension}/collection/repository/manifests.js +0 -0
- /package/dist-cms/packages/{extension-insights/entity-actions/unregister → core/extension/unregister/entity-action}/manifests.d.ts +0 -0
- /package/dist-cms/packages/{extension-insights/entity-actions/unregister → core/extension/unregister/entity-action}/manifests.js +0 -0
- /package/dist-cms/packages/core/property-action/{common → kinds}/clear/property-action-clear.controller.d.ts +0 -0
- /package/dist-cms/packages/core/property-action/{common → kinds}/clear/property-action-clear.controller.js +0 -0
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UmbAuthClient } from './umb-auth-client.js';
|
|
2
2
|
import { UMB_AUTH_CONTEXT } from './auth.context.token.js';
|
|
3
3
|
import { UmbAuthSessionTimeoutController } from './controllers/auth-session-timeout.controller.js';
|
|
4
|
-
import { UMB_STORAGE_TOKEN_RESPONSE_NAME } from './constants.js';
|
|
5
4
|
import { UmbContextBase } from '../../../libs/class-api/index.js';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { isTestEnvironment } from '../utils/index.js';
|
|
5
|
+
import { UmbApiInterceptorController, UMB_AUTH_SIGNALER_CONTEXT } from '../resources/index.js';
|
|
6
|
+
import { UmbBooleanState, UmbObjectState } from '../../../libs/observable-api/index.js';
|
|
7
|
+
import { ReplaySubject, Subject, switchMap, distinctUntilChanged, throttleTime, auditTime, } from '../../../external/rxjs/index.js';
|
|
8
|
+
import { isTestEnvironment, UmbDeprecation } from '../utils/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* The multiplier for the token expiry time.
|
|
11
|
+
* In Umbraco, access_tokens live for a quarter of the time of the refresh_token.
|
|
12
|
+
* We multiply by this to get the full session lifetime.
|
|
13
|
+
*/
|
|
14
|
+
const TOKEN_EXPIRY_MULTIPLIER = 4;
|
|
10
15
|
export class UmbAuthContext extends UmbContextBase {
|
|
11
16
|
#isAuthorized;
|
|
12
17
|
// Timeout is different from `isAuthorized` because it can occur repeatedly
|
|
@@ -15,38 +20,67 @@ export class UmbAuthContext extends UmbContextBase {
|
|
|
15
20
|
#isBypassed;
|
|
16
21
|
#serverUrl;
|
|
17
22
|
#backofficePath;
|
|
18
|
-
|
|
23
|
+
// Auth client (replaces appauth library)
|
|
24
|
+
#client;
|
|
25
|
+
// Session timing — in-memory only, no localStorage
|
|
26
|
+
#session;
|
|
27
|
+
// True only during the synchronous #updateSession() call inside the lock callback.
|
|
28
|
+
// Prevents re-entrant /token calls when session$ observers fire synchronously
|
|
29
|
+
// (e.g. keepUserLoggedIn=true with short expiresIn triggers #onSessionExpiring
|
|
30
|
+
// from inside the lock, capturing sessionBefore = newSession so the guard can't help).
|
|
31
|
+
#inSessionUpdateCallback;
|
|
32
|
+
// Cross-tab coordination
|
|
33
|
+
#channel;
|
|
34
|
+
// Popup management
|
|
19
35
|
#authWindowProxy;
|
|
20
|
-
#
|
|
21
|
-
|
|
22
|
-
|
|
36
|
+
#popupCleanup;
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated Observe isAuthorized instead. Scheduled for removal in Umbraco 19.
|
|
39
|
+
*/
|
|
40
|
+
#authorizationSignal;
|
|
41
|
+
// Track clients that have been configured to prevent duplicate interceptor binding
|
|
42
|
+
#configuredClients;
|
|
43
|
+
// Endpoint URLs
|
|
44
|
+
#linkEndpoint;
|
|
45
|
+
#linkKeyEndpoint;
|
|
46
|
+
#unlinkEndpoint;
|
|
47
|
+
#postLogoutRedirectUri;
|
|
23
48
|
/**
|
|
24
49
|
* Observable that acts as a signal for when the authorization state changes.
|
|
50
|
+
* @deprecated Observe isAuthorized instead. Scheduled for removal in Umbraco 19.
|
|
25
51
|
* @remark It will emit once per second, so it can be used to trigger UI updates or other actions when the authorization state changes.
|
|
26
|
-
* @returns
|
|
52
|
+
* @returns An observable that emits when the authorization state changes.
|
|
27
53
|
*/
|
|
28
54
|
get authorizationSignal() {
|
|
29
|
-
|
|
55
|
+
new UmbDeprecation({
|
|
56
|
+
deprecated: 'get authorizationSignal',
|
|
57
|
+
solution: 'Observe isAuthorized instead. This provides more useful information (authorized or not) and is more efficient to consume. Scheduled for removal in Umbraco 19.',
|
|
58
|
+
removeInVersion: '19.0.0',
|
|
59
|
+
}).warn();
|
|
60
|
+
return this.#authorizationSignal.asObservable().pipe(
|
|
30
61
|
// Throttle the signal to ensure that it emits once, then waits for 1s before allowing another emission.
|
|
31
62
|
throttleTime(1000));
|
|
32
63
|
}
|
|
33
|
-
constructor(host, serverUrl, backofficePath, isBypassed) {
|
|
64
|
+
constructor(host, serverUrl, backofficePath, isBypassed, keepUserLoggedIn = false) {
|
|
34
65
|
super(host, UMB_AUTH_CONTEXT);
|
|
35
66
|
this.#isAuthorized = new UmbBooleanState(false);
|
|
36
67
|
// Timeout is different from `isAuthorized` because it can occur repeatedly
|
|
37
68
|
this.#isTimeout = new Subject();
|
|
38
69
|
this.#isInitialized = new ReplaySubject(1);
|
|
39
|
-
//
|
|
40
|
-
this.#
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
70
|
+
// Session timing — in-memory only, no localStorage
|
|
71
|
+
this.#session = new UmbObjectState(undefined);
|
|
72
|
+
this.session$ = this.#session.asObservable();
|
|
73
|
+
// True only during the synchronous #updateSession() call inside the lock callback.
|
|
74
|
+
// Prevents re-entrant /token calls when session$ observers fire synchronously
|
|
75
|
+
// (e.g. keepUserLoggedIn=true with short expiresIn triggers #onSessionExpiring
|
|
76
|
+
// from inside the lock, capturing sessionBefore = newSession so the guard can't help).
|
|
77
|
+
this.#inSessionUpdateCallback = false;
|
|
78
|
+
/**
|
|
79
|
+
* @deprecated Observe isAuthorized instead. Scheduled for removal in Umbraco 19.
|
|
80
|
+
*/
|
|
81
|
+
this.#authorizationSignal = new Subject();
|
|
82
|
+
// Track clients that have been configured to prevent duplicate interceptor binding
|
|
83
|
+
this.#configuredClients = new WeakSet();
|
|
50
84
|
/**
|
|
51
85
|
* Observable that emits true when the auth context is initialized.
|
|
52
86
|
* @remark It will only emit once and then complete itself.
|
|
@@ -69,23 +103,79 @@ export class UmbAuthContext extends UmbContextBase {
|
|
|
69
103
|
this.#isBypassed = isBypassed;
|
|
70
104
|
this.#serverUrl = serverUrl;
|
|
71
105
|
this.#backofficePath = backofficePath;
|
|
72
|
-
this
|
|
73
|
-
|
|
74
|
-
this
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
106
|
+
this.keepUserLoggedIn = keepUserLoggedIn;
|
|
107
|
+
const redirectUri = this.getRedirectUrl();
|
|
108
|
+
this.#postLogoutRedirectUri = this.getPostLogoutRedirectUrl();
|
|
109
|
+
const endpoints = {
|
|
110
|
+
authorizationEndpoint: `${serverUrl}/umbraco/management/api/v1/security/back-office/authorize`,
|
|
111
|
+
tokenEndpoint: `${serverUrl}/umbraco/management/api/v1/security/back-office/token`,
|
|
112
|
+
revocationEndpoint: `${serverUrl}/umbraco/management/api/v1/security/back-office/revoke`,
|
|
113
|
+
linkEndpoint: `${serverUrl}/umbraco/management/api/v1/security/back-office/link-login`,
|
|
114
|
+
linkKeyEndpoint: `${serverUrl}/umbraco/management/api/v1/security/back-office/link-login-key`,
|
|
115
|
+
unlinkEndpoint: `${serverUrl}/umbraco/management/api/v1/security/back-office/unlink-login`,
|
|
116
|
+
};
|
|
117
|
+
this.#linkEndpoint = endpoints.linkEndpoint;
|
|
118
|
+
this.#linkKeyEndpoint = endpoints.linkKeyEndpoint;
|
|
119
|
+
this.#unlinkEndpoint = endpoints.unlinkEndpoint;
|
|
120
|
+
this.#client = new UmbAuthClient(endpoints, redirectUri);
|
|
121
|
+
// Set up cross-tab coordination via BroadcastChannel
|
|
122
|
+
this.#channel = new BroadcastChannel('umb:auth');
|
|
123
|
+
this.#channel.onmessage = (evt) => {
|
|
124
|
+
switch (evt.data?.type) {
|
|
125
|
+
case 'authorized': {
|
|
126
|
+
// Set session locally — do NOT call #updateSession which would re-broadcast
|
|
127
|
+
const accessTokenExpiresAt = evt.data.issuedAt + evt.data.expiresIn;
|
|
128
|
+
const expiresAt = evt.data.issuedAt + evt.data.expiresIn * TOKEN_EXPIRY_MULTIPLIER;
|
|
129
|
+
this.#session.setValue({ accessTokenExpiresAt, expiresAt });
|
|
130
|
+
this.#isAuthorized.setValue(true);
|
|
131
|
+
this.#authorizationSignal.next();
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
case 'sessionUpdate':
|
|
135
|
+
this.#session.setValue({
|
|
136
|
+
accessTokenExpiresAt: evt.data.accessTokenExpiresAt,
|
|
137
|
+
expiresAt: evt.data.expiresAt,
|
|
138
|
+
});
|
|
139
|
+
this.#isAuthorized.setValue(true);
|
|
140
|
+
break;
|
|
141
|
+
case 'sessionCleared':
|
|
142
|
+
this.#session.setValue(undefined);
|
|
143
|
+
this.#isAuthorized.setValue(false);
|
|
144
|
+
break;
|
|
145
|
+
case 'signedOut':
|
|
146
|
+
this.#session.setValue(undefined);
|
|
147
|
+
this.#isAuthorized.setValue(false);
|
|
148
|
+
// Redirect to logout page — cookies already cleared by the tab that initiated sign-out
|
|
149
|
+
location.href = this.#postLogoutRedirectUri;
|
|
150
|
+
break;
|
|
151
|
+
case 'sessionRequest': {
|
|
152
|
+
// Another tab is asking for the current session state (e.g. new tab opening).
|
|
153
|
+
// Only share the session if it is still valid — an expired session would cause
|
|
154
|
+
// the recipient (e.g. a popup) to believe it is already authorized and skip
|
|
155
|
+
// the authorization code exchange.
|
|
156
|
+
if (this.isSessionValid()) {
|
|
157
|
+
this.#channel.postMessage({ type: 'sessionResponse', session: this.#session.getValue() });
|
|
158
|
+
}
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
};
|
|
81
163
|
if (!isTestEnvironment()) {
|
|
82
164
|
// Start the session timeout controller
|
|
83
|
-
new UmbAuthSessionTimeoutController(this
|
|
165
|
+
new UmbAuthSessionTimeoutController(this);
|
|
84
166
|
}
|
|
167
|
+
// When an HTTP interceptor is active it registers an UmbAuthSignalerContext on the host.
|
|
168
|
+
// Consume it to keep authorization state in sync and to react to timeout requests.
|
|
169
|
+
this.consumeContext(UMB_AUTH_SIGNALER_CONTEXT, (signaler) => {
|
|
170
|
+
// Keep the signaler's authorization state in sync with ours
|
|
171
|
+
this.observe(this.isAuthorized, (isAuthorized) => signaler?.setAuthorized(isAuthorized ?? false));
|
|
172
|
+
// React to timeout requests from the interceptor
|
|
173
|
+
this.observe(signaler?.timeoutRequest, () => this.timeOut());
|
|
174
|
+
});
|
|
85
175
|
}
|
|
86
176
|
destroy() {
|
|
87
177
|
super.destroy();
|
|
88
|
-
|
|
178
|
+
this.#channel.close();
|
|
89
179
|
}
|
|
90
180
|
/**
|
|
91
181
|
* Initiates the login flow.
|
|
@@ -95,29 +185,127 @@ export class UmbAuthContext extends UmbContextBase {
|
|
|
95
185
|
* @param manifest The manifest for the registered provider.
|
|
96
186
|
*/
|
|
97
187
|
async makeAuthorizationRequest(identityProvider = 'Umbraco', redirect, usernameHint, manifest) {
|
|
98
|
-
const redirectUrl = await this.#
|
|
188
|
+
const redirectUrl = await this.#client.buildAuthorizationUrl(identityProvider, usernameHint);
|
|
99
189
|
if (redirect) {
|
|
190
|
+
// For redirect flows, persist PKCE state in sessionStorage (survives same-tab navigation)
|
|
191
|
+
sessionStorage.setItem('umb:pkce', JSON.stringify({
|
|
192
|
+
codeVerifier: this.#client.codeVerifier,
|
|
193
|
+
state: this.#client.state,
|
|
194
|
+
}));
|
|
100
195
|
location.href = redirectUrl;
|
|
101
196
|
return;
|
|
102
197
|
}
|
|
103
198
|
const popupTarget = manifest?.meta?.behavior?.popupTarget ?? 'umbracoAuthPopup';
|
|
104
199
|
const popupFeatures = manifest?.meta?.behavior?.popupFeatures ??
|
|
105
200
|
'width=600,height=600,menubar=no,location=no,resizable=yes,scrollbars=yes,status=no,toolbar=no';
|
|
201
|
+
// Clean up any pending popup flow before starting a new one
|
|
202
|
+
this.#popupCleanup?.();
|
|
106
203
|
if (!this.#authWindowProxy || this.#authWindowProxy.closed) {
|
|
107
204
|
this.#authWindowProxy = window.open(redirectUrl, popupTarget, popupFeatures);
|
|
108
205
|
}
|
|
109
|
-
else
|
|
206
|
+
else {
|
|
207
|
+
// Popup still open — navigate to the new URL (always different due to PKCE state)
|
|
110
208
|
this.#authWindowProxy = window.open(redirectUrl, popupTarget);
|
|
111
209
|
this.#authWindowProxy?.focus();
|
|
112
210
|
}
|
|
113
|
-
|
|
114
|
-
|
|
211
|
+
// Store PKCE state for the popup's postMessage request
|
|
212
|
+
const codeVerifier = this.#client.codeVerifier;
|
|
213
|
+
const state = this.#client.state;
|
|
214
|
+
// Listen for PKCE requests from the popup
|
|
215
|
+
const pkceHandler = (evt) => {
|
|
216
|
+
if (evt.origin !== window.location.origin)
|
|
217
|
+
return;
|
|
218
|
+
if (evt.data?.type === 'pkceRequest' && evt.data?.state === state) {
|
|
219
|
+
// Respond with the code_verifier
|
|
220
|
+
this.#authWindowProxy?.postMessage({ type: 'pkceResponse', codeVerifier, state }, window.location.origin);
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
window.addEventListener('message', pkceHandler);
|
|
224
|
+
// Wait for the popup to complete via BroadcastChannel.
|
|
225
|
+
// Resolves when authorized; also resolves (no-op) if the popup is closed/cancelled.
|
|
226
|
+
return new Promise((resolve) => {
|
|
227
|
+
const cleanup = () => {
|
|
228
|
+
clearInterval(closedPoll);
|
|
229
|
+
this.#channel.removeEventListener('message', handler);
|
|
230
|
+
window.removeEventListener('message', pkceHandler);
|
|
231
|
+
this.#popupCleanup = undefined;
|
|
232
|
+
};
|
|
233
|
+
this.#popupCleanup = cleanup;
|
|
234
|
+
const handler = (evt) => {
|
|
235
|
+
if (evt.data?.type === 'authorized') {
|
|
236
|
+
cleanup();
|
|
237
|
+
this.#client.clearPkceState();
|
|
238
|
+
this.#authWindowProxy?.close();
|
|
239
|
+
resolve();
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
this.#channel.addEventListener('message', handler);
|
|
243
|
+
// Poll for popup closed (user cancelled or closed the window)
|
|
244
|
+
const closedPoll = setInterval(() => {
|
|
245
|
+
if (this.#authWindowProxy?.closed) {
|
|
246
|
+
cleanup();
|
|
247
|
+
this.#client.clearPkceState();
|
|
248
|
+
resolve();
|
|
249
|
+
}
|
|
250
|
+
}, 500);
|
|
251
|
+
});
|
|
115
252
|
}
|
|
116
253
|
/**
|
|
117
254
|
* Completes the login flow.
|
|
255
|
+
* This is called on the oauth_complete page to exchange the authorization code for tokens.
|
|
256
|
+
* @returns The token response timing, or null if no authorization was pending.
|
|
118
257
|
*/
|
|
119
|
-
completeAuthorizationRequest() {
|
|
120
|
-
|
|
258
|
+
async completeAuthorizationRequest() {
|
|
259
|
+
const searchParams = new URLSearchParams(window.location.search);
|
|
260
|
+
const code = searchParams.get('code');
|
|
261
|
+
const state = searchParams.get('state');
|
|
262
|
+
if (!code) {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
// Try to get PKCE state — first from the parent window (popup flow), then from sessionStorage (redirect flow)
|
|
266
|
+
let codeVerifier;
|
|
267
|
+
if (window.opener) {
|
|
268
|
+
// Popup flow: request code_verifier from parent via postMessage
|
|
269
|
+
codeVerifier = await this.#requestCodeVerifierFromOpener(state);
|
|
270
|
+
}
|
|
271
|
+
if (!codeVerifier) {
|
|
272
|
+
// Redirect flow: read from sessionStorage
|
|
273
|
+
const pkceData = sessionStorage.getItem('umb:pkce');
|
|
274
|
+
if (pkceData) {
|
|
275
|
+
try {
|
|
276
|
+
const parsed = JSON.parse(pkceData);
|
|
277
|
+
if (parsed.state === state) {
|
|
278
|
+
codeVerifier = parsed.codeVerifier;
|
|
279
|
+
sessionStorage.removeItem('umb:pkce');
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
// Ignore parse errors
|
|
284
|
+
sessionStorage.removeItem('umb:pkce');
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
if (!codeVerifier) {
|
|
289
|
+
console.error('[UmbAuthContext] No code_verifier available for authorization code exchange');
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
const response = await this.#client.exchangeCode(code, codeVerifier);
|
|
293
|
+
if (!response) {
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
// Set session locally — use #setSessionLocally (not #updateSession) to avoid
|
|
297
|
+
// broadcasting sessionUpdate AND authorized, which would cause a message storm.
|
|
298
|
+
this.#setSessionLocally(response.expiresIn, response.issuedAt);
|
|
299
|
+
this.#isAuthorized.setValue(true);
|
|
300
|
+
// Broadcast to all tabs that authorization is complete
|
|
301
|
+
this.#channel.postMessage({
|
|
302
|
+
type: 'authorized',
|
|
303
|
+
expiresIn: response.expiresIn,
|
|
304
|
+
issuedAt: response.issuedAt,
|
|
305
|
+
});
|
|
306
|
+
// Fire the deprecated signal for external consumers
|
|
307
|
+
this.#authorizationSignal.next();
|
|
308
|
+
return response;
|
|
121
309
|
}
|
|
122
310
|
/**
|
|
123
311
|
* Checks if the user is authorized. If Authorization is bypassed, the user is always authorized.
|
|
@@ -129,48 +317,161 @@ export class UmbAuthContext extends UmbContextBase {
|
|
|
129
317
|
return true;
|
|
130
318
|
}
|
|
131
319
|
else {
|
|
132
|
-
const isAuthorized = this.#
|
|
320
|
+
const isAuthorized = !!this.#session.getValue();
|
|
133
321
|
this.#isAuthorized.setValue(isAuthorized);
|
|
134
322
|
return isAuthorized;
|
|
135
323
|
}
|
|
136
324
|
}
|
|
137
325
|
/**
|
|
138
326
|
* Sets the initial state of the auth flow.
|
|
327
|
+
* First asks existing tabs for their session via BroadcastChannel.
|
|
328
|
+
* If no peer responds, falls back to a server refresh.
|
|
139
329
|
* @returns {Promise<void>}
|
|
140
330
|
*/
|
|
141
|
-
setInitialState() {
|
|
142
|
-
|
|
331
|
+
async setInitialState() {
|
|
332
|
+
// If we already have a session, no need to re-initialize
|
|
333
|
+
if (this.#session.getValue()) {
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
// Ask existing tabs for their session state (avoids a /token call for new tabs)
|
|
337
|
+
const peerSession = await this.#requestSessionFromPeers();
|
|
338
|
+
if (peerSession) {
|
|
339
|
+
this.#session.setValue(peerSession);
|
|
340
|
+
this.#isAuthorized.setValue(true);
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
// No peer responded — try a server refresh.
|
|
344
|
+
// Uses the Web Lock so concurrent calls (from API requests via getLatestToken)
|
|
345
|
+
// are deduplicated — only one actual /token call is made.
|
|
346
|
+
await this.makeRefreshTokenRequest();
|
|
143
347
|
}
|
|
144
348
|
/**
|
|
145
349
|
* Gets the latest token from the Management API.
|
|
146
|
-
*
|
|
350
|
+
* With cookie auth, this returns '[redacted]' — the real token is in the httpOnly cookie.
|
|
351
|
+
* If the session has expired, it will attempt a refresh first.
|
|
147
352
|
*
|
|
148
|
-
* NB! The user may experience being redirected to the login screen if the token is expired.
|
|
149
353
|
* @example <caption>Using the latest token</caption>
|
|
150
354
|
* ```js
|
|
151
355
|
* const token = await authContext.getLatestToken();
|
|
152
356
|
* const result = await fetch('https://my-api.com', { headers: { Authorization: `Bearer ${token}` } });
|
|
153
357
|
* ```
|
|
358
|
+
* @deprecated Use {@link configureClient} for `@hey-api/openapi-ts` clients or {@link getOpenApiConfiguration} for manual fetch calls. With cookie-based auth this always returns `'[redacted]'`. Scheduled for removal in Umbraco 19.
|
|
359
|
+
* @see {@link configureClient} for automatic token handling with `@hey-api/openapi-ts` clients.
|
|
360
|
+
* @see {@link getOpenApiConfiguration} for manual fetch calls with cookie-based auth.
|
|
154
361
|
* @memberof UmbAuthContext
|
|
155
362
|
* @returns The latest token from the Management API
|
|
156
363
|
*/
|
|
157
|
-
getLatestToken() {
|
|
158
|
-
|
|
364
|
+
async getLatestToken() {
|
|
365
|
+
new UmbDeprecation({
|
|
366
|
+
deprecated: 'getLatestToken',
|
|
367
|
+
solution: 'Use configureClient for @hey-api/openapi-ts clients or getOpenApiConfiguration for manual fetch calls. With cookie-based auth this always returns "[redacted]".',
|
|
368
|
+
removeInVersion: '19.0.0',
|
|
369
|
+
}).warn();
|
|
370
|
+
await this.#ensureTokenReady();
|
|
371
|
+
return '[redacted]';
|
|
159
372
|
}
|
|
160
373
|
/**
|
|
161
|
-
*
|
|
374
|
+
* Forces a token refresh against the server (calls `/token`) and returns true if successful.
|
|
375
|
+
* Use this when you need to unconditionally refresh — e.g. session timeout keep-alive.
|
|
376
|
+
* For per-request token handling, prefer {@link configureClient} which skips the network
|
|
377
|
+
* call when the access token is still valid.
|
|
378
|
+
* Uses Web Locks to deduplicate concurrent refresh requests across tabs.
|
|
162
379
|
* @memberof UmbAuthContext
|
|
163
|
-
* @returns True if the
|
|
380
|
+
* @returns True if the refresh succeeded, otherwise false
|
|
164
381
|
*/
|
|
165
382
|
async validateToken() {
|
|
166
|
-
return this.#isBypassed || this
|
|
383
|
+
return this.#isBypassed || this.makeRefreshTokenRequest();
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Attempts to refresh the token using Web Locks to prevent concurrent refresh requests.
|
|
387
|
+
* @returns True if the refresh was successful, otherwise false.
|
|
388
|
+
*/
|
|
389
|
+
async makeRefreshTokenRequest() {
|
|
390
|
+
// Fallback for environments without Web Locks (some enterprise/kiosk browsers)
|
|
391
|
+
if (!navigator.locks) {
|
|
392
|
+
console.warn('[UmbAuth] navigator.locks is not available — token refresh coordination disabled.');
|
|
393
|
+
if (this.#isAccessTokenValid())
|
|
394
|
+
return true;
|
|
395
|
+
const response = await this.#client.refreshToken();
|
|
396
|
+
if (response) {
|
|
397
|
+
this.#updateSession(response.expiresIn, response.issuedAt);
|
|
398
|
+
return true;
|
|
399
|
+
}
|
|
400
|
+
return false;
|
|
401
|
+
}
|
|
402
|
+
// Capture the session before entering the lock queue. Inside the lock we check
|
|
403
|
+
// if the session object was replaced — that means another tab broadcast a
|
|
404
|
+
// sessionUpdate while we were waiting, so we can skip our own /token call.
|
|
405
|
+
// We compare object references (not expiresAt) because keepUserLoggedIn triggers
|
|
406
|
+
// a proactive refresh *before* the access token expires; an expiresAt-based check
|
|
407
|
+
// would incorrectly skip the refresh when the session is still technically valid.
|
|
408
|
+
const sessionBefore = this.#session.getValue();
|
|
409
|
+
// Guard against re-entrant calls: if session$ fired synchronously from inside
|
|
410
|
+
// a lock callback (via #updateSession → observer → keepUserLoggedIn proactive refresh),
|
|
411
|
+
// sessionBefore would equal the already-updated session so the reference check below
|
|
412
|
+
// can't help. Return true immediately — the lock holder already refreshed.
|
|
413
|
+
if (this.#inSessionUpdateCallback)
|
|
414
|
+
return true;
|
|
415
|
+
return navigator.locks.request('umb:token-refresh', async () => {
|
|
416
|
+
if (this.#session.getValue() !== sessionBefore && this.#isAccessTokenValid())
|
|
417
|
+
return true;
|
|
418
|
+
const response = await this.#client.refreshToken();
|
|
419
|
+
if (response) {
|
|
420
|
+
this.#updateSession(response.expiresIn, response.issuedAt);
|
|
421
|
+
return true;
|
|
422
|
+
}
|
|
423
|
+
return false;
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Checks if the current session is still valid.
|
|
428
|
+
* @returns True if the session has not expired.
|
|
429
|
+
*/
|
|
430
|
+
isSessionValid() {
|
|
431
|
+
const session = this.#session.getValue();
|
|
432
|
+
return !!session && session.expiresAt > Math.floor(Date.now() / 1000);
|
|
433
|
+
}
|
|
434
|
+
/**
|
|
435
|
+
* Local-only check — no network call.
|
|
436
|
+
* Returns true if the cached access token has not yet reached its expiry timestamp.
|
|
437
|
+
* Does NOT check the refresh token or server state.
|
|
438
|
+
*/
|
|
439
|
+
#isAccessTokenValid() {
|
|
440
|
+
const session = this.#session.getValue();
|
|
441
|
+
return !!session && session.accessTokenExpiresAt > Math.floor(Date.now() / 1000);
|
|
167
442
|
}
|
|
168
443
|
/**
|
|
169
|
-
*
|
|
444
|
+
* Gate for per-request token handling.
|
|
445
|
+
* - If the access token is expired: calls {@link validateToken} to refresh it (network call).
|
|
446
|
+
* - If the access token is still valid but another tab holds the `umb:token-refresh` lock:
|
|
447
|
+
* waits for that refresh to finish before returning, so the request is sent with the
|
|
448
|
+
* latest cookie and not the token that is about to be revoked (prevents ID2019 errors).
|
|
449
|
+
* - Otherwise: returns immediately with no network call.
|
|
450
|
+
*/
|
|
451
|
+
async #ensureTokenReady() {
|
|
452
|
+
if (!this.#isAccessTokenValid()) {
|
|
453
|
+
await this.validateToken();
|
|
454
|
+
return;
|
|
455
|
+
}
|
|
456
|
+
if (!navigator.locks)
|
|
457
|
+
return;
|
|
458
|
+
const state = await navigator.locks.query();
|
|
459
|
+
if (state.held?.some((l) => l.name === 'umb:token-refresh')) {
|
|
460
|
+
// A refresh is in progress in another tab — queue behind it so we send
|
|
461
|
+
// requests with the new cookie rather than the soon-to-be-revoked one.
|
|
462
|
+
await navigator.locks.request('umb:token-refresh', async () => {
|
|
463
|
+
// No-op: we only need to wait for the ongoing refresh to finish.
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* Clears the in-memory session state.
|
|
170
469
|
* @memberof UmbAuthContext
|
|
171
470
|
*/
|
|
172
471
|
clearTokenStorage() {
|
|
173
|
-
|
|
472
|
+
this.#session.setValue(undefined);
|
|
473
|
+
this.#isAuthorized.setValue(false);
|
|
474
|
+
this.#channel.postMessage({ type: 'sessionCleared' });
|
|
174
475
|
}
|
|
175
476
|
/**
|
|
176
477
|
* Handles the case where the user has timed out, i.e. the token has expired.
|
|
@@ -178,15 +479,27 @@ export class UmbAuthContext extends UmbContextBase {
|
|
|
178
479
|
* @memberof UmbAuthContext
|
|
179
480
|
*/
|
|
180
481
|
timeOut() {
|
|
482
|
+
this.#session.setValue(undefined);
|
|
181
483
|
this.#isAuthorized.setValue(false);
|
|
182
484
|
this.#isTimeout.next();
|
|
183
485
|
}
|
|
184
486
|
/**
|
|
185
|
-
* Signs the user out by
|
|
487
|
+
* Signs the user out by revoking tokens and redirecting to the end session endpoint.
|
|
186
488
|
* @memberof UmbAuthContext
|
|
187
489
|
*/
|
|
188
|
-
signOut() {
|
|
189
|
-
|
|
490
|
+
async signOut() {
|
|
491
|
+
// Revoke the token (best-effort)
|
|
492
|
+
await this.#client.revokeToken().catch(() => { });
|
|
493
|
+
// Clear local state (don't call clearTokenStorage — signedOut covers other tabs)
|
|
494
|
+
this.#session.setValue(undefined);
|
|
495
|
+
this.#isAuthorized.setValue(false);
|
|
496
|
+
this.#channel.postMessage({ type: 'signedOut' });
|
|
497
|
+
// Redirect to end session endpoint
|
|
498
|
+
const postLogoutRedirectUri = new URL(this.#postLogoutRedirectUri, window.location.origin);
|
|
499
|
+
const endSessionEndpoint = `${this.#serverUrl}/umbraco/management/api/v1/security/back-office/signout`;
|
|
500
|
+
const postLogoutLocation = new URL(endSessionEndpoint);
|
|
501
|
+
postLogoutLocation.searchParams.set('post_logout_redirect_uri', postLogoutRedirectUri.href);
|
|
502
|
+
location.href = postLogoutLocation.href;
|
|
190
503
|
}
|
|
191
504
|
/**
|
|
192
505
|
* Get the server url to the Management API.
|
|
@@ -198,9 +511,11 @@ export class UmbAuthContext extends UmbContextBase {
|
|
|
198
511
|
* ```
|
|
199
512
|
* @example <caption></caption>
|
|
200
513
|
* ```js
|
|
201
|
-
* const
|
|
202
|
-
* const
|
|
203
|
-
*
|
|
514
|
+
* const config = authContext.getOpenApiConfiguration();
|
|
515
|
+
* const result = await fetch(`${config.base}/umbraco/management/api/v1/my-resource`, {
|
|
516
|
+
* credentials: config.credentials,
|
|
517
|
+
* headers: { Authorization: `Bearer ${await config.token()}` },
|
|
518
|
+
* });
|
|
204
519
|
* ```
|
|
205
520
|
* @returns The server url to the Management API
|
|
206
521
|
*/
|
|
@@ -222,13 +537,41 @@ export class UmbAuthContext extends UmbContextBase {
|
|
|
222
537
|
* @returns {UmbOpenApiConfiguration} The default OpenAPI configuration
|
|
223
538
|
*/
|
|
224
539
|
getOpenApiConfiguration() {
|
|
225
|
-
const config = umbHttpClient.getConfig();
|
|
226
540
|
return {
|
|
227
|
-
base:
|
|
228
|
-
credentials:
|
|
229
|
-
token: () =>
|
|
541
|
+
base: this.#serverUrl,
|
|
542
|
+
credentials: 'include',
|
|
543
|
+
token: () => Promise.resolve('[redacted]'),
|
|
230
544
|
};
|
|
231
545
|
}
|
|
546
|
+
/**
|
|
547
|
+
* Configures a `@hey-api/openapi-ts` client for authenticated API calls.
|
|
548
|
+
* Sets baseUrl, credentials, auth header, and binds the default response
|
|
549
|
+
* interceptors (401 retry, error handling, notifications).
|
|
550
|
+
* @example
|
|
551
|
+
* ```js
|
|
552
|
+
* const authContext = await this.getContext(UMB_AUTH_CONTEXT);
|
|
553
|
+
* authContext.configureClient(myClient);
|
|
554
|
+
* // Now myClient automatically includes auth headers and interceptors
|
|
555
|
+
* ```
|
|
556
|
+
* @param client A `@hey-api/openapi-ts` client instance.
|
|
557
|
+
*/
|
|
558
|
+
configureClient(client) {
|
|
559
|
+
if (this.#configuredClients.has(client))
|
|
560
|
+
return;
|
|
561
|
+
this.#configuredClients.add(client);
|
|
562
|
+
client.setConfig({
|
|
563
|
+
baseUrl: this.#serverUrl,
|
|
564
|
+
credentials: 'include',
|
|
565
|
+
auth: async () => {
|
|
566
|
+
await this.#ensureTokenReady();
|
|
567
|
+
return '[redacted]';
|
|
568
|
+
},
|
|
569
|
+
});
|
|
570
|
+
// Controller self-registers on the host element via UmbControllerBase constructor,
|
|
571
|
+
// so the anonymous reference is intentional — lifecycle is managed by the host.
|
|
572
|
+
// Note: _host must be a proper UmbControllerHost (element host) for correct cleanup.
|
|
573
|
+
new UmbApiInterceptorController(this._host).bindDefaultInterceptors(client);
|
|
574
|
+
}
|
|
232
575
|
/**
|
|
233
576
|
* Sets the auth context as initialized, which means that the auth context is ready to be used.
|
|
234
577
|
* @remark This is used to let the app context know that the core module is ready, which means that the core auth providers are available.
|
|
@@ -259,18 +602,141 @@ export class UmbAuthContext extends UmbContextBase {
|
|
|
259
602
|
return `${window.location.origin}${this.#backofficePath}${this.#backofficePath.endsWith('/') ? '' : '/'}logout`;
|
|
260
603
|
}
|
|
261
604
|
/**
|
|
262
|
-
*
|
|
263
|
-
* @
|
|
605
|
+
* Links the current user to the specified provider by redirecting to the link endpoint.
|
|
606
|
+
* @param provider The provider to link to.
|
|
264
607
|
*/
|
|
265
|
-
linkLogin(provider) {
|
|
266
|
-
|
|
608
|
+
async linkLogin(provider) {
|
|
609
|
+
const linkKey = await this.#makeLinkTokenRequest(provider);
|
|
610
|
+
const form = document.createElement('form');
|
|
611
|
+
form.method = 'POST';
|
|
612
|
+
form.action = this.#linkEndpoint;
|
|
613
|
+
form.style.display = 'none';
|
|
614
|
+
const providerInput = document.createElement('input');
|
|
615
|
+
providerInput.name = 'provider';
|
|
616
|
+
providerInput.value = provider;
|
|
617
|
+
form.appendChild(providerInput);
|
|
618
|
+
const linkKeyInput = document.createElement('input');
|
|
619
|
+
linkKeyInput.name = 'linkKey';
|
|
620
|
+
linkKeyInput.value = linkKey;
|
|
621
|
+
form.appendChild(linkKeyInput);
|
|
622
|
+
document.body.appendChild(form);
|
|
623
|
+
form.submit();
|
|
267
624
|
}
|
|
268
625
|
/**
|
|
269
|
-
*
|
|
626
|
+
* Unlinks the current user from the specified provider.
|
|
627
|
+
* @param loginProvider
|
|
270
628
|
* @param providerKey
|
|
271
|
-
* @see UmbAuthFlow#unlinkLogin
|
|
272
629
|
*/
|
|
273
|
-
unlinkLogin(
|
|
274
|
-
|
|
630
|
+
async unlinkLogin(loginProvider, providerKey) {
|
|
631
|
+
const request = new Request(this.#unlinkEndpoint, {
|
|
632
|
+
method: 'POST',
|
|
633
|
+
credentials: 'include',
|
|
634
|
+
headers: { 'Content-Type': 'application/json', Authorization: 'Bearer [redacted]' },
|
|
635
|
+
body: JSON.stringify({ loginProvider, providerKey }),
|
|
636
|
+
});
|
|
637
|
+
const result = await fetch(request);
|
|
638
|
+
if (!result.ok) {
|
|
639
|
+
const error = await result.json();
|
|
640
|
+
throw error;
|
|
641
|
+
}
|
|
642
|
+
await this.signOut();
|
|
643
|
+
return true;
|
|
644
|
+
}
|
|
645
|
+
/**
|
|
646
|
+
* Sets the in-memory session state without broadcasting.
|
|
647
|
+
* Use when the caller handles broadcasting separately (e.g. completeAuthorizationRequest).
|
|
648
|
+
*
|
|
649
|
+
* Sets #inSessionUpdateCallback around the setValue calls to prevent re-entrant /token
|
|
650
|
+
* requests triggered by session$ observers firing synchronously (e.g. keepUserLoggedIn=true
|
|
651
|
+
* with a short expiresIn causes #onSessionExpiring to fire immediately).
|
|
652
|
+
*/
|
|
653
|
+
#setSessionLocally(expiresIn, issuedAt) {
|
|
654
|
+
const accessTokenExpiresAt = issuedAt + expiresIn;
|
|
655
|
+
// The access_token lives for 1/4 of the refresh_token lifetime.
|
|
656
|
+
// Multiply to get the full session expiry.
|
|
657
|
+
const expiresAt = issuedAt + expiresIn * TOKEN_EXPIRY_MULTIPLIER;
|
|
658
|
+
this.#inSessionUpdateCallback = true;
|
|
659
|
+
try {
|
|
660
|
+
this.#session.setValue({ accessTokenExpiresAt, expiresAt });
|
|
661
|
+
this.#isAuthorized.setValue(true);
|
|
662
|
+
}
|
|
663
|
+
finally {
|
|
664
|
+
this.#inSessionUpdateCallback = false;
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
/**
|
|
668
|
+
* Updates the in-memory session state and broadcasts to other tabs.
|
|
669
|
+
*/
|
|
670
|
+
#updateSession(expiresIn, issuedAt) {
|
|
671
|
+
this.#setSessionLocally(expiresIn, issuedAt);
|
|
672
|
+
const session = this.#session.getValue();
|
|
673
|
+
this.#channel.postMessage({
|
|
674
|
+
type: 'sessionUpdate',
|
|
675
|
+
accessTokenExpiresAt: session.accessTokenExpiresAt,
|
|
676
|
+
expiresAt: session.expiresAt,
|
|
677
|
+
});
|
|
678
|
+
}
|
|
679
|
+
/**
|
|
680
|
+
* Asks other tabs for their current session state via BroadcastChannel.
|
|
681
|
+
* Returns the first response within 300ms, or undefined if no peer responds.
|
|
682
|
+
* The 300ms window is empirical — long enough for a loaded peer tab to respond
|
|
683
|
+
* via the event loop, short enough to not noticeably delay login.
|
|
684
|
+
*/
|
|
685
|
+
#requestSessionFromPeers() {
|
|
686
|
+
return new Promise((resolve) => {
|
|
687
|
+
const timeout = setTimeout(() => {
|
|
688
|
+
this.#channel.removeEventListener('message', handler);
|
|
689
|
+
resolve(undefined);
|
|
690
|
+
}, 300);
|
|
691
|
+
const handler = (evt) => {
|
|
692
|
+
if (evt.data?.type === 'sessionResponse' && evt.data.session) {
|
|
693
|
+
clearTimeout(timeout);
|
|
694
|
+
this.#channel.removeEventListener('message', handler);
|
|
695
|
+
resolve(evt.data.session);
|
|
696
|
+
}
|
|
697
|
+
};
|
|
698
|
+
this.#channel.addEventListener('message', handler);
|
|
699
|
+
this.#channel.postMessage({ type: 'sessionRequest' });
|
|
700
|
+
});
|
|
701
|
+
}
|
|
702
|
+
/**
|
|
703
|
+
* Requests the code_verifier from the parent window via postMessage (popup flow).
|
|
704
|
+
*/
|
|
705
|
+
#requestCodeVerifierFromOpener(state) {
|
|
706
|
+
return new Promise((resolve) => {
|
|
707
|
+
if (!window.opener) {
|
|
708
|
+
resolve(undefined);
|
|
709
|
+
return;
|
|
710
|
+
}
|
|
711
|
+
const timeout = setTimeout(() => {
|
|
712
|
+
window.removeEventListener('message', handler);
|
|
713
|
+
resolve(undefined);
|
|
714
|
+
}, 5000);
|
|
715
|
+
const handler = (evt) => {
|
|
716
|
+
if (evt.origin !== window.location.origin)
|
|
717
|
+
return;
|
|
718
|
+
if (evt.data?.type === 'pkceResponse' && evt.data?.state === state) {
|
|
719
|
+
clearTimeout(timeout);
|
|
720
|
+
window.removeEventListener('message', handler);
|
|
721
|
+
resolve(evt.data.codeVerifier);
|
|
722
|
+
}
|
|
723
|
+
};
|
|
724
|
+
window.addEventListener('message', handler);
|
|
725
|
+
// Ask the parent for the code_verifier
|
|
726
|
+
window.opener.postMessage({ type: 'pkceRequest', state }, window.location.origin);
|
|
727
|
+
});
|
|
728
|
+
}
|
|
729
|
+
async #makeLinkTokenRequest(provider) {
|
|
730
|
+
const request = await fetch(`${this.#linkKeyEndpoint}?provider=${provider}`, {
|
|
731
|
+
credentials: 'include',
|
|
732
|
+
headers: {
|
|
733
|
+
Authorization: 'Bearer [redacted]',
|
|
734
|
+
'Content-Type': 'application/json',
|
|
735
|
+
},
|
|
736
|
+
});
|
|
737
|
+
if (!request.ok) {
|
|
738
|
+
throw new Error('Failed to link login');
|
|
739
|
+
}
|
|
740
|
+
return request.json();
|
|
275
741
|
}
|
|
276
742
|
}
|