From c99b4a96c49190df990982820373cb7ccdb5d329 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 12:33:31 +1300 Subject: [PATCH 01/86] Fix saving issue caused by using isNew instead of getIsNew --- .../packages/media/media/workspace/media-workspace.context.ts | 2 +- .../member-types/workspace/member-type-workspace.context.ts | 2 +- .../relation-types/workspace/relation-type-workspace.context.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/media-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/media-workspace.context.ts index 1b0575f358..5e16bf4685 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/media-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media/workspace/media-workspace.context.ts @@ -69,7 +69,7 @@ export class UmbMediaWorkspaceContext async save() { if (!this.#data.value) return; - if (this.isNew) { + if (this.getIsNew()) { await this.repository.create(this.#data.value); } else { await this.repository.save(this.#data.value.id, this.#data.value); diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-types/workspace/member-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-types/workspace/member-type-workspace.context.ts index ee32cbdaf9..e40e02d3a0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-types/workspace/member-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-types/workspace/member-type-workspace.context.ts @@ -60,7 +60,7 @@ export class UmbMemberTypeWorkspaceContext if (!this.#data.value) return; if (!this.#data.value.id) return; - if (this.isNew) { + if (this.getIsNew()) { await this.repository.create(this.#data.value); } else { await this.repository.save(this.#data.value.id, this.#data.value); diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts index b28d8568d8..f11f17debf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -57,7 +57,7 @@ export class UmbRelationTypeWorkspaceContext if (!this.#data.value) return; if (!this.#data.value.id) return; - if (this.isNew) { + if (this.getIsNew()) { await this.repository.create(this.#data.value); } else { await this.repository.save(this.#data.value.id, this.#data.value); From e93ea1fb44f739acc6dd91f870a9e48222db381f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 12:46:24 +1300 Subject: [PATCH 02/86] add create action --- .../entity-actions/create.action.ts | 15 ++++++++ .../entity-actions/manifests.ts | 35 +++++++++++++++++++ .../packages/settings/relation-types/index.ts | 1 + .../settings/relation-types/manifests.ts | 9 ++++- 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts new file mode 100644 index 0000000000..64bbdf7a1f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts @@ -0,0 +1,15 @@ +import { UmbRelationTypeRepository } from '../repository/relation-type.repository.js'; +import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action'; +import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; + +export class UmbCreateRelationTypeEntityAction extends UmbEntityActionBase { + // TODO: Could EntityActions take the manifest instead, for more flexibility? + constructor(host: UmbControllerHostElement, repositoryAlias: string, unique: string) { + super(host, repositoryAlias, unique); + } + + async execute() { + // TODO: Generate the href or retrieve it from something? + history.pushState(null, '', `section/settings/workspace/relation-type/create`); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts new file mode 100644 index 0000000000..4dd71b899c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts @@ -0,0 +1,35 @@ +import { UMB_RELATION_TYPE_REPOSITORY_ALIAS } from '../repository/manifests.js'; +import { UMB_RELATION_TYPE_ENTITY_TYPE, UMB_RELATION_TYPE_ROOT_ENTITY_TYPE } from '../index.js'; +import { UmbCreateRelationTypeEntityAction } from './create.action.js'; +import { UmbDeleteEntityAction } from '@umbraco-cms/backoffice/entity-action'; +import { ManifestEntityAction } from '@umbraco-cms/backoffice/extension-registry'; + +const entityActions: Array = [ + { + type: 'entityAction', + alias: 'Umb.EntityAction.RelationType.Delete', + name: 'Delete RelationType Entity Action', + api: UmbDeleteEntityAction, + meta: { + repositoryAlias: UMB_RELATION_TYPE_REPOSITORY_ALIAS, + icon: 'icon-trash', + label: 'Delete', + entityTypes: [UMB_RELATION_TYPE_ENTITY_TYPE], + }, + }, + { + type: 'entityAction', + alias: 'Umb.EntityAction.RelationType.Create', + name: 'Create RelationType Entity Action', + weight: 900, + api: UmbCreateRelationTypeEntityAction, + meta: { + icon: 'icon-add', + label: 'Create', + repositoryAlias: UMB_RELATION_TYPE_REPOSITORY_ALIAS, + entityTypes: [UMB_RELATION_TYPE_ROOT_ENTITY_TYPE], + }, + }, +]; + +export const manifests = [...entityActions]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/index.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/index.ts index 3d76f338dd..7bbcc83722 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/index.ts @@ -1 +1,2 @@ export * from './repository/index.js'; +export * from './entities.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/manifests.ts index ebc952eb39..12f1863639 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/manifests.ts @@ -2,5 +2,12 @@ import { manifests as repositoryManifests } from './repository/manifests.js'; import { manifests as menuItemManifests } from './menu-item/manifests.js'; import { manifests as treeManifests } from './tree/manifests.js'; import { manifests as workspaceManifests } from './workspace/manifests.js'; +import { manifests as entityActionManifests } from './entity-actions/manifests.js'; -export const manifests = [...repositoryManifests, ...menuItemManifests, ...treeManifests, ...workspaceManifests]; +export const manifests = [ + ...repositoryManifests, + ...menuItemManifests, + ...treeManifests, + ...workspaceManifests, + ...entityActionManifests, +]; From 543c37c48aae90618783e95f153d6d27a96f1059 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:02:07 +1300 Subject: [PATCH 03/86] fix create action --- .../settings/relation-types/entity-actions/create.action.ts | 2 +- .../settings/relation-types/entity-actions/manifests.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts index 64bbdf7a1f..8a03974269 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts @@ -10,6 +10,6 @@ export class UmbCreateRelationTypeEntityAction extends UmbEntityActionBase = [ icon: 'icon-add', label: 'Create', repositoryAlias: UMB_RELATION_TYPE_REPOSITORY_ALIAS, - entityTypes: [UMB_RELATION_TYPE_ROOT_ENTITY_TYPE], + entityTypes: [UMB_RELATION_TYPE_ROOT_ENTITY_TYPE, UMB_RELATION_TYPE_ENTITY_TYPE], }, }, ]; From 2419a8c96cbd297ea8d17d81ecaa18904f3c9f71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:02:20 +1300 Subject: [PATCH 04/86] add id to scaffold --- .../repository/sources/relation-type.server.data.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts index d9af0eff76..97d652fe33 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -7,6 +7,7 @@ import { } from '@umbraco-cms/backoffice/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; +import { UmbId } from '@umbraco-cms/backoffice/id'; /** * A data source for the Relation Type that fetches data from the server @@ -55,7 +56,9 @@ export class UmbRelationTypeServerDataSource * @memberof UmbRelationTypeServerDataSource */ async createScaffold(parentId: string | null) { - const data: RelationTypeResponseModel = {}; + const data: RelationTypeResponseModel = { + id: UmbId.new(), + }; return { data }; } From 1d66d06199af8374c1661fa686a7c21ec193d5fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 13:02:44 +1300 Subject: [PATCH 05/86] use isNew in workspace view --- .../relation-type-workspace-view-relation-type.element.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts index 323756f826..2dc63e727a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts @@ -75,13 +75,15 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme } #renderParentProperty() { - if (this._relationType?.id) return html`
${this._relationType.parentObjectTypeName}
`; + if (!this.#workspaceContext?.getIsNew() && this._relationType) + return html`
${this._relationType.parentObjectTypeName}
`; return html``; } #renderChildProperty() { - if (this._relationType?.id) return html`
${this._relationType.parentObjectTypeName}
`; + if (!this.#workspaceContext?.getIsNew() && this._relationType) + return html`
${this._relationType.parentObjectTypeName}
`; return html``; } From 7778669f08585f58e343b65596123ad689475532 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 15:55:08 +1300 Subject: [PATCH 06/86] more scaffolding --- .../repository/sources/relation-type.server.data.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts index 97d652fe33..ced4b404f6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -58,6 +58,10 @@ export class UmbRelationTypeServerDataSource async createScaffold(parentId: string | null) { const data: RelationTypeResponseModel = { id: UmbId.new(), + name: '', + alias: '', + isBidirectional: false, + isDependency: false, }; return { data }; From 0ea6d2a49688bec5c2ea13c41b34e6f79ba92748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:29:40 +1300 Subject: [PATCH 07/86] don't refresh page with new id unless the save worked --- .../workspace/relation-type-workspace.context.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts index f11f17debf..05f75db876 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -57,12 +57,16 @@ export class UmbRelationTypeWorkspaceContext if (!this.#data.value) return; if (!this.#data.value.id) return; + let response = undefined; + if (this.getIsNew()) { - await this.repository.create(this.#data.value); + response = await this.repository.create(this.#data.value); } else { - await this.repository.save(this.#data.value.id, this.#data.value); + response = await this.repository.save(this.#data.value.id, this.#data.value); } + if (response.error) return; + // If it went well, then its not new anymore?. this.setIsNew(false); } From 587410d06ae60b9286e301f90d7e14a33447cb8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:30:02 +1300 Subject: [PATCH 08/86] add selects to set the object types --- ...pe-workspace-view-relation-type.element.ts | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts index 2dc63e727a..624f522a20 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts @@ -3,6 +3,7 @@ import { UUIBooleanInputEvent, UUIRadioGroupElement, UUIRadioGroupEvent, + UUISelectEvent, UUIToggleElement, } from '@umbraco-cms/backoffice/external/uui'; import { css, html, customElement, state, ifDefined } from '@umbraco-cms/backoffice/external/lit'; @@ -74,18 +75,56 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme `; } + #onParentObjectTypeChange(event: UUISelectEvent) { + const value = event.target.value as string; + this.#workspaceContext?.update('parentObjectType', value); + } + #onChildObjectTypeChange(event: UUISelectEvent) { + const value = event.target.value as string; + this.#workspaceContext?.update('childObjectType', value); + } + #renderParentProperty() { if (!this.#workspaceContext?.getIsNew() && this._relationType) return html`
${this._relationType.parentObjectTypeName}
`; - return html``; + //TODO Get the actual list of object types + return html` + >`; } #renderChildProperty() { if (!this.#workspaceContext?.getIsNew() && this._relationType) return html`
${this._relationType.parentObjectTypeName}
`; - return html``; + //TODO Get the actual list of object types + return html` + `; } static styles = [ From 790be6e68b279b660c70ccc456f51d3bb62f59d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:30:37 +1300 Subject: [PATCH 09/86] only show create at the root --- .../settings/relation-types/entity-actions/manifests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts index b21d989f7c..4dd71b899c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts @@ -27,7 +27,7 @@ const entityActions: Array = [ icon: 'icon-add', label: 'Create', repositoryAlias: UMB_RELATION_TYPE_REPOSITORY_ALIAS, - entityTypes: [UMB_RELATION_TYPE_ROOT_ENTITY_TYPE, UMB_RELATION_TYPE_ENTITY_TYPE], + entityTypes: [UMB_RELATION_TYPE_ROOT_ENTITY_TYPE], }, }, ]; From ccf8deacf76018de1228d7cf2b9e373495164d8f Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Sat, 16 Dec 2023 09:54:51 +0100 Subject: [PATCH 10/86] build(deps): update deps --- src/Umbraco.Web.UI.Client/package-lock.json | 313 +++++------------- src/Umbraco.Web.UI.Client/package.json | 22 +- .../public/mockServiceWorker.js | 2 +- 3 files changed, 95 insertions(+), 242 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 04f735e015..44f780f893 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -10,20 +10,20 @@ "license": "MIT", "dependencies": { "@openid/appauth": "^1.3.1", - "@types/dompurify": "^3.0.4", - "@types/uuid": "^9.0.2", + "@types/dompurify": "^3.0.5", + "@types/uuid": "^9.0.7", "@umbraco-ui/uui": "1.6.0-rc.3", "@umbraco-ui/uui-css": "1.6.0-rc.3", "dompurify": "^3.0.6", - "element-internals-polyfill": "^1.3.7", + "element-internals-polyfill": "^1.3.9", "lit": "^2.8.0", "lodash-es": "4.17.21", - "marked": "^9.1.0", - "monaco-editor": "^0.44.0", + "marked": "^11.1.0", + "monaco-editor": "^0.45.0", "rxjs": "^7.8.1", - "tinymce": "^6.7.3", - "tinymce-i18n": "^23.8.7", - "uuid": "^9.0.0" + "tinymce": "^6.8.2", + "tinymce-i18n": "^23.12.4", + "uuid": "^9.0.1" }, "devDependencies": { "@babel/core": "^7.22.17", @@ -61,9 +61,9 @@ "eslint-plugin-storybook": "^0.6.15", "eslint-plugin-wc": "^2.0.4", "lucide-static": "^0.290.0", - "msw": "^1.2.3", + "msw": "^1.3.2", "openapi-typescript-codegen": "^0.25.0", - "playwright-msw": "^3.0.0", + "playwright-msw": "^3.0.1", "plop": "^4.0.0", "prettier": "3.0.3", "react": "^18.2.0", @@ -81,7 +81,7 @@ "vite": "^4.4.12", "vite-plugin-static-copy": "^0.17.0", "vite-tsconfig-paths": "^4.2.0", - "web-component-analyzer": "^2.0.0-next.5" + "web-component-analyzer": "^2.0.0" }, "engines": { "node": ">=20.9 <21", @@ -3142,16 +3142,16 @@ } }, "node_modules/@mswjs/interceptors": { - "version": "0.17.9", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.9.tgz", - "integrity": "sha512-4LVGt03RobMH/7ZrbHqRxQrS9cc2uh+iNKSj8UWr8M26A2i793ju+csaB5zaqYltqJmA2jUq4VeYfKmVqvsXQg==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.10.tgz", + "integrity": "sha512-N8x7eSLGcmUFNWZRxT1vsHvypzIRgQYdG0rJey/rZCy6zT/30qDt8Joj7FxzGNLSwXbeZqJOMqDurp7ra4hgbw==", "dev": true, "dependencies": { "@open-draft/until": "^1.0.3", "@types/debug": "^4.1.7", "@xmldom/xmldom": "^0.8.3", "debug": "^4.3.3", - "headers-polyfill": "^3.1.0", + "headers-polyfill": "3.2.5", "outvariant": "^1.2.1", "strict-event-emitter": "^0.2.4", "web-encoding": "^1.1.5" @@ -6758,9 +6758,9 @@ "dev": true }, "node_modules/@types/dompurify": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.4.tgz", - "integrity": "sha512-1Jk8S/IRzNSbwQRbuGuLFHviwxQ8pX81ZEW3INY9432Cwb4VedkBYan8gSIXVLOLHBtimOmUTEYphjRVmo+30g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz", + "integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==", "dependencies": { "@types/trusted-types": "*" } @@ -7156,9 +7156,9 @@ "dev": true }, "node_modules/@types/uuid": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.2.tgz", - "integrity": "sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==" + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz", + "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==" }, "node_modules/@types/ws": { "version": "7.4.7", @@ -9779,9 +9779,9 @@ } }, "node_modules/@xmldom/xmldom": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.7.tgz", - "integrity": "sha512-sI1Ly2cODlWStkINzqGrZ8K6n+MTSbAeQnAipGyL+KZCXuHaRlj2gyyy8B/9MvsFFqN7XHryQnB2QwhzvJXovg==", + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", "dev": true, "engines": { "node": ">=10.0.0" @@ -11658,15 +11658,6 @@ } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", @@ -12123,9 +12114,9 @@ "dev": true }, "node_modules/element-internals-polyfill": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/element-internals-polyfill/-/element-internals-polyfill-1.3.7.tgz", - "integrity": "sha512-sM3tzpNW3nEE8l0m7EbRsWCF6tiqHipON7Vqu3LJtuU2IFNOnFTO0djAGcLVO/KvIUCqnOZrugg9jBTSlYjPMg==" + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/element-internals-polyfill/-/element-internals-polyfill-1.3.9.tgz", + "integrity": "sha512-ti2fHL8rXbz5/pu50Nu45EXvORWtx1g1xWUQuZORkszbvCxosPEeHDeGzfvaaooXJNXNblogMP4atl680r9WyQ==" }, "node_modules/emoji-regex": { "version": "10.2.1", @@ -14292,9 +14283,9 @@ } }, "node_modules/headers-polyfill": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.1.2.tgz", - "integrity": "sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.2.5.tgz", + "integrity": "sha512-tUCGvt191vNSQgttSyJoibR+VO+I6+iCHIUdhzEMJKE+EAL8BwCN7fUOZlY4ofOelNHsK+gEjxB/B+9N3EWtdA==", "dev": true }, "node_modules/homedir-polyfill": { @@ -16472,14 +16463,14 @@ } }, "node_modules/marked": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.0.tgz", - "integrity": "sha512-VZjm0PM5DMv7WodqOUps3g6Q7dmxs9YGiFUZ7a2majzQTTCgX+6S6NAJHPvOhgFBzYz8s4QZKWWMfZKFmsfOgA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-11.1.0.tgz", + "integrity": "sha512-fvKJWAPEafVj1dwGwcPI5mBB/0pvViL6NlCbNDG1HOIRwwAU/jeMoFxfbRLuirO1wRH7m4yPvBqD/O1wyWvayw==", "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 16" + "node": ">= 18" } }, "node_modules/marky": { @@ -17459,9 +17450,9 @@ "dev": true }, "node_modules/monaco-editor": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.44.0.tgz", - "integrity": "sha512-5SmjNStN6bSuSE5WPT2ZV+iYn1/yI9sd4Igtk23ChvqB7kDk9lZbB9F5frsuvpB+2njdIeGGFf2G4gbE6rCC9Q==" + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.45.0.tgz", + "integrity": "sha512-mjv1G1ZzfEE3k9HZN0dQ2olMdwIfaeAAjFiwNprLfYNRSz7ctv9XuCT7gPtBGrMUeV1/iZzYKj17Khu1hxoHOA==" }, "node_modules/mri": { "version": "1.2.0", @@ -17479,22 +17470,22 @@ "dev": true }, "node_modules/msw": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/msw/-/msw-1.2.3.tgz", - "integrity": "sha512-Fqy/TaLKR32x4IkMwudJHJysBzVM/v/lSoMPS9f3QaHLOmb3xHN9YurSUnRt+2eEvNXLjVPij1wMBQtLmTbKsg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/msw/-/msw-1.3.2.tgz", + "integrity": "sha512-wKLhFPR+NitYTkQl5047pia0reNGgf0P6a1eTnA5aNlripmiz0sabMvvHcicE8kQ3/gZcI0YiPFWmYfowfm3lA==", "dev": true, "hasInstallScript": true, "dependencies": { "@mswjs/cookies": "^0.2.2", - "@mswjs/interceptors": "^0.17.5", + "@mswjs/interceptors": "^0.17.10", "@open-draft/until": "^1.0.3", "@types/cookie": "^0.4.1", "@types/js-levenshtein": "^1.1.1", - "chalk": "4.1.1", + "chalk": "^4.1.1", "chokidar": "^3.4.2", "cookie": "^0.4.2", - "graphql": "^15.0.0 || ^16.0.0", - "headers-polyfill": "^3.1.2", + "graphql": "^16.8.1", + "headers-polyfill": "3.2.5", "inquirer": "^8.2.0", "is-node-process": "^1.2.0", "js-levenshtein": "^1.1.6", @@ -17516,7 +17507,7 @@ "url": "https://opencollective.com/mswjs" }, "peerDependencies": { - "typescript": ">= 4.4.x <= 5.1.x" + "typescript": ">= 4.4.x <= 5.2.x" }, "peerDependenciesMeta": { "typescript": { @@ -18428,9 +18419,9 @@ } }, "node_modules/outvariant": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.0.tgz", - "integrity": "sha512-AlWY719RF02ujitly7Kk/0QlV+pXGFDHrHf9O2OKqyqgBieaPOIeuSkL8sRK6j2WK+/ZAURq2kZsY0d8JapUiw==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.2.tgz", + "integrity": "sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==", "dev": true }, "node_modules/p-limit": { @@ -18841,9 +18832,9 @@ } }, "node_modules/playwright-msw": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/playwright-msw/-/playwright-msw-3.0.0.tgz", - "integrity": "sha512-AsxozFPFI16d1oop4yuaSKIonAQm3BpCnXWGdooDmaGlGsMpB4IndU+v+9FDZ9HrKLBK5XK2h2fTKoZsTSzXUg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/playwright-msw/-/playwright-msw-3.0.1.tgz", + "integrity": "sha512-w2bVjt7kPIThOQF9OS/1vDDs0HsQfV9inxMVSUv74x/zhCcrgzVN47xpPk84okf3OcCRHHBJKq8sNeBfCDyhMg==", "dev": true, "dependencies": { "@mswjs/cookies": "^1.1.0", @@ -19843,12 +19834,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, "node_modules/requireindex": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", @@ -20335,12 +20320,6 @@ "node": ">= 0.8.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, "node_modules/set-cookie-parser": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", @@ -21245,14 +21224,14 @@ "dev": true }, "node_modules/tinymce": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.7.3.tgz", - "integrity": "sha512-J7WmYIi/gt1RvZ6Ap2oQiUjzAoiS9pfV+d4GnKuZuPu8agmlAEAInNmMvMjfCNBzHv4JnZXY7qlHUAI0IuYQVA==" + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.8.2.tgz", + "integrity": "sha512-Lho79o2Y1Yn+XdlTEkHTEkEmzwYWTXz7IUsvPwxJF3VTtgHUIAAuBab29kik+f2KED3rZvQavr9D7sHVMJ9x4A==" }, "node_modules/tinymce-i18n": { - "version": "23.8.7", - "resolved": "https://registry.npmjs.org/tinymce-i18n/-/tinymce-i18n-23.8.7.tgz", - "integrity": "sha512-VIWuHdwzWFJzHxOLd5Ao7Fj/W2fKajQxI5dzJc2M2k6l0LCTtfnGQkK47ADlU7Yttqbd1QlcJt1yfi957/EAtw==" + "version": "23.12.4", + "resolved": "https://registry.npmjs.org/tinymce-i18n/-/tinymce-i18n-23.12.4.tgz", + "integrity": "sha512-EIbYrJBasx7T2iZxJ2jQT1xz0ET+PKi/Fzv6KPte0suu1MrCVBYw3Thsne1TCzPbcashajevmFX5z2wQlXqssQ==" }, "node_modules/title-case": { "version": "3.0.3", @@ -22108,9 +22087,13 @@ } }, "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -22749,174 +22732,50 @@ } }, "node_modules/web-component-analyzer": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/web-component-analyzer/-/web-component-analyzer-2.0.0-next.5.tgz", - "integrity": "sha512-QaQwuwFaBuwc7RwX0KdR9bc57s9Jqj+PcekIt3c7WXRY4vGOr/rjyG8YWuT2R7KmGBh+KrCdY/KynMlWRCVR3w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/web-component-analyzer/-/web-component-analyzer-2.0.0.tgz", + "integrity": "sha512-UEvwfpD+XQw99sLKiH5B1T4QwpwNyWJxp59cnlRwFfhUW6JsQpw5jMeMwi7580sNou8YL3kYoS7BWLm+yJ/jVQ==", "dev": true, "dependencies": { "fast-glob": "^3.2.2", "ts-simple-type": "2.0.0-next.0", - "typescript": "~4.4.3", - "yargs": "^15.3.1" + "typescript": "~5.2.0", + "yargs": "^17.7.2" }, "bin": { "wca": "cli.js", "web-component-analyzer": "cli.js" } }, - "node_modules/web-component-analyzer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/web-component-analyzer/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/web-component-analyzer/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/web-component-analyzer/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/web-component-analyzer/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/web-component-analyzer/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/web-component-analyzer/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/web-component-analyzer/node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, - "node_modules/web-component-analyzer/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/web-component-analyzer/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, "node_modules/web-component-analyzer/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/web-component-analyzer/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" + "node": ">=12" } }, "node_modules/web-encoding": { @@ -23014,12 +22873,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true - }, "node_modules/which-typed-array": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 1e6703e537..f3df7fa2e0 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -135,20 +135,20 @@ }, "dependencies": { "@openid/appauth": "^1.3.1", - "@types/dompurify": "^3.0.4", - "@types/uuid": "^9.0.2", + "@types/dompurify": "^3.0.5", + "@types/uuid": "^9.0.7", "@umbraco-ui/uui": "1.6.0-rc.3", "@umbraco-ui/uui-css": "1.6.0-rc.3", "dompurify": "^3.0.6", - "element-internals-polyfill": "^1.3.7", + "element-internals-polyfill": "^1.3.9", "lit": "^2.8.0", "lodash-es": "4.17.21", - "marked": "^9.1.0", - "monaco-editor": "^0.44.0", + "marked": "^11.1.0", + "monaco-editor": "^0.45.0", "rxjs": "^7.8.1", - "tinymce-i18n": "^23.8.7", - "tinymce": "^6.7.3", - "uuid": "^9.0.0" + "tinymce-i18n": "^23.12.4", + "tinymce": "^6.8.2", + "uuid": "^9.0.1" }, "devDependencies": { "@babel/core": "^7.22.17", @@ -186,9 +186,9 @@ "eslint-plugin-wc": "^2.0.4", "eslint": "^8.56.0", "lucide-static": "^0.290.0", - "msw": "^1.2.3", + "msw": "^1.3.2", "openapi-typescript-codegen": "^0.25.0", - "playwright-msw": "^3.0.0", + "playwright-msw": "^3.0.1", "plop": "^4.0.0", "prettier": "3.0.3", "react-dom": "^18.2.0", @@ -206,7 +206,7 @@ "vite-plugin-static-copy": "^0.17.0", "vite-tsconfig-paths": "^4.2.0", "vite": "^4.4.12", - "web-component-analyzer": "^2.0.0-next.5" + "web-component-analyzer": "^2.0.0" }, "msw": { "workerDirectory": "public" diff --git a/src/Umbraco.Web.UI.Client/public/mockServiceWorker.js b/src/Umbraco.Web.UI.Client/public/mockServiceWorker.js index 36a9927457..51d85eeebf 100644 --- a/src/Umbraco.Web.UI.Client/public/mockServiceWorker.js +++ b/src/Umbraco.Web.UI.Client/public/mockServiceWorker.js @@ -2,7 +2,7 @@ /* tslint:disable */ /** - * Mock Service Worker (1.2.3). + * Mock Service Worker (1.3.2). * @see https://github.com/mswjs/msw * - Please do NOT modify this file. * - Please do NOT serve this file on production. From 7c2cca577cb8bb0ae5423effa975b5834a18a877 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Sat, 16 Dec 2023 09:57:44 +0100 Subject: [PATCH 11/86] set marked to string --- .../components/input-markdown-editor/input-markdown.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-markdown-editor/input-markdown.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-markdown-editor/input-markdown.element.ts index b0b7abe0c5..22ebd381df 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-markdown-editor/input-markdown.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-markdown-editor/input-markdown.element.ts @@ -554,7 +554,7 @@ export class UmbInputMarkdownElement extends FormControlMixin(UmbLitElement) { } renderPreview(markdown: string) { - const markdownAsHtml = marked.parse(markdown); + const markdownAsHtml = marked.parse(markdown) as string; const sanitizedHtml = markdownAsHtml ? DOMPurify.sanitize(markdownAsHtml) : ''; return html` ${unsafeHTML(sanitizedHtml)} `; } From ac0fc7984402185b260be51b87b6e42889deafdb Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Sat, 16 Dec 2023 10:56:37 +0100 Subject: [PATCH 12/86] build(deps-dev): bump vite from 4 to 5 --- src/Umbraco.Web.UI.Client/package-lock.json | 827 +++++++----------- src/Umbraco.Web.UI.Client/package.json | 29 +- .../src/external/monaco-editor/index.ts | 2 +- .../src/rollup.config.js | 10 +- .../src/tsconfig.build.json | 2 +- src/Umbraco.Web.UI.Client/tsconfig.json | 23 +- 6 files changed, 334 insertions(+), 559 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 44f780f893..9fa20c3348 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -33,6 +33,7 @@ "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^5.0.5", "@storybook/addon-a11y": "7.6.5", "@storybook/addon-actions": "7.6.5", "@storybook/addon-essentials": "7.6.5", @@ -45,9 +46,9 @@ "@types/mocha": "^10.0.1", "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^6.14.0", - "@web/dev-server-esbuild": "^0.4.1", - "@web/dev-server-import-maps": "^0.1.1", - "@web/dev-server-rollup": "^0.6.0", + "@web/dev-server-esbuild": "^1.0.1", + "@web/dev-server-import-maps": "^0.2.0", + "@web/dev-server-rollup": "^0.6.1", "@web/test-runner": "^0.18.0", "@web/test-runner-playwright": "^0.11.0", "babel-loader": "^9.1.3", @@ -78,9 +79,9 @@ "tsc-alias": "^1.8.8", "typescript": "^5.3.2", "typescript-json-schema": "^0.62.0", - "vite": "^4.4.12", - "vite-plugin-static-copy": "^0.17.0", - "vite-tsconfig-paths": "^4.2.0", + "vite": "^5.0.10", + "vite-plugin-static-copy": "^1.0.0", + "vite-tsconfig-paths": "^4.2.2", "web-component-analyzer": "^2.0.0" }, "engines": { @@ -2129,9 +2130,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.9.tgz", + "integrity": "sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==", "cpu": [ "arm" ], @@ -2145,9 +2146,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.9.tgz", + "integrity": "sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==", "cpu": [ "arm64" ], @@ -2161,9 +2162,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.9.tgz", + "integrity": "sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==", "cpu": [ "x64" ], @@ -2177,9 +2178,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.9.tgz", + "integrity": "sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==", "cpu": [ "arm64" ], @@ -2193,9 +2194,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.9.tgz", + "integrity": "sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==", "cpu": [ "x64" ], @@ -2209,9 +2210,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.9.tgz", + "integrity": "sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==", "cpu": [ "arm64" ], @@ -2225,9 +2226,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.9.tgz", + "integrity": "sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==", "cpu": [ "x64" ], @@ -2241,9 +2242,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.9.tgz", + "integrity": "sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==", "cpu": [ "arm" ], @@ -2257,9 +2258,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.9.tgz", + "integrity": "sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==", "cpu": [ "arm64" ], @@ -2273,9 +2274,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.9.tgz", + "integrity": "sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==", "cpu": [ "ia32" ], @@ -2289,9 +2290,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.9.tgz", + "integrity": "sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==", "cpu": [ "loong64" ], @@ -2305,9 +2306,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.9.tgz", + "integrity": "sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==", "cpu": [ "mips64el" ], @@ -2321,9 +2322,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.9.tgz", + "integrity": "sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==", "cpu": [ "ppc64" ], @@ -2337,9 +2338,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.9.tgz", + "integrity": "sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==", "cpu": [ "riscv64" ], @@ -2353,9 +2354,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.9.tgz", + "integrity": "sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==", "cpu": [ "s390x" ], @@ -2369,9 +2370,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.9.tgz", + "integrity": "sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==", "cpu": [ "x64" ], @@ -2385,9 +2386,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.9.tgz", + "integrity": "sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==", "cpu": [ "x64" ], @@ -2401,9 +2402,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.9.tgz", + "integrity": "sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==", "cpu": [ "x64" ], @@ -2417,9 +2418,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.9.tgz", + "integrity": "sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==", "cpu": [ "x64" ], @@ -2433,9 +2434,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.9.tgz", + "integrity": "sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==", "cpu": [ "arm64" ], @@ -2449,9 +2450,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.9.tgz", + "integrity": "sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==", "cpu": [ "ia32" ], @@ -2465,9 +2466,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.9.tgz", + "integrity": "sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==", "cpu": [ "x64" ], @@ -4124,6 +4125,27 @@ } } }, + "node_modules/@rollup/plugin-replace": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz", + "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, "node_modules/@rollup/pluginutils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", @@ -8786,36 +8808,166 @@ } }, "node_modules/@web/dev-server-esbuild": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@web/dev-server-esbuild/-/dev-server-esbuild-0.4.1.tgz", - "integrity": "sha512-oUrxo7ggxeaWuQafu5bgiAJFatA+YEeYhgkUMB2CHq/SVleKgyPgQCqx42eVBJ2uWMyI1YWSpKtNueCmocwQzw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@web/dev-server-esbuild/-/dev-server-esbuild-1.0.1.tgz", + "integrity": "sha512-EoLLFuv5Y47pqY1IJBcGZswzkqJd+/vN4BDI3oYq8p9dDE9EuQVkC7vweAUkH7vDzI7xUp+f0UzJeQcj9t7zNQ==", "dev": true, "dependencies": { "@mdn/browser-compat-data": "^4.0.0", - "@web/dev-server-core": "^0.5.1", - "esbuild": "^0.16 || ^0.17", + "@web/dev-server-core": "^0.7.0", + "esbuild": "^0.19.5", "parse5": "^6.0.1", "ua-parser-js": "^1.0.33" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@web/dev-server-esbuild/node_modules/@web/dev-server-core": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.0.tgz", + "integrity": "sha512-1FJe6cJ3r0x0ZmxY/FnXVduQD4lKX7QgYhyS6N+VmIpV+tBU4sGRbcrmeoYeY+nlnPa6p2oNuonk3X5ln/W95g==", + "dev": true, + "dependencies": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/dev-server-esbuild/node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true + }, + "node_modules/@web/dev-server-esbuild/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "dev": true, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@web/dev-server-esbuild/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/@web/dev-server-import-maps": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@web/dev-server-import-maps/-/dev-server-import-maps-0.1.1.tgz", - "integrity": "sha512-Et/uswWE2K9tFLM2xNArsvoDtFmBPyFrwJRm5O5ls5u0F3ZNE8vXk4kUONakillQ/041uSE30wIfesljl1ZKsg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@web/dev-server-import-maps/-/dev-server-import-maps-0.2.0.tgz", + "integrity": "sha512-+Z4mNGJqHo370ZFmPl83O4BqpPzQDjprfLO3AwsOZck9x94LcAVmVsC7fnet1DQRR11x9M7FNliS6mmkZv26TQ==", "dev": true, "dependencies": { "@import-maps/resolve": "^1.0.1", "@types/parse5": "^6.0.1", - "@web/dev-server-core": "^0.5.1", - "@web/parse5-utils": "^2.0.0", + "@web/dev-server-core": "^0.7.0", + "@web/parse5-utils": "^2.1.0", "parse5": "^6.0.1", "picomatch": "^2.2.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@web/dev-server-import-maps/node_modules/@web/dev-server-core": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.0.tgz", + "integrity": "sha512-1FJe6cJ3r0x0ZmxY/FnXVduQD4lKX7QgYhyS6N+VmIpV+tBU4sGRbcrmeoYeY+nlnPa6p2oNuonk3X5ln/W95g==", + "dev": true, + "dependencies": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/dev-server-import-maps/node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true + }, + "node_modules/@web/dev-server-import-maps/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "dev": true, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@web/dev-server-import-maps/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/@web/dev-server-rollup": { @@ -12314,9 +12466,9 @@ } }, "node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.9.tgz", + "integrity": "sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==", "dev": true, "hasInstallScript": true, "bin": { @@ -12326,28 +12478,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "@esbuild/android-arm": "0.19.9", + "@esbuild/android-arm64": "0.19.9", + "@esbuild/android-x64": "0.19.9", + "@esbuild/darwin-arm64": "0.19.9", + "@esbuild/darwin-x64": "0.19.9", + "@esbuild/freebsd-arm64": "0.19.9", + "@esbuild/freebsd-x64": "0.19.9", + "@esbuild/linux-arm": "0.19.9", + "@esbuild/linux-arm64": "0.19.9", + "@esbuild/linux-ia32": "0.19.9", + "@esbuild/linux-loong64": "0.19.9", + "@esbuild/linux-mips64el": "0.19.9", + "@esbuild/linux-ppc64": "0.19.9", + "@esbuild/linux-riscv64": "0.19.9", + "@esbuild/linux-s390x": "0.19.9", + "@esbuild/linux-x64": "0.19.9", + "@esbuild/netbsd-x64": "0.19.9", + "@esbuild/openbsd-x64": "0.19.9", + "@esbuild/sunos-x64": "0.19.9", + "@esbuild/win32-arm64": "0.19.9", + "@esbuild/win32-ia32": "0.19.9", + "@esbuild/win32-x64": "0.19.9" } }, "node_modules/esbuild-plugin-alias": { @@ -17608,9 +17760,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -19101,9 +19253,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", "dev": true, "funding": [ { @@ -19120,7 +19272,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -22204,29 +22356,29 @@ } }, "node_modules/vite": { - "version": "4.4.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.12.tgz", - "integrity": "sha512-KtPlUbWfxzGVul8Nut8Gw2Qe8sBzWY+8QVc5SL8iRFnpnrcoCaNlzO40c1R6hPmcdTwIPEDkq0Y9+27a5tVbdQ==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz", + "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==", "dev": true, "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.0.0 || >=20.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": ">= 14", + "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", @@ -22259,9 +22411,9 @@ } }, "node_modules/vite-plugin-static-copy": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-0.17.0.tgz", - "integrity": "sha512-2HpNbHfDt8SDy393AGXh9llHkc8FJMQkI8s3T5WsH3SWLMO+f5cFIyPErl4yGKU9Uh3Vaqsd4lHZYTf042fQ2A==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-1.0.0.tgz", + "integrity": "sha512-kMlrB3WDtC5GzFedNIPkpjnOAr8M11PfWOiUaONrUZ3AqogTsOmIhTt6w7Fh311wl8pN81ld7sfuOEogFJ9N8A==", "dev": true, "dependencies": { "chokidar": "^3.5.3", @@ -22270,16 +22422,16 @@ "picocolors": "^1.0.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0" + "vite": "^5.0.0" } }, "node_modules/vite-tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.2.tgz", + "integrity": "sha512-dq0FjyxHHDnp0uS3P12WEOX2W7NeuLzX9AWP38D7Zw2CTbFErapwQVlCiT5DMJcVWKQ1MMdTe92PZl/rBQ7qcw==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -22295,409 +22447,18 @@ } } }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.14.tgz", - "integrity": "sha512-blODaaL+lngG5bdK/t4qZcQvq2BBqrABmYwqPPcS5VRxrCSGHb9R/rA3fqxh7R18I7WU4KKv+NYkt22FDfalcg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.14.tgz", - "integrity": "sha512-rZ2v+Luba5/3D6l8kofWgTnqE+qsC/L5MleKIKFyllHTKHrNBMqeRCnZI1BtRx8B24xMYxeU32iIddRQqMsOsg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.14.tgz", - "integrity": "sha512-qSwh8y38QKl+1Iqg+YhvCVYlSk3dVLk9N88VO71U4FUjtiSFylMWK3Ugr8GC6eTkkP4Tc83dVppt2n8vIdlSGg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.14.tgz", - "integrity": "sha512-9Hl2D2PBeDYZiNbnRKRWuxwHa9v5ssWBBjisXFkVcSP5cZqzZRFBUWEQuqBHO4+PKx4q4wgHoWtfQ1S7rUqJ2Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.14.tgz", - "integrity": "sha512-ZnI3Dg4ElQ6tlv82qLc/UNHtFsgZSKZ7KjsUNAo1BF1SoYDjkGKHJyCrYyWjFecmXpvvG/KJ9A/oe0H12odPLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.14.tgz", - "integrity": "sha512-h3OqR80Da4oQCIa37zl8tU5MwHQ7qgPV0oVScPfKJK21fSRZEhLE4IIVpmcOxfAVmqjU6NDxcxhYaM8aDIGRLw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.14.tgz", - "integrity": "sha512-ha4BX+S6CZG4BoH9tOZTrFIYC1DH13UTCRHzFc3GWX74nz3h/N6MPF3tuR3XlsNjMFUazGgm35MPW5tHkn2lzQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.14.tgz", - "integrity": "sha512-5+7vehI1iqru5WRtJyU2XvTOvTGURw3OZxe3YTdE9muNNIdmKAVmSHpB3Vw2LazJk2ifEdIMt/wTWnVe5V98Kg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.14.tgz", - "integrity": "sha512-IXORRe22In7U65NZCzjwAUc03nn8SDIzWCnfzJ6t/8AvGx5zBkcLfknI+0P+hhuftufJBmIXxdSTbzWc8X/V4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.14.tgz", - "integrity": "sha512-BfHlMa0nibwpjG+VXbOoqJDmFde4UK2gnW351SQ2Zd4t1N3zNdmUEqRkw/srC1Sa1DRBE88Dbwg4JgWCbNz/FQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.14.tgz", - "integrity": "sha512-j2/Ex++DRUWIAaUDprXd3JevzGtZ4/d7VKz+AYDoHZ3HjJzCyYBub9CU1wwIXN+viOP0b4VR3RhGClsvyt/xSw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.14.tgz", - "integrity": "sha512-qn2+nc+ZCrJmiicoAnJXJJkZWt8Nwswgu1crY7N+PBR8ChBHh89XRxj38UU6Dkthl2yCVO9jWuafZ24muzDC/A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.14.tgz", - "integrity": "sha512-aGzXzd+djqeEC5IRkDKt3kWzvXoXC6K6GyYKxd+wsFJ2VQYnOWE954qV2tvy5/aaNrmgPTb52cSCHFE+Z7Z0yg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.14.tgz", - "integrity": "sha512-8C6vWbfr0ygbAiMFLS6OPz0BHvApkT2gCboOGV76YrYw+sD/MQJzyITNsjZWDXJwPu9tjrFQOVG7zijRzBCnLw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.14.tgz", - "integrity": "sha512-G/Lf9iu8sRMM60OVGOh94ZW2nIStksEcITkXdkD09/T6QFD/o+g0+9WVyR/jajIb3A0LvBJ670tBnGe1GgXMgw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.14.tgz", - "integrity": "sha512-TBgStYBQaa3EGhgqIDM+ECnkreb0wkcKqL7H6m+XPcGUoU4dO7dqewfbm0mWEQYH3kzFHrzjOFNpSAVzDZRSJw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.14.tgz", - "integrity": "sha512-stvCcjyCQR2lMTroqNhAbvROqRjxPEq0oQ380YdXxA81TaRJEucH/PzJ/qsEtsHgXlWFW6Ryr/X15vxQiyRXVg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.14.tgz", - "integrity": "sha512-apAOJF14CIsN5ht1PA57PboEMsNV70j3FUdxLmA2liZ20gEQnfTG5QU0FhENo5nwbTqCB2O3WDsXAihfODjHYw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.14.tgz", - "integrity": "sha512-fYRaaS8mDgZcGybPn2MQbn1ZNZx+UXFSUoS5Hd2oEnlsyUcr/l3c6RnXf1bLDRKKdLRSabTmyCy7VLQ7VhGdOQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.14.tgz", - "integrity": "sha512-1c44RcxKEJPrVj62XdmYhxXaU/V7auELCmnD+Ri+UCt+AGxTvzxl9uauQhrFso8gj6ZV1DaORV0sT9XSHOAk8Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.14.tgz", - "integrity": "sha512-EXAFttrdAxZkFQmpvcAQ2bywlWUsONp/9c2lcfvPUhu8vXBBenCXpoq9YkUvVP639ld3YGiYx0YUQ6/VQz3Maw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.14.tgz", - "integrity": "sha512-K0QjGbcskx+gY+qp3v4/940qg8JitpXbdxFhRDA1aYoNaPff88+aEwoq45aqJ+ogpxQxmU0ZTjgnrQD/w8iiUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.14.tgz", - "integrity": "sha512-uNPj5oHPYmj+ZhSQeYQVFZ+hAlJZbAGOmmILWIqrGvPVlNLbyOvU5Bu6Woi8G8nskcx0vwY0iFoMPrzT86Ko+w==", + "node_modules/vite/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.14", - "@esbuild/android-arm64": "0.18.14", - "@esbuild/android-x64": "0.18.14", - "@esbuild/darwin-arm64": "0.18.14", - "@esbuild/darwin-x64": "0.18.14", - "@esbuild/freebsd-arm64": "0.18.14", - "@esbuild/freebsd-x64": "0.18.14", - "@esbuild/linux-arm": "0.18.14", - "@esbuild/linux-arm64": "0.18.14", - "@esbuild/linux-ia32": "0.18.14", - "@esbuild/linux-loong64": "0.18.14", - "@esbuild/linux-mips64el": "0.18.14", - "@esbuild/linux-ppc64": "0.18.14", - "@esbuild/linux-riscv64": "0.18.14", - "@esbuild/linux-s390x": "0.18.14", - "@esbuild/linux-x64": "0.18.14", - "@esbuild/netbsd-x64": "0.18.14", - "@esbuild/openbsd-x64": "0.18.14", - "@esbuild/sunos-x64": "0.18.14", - "@esbuild/win32-arm64": "0.18.14", - "@esbuild/win32-ia32": "0.18.14", - "@esbuild/win32-x64": "0.18.14" - } - }, - "node_modules/vite/node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/walker": { diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index f3df7fa2e0..ea5a5fbe03 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -146,8 +146,8 @@ "marked": "^11.1.0", "monaco-editor": "^0.45.0", "rxjs": "^7.8.1", - "tinymce-i18n": "^23.12.4", "tinymce": "^6.8.2", + "tinymce-i18n": "^23.12.4", "uuid": "^9.0.1" }, "devDependencies": { @@ -158,54 +158,55 @@ "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^5.0.5", "@storybook/addon-a11y": "7.6.5", "@storybook/addon-actions": "7.6.5", "@storybook/addon-essentials": "7.6.5", "@storybook/addon-links": "7.6.5", "@storybook/mdx2-csf": "^1.1.0", - "@storybook/web-components-vite": "7.6.5", "@storybook/web-components": "7.6.5", + "@storybook/web-components-vite": "7.6.5", "@types/chai": "^4.3.5", "@types/lodash-es": "^4.17.8", "@types/mocha": "^10.0.1", "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^6.14.0", - "@web/dev-server-esbuild": "^0.4.1", - "@web/dev-server-import-maps": "^0.1.1", - "@web/dev-server-rollup": "^0.6.0", - "@web/test-runner-playwright": "^0.11.0", + "@web/dev-server-esbuild": "^1.0.1", + "@web/dev-server-import-maps": "^0.2.0", + "@web/dev-server-rollup": "^0.6.1", "@web/test-runner": "^0.18.0", + "@web/test-runner-playwright": "^0.11.0", "babel-loader": "^9.1.3", + "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-lit-a11y": "^4.1.1", "eslint-plugin-lit": "^1.10.1", + "eslint-plugin-lit-a11y": "^4.1.1", "eslint-plugin-local-rules": "^2.0.1", "eslint-plugin-storybook": "^0.6.15", "eslint-plugin-wc": "^2.0.4", - "eslint": "^8.56.0", "lucide-static": "^0.290.0", "msw": "^1.3.2", "openapi-typescript-codegen": "^0.25.0", "playwright-msw": "^3.0.1", "plop": "^4.0.0", "prettier": "3.0.3", - "react-dom": "^18.2.0", "react": "^18.2.0", + "react-dom": "^18.2.0", "remark-gfm": "^3.0.1", + "rollup": "^4.9.0", "rollup-plugin-esbuild": "^6.1.0", "rollup-plugin-import-css": "^3.3.5", "rollup-plugin-web-worker-loader": "^1.6.1", - "rollup": "^4.9.0", "storybook": "7.6.5", "tiny-glob": "^0.2.9", "tsc-alias": "^1.8.8", - "typescript-json-schema": "^0.62.0", "typescript": "^5.3.2", - "vite-plugin-static-copy": "^0.17.0", - "vite-tsconfig-paths": "^4.2.0", - "vite": "^4.4.12", + "typescript-json-schema": "^0.62.0", + "vite": "^5.0.10", + "vite-plugin-static-copy": "^1.0.0", + "vite-tsconfig-paths": "^4.2.2", "web-component-analyzer": "^2.0.0" }, "msw": { diff --git a/src/Umbraco.Web.UI.Client/src/external/monaco-editor/index.ts b/src/Umbraco.Web.UI.Client/src/external/monaco-editor/index.ts index 190e558dea..ca2e3b1a7c 100644 --- a/src/Umbraco.Web.UI.Client/src/external/monaco-editor/index.ts +++ b/src/Umbraco.Web.UI.Client/src/external/monaco-editor/index.ts @@ -1,6 +1,6 @@ /* eslint-disable */ // @ts-ignore -import styles from 'monaco-editor/min/vs/editor/editor.main.css'; +import styles from 'monaco-editor/min/vs/editor/editor.main.css?inline'; // @ts-ignore import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker.js?worker'; // @ts-ignore diff --git a/src/Umbraco.Web.UI.Client/src/rollup.config.js b/src/Umbraco.Web.UI.Client/src/rollup.config.js index ec60bdea0b..67dacb42aa 100644 --- a/src/Umbraco.Web.UI.Client/src/rollup.config.js +++ b/src/Umbraco.Web.UI.Client/src/rollup.config.js @@ -3,6 +3,7 @@ import commonjs from '@rollup/plugin-commonjs'; import { nodeResolve } from '@rollup/plugin-node-resolve'; import css from 'rollup-plugin-import-css'; import webWorkerLoader from 'rollup-plugin-web-worker-loader'; +import replace from '@rollup/plugin-replace'; import { readdirSync, lstatSync, cpSync, copyFileSync, existsSync, unlinkSync } from 'fs'; import * as globModule from 'tiny-glob'; @@ -78,7 +79,14 @@ const libraries = allowed.map((module) => { commonjs(), nodeResolve({ preferBuiltins: false, browser: true }), webWorkerLoader({ target: 'browser', pattern: /^(.+)\?worker$/ }), - css(), + // Replace the vite specific inline query with nothing so that the import is valid + replace({ + preventAssignment: true, + values: { + '?inline': '', + } + }), + css({ minify: true }), esbuild({ minify: true, sourceMap: true }), ], }; diff --git a/src/Umbraco.Web.UI.Client/src/tsconfig.build.json b/src/Umbraco.Web.UI.Client/src/tsconfig.build.json index 078d969271..fb00a47d31 100644 --- a/src/Umbraco.Web.UI.Client/src/tsconfig.build.json +++ b/src/Umbraco.Web.UI.Client/src/tsconfig.build.json @@ -8,7 +8,7 @@ "composite": true, "sourceMap": false, "declaration": true, - "resolveJsonModule": true + "allowImportingTsExtensions": false }, "include": ["./**/*.ts", "./**/*.json", "./**/*.js"], "exclude": ["./**/*.test.ts", "./**/*.stories.ts", "tsconfig.json", "rollup.config.js"] diff --git a/src/Umbraco.Web.UI.Client/tsconfig.json b/src/Umbraco.Web.UI.Client/tsconfig.json index 3747bafb49..5daea1d3fb 100644 --- a/src/Umbraco.Web.UI.Client/tsconfig.json +++ b/src/Umbraco.Web.UI.Client/tsconfig.json @@ -1,23 +1,28 @@ { "compilerOptions": { "module": "esnext", - "target": "esnext", + "target": "ES2020", "lib": ["es2020", "dom", "dom.iterable"], - "noEmit": true, "outDir": "./types", - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", - "isolatedModules": true, "allowSyntheticDefaultImports": true, "experimentalDecorators": true, "forceConsistentCasingInFileNames": true, "useDefineForClassFields": false, - "skipLibCheck": true, - "resolveJsonModule": true, "baseUrl": ".", "incremental": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "paths": { // TODO: can we combine these of multiple tsconfigs so each package can hold their own? // APPS From 16d26a75b24ea12aa4c3ae8c74c2e41c251456e7 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Sat, 16 Dec 2023 10:56:37 +0100 Subject: [PATCH 13/86] build(deps-dev): bump vite from 4 to 5 --- src/Umbraco.Web.UI.Client/package-lock.json | 827 +++++++----------- src/Umbraco.Web.UI.Client/package.json | 29 +- .../src/external/monaco-editor/index.ts | 2 +- .../src/rollup.config.js | 10 +- .../src/tsconfig.build.json | 2 +- src/Umbraco.Web.UI.Client/tsconfig.json | 23 +- 6 files changed, 334 insertions(+), 559 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 44f780f893..9fa20c3348 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -33,6 +33,7 @@ "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^5.0.5", "@storybook/addon-a11y": "7.6.5", "@storybook/addon-actions": "7.6.5", "@storybook/addon-essentials": "7.6.5", @@ -45,9 +46,9 @@ "@types/mocha": "^10.0.1", "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^6.14.0", - "@web/dev-server-esbuild": "^0.4.1", - "@web/dev-server-import-maps": "^0.1.1", - "@web/dev-server-rollup": "^0.6.0", + "@web/dev-server-esbuild": "^1.0.1", + "@web/dev-server-import-maps": "^0.2.0", + "@web/dev-server-rollup": "^0.6.1", "@web/test-runner": "^0.18.0", "@web/test-runner-playwright": "^0.11.0", "babel-loader": "^9.1.3", @@ -78,9 +79,9 @@ "tsc-alias": "^1.8.8", "typescript": "^5.3.2", "typescript-json-schema": "^0.62.0", - "vite": "^4.4.12", - "vite-plugin-static-copy": "^0.17.0", - "vite-tsconfig-paths": "^4.2.0", + "vite": "^5.0.10", + "vite-plugin-static-copy": "^1.0.0", + "vite-tsconfig-paths": "^4.2.2", "web-component-analyzer": "^2.0.0" }, "engines": { @@ -2129,9 +2130,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", - "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.9.tgz", + "integrity": "sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==", "cpu": [ "arm" ], @@ -2145,9 +2146,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", - "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.9.tgz", + "integrity": "sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==", "cpu": [ "arm64" ], @@ -2161,9 +2162,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", - "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.9.tgz", + "integrity": "sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==", "cpu": [ "x64" ], @@ -2177,9 +2178,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", - "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.9.tgz", + "integrity": "sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==", "cpu": [ "arm64" ], @@ -2193,9 +2194,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", - "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.9.tgz", + "integrity": "sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==", "cpu": [ "x64" ], @@ -2209,9 +2210,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", - "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.9.tgz", + "integrity": "sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==", "cpu": [ "arm64" ], @@ -2225,9 +2226,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", - "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.9.tgz", + "integrity": "sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==", "cpu": [ "x64" ], @@ -2241,9 +2242,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", - "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.9.tgz", + "integrity": "sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==", "cpu": [ "arm" ], @@ -2257,9 +2258,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", - "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.9.tgz", + "integrity": "sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==", "cpu": [ "arm64" ], @@ -2273,9 +2274,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", - "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.9.tgz", + "integrity": "sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==", "cpu": [ "ia32" ], @@ -2289,9 +2290,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", - "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.9.tgz", + "integrity": "sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==", "cpu": [ "loong64" ], @@ -2305,9 +2306,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", - "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.9.tgz", + "integrity": "sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==", "cpu": [ "mips64el" ], @@ -2321,9 +2322,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", - "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.9.tgz", + "integrity": "sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==", "cpu": [ "ppc64" ], @@ -2337,9 +2338,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", - "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.9.tgz", + "integrity": "sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==", "cpu": [ "riscv64" ], @@ -2353,9 +2354,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", - "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.9.tgz", + "integrity": "sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==", "cpu": [ "s390x" ], @@ -2369,9 +2370,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", - "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.9.tgz", + "integrity": "sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==", "cpu": [ "x64" ], @@ -2385,9 +2386,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", - "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.9.tgz", + "integrity": "sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==", "cpu": [ "x64" ], @@ -2401,9 +2402,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", - "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.9.tgz", + "integrity": "sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==", "cpu": [ "x64" ], @@ -2417,9 +2418,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", - "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.9.tgz", + "integrity": "sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==", "cpu": [ "x64" ], @@ -2433,9 +2434,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", - "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.9.tgz", + "integrity": "sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==", "cpu": [ "arm64" ], @@ -2449,9 +2450,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", - "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.9.tgz", + "integrity": "sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==", "cpu": [ "ia32" ], @@ -2465,9 +2466,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", - "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.9.tgz", + "integrity": "sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==", "cpu": [ "x64" ], @@ -4124,6 +4125,27 @@ } } }, + "node_modules/@rollup/plugin-replace": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.5.tgz", + "integrity": "sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, "node_modules/@rollup/pluginutils": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", @@ -8786,36 +8808,166 @@ } }, "node_modules/@web/dev-server-esbuild": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@web/dev-server-esbuild/-/dev-server-esbuild-0.4.1.tgz", - "integrity": "sha512-oUrxo7ggxeaWuQafu5bgiAJFatA+YEeYhgkUMB2CHq/SVleKgyPgQCqx42eVBJ2uWMyI1YWSpKtNueCmocwQzw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@web/dev-server-esbuild/-/dev-server-esbuild-1.0.1.tgz", + "integrity": "sha512-EoLLFuv5Y47pqY1IJBcGZswzkqJd+/vN4BDI3oYq8p9dDE9EuQVkC7vweAUkH7vDzI7xUp+f0UzJeQcj9t7zNQ==", "dev": true, "dependencies": { "@mdn/browser-compat-data": "^4.0.0", - "@web/dev-server-core": "^0.5.1", - "esbuild": "^0.16 || ^0.17", + "@web/dev-server-core": "^0.7.0", + "esbuild": "^0.19.5", "parse5": "^6.0.1", "ua-parser-js": "^1.0.33" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@web/dev-server-esbuild/node_modules/@web/dev-server-core": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.0.tgz", + "integrity": "sha512-1FJe6cJ3r0x0ZmxY/FnXVduQD4lKX7QgYhyS6N+VmIpV+tBU4sGRbcrmeoYeY+nlnPa6p2oNuonk3X5ln/W95g==", + "dev": true, + "dependencies": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/dev-server-esbuild/node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true + }, + "node_modules/@web/dev-server-esbuild/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "dev": true, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@web/dev-server-esbuild/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/@web/dev-server-import-maps": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@web/dev-server-import-maps/-/dev-server-import-maps-0.1.1.tgz", - "integrity": "sha512-Et/uswWE2K9tFLM2xNArsvoDtFmBPyFrwJRm5O5ls5u0F3ZNE8vXk4kUONakillQ/041uSE30wIfesljl1ZKsg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@web/dev-server-import-maps/-/dev-server-import-maps-0.2.0.tgz", + "integrity": "sha512-+Z4mNGJqHo370ZFmPl83O4BqpPzQDjprfLO3AwsOZck9x94LcAVmVsC7fnet1DQRR11x9M7FNliS6mmkZv26TQ==", "dev": true, "dependencies": { "@import-maps/resolve": "^1.0.1", "@types/parse5": "^6.0.1", - "@web/dev-server-core": "^0.5.1", - "@web/parse5-utils": "^2.0.0", + "@web/dev-server-core": "^0.7.0", + "@web/parse5-utils": "^2.1.0", "parse5": "^6.0.1", "picomatch": "^2.2.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@web/dev-server-import-maps/node_modules/@web/dev-server-core": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.0.tgz", + "integrity": "sha512-1FJe6cJ3r0x0ZmxY/FnXVduQD4lKX7QgYhyS6N+VmIpV+tBU4sGRbcrmeoYeY+nlnPa6p2oNuonk3X5ln/W95g==", + "dev": true, + "dependencies": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@web/dev-server-import-maps/node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true + }, + "node_modules/@web/dev-server-import-maps/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "dev": true, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@web/dev-server-import-maps/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/@web/dev-server-rollup": { @@ -12314,9 +12466,9 @@ } }, "node_modules/esbuild": { - "version": "0.17.19", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", - "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.9.tgz", + "integrity": "sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==", "dev": true, "hasInstallScript": true, "bin": { @@ -12326,28 +12478,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.19", - "@esbuild/android-arm64": "0.17.19", - "@esbuild/android-x64": "0.17.19", - "@esbuild/darwin-arm64": "0.17.19", - "@esbuild/darwin-x64": "0.17.19", - "@esbuild/freebsd-arm64": "0.17.19", - "@esbuild/freebsd-x64": "0.17.19", - "@esbuild/linux-arm": "0.17.19", - "@esbuild/linux-arm64": "0.17.19", - "@esbuild/linux-ia32": "0.17.19", - "@esbuild/linux-loong64": "0.17.19", - "@esbuild/linux-mips64el": "0.17.19", - "@esbuild/linux-ppc64": "0.17.19", - "@esbuild/linux-riscv64": "0.17.19", - "@esbuild/linux-s390x": "0.17.19", - "@esbuild/linux-x64": "0.17.19", - "@esbuild/netbsd-x64": "0.17.19", - "@esbuild/openbsd-x64": "0.17.19", - "@esbuild/sunos-x64": "0.17.19", - "@esbuild/win32-arm64": "0.17.19", - "@esbuild/win32-ia32": "0.17.19", - "@esbuild/win32-x64": "0.17.19" + "@esbuild/android-arm": "0.19.9", + "@esbuild/android-arm64": "0.19.9", + "@esbuild/android-x64": "0.19.9", + "@esbuild/darwin-arm64": "0.19.9", + "@esbuild/darwin-x64": "0.19.9", + "@esbuild/freebsd-arm64": "0.19.9", + "@esbuild/freebsd-x64": "0.19.9", + "@esbuild/linux-arm": "0.19.9", + "@esbuild/linux-arm64": "0.19.9", + "@esbuild/linux-ia32": "0.19.9", + "@esbuild/linux-loong64": "0.19.9", + "@esbuild/linux-mips64el": "0.19.9", + "@esbuild/linux-ppc64": "0.19.9", + "@esbuild/linux-riscv64": "0.19.9", + "@esbuild/linux-s390x": "0.19.9", + "@esbuild/linux-x64": "0.19.9", + "@esbuild/netbsd-x64": "0.19.9", + "@esbuild/openbsd-x64": "0.19.9", + "@esbuild/sunos-x64": "0.19.9", + "@esbuild/win32-arm64": "0.19.9", + "@esbuild/win32-ia32": "0.19.9", + "@esbuild/win32-x64": "0.19.9" } }, "node_modules/esbuild-plugin-alias": { @@ -17608,9 +17760,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -19101,9 +19253,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", "dev": true, "funding": [ { @@ -19120,7 +19272,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -22204,29 +22356,29 @@ } }, "node_modules/vite": { - "version": "4.4.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.12.tgz", - "integrity": "sha512-KtPlUbWfxzGVul8Nut8Gw2Qe8sBzWY+8QVc5SL8iRFnpnrcoCaNlzO40c1R6hPmcdTwIPEDkq0Y9+27a5tVbdQ==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.10.tgz", + "integrity": "sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==", "dev": true, "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.0.0 || >=20.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": ">= 14", + "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", @@ -22259,9 +22411,9 @@ } }, "node_modules/vite-plugin-static-copy": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-0.17.0.tgz", - "integrity": "sha512-2HpNbHfDt8SDy393AGXh9llHkc8FJMQkI8s3T5WsH3SWLMO+f5cFIyPErl4yGKU9Uh3Vaqsd4lHZYTf042fQ2A==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-1.0.0.tgz", + "integrity": "sha512-kMlrB3WDtC5GzFedNIPkpjnOAr8M11PfWOiUaONrUZ3AqogTsOmIhTt6w7Fh311wl8pN81ld7sfuOEogFJ9N8A==", "dev": true, "dependencies": { "chokidar": "^3.5.3", @@ -22270,16 +22422,16 @@ "picocolors": "^1.0.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0" + "vite": "^5.0.0" } }, "node_modules/vite-tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.2.tgz", + "integrity": "sha512-dq0FjyxHHDnp0uS3P12WEOX2W7NeuLzX9AWP38D7Zw2CTbFErapwQVlCiT5DMJcVWKQ1MMdTe92PZl/rBQ7qcw==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -22295,409 +22447,18 @@ } } }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.14.tgz", - "integrity": "sha512-blODaaL+lngG5bdK/t4qZcQvq2BBqrABmYwqPPcS5VRxrCSGHb9R/rA3fqxh7R18I7WU4KKv+NYkt22FDfalcg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.14.tgz", - "integrity": "sha512-rZ2v+Luba5/3D6l8kofWgTnqE+qsC/L5MleKIKFyllHTKHrNBMqeRCnZI1BtRx8B24xMYxeU32iIddRQqMsOsg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.14.tgz", - "integrity": "sha512-qSwh8y38QKl+1Iqg+YhvCVYlSk3dVLk9N88VO71U4FUjtiSFylMWK3Ugr8GC6eTkkP4Tc83dVppt2n8vIdlSGg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.14.tgz", - "integrity": "sha512-9Hl2D2PBeDYZiNbnRKRWuxwHa9v5ssWBBjisXFkVcSP5cZqzZRFBUWEQuqBHO4+PKx4q4wgHoWtfQ1S7rUqJ2Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.14.tgz", - "integrity": "sha512-ZnI3Dg4ElQ6tlv82qLc/UNHtFsgZSKZ7KjsUNAo1BF1SoYDjkGKHJyCrYyWjFecmXpvvG/KJ9A/oe0H12odPLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.14.tgz", - "integrity": "sha512-h3OqR80Da4oQCIa37zl8tU5MwHQ7qgPV0oVScPfKJK21fSRZEhLE4IIVpmcOxfAVmqjU6NDxcxhYaM8aDIGRLw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.14.tgz", - "integrity": "sha512-ha4BX+S6CZG4BoH9tOZTrFIYC1DH13UTCRHzFc3GWX74nz3h/N6MPF3tuR3XlsNjMFUazGgm35MPW5tHkn2lzQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.14.tgz", - "integrity": "sha512-5+7vehI1iqru5WRtJyU2XvTOvTGURw3OZxe3YTdE9muNNIdmKAVmSHpB3Vw2LazJk2ifEdIMt/wTWnVe5V98Kg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.14.tgz", - "integrity": "sha512-IXORRe22In7U65NZCzjwAUc03nn8SDIzWCnfzJ6t/8AvGx5zBkcLfknI+0P+hhuftufJBmIXxdSTbzWc8X/V4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.14.tgz", - "integrity": "sha512-BfHlMa0nibwpjG+VXbOoqJDmFde4UK2gnW351SQ2Zd4t1N3zNdmUEqRkw/srC1Sa1DRBE88Dbwg4JgWCbNz/FQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.14.tgz", - "integrity": "sha512-j2/Ex++DRUWIAaUDprXd3JevzGtZ4/d7VKz+AYDoHZ3HjJzCyYBub9CU1wwIXN+viOP0b4VR3RhGClsvyt/xSw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.14.tgz", - "integrity": "sha512-qn2+nc+ZCrJmiicoAnJXJJkZWt8Nwswgu1crY7N+PBR8ChBHh89XRxj38UU6Dkthl2yCVO9jWuafZ24muzDC/A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.14.tgz", - "integrity": "sha512-aGzXzd+djqeEC5IRkDKt3kWzvXoXC6K6GyYKxd+wsFJ2VQYnOWE954qV2tvy5/aaNrmgPTb52cSCHFE+Z7Z0yg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.14.tgz", - "integrity": "sha512-8C6vWbfr0ygbAiMFLS6OPz0BHvApkT2gCboOGV76YrYw+sD/MQJzyITNsjZWDXJwPu9tjrFQOVG7zijRzBCnLw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.14.tgz", - "integrity": "sha512-G/Lf9iu8sRMM60OVGOh94ZW2nIStksEcITkXdkD09/T6QFD/o+g0+9WVyR/jajIb3A0LvBJ670tBnGe1GgXMgw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.14.tgz", - "integrity": "sha512-TBgStYBQaa3EGhgqIDM+ECnkreb0wkcKqL7H6m+XPcGUoU4dO7dqewfbm0mWEQYH3kzFHrzjOFNpSAVzDZRSJw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.14.tgz", - "integrity": "sha512-stvCcjyCQR2lMTroqNhAbvROqRjxPEq0oQ380YdXxA81TaRJEucH/PzJ/qsEtsHgXlWFW6Ryr/X15vxQiyRXVg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.14.tgz", - "integrity": "sha512-apAOJF14CIsN5ht1PA57PboEMsNV70j3FUdxLmA2liZ20gEQnfTG5QU0FhENo5nwbTqCB2O3WDsXAihfODjHYw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.14.tgz", - "integrity": "sha512-fYRaaS8mDgZcGybPn2MQbn1ZNZx+UXFSUoS5Hd2oEnlsyUcr/l3c6RnXf1bLDRKKdLRSabTmyCy7VLQ7VhGdOQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.14.tgz", - "integrity": "sha512-1c44RcxKEJPrVj62XdmYhxXaU/V7auELCmnD+Ri+UCt+AGxTvzxl9uauQhrFso8gj6ZV1DaORV0sT9XSHOAk8Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.14.tgz", - "integrity": "sha512-EXAFttrdAxZkFQmpvcAQ2bywlWUsONp/9c2lcfvPUhu8vXBBenCXpoq9YkUvVP639ld3YGiYx0YUQ6/VQz3Maw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.14.tgz", - "integrity": "sha512-K0QjGbcskx+gY+qp3v4/940qg8JitpXbdxFhRDA1aYoNaPff88+aEwoq45aqJ+ogpxQxmU0ZTjgnrQD/w8iiUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.18.14", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.14.tgz", - "integrity": "sha512-uNPj5oHPYmj+ZhSQeYQVFZ+hAlJZbAGOmmILWIqrGvPVlNLbyOvU5Bu6Woi8G8nskcx0vwY0iFoMPrzT86Ko+w==", + "node_modules/vite/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.14", - "@esbuild/android-arm64": "0.18.14", - "@esbuild/android-x64": "0.18.14", - "@esbuild/darwin-arm64": "0.18.14", - "@esbuild/darwin-x64": "0.18.14", - "@esbuild/freebsd-arm64": "0.18.14", - "@esbuild/freebsd-x64": "0.18.14", - "@esbuild/linux-arm": "0.18.14", - "@esbuild/linux-arm64": "0.18.14", - "@esbuild/linux-ia32": "0.18.14", - "@esbuild/linux-loong64": "0.18.14", - "@esbuild/linux-mips64el": "0.18.14", - "@esbuild/linux-ppc64": "0.18.14", - "@esbuild/linux-riscv64": "0.18.14", - "@esbuild/linux-s390x": "0.18.14", - "@esbuild/linux-x64": "0.18.14", - "@esbuild/netbsd-x64": "0.18.14", - "@esbuild/openbsd-x64": "0.18.14", - "@esbuild/sunos-x64": "0.18.14", - "@esbuild/win32-arm64": "0.18.14", - "@esbuild/win32-ia32": "0.18.14", - "@esbuild/win32-x64": "0.18.14" - } - }, - "node_modules/vite/node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/walker": { diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index f3df7fa2e0..ea5a5fbe03 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -146,8 +146,8 @@ "marked": "^11.1.0", "monaco-editor": "^0.45.0", "rxjs": "^7.8.1", - "tinymce-i18n": "^23.12.4", "tinymce": "^6.8.2", + "tinymce-i18n": "^23.12.4", "uuid": "^9.0.1" }, "devDependencies": { @@ -158,54 +158,55 @@ "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^5.0.5", "@storybook/addon-a11y": "7.6.5", "@storybook/addon-actions": "7.6.5", "@storybook/addon-essentials": "7.6.5", "@storybook/addon-links": "7.6.5", "@storybook/mdx2-csf": "^1.1.0", - "@storybook/web-components-vite": "7.6.5", "@storybook/web-components": "7.6.5", + "@storybook/web-components-vite": "7.6.5", "@types/chai": "^4.3.5", "@types/lodash-es": "^4.17.8", "@types/mocha": "^10.0.1", "@typescript-eslint/eslint-plugin": "^6.14.0", "@typescript-eslint/parser": "^6.14.0", - "@web/dev-server-esbuild": "^0.4.1", - "@web/dev-server-import-maps": "^0.1.1", - "@web/dev-server-rollup": "^0.6.0", - "@web/test-runner-playwright": "^0.11.0", + "@web/dev-server-esbuild": "^1.0.1", + "@web/dev-server-import-maps": "^0.2.0", + "@web/dev-server-rollup": "^0.6.1", "@web/test-runner": "^0.18.0", + "@web/test-runner-playwright": "^0.11.0", "babel-loader": "^9.1.3", + "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-lit-a11y": "^4.1.1", "eslint-plugin-lit": "^1.10.1", + "eslint-plugin-lit-a11y": "^4.1.1", "eslint-plugin-local-rules": "^2.0.1", "eslint-plugin-storybook": "^0.6.15", "eslint-plugin-wc": "^2.0.4", - "eslint": "^8.56.0", "lucide-static": "^0.290.0", "msw": "^1.3.2", "openapi-typescript-codegen": "^0.25.0", "playwright-msw": "^3.0.1", "plop": "^4.0.0", "prettier": "3.0.3", - "react-dom": "^18.2.0", "react": "^18.2.0", + "react-dom": "^18.2.0", "remark-gfm": "^3.0.1", + "rollup": "^4.9.0", "rollup-plugin-esbuild": "^6.1.0", "rollup-plugin-import-css": "^3.3.5", "rollup-plugin-web-worker-loader": "^1.6.1", - "rollup": "^4.9.0", "storybook": "7.6.5", "tiny-glob": "^0.2.9", "tsc-alias": "^1.8.8", - "typescript-json-schema": "^0.62.0", "typescript": "^5.3.2", - "vite-plugin-static-copy": "^0.17.0", - "vite-tsconfig-paths": "^4.2.0", - "vite": "^4.4.12", + "typescript-json-schema": "^0.62.0", + "vite": "^5.0.10", + "vite-plugin-static-copy": "^1.0.0", + "vite-tsconfig-paths": "^4.2.2", "web-component-analyzer": "^2.0.0" }, "msw": { diff --git a/src/Umbraco.Web.UI.Client/src/external/monaco-editor/index.ts b/src/Umbraco.Web.UI.Client/src/external/monaco-editor/index.ts index 190e558dea..ca2e3b1a7c 100644 --- a/src/Umbraco.Web.UI.Client/src/external/monaco-editor/index.ts +++ b/src/Umbraco.Web.UI.Client/src/external/monaco-editor/index.ts @@ -1,6 +1,6 @@ /* eslint-disable */ // @ts-ignore -import styles from 'monaco-editor/min/vs/editor/editor.main.css'; +import styles from 'monaco-editor/min/vs/editor/editor.main.css?inline'; // @ts-ignore import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker.js?worker'; // @ts-ignore diff --git a/src/Umbraco.Web.UI.Client/src/rollup.config.js b/src/Umbraco.Web.UI.Client/src/rollup.config.js index ec60bdea0b..67dacb42aa 100644 --- a/src/Umbraco.Web.UI.Client/src/rollup.config.js +++ b/src/Umbraco.Web.UI.Client/src/rollup.config.js @@ -3,6 +3,7 @@ import commonjs from '@rollup/plugin-commonjs'; import { nodeResolve } from '@rollup/plugin-node-resolve'; import css from 'rollup-plugin-import-css'; import webWorkerLoader from 'rollup-plugin-web-worker-loader'; +import replace from '@rollup/plugin-replace'; import { readdirSync, lstatSync, cpSync, copyFileSync, existsSync, unlinkSync } from 'fs'; import * as globModule from 'tiny-glob'; @@ -78,7 +79,14 @@ const libraries = allowed.map((module) => { commonjs(), nodeResolve({ preferBuiltins: false, browser: true }), webWorkerLoader({ target: 'browser', pattern: /^(.+)\?worker$/ }), - css(), + // Replace the vite specific inline query with nothing so that the import is valid + replace({ + preventAssignment: true, + values: { + '?inline': '', + } + }), + css({ minify: true }), esbuild({ minify: true, sourceMap: true }), ], }; diff --git a/src/Umbraco.Web.UI.Client/src/tsconfig.build.json b/src/Umbraco.Web.UI.Client/src/tsconfig.build.json index 078d969271..fb00a47d31 100644 --- a/src/Umbraco.Web.UI.Client/src/tsconfig.build.json +++ b/src/Umbraco.Web.UI.Client/src/tsconfig.build.json @@ -8,7 +8,7 @@ "composite": true, "sourceMap": false, "declaration": true, - "resolveJsonModule": true + "allowImportingTsExtensions": false }, "include": ["./**/*.ts", "./**/*.json", "./**/*.js"], "exclude": ["./**/*.test.ts", "./**/*.stories.ts", "tsconfig.json", "rollup.config.js"] diff --git a/src/Umbraco.Web.UI.Client/tsconfig.json b/src/Umbraco.Web.UI.Client/tsconfig.json index 3747bafb49..5daea1d3fb 100644 --- a/src/Umbraco.Web.UI.Client/tsconfig.json +++ b/src/Umbraco.Web.UI.Client/tsconfig.json @@ -1,23 +1,28 @@ { "compilerOptions": { "module": "esnext", - "target": "esnext", + "target": "ES2020", "lib": ["es2020", "dom", "dom.iterable"], - "noEmit": true, "outDir": "./types", - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", - "isolatedModules": true, "allowSyntheticDefaultImports": true, "experimentalDecorators": true, "forceConsistentCasingInFileNames": true, "useDefineForClassFields": false, - "skipLibCheck": true, - "resolveJsonModule": true, "baseUrl": ".", "incremental": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "paths": { // TODO: can we combine these of multiple tsconfigs so each package can hold their own? // APPS From 54bf6e45dbf1c03de673556e965cf2f72fd020b6 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Sat, 16 Dec 2023 11:03:14 +0100 Subject: [PATCH 14/86] add skipLipCheck back --- src/Umbraco.Web.UI.Client/tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/tsconfig.json b/src/Umbraco.Web.UI.Client/tsconfig.json index 5daea1d3fb..c3b12bd025 100644 --- a/src/Umbraco.Web.UI.Client/tsconfig.json +++ b/src/Umbraco.Web.UI.Client/tsconfig.json @@ -10,6 +10,7 @@ "useDefineForClassFields": false, "baseUrl": ".", "incremental": true, + "skipLibCheck": true, /* Bundler mode */ "moduleResolution": "bundler", From 2b759e904b2c8fcbbb12a462613dc224ca7a7cef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 18 Dec 2023 19:34:37 +1300 Subject: [PATCH 15/86] add object type input and repo --- .../src/packages/core/index.ts | 1 + .../src/packages/core/object-type/index.ts | 2 + .../object-type/input-object-type.element.ts | 57 +++++++++++++++++++ .../object-type/object-type.repository.ts | 25 ++++++++ 4 files changed, 85 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/object-type/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/object-type/object-type.repository.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/index.ts index 21661c1e53..e0e9907a0f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/index.ts @@ -42,6 +42,7 @@ export * from './variant/index.js'; export * from './workspace/index.js'; export * from './culture/index.js'; export * from './temporary-file/index.js'; +export * from './object-type/index.js'; const manifests: Array = [ ...conditionManifests, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/object-type/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/index.ts new file mode 100644 index 0000000000..8e0d365e79 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/index.ts @@ -0,0 +1,2 @@ +export * from './object-type.repository.js'; +export * from './input-object-type.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts new file mode 100644 index 0000000000..cdb0995911 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts @@ -0,0 +1,57 @@ +import { html, customElement, property, query, state, nothing } from '@umbraco-cms/backoffice/external/lit'; +import { FormControlMixin, UUISelectElement, UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UmbObjectTypeRepository } from './object-type.repository'; + +@customElement('umb-input-object-type') +export class UmbInputObjectTypeElement extends FormControlMixin(UmbLitElement) { + @query('uui-select') + private select!: UUISelectElement; + + @property() + public set value(value: UUISelectElement['value']) { + this.select.value = value; + } + public get value(): UUISelectElement['value'] { + return this.select.value; + } + + @state() + private _options: UUISelectElement['options'] = []; + + #repository: UmbObjectTypeRepository; + + constructor() { + super(); + + this.#repository = new UmbObjectTypeRepository(this); + + this.#repository.read().then(({ data, error }) => { + if (!data) return; + + this._options = data.items.map((item) => ({ value: item.id, name: item.name ?? '' })); + }); + } + + protected getFormElement() { + return undefined; + } + + #onChange() { + this.dispatchEvent(new CustomEvent('change')); + } + + render() { + return html` `; + } + + static styles = []; +} + +export default UmbInputObjectTypeElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-input-object-type': UmbInputObjectTypeElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/object-type/object-type.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/object-type.repository.ts new file mode 100644 index 0000000000..35a175779e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/object-type.repository.ts @@ -0,0 +1,25 @@ +import { ObjectTypesResource } from '@umbraco-cms/backoffice/backend-api'; +import { UmbBaseController } from '@umbraco-cms/backoffice/class-api'; +import { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbApi } from '@umbraco-cms/backoffice/extension-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +export class UmbObjectTypeRepository extends UmbBaseController implements UmbApi { + #host: UmbControllerHost; + + constructor(host: UmbControllerHost) { + super(host); + + this.#host = host; + } + + async #read() { + return tryExecuteAndNotify(this.#host, ObjectTypesResource.getObjectTypes({})); + } + + async read() { + const { data, error } = await this.#read(); + + return { data, error }; + } +} From 09d18bcc8214090eff703618cd47e9222e977bb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Mon, 18 Dec 2023 19:34:47 +1300 Subject: [PATCH 16/86] use object type input --- ...pe-workspace-view-relation-type.element.ts | 39 ++++--------------- 1 file changed, 7 insertions(+), 32 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts index 046ed210d1..070f8a4157 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts @@ -88,43 +88,18 @@ export class UmbRelationTypeWorkspaceViewRelationTypeElement extends UmbLitEleme if (!this.#workspaceContext?.getIsNew() && this._relationType) return html`
${this._relationType.parentObjectTypeName}
`; - //TODO Get the actual list of object types - return html` - >`; + return html` + + `; } #renderChildProperty() { if (!this.#workspaceContext?.getIsNew() && this._relationType) - return html`
${this._relationType.parentObjectTypeName}
`; + return html`
${this._relationType.childObjectTypeName}
`; - //TODO Get the actual list of object types - return html` - `; + return html` + + `; } static styles = [ From dc77ca2f50f226eabd9f39389c3103ac3ddfc196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 19 Dec 2023 19:43:10 +1300 Subject: [PATCH 17/86] fix lint --- .../packages/core/object-type/input-object-type.element.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts index cdb0995911..3d24c0a152 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/object-type/input-object-type.element.ts @@ -1,7 +1,7 @@ -import { html, customElement, property, query, state, nothing } from '@umbraco-cms/backoffice/external/lit'; -import { FormControlMixin, UUISelectElement, UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; +import { UmbObjectTypeRepository } from './object-type.repository.js'; +import { html, customElement, property, query, state } from '@umbraco-cms/backoffice/external/lit'; +import { FormControlMixin, UUISelectElement } from '@umbraco-cms/backoffice/external/uui'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; -import { UmbObjectTypeRepository } from './object-type.repository'; @customElement('umb-input-object-type') export class UmbInputObjectTypeElement extends FormControlMixin(UmbLitElement) { From 298c62eb7b4203fded31ad5c9e3c45950f2ebd85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Tue, 2 Jan 2024 17:04:25 +1300 Subject: [PATCH 18/86] wip --- .../repository/relation-type.repository.ts | 15 +++++++ .../repository/relation.repository.ts | 39 ++++++++++++++++++ .../sources/relation-type.server.data.ts | 20 +++++++++ .../sources/relation.server.data.ts | 41 +++++++++++++++++++ .../relation-type-workspace.context.ts | 4 ++ 5 files changed, 119 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation.repository.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation.server.data.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts index fae1dc1e66..3ebe61d241 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts @@ -59,6 +59,21 @@ export class UmbRelationTypeRepository return this.#detailDataSource.createScaffold(parentId); } + async requestRelationsById(id: string) { + await this.#init; + + // TODO: should we show a notification if the id is missing? + // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? + if (!id) { + throw new Error('Id is missing'); + } + + const { data, error } = await this.#detailDataSource.readRelations(id); + debugger; + + return { data, error }; + } + async requestById(id: string) { await this.#init; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation.repository.ts new file mode 100644 index 0000000000..6ad4eadf1d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation.repository.ts @@ -0,0 +1,39 @@ +import { UmbRelationServerDataSource } from './sources/relation.server.data.js'; +import { type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { UmbBaseController } from '@umbraco-cms/backoffice/class-api'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; +import { UmbApi } from '@umbraco-cms/backoffice/extension-api'; + +export class UmbRelationRepository extends UmbBaseController implements UmbApi { + #init!: Promise; + + #detailDataSource: UmbRelationServerDataSource; + #notificationContext?: UmbNotificationContext; + + constructor(host: UmbControllerHost) { + super(host); + + // TODO: figure out how spin up get the correct data source + this.#detailDataSource = new UmbRelationServerDataSource(this._host); + + this.#init = Promise.all([ + this.consumeContext(UMB_NOTIFICATION_CONTEXT_TOKEN, (instance) => { + this.#notificationContext = instance; + }).asPromise(), + ]); + } + + async requestById(id: string) { + await this.#init; + + // TODO: should we show a notification if the id is missing? + // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? + if (!id) { + throw new Error('Id is missing'); + } + + const { data, error } = await this.#detailDataSource.read(id); + + return { data, error }; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts index ced4b404f6..f12cddfb2f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -4,6 +4,7 @@ import { RelationTypeResponseModel, CreateRelationTypeRequestModel, UpdateRelationTypeRequestModel, + RelationResource, } from '@umbraco-cms/backoffice/backend-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; @@ -49,6 +50,25 @@ export class UmbRelationTypeServerDataSource ); } + /** + * Fetches a Relation Type with the given id from the server + * @param {string} id + * @return {*} + * @memberof UmbRelationTypeServerDataSource + */ + async readRelations(id: string) { + if (!id) { + throw new Error('Id is missing'); + } + + return tryExecuteAndNotify( + this.#host, + RelationResource.getRelationTypeById({ + id, + }), + ); + } + /** * Creates a new Relation Type scaffold * @param {(string | null)} parentId diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation.server.data.ts new file mode 100644 index 0000000000..c9490ee2ca --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation.server.data.ts @@ -0,0 +1,41 @@ +import { RelationResource } from '@umbraco-cms/backoffice/backend-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +/** + * A data source for the Relation that fetches data from the server + * @export + * @class UmbRelationServerDataSource + * @implements {RepositoryDetailDataSource} + */ +export class UmbRelationServerDataSource { + #host: UmbControllerHost; + + /** + * Creates an instance of UmbRelationServerDataSource. + * @param {UmbControllerHost} host + * @memberof UmbRelationServerDataSource + */ + constructor(host: UmbControllerHost) { + this.#host = host; + } + + /** + * Fetches relations by the given id from the server + * @param {string} id + * @return {*} + * @memberof UmbRelationServerDataSource + */ + async read(id: string) { + if (!id) { + throw new Error('Id is missing'); + } + + return tryExecuteAndNotify( + this.#host, + RelationResource.getRelationTypeById({ + id, + }), + ); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts index 07c6993695..299c36a583 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -24,6 +24,10 @@ export class UmbRelationTypeWorkspaceContext async load(id: string) { const { data } = await this.repository.requestById(id); + const { data: relations } = await this.repository.requestRelationsById(id); + + debugger; + if (data) { this.setIsNew(false); this.#data.update(data); From cda8ede2c6ea70cf2550870457c03a6533f8348d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 3 Jan 2024 19:10:06 +1300 Subject: [PATCH 19/86] cleanup --- .../repository/relation-type.repository.ts | 1 - .../workspace/relation-type-workspace.context.ts | 9 +++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts index 3ebe61d241..2b9af764ed 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts @@ -69,7 +69,6 @@ export class UmbRelationTypeRepository } const { data, error } = await this.#detailDataSource.readRelations(id); - debugger; return { data, error }; } diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts index 299c36a583..82ef1403d0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts @@ -24,10 +24,6 @@ export class UmbRelationTypeWorkspaceContext async load(id: string) { const { data } = await this.repository.requestById(id); - const { data: relations } = await this.repository.requestRelationsById(id); - - debugger; - if (data) { this.setIsNew(false); this.#data.update(data); @@ -41,6 +37,11 @@ export class UmbRelationTypeWorkspaceContext this.#data.next(data); } + async getRelations() { + //TODO: How do we test this? + return await this.repository.requestRelationsById(this.getEntityId()); + } + getData() { return this.#data.getValue(); } From 72706c62ae3f646a2bfa2396f3d4705ee8bad6af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Wed, 3 Jan 2024 19:13:50 +1300 Subject: [PATCH 20/86] fix build --- .../repository/sources/relation-type.server.data.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts index f12cddfb2f..2e91fb1006 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts @@ -82,6 +82,8 @@ export class UmbRelationTypeServerDataSource alias: '', isBidirectional: false, isDependency: false, + path: '', + isSystemRelationType: false, }; return { data }; From bc09e08e5cb5787ce3ee0bd249576ce5383cbcf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 4 Jan 2024 16:49:57 +1300 Subject: [PATCH 21/86] update import map --- src/Umbraco.Web.UI.Client/package.json | 3 ++- src/Umbraco.Web.UI.Client/tsconfig.json | 3 ++- src/Umbraco.Web.UI.Client/web-test-runner.config.mjs | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index f3df7fa2e0..ad577347e0 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -62,7 +62,8 @@ "./data-type": "./dist-cms/packages/core/data-type/index.js", "./language": "./dist-cms/packages/settings/languages/index.js", "./logviewer": "./dist-cms/packages/settings/logviewer/index.js", - "./relation-type": "./dist-cms/packages/settings/relation-types/index.js", + "./relation-type": "./dist-cms/packages/relations/relation-types/index.js", + "./relation": "./dist-cms/packages/relations/relations/index.js", "./tags": "./dist-cms/packages/tags/index.js", "./static-file": "./dist-cms/packages/static-file/index.js", "./partial-view": "./dist-cms/packages/templating/partial-views/index.js", diff --git a/src/Umbraco.Web.UI.Client/tsconfig.json b/src/Umbraco.Web.UI.Client/tsconfig.json index 3747bafb49..723fc5b01c 100644 --- a/src/Umbraco.Web.UI.Client/tsconfig.json +++ b/src/Umbraco.Web.UI.Client/tsconfig.json @@ -87,7 +87,8 @@ "@umbraco-cms/backoffice/data-type": ["./src/packages/core/data-type/index.ts"], "@umbraco-cms/backoffice/language": ["./src/packages/settings/languages/index.ts"], "@umbraco-cms/backoffice/logviewer": ["src/packages/log-viewer/index.ts"], - "@umbraco-cms/backoffice/relation-type": ["./src/packages/settings/relation-types/index.ts"], + "@umbraco-cms/backoffice/relation-types": ["src/packages/relations/relation-types/index.ts"], + "@umbraco-cms/backoffice/relations": ["src/packages/relations/relations/index.ts"], "@umbraco-cms/backoffice/tags": ["./src/packages/tags/index.ts"], "@umbraco-cms/backoffice/static-file": ["./src/packages/static-file/index.ts"], diff --git a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs index 91b9dc9e89..17cb0ff4e1 100644 --- a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs +++ b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs @@ -106,7 +106,8 @@ export default { '@umbraco-cms/backoffice/data-type': './src/packages/core/data-type/index.ts', '@umbraco-cms/backoffice/language': './src/packages/settings/languages/index.ts', '@umbraco-cms/backoffice/logviewer': './src/packages/settings/logviewer/index.ts', - '@umbraco-cms/backoffice/relation-type': './src/packages/settings/relation-types/index.ts', + '@umbraco-cms/backoffice/relation-type': './src/packages/relations/relation-types/index.ts', + '@umbraco-cms/backoffice/relation': './src/packages/relations/relations/index.ts', '@umbraco-cms/backoffice/tags': './src/packages/tags/index.ts', '@umbraco-cms/backoffice/static-file': './src/packages/static-file/index.ts', '@umbraco-cms/backoffice/partial-view': './src/packages/templating/partial-views/index.ts', From 1047a67e2631f9c8ef6167ff73ee39fc393ce256 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:23:56 +1300 Subject: [PATCH 22/86] add core package --- .../src/apps/backoffice/backoffice.element.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts index 5044f6ccbd..17d532a707 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts @@ -15,6 +15,7 @@ const CORE_PACKAGES = [ import('../../packages/core/umbraco-package.js'), import('../../packages/settings/umbraco-package.js'), import('../../packages/documents/umbraco-package.js'), + import('../../packages/relations/umbraco-package.js'), import('../../packages/media/umbraco-package.js'), import('../../packages/members/umbraco-package.js'), import('../../packages/dictionary/umbraco-package.js'), From 0760e6d743faf9435a5cb5b668f0ba65bca4941e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:24:19 +1300 Subject: [PATCH 23/86] remove relations from settings manifest --- src/Umbraco.Web.UI.Client/src/packages/settings/manifests.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/manifests.ts index 3e1e34d012..0d518e2776 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/manifests.ts @@ -1,7 +1,6 @@ import { manifests as dashboardManifests } from './dashboards/manifests.js'; import { manifests as extensionManifests } from './extensions/manifests.js'; import { manifests as languageManifests } from './languages/manifests.js'; -import { manifests as relationTypeManifests } from './relation-types/manifests.js'; import { manifests as settingsMenuManifests } from './menu.manifests.js'; import { manifests as settingsSectionManifests } from './section.manifests.js'; @@ -9,7 +8,6 @@ export const manifests = [ ...dashboardManifests, ...extensionManifests, ...languageManifests, - ...relationTypeManifests, ...settingsMenuManifests, ...settingsSectionManifests, ]; From 0598272b12deed8d8d9e09e0ff6dc53dc418a27b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Thu, 4 Jan 2024 17:24:41 +1300 Subject: [PATCH 24/86] make relations package --- .../src/packages/relations/index.ts | 4 ++++ .../src/packages/relations/manifests.ts | 4 ++++ .../relation-types/entities.ts | 0 .../relation-types/entity-actions/create.action.ts | 0 .../relation-types/entity-actions/manifests.ts | 0 .../{settings => relations}/relation-types/index.ts | 0 .../relation-types/manifests.ts | 0 .../relation-types/menu-item/manifests.ts | 0 .../relation-types/repository/index.ts | 0 .../relation-types/repository/manifests.ts | 2 +- .../repository/relation-type.repository.ts | 0 .../repository/relation-type.store.ts | 0 .../repository/sources/relation-type.server.data.ts | 0 .../relation-types/tree/index.ts | 0 .../relation-types/tree/manifests.ts | 0 .../tree/relation-type-tree.repository.ts | 0 .../tree/relation-type-tree.server.data-source.ts | 0 .../relation-types/tree/relation-type-tree.store.ts | 0 .../relation-types/tree/types.ts | 0 .../relation-types/workspace/manifests.ts | 0 .../relation-type-workspace-editor.element.ts | 0 .../workspace/relation-type-workspace.context.ts | 0 .../workspace/relation-type-workspace.element.ts | 0 .../workspace/relation-type-workspace.stories.ts | 0 ...ion-type-workspace-view-relation-type.element.ts | 0 ...ion-type-workspace-view-relation-type.stories.ts | 0 ...workspace-view-relation-type-relation.element.ts | 0 ...workspace-view-relation-type-relation.stories.ts | 0 .../src/packages/relations/relations/entities.ts | 1 + .../src/packages/relations/relations/index.ts | 2 ++ .../src/packages/relations/relations/manifests.ts | 3 +++ .../relations/relations/repository/index.ts | 1 + .../relations/relations/repository/manifests.ts | 13 +++++++++++++ .../relations}/repository/relation.repository.ts | 0 .../repository/sources/relation.server.data.ts | 0 .../src/packages/relations/umbraco-package.ts | 9 +++++++++ 36 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/entities.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/entity-actions/create.action.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/entity-actions/manifests.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/index.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/manifests.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/menu-item/manifests.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/repository/index.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/repository/manifests.ts (88%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/repository/relation-type.repository.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/repository/relation-type.store.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/repository/sources/relation-type.server.data.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/tree/index.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/tree/manifests.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/tree/relation-type-tree.repository.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/tree/relation-type-tree.server.data-source.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/tree/relation-type-tree.store.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/tree/types.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/manifests.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/relation-type-workspace-editor.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/relation-type-workspace.context.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/relation-type-workspace.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/relation-type-workspace.stories.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings => relations}/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/relations/entities.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/relations/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/relations/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/manifests.ts rename src/Umbraco.Web.UI.Client/src/packages/{settings/relation-types => relations/relations}/repository/relation.repository.ts (100%) rename src/Umbraco.Web.UI.Client/src/packages/{settings/relation-types => relations/relations}/repository/sources/relation.server.data.ts (100%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/relations/umbraco-package.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/index.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/index.ts new file mode 100644 index 0000000000..2a421f612c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/index.ts @@ -0,0 +1,4 @@ +import './relation-types/index.js'; +import './relations/index.js'; + +export * from './manifests.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/manifests.ts new file mode 100644 index 0000000000..0df7e9bea0 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/manifests.ts @@ -0,0 +1,4 @@ +import { manifests as relationManifests } from './relations/manifests.js'; +import { manifests as relationTypeManifests } from './relation-types/manifests.js'; + +export const manifests = [...relationTypeManifests, ...relationManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entities.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/entities.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entities.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/entities.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/entity-actions/create.action.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/create.action.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/entity-actions/create.action.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/entity-actions/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/entity-actions/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/entity-actions/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/index.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/index.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/menu-item/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/menu-item/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/menu-item/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/menu-item/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/index.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/manifests.ts similarity index 88% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/manifests.ts index aea2595058..0af82d025b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/manifests.ts @@ -1,4 +1,4 @@ -import { UmbRelationTypeRepository } from '../repository/relation-type.repository.js'; +import { UmbRelationTypeRepository } from './relation-type.repository.js'; import { UmbRelationTypeStore } from './relation-type.store.js'; import { ManifestStore, ManifestRepository } from '@umbraco-cms/backoffice/extension-registry'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/relation-type.repository.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.repository.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/relation-type.repository.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.store.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/relation-type.store.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation-type.store.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/relation-type.store.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/sources/relation-type.server.data.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation-type.server.data.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/repository/sources/relation-type.server.data.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/index.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/index.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/relation-type-tree.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/relation-type-tree.repository.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/relation-type-tree.repository.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/relation-type-tree.repository.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/relation-type-tree.server.data-source.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/relation-type-tree.server.data-source.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/relation-type-tree.server.data-source.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/relation-type-tree.server.data-source.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/relation-type-tree.store.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/relation-type-tree.store.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/relation-type-tree.store.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/relation-type-tree.store.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/types.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/types.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/tree/types.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/tree/types.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/manifests.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/manifests.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace-editor.element.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace-editor.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace-editor.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace-editor.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.context.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.context.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.context.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.element.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.stories.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/relation-type-workspace.stories.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type-workspace.stories.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation-type/relation-type-workspace-view-relation-type.stories.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation/workspace-view-relation-type-relation.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/views/relation/workspace-view-relation-type-relation.stories.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/entities.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/entities.ts new file mode 100644 index 0000000000..197d94a6e7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/entities.ts @@ -0,0 +1 @@ +export const UMB_RELATION_ENTITY_TYPE = 'relation'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/index.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/index.ts new file mode 100644 index 0000000000..7bbcc83722 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/index.ts @@ -0,0 +1,2 @@ +export * from './repository/index.js'; +export * from './entities.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/manifests.ts new file mode 100644 index 0000000000..4e1826b900 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/manifests.ts @@ -0,0 +1,3 @@ +import { manifests as repositoryManifests } from './repository/manifests.js'; + +export const manifests = [...repositoryManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/index.ts new file mode 100644 index 0000000000..5a2d860e87 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/index.ts @@ -0,0 +1 @@ +export * from './relation.repository.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/manifests.ts new file mode 100644 index 0000000000..0a8b0eacbb --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/manifests.ts @@ -0,0 +1,13 @@ +import { UmbRelationRepository } from './relation.repository.js'; +import { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry'; + +export const UMB_RELATION_REPOSITORY_ALIAS = 'Umb.Repository.Relation'; + +const repository: ManifestRepository = { + type: 'repository', + alias: UMB_RELATION_REPOSITORY_ALIAS, + name: 'Relation Repository', + api: UmbRelationRepository, +}; + +export const manifests = [repository]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/relation.repository.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/relation.repository.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/relation.repository.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/sources/relation.server.data.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/settings/relation-types/repository/sources/relation.server.data.ts rename to src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/sources/relation.server.data.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/umbraco-package.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/umbraco-package.ts new file mode 100644 index 0000000000..fb27644d7b --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/umbraco-package.ts @@ -0,0 +1,9 @@ +export const name = 'Umbraco.Core.Relations'; +export const extensions = [ + { + name: 'Relations Bundle', + alias: 'Umb.Bundle.Relations', + type: 'bundle', + js: () => import('./manifests.js'), + }, +]; From 24d5de0afa56cf671bd295f6284622d6ad424c0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Fri, 5 Jan 2024 10:52:53 +1300 Subject: [PATCH 25/86] move handlers to new relations folder --- .../src/mocks/browser-handlers.ts | 4 +- .../mocks/handlers/relation-type.handlers.ts | 76 ------------------- .../src/mocks/handlers/relations/index.ts | 1 + .../relation-types/detail.handlers.ts | 47 ++++++++++++ .../relations/relation-types/index.ts | 4 + .../handlers/relations/relation-types/slug.ts | 1 + .../relations/relation-types/tree.handlers.ts | 36 +++++++++ 7 files changed, 91 insertions(+), 78 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relation-type.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/detail.handlers.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/slug.ts create mode 100644 src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/tree.handlers.ts diff --git a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts index cac7ae809b..cc6544084a 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/browser-handlers.ts @@ -1,5 +1,4 @@ import { handlers as dataTypeHandlers } from './handlers/data-type/index.js'; -import { handlers as relationTypeHandlers } from './handlers/relation-type.handlers.js'; import { handlers as documentTypeHandlers } from './handlers/document-type/index.js'; import { handlers as installHandlers } from './handlers/install.handlers.js'; import * as manifestsHandlers from './handlers/manifests.handlers.js'; @@ -11,6 +10,7 @@ import { handlers as telemetryHandlers } from './handlers/telemetry.handlers.js' import { handlers as userGroupsHandlers } from './handlers/user-group/index.js'; import { handlers as examineManagementHandlers } from './handlers/examine-management.handlers.js'; import { handlers as modelsBuilderHandlers } from './handlers/modelsbuilder.handlers.js'; +import { handlers as relationHandlers } from './handlers/relations/index.js'; import { handlers as healthCheckHandlers } from './handlers/health-check.handlers.js'; import { handlers as profilingHandlers } from './handlers/performance-profiling.handlers.js'; import { handlers as documentHandlers } from './handlers/document/index.js'; @@ -58,7 +58,7 @@ const handlers = [ ...profilingHandlers, ...publishedStatusHandlers, ...redirectManagementHandlers, - ...relationTypeHandlers, + ...relationHandlers, ...rteEmbedHandlers, ...scriptHandlers, ...staticFileHandlers, diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relation-type.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relation-type.handlers.ts deleted file mode 100644 index ad208e5d65..0000000000 --- a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relation-type.handlers.ts +++ /dev/null @@ -1,76 +0,0 @@ -const { rest } = window.MockServiceWorker; -import { umbRelationTypeData } from '../data/relation-type.data.js'; -import { umbracoPath } from '@umbraco-cms/backoffice/utils'; - -// TODO: add schema -export const handlers = [ - rest.delete('/umbraco/backoffice/relation-type/:id', async (req, res, ctx) => { - const id = req.params.id as string; - if (!id) return; - - umbRelationTypeData.delete([id]); - - return res(ctx.status(200)); - }), - - rest.get('/umbraco/management/api/v1/tree/relation-type/root', (req, res, ctx) => { - const rootItems = umbRelationTypeData.getTreeRoot(); - const response = { - total: rootItems.length, - items: rootItems, - }; - return res(ctx.status(200), ctx.json(response)); - }), - - rest.get('/umbraco/management/api/v1/tree/relation-type/children', (req, res, ctx) => { - const parentId = req.url.searchParams.get('parentId'); - if (!parentId) return; - - const children = umbRelationTypeData.getTreeItemChildren(parentId); - - const response = { - total: children.length, - items: children, - }; - - return res(ctx.status(200), ctx.json(response)); - }), - - rest.get('/umbraco/management/api/v1/tree/relation-type/item', (req, res, ctx) => { - const ids = req.url.searchParams.getAll('id'); - if (!ids) return; - const items = umbRelationTypeData.getTreeItem(ids); - return res(ctx.status(200), ctx.json(items)); - }), - - rest.get(umbracoPath('/relation-type/:id'), (req, res, ctx) => { - const id = req.params.id as string; - if (!id) return; - - const RelationType = umbRelationTypeData.getById(id); - - return res(ctx.status(200), ctx.json(RelationType)); - }), - - rest.post(umbracoPath('/relation-type/:id'), async (req, res, ctx) => { - const id = req.params.id as string; - if (!id) return; - const data = await req.json(); - if (!data) return; - - umbRelationTypeData.insert(data); - - return res(ctx.status(200)); - }), - - rest.put(umbracoPath('/relation-type/:id'), async (req, res, ctx) => { - const id = req.params.id as string; - if (!id) return; - const data = await req.json(); - if (!data) return; - - umbRelationTypeData.save(id, data); - - return res(ctx.status(200)); - }), -]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/index.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/index.ts new file mode 100644 index 0000000000..4903a21656 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/index.ts @@ -0,0 +1 @@ +export * from './relation-types/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/detail.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/detail.handlers.ts new file mode 100644 index 0000000000..4f7cf607ba --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/detail.handlers.ts @@ -0,0 +1,47 @@ +const { rest } = window.MockServiceWorker; +import { umbRelationTypeData } from '../../../data/relation-type.data.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +// TODO: add schema +export const handlers = [ + rest.delete(umbracoPath(`${UMB_SLUG}/:id`), async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; + + umbRelationTypeData.delete([id]); + + return res(ctx.status(200)); + }), + + rest.get(umbracoPath(`${UMB_SLUG}/:id`), (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; + + const RelationType = umbRelationTypeData.getById(id); + + return res(ctx.status(200), ctx.json(RelationType)); + }), + + rest.post(umbracoPath(`${UMB_SLUG}/:id`), async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; + const data = await req.json(); + if (!data) return; + + umbRelationTypeData.insert(data); + + return res(ctx.status(200)); + }), + + rest.put(umbracoPath(`${UMB_SLUG}/:id`), async (req, res, ctx) => { + const id = req.params.id as string; + if (!id) return; + const data = await req.json(); + if (!data) return; + + umbRelationTypeData.save(id, data); + + return res(ctx.status(200)); + }), +]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/index.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/index.ts new file mode 100644 index 0000000000..865bbcb066 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/index.ts @@ -0,0 +1,4 @@ +import { handlers as detailHandlers } from './detail.handlers.js'; +import { handlers as treeHandlers } from './tree.handlers.js'; + +export const handlers = [...detailHandlers, ...treeHandlers]; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/slug.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/slug.ts new file mode 100644 index 0000000000..16aae5847e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/slug.ts @@ -0,0 +1 @@ +export const UMB_SLUG = '/relation-type'; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/tree.handlers.ts b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/tree.handlers.ts new file mode 100644 index 0000000000..c33fae2727 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/mocks/handlers/relations/relation-types/tree.handlers.ts @@ -0,0 +1,36 @@ +const { rest } = window.MockServiceWorker; +import { umbRelationTypeData } from '../../../data/relation-type.data.js'; +import { UMB_SLUG } from './slug.js'; +import { umbracoPath } from '@umbraco-cms/backoffice/utils'; + +export const handlers = [ + rest.get(umbracoPath(`/tree${UMB_SLUG}/root`), (req, res, ctx) => { + const rootItems = umbRelationTypeData.getTreeRoot(); + const response = { + total: rootItems.length, + items: rootItems, + }; + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get(umbracoPath(`/tree${UMB_SLUG}/children`), (req, res, ctx) => { + const parentId = req.url.searchParams.get('parentId'); + if (!parentId) return; + + const children = umbRelationTypeData.getTreeItemChildren(parentId); + + const response = { + total: children.length, + items: children, + }; + + return res(ctx.status(200), ctx.json(response)); + }), + + rest.get(umbracoPath(`/tree${UMB_SLUG}/item`), (req, res, ctx) => { + const ids = req.url.searchParams.getAll('id'); + if (!ids) return; + const items = umbRelationTypeData.getTreeItem(ids); + return res(ctx.status(200), ctx.json(items)); + }), +]; From 4b8cd3a2d5914e49b25c5d3fad49f1b0eed5aa65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesper=20M=C3=B8ller=20Jensen?= <26099018+JesmoDev@users.noreply.github.com> Date: Fri, 5 Jan 2024 15:17:50 +1300 Subject: [PATCH 26/86] add missing function to repo --- .../repository/relation.repository.ts | 14 +++++++++++++ .../sources/relation.server.data.ts | 20 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/relation.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/relation.repository.ts index 6ad4eadf1d..f3ec9bc63c 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/relation.repository.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/relation.repository.ts @@ -36,4 +36,18 @@ export class UmbRelationRepository extends UmbBaseController implements UmbApi { return { data, error }; } + + async requestChildRelationById(childId: string, relationTypeAlias?: string) { + await this.#init; + + // TODO: should we show a notification if the id is missing? + // Investigate what is best for Acceptance testing, cause in that perspective a thrown error might be the best choice? + if (!childId) { + throw new Error('Id is missing'); + } + + const { data, error } = await this.#detailDataSource.readChildRelations(childId, relationTypeAlias); + + return { data, error }; + } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/sources/relation.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/sources/relation.server.data.ts index c9490ee2ca..9e8845bcb9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/sources/relation.server.data.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/relations/relations/repository/sources/relation.server.data.ts @@ -38,4 +38,24 @@ export class UmbRelationServerDataSource { }), ); } + + /** + * Fetches relations by the given id from the server + * @param {string} childId + * @return {*} + * @memberof UmbRelationServerDataSource + */ + async readChildRelations(childId: string, relationTypeAlias?: string) { + if (!childId) { + throw new Error('Id is missing'); + } + + return tryExecuteAndNotify( + this.#host, + RelationResource.getRelationChildRelationByChildId({ + childId, + relationTypeAlias, + }), + ); + } } From cc852446b0ccb8a354c519d86bc6497cfe5f83a1 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Fri, 5 Jan 2024 15:48:27 +0100 Subject: [PATCH 27/86] audit log and info workspace --- src/Umbraco.Web.UI.Client/package.json | 1 + .../src/apps/backoffice/backoffice.element.ts | 1 + .../src/packages/audit-log/index.ts | 1 + .../src/packages/audit-log/manifests.ts | 3 + .../repository/audit-log.repository.ts | 67 +++++++ .../repository/audit-log.server.data.ts | 80 +++++++++ .../packages/audit-log/repository/index.ts | 2 + .../audit-log/repository/manifests.ts | 13 ++ .../src/packages/audit-log/umbraco-package.ts | 9 + .../history/history-item.element.ts | 2 +- .../document-info-workspace-view.element.ts | 158 ++-------------- ...ent-info-general-workspace-view.element.ts | 0 ...ent-info-history-workspace-view.element.ts | 170 ++++++++++++++++++ .../views/info/history/history-utils.ts | 64 +++++++ ...ument-info-links-workspace-view.element.ts | 0 ...t-info-reference-workspace-view.element.ts | 0 src/Umbraco.Web.UI.Client/tsconfig.json | 1 + .../web-test-runner.config.mjs | 1 + 18 files changed, 432 insertions(+), 141 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/audit-log/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/audit-log/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/audit-log.repository.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/audit-log.server.data.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/audit-log/umbraco-package.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/general/document-info-general-workspace-view.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/history/document-info-history-workspace-view.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/history/history-utils.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/links/document-info-links-workspace-view.element.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/reference/document-info-reference-workspace-view.element.ts diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index f3df7fa2e0..19af4fd69b 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -49,6 +49,7 @@ "./events": "./dist-cms/packages/core/umb-events/index.js", "./repository": "./dist-cms/packages/core/repository/index.js", "./temporary-file": "./dist-cms/packages/core/temporary-file/index.js", + "./audit-log": "./dist-cms/packages/audit-log/index.js", "./dictionary": "./dist-cms/packages/dictionary/dictionary/index.js", "./document": "./dist-cms/packages/documents/documents/index.js", "./document-blueprint": "./dist-cms/packages/documents/document-blueprints/index.js", diff --git a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts index 5044f6ccbd..954fa8d5e5 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.element.ts @@ -12,6 +12,7 @@ import './components/index.js'; // TODO: temp solution to load core packages const CORE_PACKAGES = [ + import('../../packages/audit-log/umbraco-package.js'), import('../../packages/core/umbraco-package.js'), import('../../packages/settings/umbraco-package.js'), import('../../packages/documents/umbraco-package.js'), diff --git a/src/Umbraco.Web.UI.Client/src/packages/audit-log/index.ts b/src/Umbraco.Web.UI.Client/src/packages/audit-log/index.ts new file mode 100644 index 0000000000..3d76f338dd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/audit-log/index.ts @@ -0,0 +1 @@ +export * from './repository/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/audit-log/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/audit-log/manifests.ts new file mode 100644 index 0000000000..4e1826b900 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/audit-log/manifests.ts @@ -0,0 +1,3 @@ +import { manifests as repositoryManifests } from './repository/manifests.js'; + +export const manifests = [...repositoryManifests]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/audit-log.repository.ts b/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/audit-log.repository.ts new file mode 100644 index 0000000000..79796d6350 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/audit-log.repository.ts @@ -0,0 +1,67 @@ +import { UmbAuditLogServerDataSource } from './audit-log.server.data.js'; +import { UmbContextConsumerController } from '@umbraco-cms/backoffice/context-api'; +import { UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; +import { UmbNotificationContext, UMB_NOTIFICATION_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/notification'; +import { AuditTypeModel, DirectionModel } from '@umbraco-cms/backoffice/backend-api'; +import { UmbBaseController } from '@umbraco-cms/backoffice/class-api'; + +export class UmbAuditLogRepository extends UmbBaseController { + #dataSource: UmbAuditLogServerDataSource; + #notificationService?: UmbNotificationContext; + #init; + + constructor(host: UmbControllerHostElement) { + super(host); + this.#dataSource = new UmbAuditLogServerDataSource(host); + + this.#init = new UmbContextConsumerController(host, UMB_NOTIFICATION_CONTEXT_TOKEN, (instance) => { + this.#notificationService = instance; + }).asPromise(); + } + + async getLog({ + orderDirection, + sinceDate, + skip = 0, + take = 100, + }: { + orderDirection?: DirectionModel; + sinceDate?: string; + skip?: number; + take?: number; + }) { + await this.#init; + + return this.#dataSource.getAuditLog({ orderDirection, sinceDate, skip, take }); + } + + async getAuditLogByUnique({ + id, + orderDirection, + skip = 0, + take = 100, + }: { + id: string; + orderDirection?: DirectionModel; + skip?: number; + take?: number; + }) { + await this.#init; + return this.#dataSource.getAuditLogById({ id, orderDirection, skip, take }); + } + + async getAuditLogTypeByLogType({ + logType, + sinceDate, + skip, + take, + }: { + logType: AuditTypeModel; + sinceDate?: string; + skip?: number; + take?: number; + }) { + await this.#init; + return this.#dataSource.getAuditLogTypeByLogType({ logType, sinceDate, skip, take }); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/audit-log.server.data.ts b/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/audit-log.server.data.ts new file mode 100644 index 0000000000..7fbd256231 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/audit-log.server.data.ts @@ -0,0 +1,80 @@ +import { AuditLogResource, DirectionModel, AuditTypeModel } from '@umbraco-cms/backoffice/backend-api'; +import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; +import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources'; + +/** + * A data source for Data Type items that fetches data from the server + * @export + * @class UmbAuditLogServerDataSource + */ +export class UmbAuditLogServerDataSource { + #host: UmbControllerHost; + + /** + * Creates an instance of UmbAuditLogServerDataSource. + * @param {UmbControllerHost} host + * @memberof UmbAuditLogServerDataSource + */ + constructor(host: UmbControllerHost) { + this.#host = host; + } + + /** + * Fetches the items for the given ids from the server + * @param {Array} ids + * @return {*} + * @memberof UmbAuditLogServerDataSource + */ + async getAuditLog({ + orderDirection, + sinceDate, + skip, + take, + }: { + orderDirection?: DirectionModel; + sinceDate?: string; + skip?: number; + take?: number; + }) { + return await tryExecuteAndNotify( + this.#host, + AuditLogResource.getAuditLog({ orderDirection, sinceDate, skip, take }), + ); + } + + async getAuditLogById({ + id, + orderDirection, + sinceDate, + skip, + take, + }: { + id: string; + orderDirection?: DirectionModel; + sinceDate?: string; + skip?: number; + take?: number; + }) { + return await tryExecuteAndNotify( + this.#host, + AuditLogResource.getAuditLogById({ id, orderDirection, sinceDate, skip, take }), + ); + } + + async getAuditLogTypeByLogType({ + logType, + sinceDate, + skip, + take, + }: { + logType: AuditTypeModel; + sinceDate?: string; + skip?: number; + take?: number; + }) { + return await tryExecuteAndNotify( + this.#host, + AuditLogResource.getAuditLogTypeByLogType({ logType, sinceDate, skip, take }), + ); + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/index.ts b/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/index.ts new file mode 100644 index 0000000000..0b87786128 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/index.ts @@ -0,0 +1,2 @@ +export { UMB_AUDIT_LOG_REPOSITORY_ALIAS as AUDIT_LOG_REPOSITORY_ALIAS } from './manifests.js'; +export { UmbAuditLogRepository } from './audit-log.repository.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/manifests.ts new file mode 100644 index 0000000000..072eb15b79 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/audit-log/repository/manifests.ts @@ -0,0 +1,13 @@ +import { UmbAuditLogRepository } from './audit-log.repository.js'; +import type { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry'; + +export const UMB_AUDIT_LOG_REPOSITORY_ALIAS = 'Umb.Repository.AuditLog'; + +const repository: ManifestRepository = { + type: 'repository', + alias: UMB_AUDIT_LOG_REPOSITORY_ALIAS, + name: 'AuditLog Repository', + api: UmbAuditLogRepository, +}; + +export const manifests = [repository]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/audit-log/umbraco-package.ts b/src/Umbraco.Web.UI.Client/src/packages/audit-log/umbraco-package.ts new file mode 100644 index 0000000000..5f4f04e17c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/audit-log/umbraco-package.ts @@ -0,0 +1,9 @@ +export const name = 'Umbraco.Core.AuditLog'; +export const extensions = [ + { + name: 'Audit Log Bundle', + alias: 'Umb.Bundle.AuditLog', + type: 'bundle', + js: () => import('./manifests.js'), + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/history/history-item.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/history/history-item.element.ts index 851f6a5f50..bd8737e579 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/history/history-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/history/history-item.element.ts @@ -43,11 +43,11 @@ export class UmbHistoryItemElement extends UmbLitElement { gap: calc(2 * var(--uui-size-space-5)); align-items: center; } + .slots-wrapper { display: flex; justify-content: space-between; align-items: center; - flex: 1; } slot[name='actions'] { diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-info-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-info-workspace-view.element.ts index c7cc7117e2..40c9267f90 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-info-workspace-view.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-info-workspace-view.element.ts @@ -1,27 +1,15 @@ -import { css, html, nothing, repeat, customElement, state } from '@umbraco-cms/backoffice/external/lit'; -import { UUIPaginationEvent } from '@umbraco-cms/backoffice/external/uui'; +import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UMB_WORKSPACE_CONTEXT } from '@umbraco-cms/backoffice/workspace'; import { UMB_WORKSPACE_MODAL, UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/modal'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; -interface HistoryNode { - userId?: number; - userAvatars?: []; - userName?: string; - timestamp?: string; - comment?: string; - entityType?: string; - logType?: HistoryLogType; - nodeId?: string; - parameters?: string; -} - -type HistoryLogType = 'Publish' | 'Save' | 'Unpublish' | 'ContentVersionEnableCleanup' | 'ContentVersionPreventCleanup'; +import './history/document-info-history-workspace-view.element.js'; @customElement('umb-document-info-workspace-view') export class UmbDocumentInfoWorkspaceViewElement extends UmbLitElement { - @state() - private _historyList: HistoryNode[] = [ + /** Dont delete, need for mock data */ + /*@state() + private _historyList: [] = [ { userId: -1, userAvatars: [], @@ -79,13 +67,7 @@ export class UmbDocumentInfoWorkspaceViewElement extends UmbLitElement { nodeId: '1058', parameters: undefined, }, - ]; - - @state() - private _total?: number; - - @state() - private _currentPage = 1; + ];*/ @state() private _nodeName = ''; @@ -94,7 +76,6 @@ export class UmbDocumentInfoWorkspaceViewElement extends UmbLitElement { private _documentTypeId = ''; private _workspaceContext?: typeof UMB_WORKSPACE_CONTEXT.TYPE; - private itemsPerPage = 10; @state() private _editDocumentTypePath = ''; @@ -130,27 +111,14 @@ export class UmbDocumentInfoWorkspaceViewElement extends UmbLitElement { */ } - #onPageChange(event: UUIPaginationEvent) { - if (this._currentPage === event.target.current) return; - this._currentPage = event.target.current; - //TODO: Run endpoint to get next history parts - } - render() { return html`
${this.#renderLinksSection()} - - - ${repeat( - this._historyList, - (item) => item.timestamp, - (item) => this.#renderHistory(item), - )} - - ${this.#renderHistoryPagination()} - + +
${this.#renderGeneralSection()} @@ -158,7 +126,6 @@ export class UmbDocumentInfoWorkspaceViewElement extends UmbLitElement { } #renderLinksSection() { - //repeat return html`
${this.#renderGeneralSection()} @@ -243,10 +246,10 @@ export class UmbDocumentInfoWorkspaceViewElement extends UmbLitElement { ]; } -export default UmbDocumentInfoWorkspaceViewElement; +export default UmbDocumentWorkspaceViewInfoElement; declare global { interface HTMLElementTagNameMap { - 'umb-document-info-workspace-view': UmbDocumentInfoWorkspaceViewElement; + 'umb-document-workspace-view-info': UmbDocumentWorkspaceViewInfoElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-info-workspace-view.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info.stories.ts similarity index 62% rename from src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-info-workspace-view.stories.ts rename to src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info.stories.ts index 8d47cf36ae..2a1788a0a7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-info-workspace-view.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info.stories.ts @@ -1,7 +1,7 @@ -import './document-info-workspace-view.element.js'; +import './document-workspace-view-info.element.js'; import { Meta, Story } from '@storybook/web-components'; -import type { UmbDocumentInfoWorkspaceViewElement } from './document-info-workspace-view.element.js'; +import type { UmbDocumentWorkspaceViewInfoElement } from './document-workspace-view-info.element.js'; import { html } from '@umbraco-cms/backoffice/external/lit'; // import { data } from '../../../../../../core/mocks/data/document.data.js'; @@ -9,8 +9,8 @@ import { html } from '@umbraco-cms/backoffice/external/lit'; export default { title: 'Workspaces/Documents/Views/Info', - component: 'umb-document-info-workspace-view', - id: 'umb-document-info-workspace-view', + component: 'umb-document-workspace-view-info', + id: 'umb-document-workspace-view-info', decorators: [ (story) => { return html`TODO: make use of mocked workspace context??`; @@ -21,6 +21,6 @@ export default { ], } as Meta; -export const AAAOverview: Story = () => - html` `; +export const AAAOverview: Story = () => + html` `; AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/general/document-info-general-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/general/document-info-general-workspace-view.element.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/links/document-info-links-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/links/document-info-links-workspace-view.element.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/reference/document-info-reference-workspace-view.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/reference/document-info-reference-workspace-view.element.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/history/history-utils.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/utils.ts similarity index 78% rename from src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/history/history-utils.ts rename to src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/utils.ts index 8c21d64b6d..300f9f95fa 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/history/history-utils.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/utils.ts @@ -1,23 +1,28 @@ import { AuditTypeModel } from '@umbraco-cms/backoffice/backend-api'; -interface HistoricStyleMap { +interface HistoryStyleMap { look: 'default' | 'primary' | 'secondary' | 'outline' | 'placeholder'; color: 'default' | 'danger' | 'warning' | 'positive'; } -interface HistoricText { +interface HistoryLocalizeKeys { label: string; desc: string; } -interface HistoricData { - style: HistoricStyleMap; - text: HistoricText; +interface HistoryData { + style: HistoryStyleMap; + text: HistoryLocalizeKeys; } // Return label, color, look, desc -export function HistoricTagAndDescription(type: AuditTypeModel): HistoricData { +/** + * @description Helper function to get look and color for uui-tag and localization keys for the label and description. + * @param type AuditTypeModel + * @returns {HistoricData} + */ +export function HistoryTagStyleAndText(type: AuditTypeModel): HistoryData { switch (type) { case AuditTypeModel.SAVE: return { From ca9ed114bc1ebcc7f3ea89f2fb635eb2db3f2c09 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Tue, 9 Jan 2024 14:06:32 +0100 Subject: [PATCH 48/86] remove --- .../info/document-workspace-view-info-reference.element.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-reference.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-reference.element.ts index 3622af62e0..6f423c604a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-reference.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-reference.element.ts @@ -1,4 +1,4 @@ -import { css, html, customElement, state, property, nothing, repeat } from '@umbraco-cms/backoffice/external/lit'; +import { css, html, customElement, state, nothing, repeat } from '@umbraco-cms/backoffice/external/lit'; import { UUIPaginationEvent } from '@umbraco-cms/backoffice/external/uui'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; @@ -17,8 +17,8 @@ export class UmbDocumentWorkspaceViewInfoReferenceElement extends UmbLitElement @state() private _items?: Array = [ { - nodeId: 'ferewrEW-ewrwerer-ewrwrq', - nodeName: 'sadasdf', + nodeId: '3f23cc76-a645-4032-82b3-c16458e97215', + nodeName: 'hey', nodeType: 'document', nodePublished: true, contentTypeIcon: 'icon-document', From 31465b38660a92c5215ec0f8ffabcbebdf24751b Mon Sep 17 00:00:00 2001 From: leekelleher Date: Tue, 19 Dec 2023 16:11:36 +0000 Subject: [PATCH 49/86] Added `input-document-source` element This is different to `input-document` as it will also contain the DynamicRoot functionality. --- .../documents/documents/components/index.ts | 1 + .../input-document-source.element.ts | 108 ++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document-source/input-document-source.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/index.ts index a644a4c547..ce63360331 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/index.ts @@ -1,2 +1,3 @@ export * from './input-document/input-document.element.js'; export * from './input-document-granular-permission/input-document-granular-permission.element.js'; +export * from './input-document-source/input-document-source.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document-source/input-document-source.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document-source/input-document-source.element.ts new file mode 100644 index 0000000000..188d196417 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document-source/input-document-source.element.ts @@ -0,0 +1,108 @@ +import { UmbDocumentPickerContext } from '../input-document/input-document.context.js'; +import { css, html, customElement, property, state, ifDefined, repeat } from '@umbraco-cms/backoffice/external/lit'; +import { FormControlMixin, UUIButtonElement } from '@umbraco-cms/backoffice/external/uui'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import type { DocumentItemResponseModel } from '@umbraco-cms/backoffice/backend-api'; + +@customElement('umb-input-document-source') +export class UmbInputDocumentSourceElement extends FormControlMixin(UmbLitElement) { + public get nodeId(): string | null | undefined { + return this.#pickerContext.getSelection()[0]; + } + public set nodeId(id: string | null | undefined) { + const selection = id ? [id] : []; + this.#pickerContext.setSelection(selection); + } + + @property() + public set value(id: string) { + this.nodeId = id; + } + + @state() + private _items?: Array; + + #pickerContext = new UmbDocumentPickerContext(this); + + constructor() { + super(); + + this.#pickerContext.max = 1; + + this.observe(this.#pickerContext.selection, (selection) => (super.value = selection.join(','))); + this.observe(this.#pickerContext.selectedItems, (selectedItems) => (this._items = selectedItems)); + } + + protected getFormElement() { + return undefined; + } + + // TODO: Wire up the DynamicRoot picker feature. [LK] + private _openDynamicRootPicker(e: Event) { + console.log('openDynamicRootPicker', e); + const btn = e.target as UUIButtonElement; + btn.color = 'warning'; + btn.label = 'TODO!'; + btn.look = 'primary'; + } + + render() { + return html` + ${this._items + ? html` ${repeat( + this._items, + (item) => item.id, + (item) => this._renderItem(item), + )} + ` + : ''} + ${this.#renderButtons()} + `; + } + + #renderButtons() { + if (this.nodeId) return; + + //TODO: Dynamic paths + return html` + this.#pickerContext.openPicker()} + label=${this.localize.term('contentPicker_defineRootNode')}> + + `; + } + + private _renderItem(item: DocumentItemResponseModel) { + if (!item.id) return; + return html` + + + + this.#pickerContext.openPicker()} label="Edit document ${item.name}" + >Edit + this.#pickerContext.requestRemoveItem(item.id!)} + label="Remove document ${item.name}" + >Remove + + + `; + } + + static styles = [css``]; +} + +export default UmbInputDocumentSourceElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-input-document-source': UmbInputDocumentSourceElement; + } +} From 78715d0bfc1d41923a080f13707be35c97ee522e Mon Sep 17 00:00:00 2001 From: leekelleher Date: Tue, 19 Dec 2023 16:12:24 +0000 Subject: [PATCH 50/86] Added localized keys/terms for the button labels --- src/Umbraco.Web.UI.Client/src/assets/lang/da-dk.ts | 2 ++ src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/da-dk.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/da-dk.ts index df0a6a2e45..d3b00b4443 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/da-dk.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/da-dk.ts @@ -1151,6 +1151,8 @@ export default { }, contentPicker: { allowedItemTypes: 'Du kan kun vælge følgende type(r) dokumenter: %0%', + defineDynamicRoot: 'Definer Dynamisk Udgangspunkt', + defineRootNode: 'Vælg udgangspunkt', pickedTrashedItem: 'Du har valgt et dokument som er slettet eller lagt i papirkurven', pickedTrashedItems: 'Du har valgt dokumenter som er slettede eller lagt i papirkurven', }, diff --git a/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts b/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts index 19de39092d..cfbeba5478 100644 --- a/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts +++ b/src/Umbraco.Web.UI.Client/src/assets/lang/en-us.ts @@ -1148,6 +1148,8 @@ export default { }, contentPicker: { allowedItemTypes: 'You can only select items of type(s): %0%', + defineDynamicRoot: 'Specify a Dynamic Root', + defineRootNode: 'Pick root node', pickedTrashedItem: 'You have picked a content item currently deleted or in the recycle bin', pickedTrashedItems: 'You have picked content items currently deleted or in the recycle bin', }, From 6a9574b18a4bd1fb8c1f4290b1ca48b231a207a9 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Tue, 19 Dec 2023 16:18:15 +0000 Subject: [PATCH 51/86] Updates to `start-node` elements to use the new `input-document-source` element. Extended the `StartNode` type to include the DynamicRoot schema. --- .../input-start-node.element.ts | 64 ++++++++++++++----- ...ditor-ui-tree-picker-start-node.element.ts | 8 ++- 2 files changed, 52 insertions(+), 20 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-start-node/input-start-node.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-start-node/input-start-node.element.ts index d6db6cc9c5..d5392ca592 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-start-node/input-start-node.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-start-node/input-start-node.element.ts @@ -1,16 +1,26 @@ -import { UmbInputDocumentElement } from '@umbraco-cms/backoffice/document'; +import { UmbInputDocumentSourceElement } from '@umbraco-cms/backoffice/document'; import { html, customElement, property, css, state } from '@umbraco-cms/backoffice/external/lit'; import { FormControlMixin, UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbInputMediaElement } from '@umbraco-cms/backoffice/media'; -import { UmbChangeEvent } from '@umbraco-cms/backoffice/event'; +//import { UmbChangeEvent } from '@umbraco-cms/backoffice/event'; export type ContentType = 'content' | 'member' | 'media'; +export type DynamicRootQueryStepType = { + alias: string; + anyOfDocTypeKeys: Array; +}; + +export type DynamicRootType = { + originAlias: string; + querySteps?: Array | null; +}; + export type StartNode = { type?: ContentType; id?: string | null; - query?: string | null; + dynamicRoot?: DynamicRootType | null; }; @customElement('umb-input-start-node') @@ -20,14 +30,21 @@ export class UmbInputStartNodeElement extends FormControlMixin(UmbLitElement) { } private _type: StartNode['type'] = 'content'; + @property() public set type(value: StartNode['type']) { + if (value === undefined) { + value = this._type; + } + const oldValue = this._type; this._options = this._options.map((option) => option.value === value ? { ...option, selected: true } : { ...option, selected: false }, ); + this._type = value; + this.requestUpdate('type', oldValue); } public get type(): StartNode['type'] { @@ -35,30 +52,43 @@ export class UmbInputStartNodeElement extends FormControlMixin(UmbLitElement) { } @property({ attribute: 'node-id' }) - nodeId = ''; + nodeId?: string | null; - @property({ attribute: 'dynamic-path' }) - dynamicPath = ''; + @property({ attribute: false }) + dynamicRoot?: DynamicRootType | null; @state() _options: Array
${this.#renderGeneralSection()} From 08a6baed4e5809eb1491ba596f383103c7b49b5d Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 10 Jan 2024 09:12:39 +0100 Subject: [PATCH 63/86] eslint sort imports --- .../src/apps/installer/database/installer-database.stories.ts | 4 ++-- src/Umbraco.Web.UI.Client/src/mocks/data/document.data.ts | 2 +- .../components/variant-selector/variant-selector.element.ts | 2 +- .../core/data-type/workspace/data-type-workspace.context.ts | 2 +- .../common/clear/property-action-clear.element.ts | 2 +- .../property-dataset/property-dataset-base-context.ts | 2 +- .../src/packages/core/property/property/property.context.ts | 2 +- .../document-property-dataset-context.token.ts | 2 +- .../document-property-dataset-context.ts | 2 +- .../property-editors/tags/property-editor-ui-tags.element.ts | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/apps/installer/database/installer-database.stories.ts b/src/Umbraco.Web.UI.Client/src/apps/installer/database/installer-database.stories.ts index 3bfc558ee4..0620957353 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/installer/database/installer-database.stories.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/installer/database/installer-database.stories.ts @@ -1,10 +1,10 @@ import './installer-database.element.js'; -import { html } from '@umbraco-cms/backoffice/external/lit'; import { Meta, Story } from '@storybook/web-components'; -import type { UmbInstallerDatabaseElement } from './installer-database.element.js'; import { installerContextProvider } from '../shared/utils.story-helpers.js'; +import type { UmbInstallerDatabaseElement } from './installer-database.element.js'; +import { html } from '@umbraco-cms/backoffice/external/lit'; export default { title: 'Apps/Installer/Steps', diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/document.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/document.data.ts index 4cd03fef58..416462c720 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/document.data.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/document.data.ts @@ -2,6 +2,7 @@ import { umbDocumentTypeData } from './document-type/document-type.db.js'; import { umbUserPermissionData } from './user-permission.data.js'; import { UmbEntityData } from './entity.data.js'; import { createDocumentTreeItem } from './utils.js'; +import { UmbMockDocumentTypeModel } from './document-type/document-type.data.js'; import { ContentStateModel, DocumentItemResponseModel, @@ -15,7 +16,6 @@ import { PublishedStateModel, } from '@umbraco-cms/backoffice/backend-api'; import { UMB_DOCUMENT_ENTITY_TYPE } from '@umbraco-cms/backoffice/document'; -import { UmbMockDocumentTypeModel } from './document-type/document-type.data.js'; export const data: Array = [ { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/variant-selector/variant-selector.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/variant-selector/variant-selector.element.ts index 5761e30546..55e5dad438 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/variant-selector/variant-selector.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/variant-selector/variant-selector.element.ts @@ -1,5 +1,5 @@ -import { UMB_PROPERTY_DATASET_CONTEXT, isNameablePropertyDatasetContext } from '@umbraco-cms/backoffice/property'; import { UmbVariantId } from '../../variant/variant-id.class.js'; +import { UMB_PROPERTY_DATASET_CONTEXT, isNameablePropertyDatasetContext } from '@umbraco-cms/backoffice/property'; import { UUIInputElement, UUIInputEvent, UUIPopoverContainerElement } from '@umbraco-cms/backoffice/external/uui'; import { css, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/data-type/workspace/data-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/data-type/workspace/data-type-workspace.context.ts index b3548f52f6..b927146f38 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/data-type/workspace/data-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/data-type/workspace/data-type-workspace.context.ts @@ -1,6 +1,6 @@ -import { UmbPropertyDatasetContext } from '@umbraco-cms/backoffice/property'; import { UmbDataTypeDetailRepository } from '../repository/detail/data-type-detail.repository.js'; import type { UmbDataTypeDetailModel } from '../types.js'; +import { UmbPropertyDatasetContext } from '@umbraco-cms/backoffice/property'; import { UmbInvariantableWorkspaceContextInterface, UmbEditableWorkspaceContextBase, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-action/common/clear/property-action-clear.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-action/common/clear/property-action-clear.element.ts index 9024b440a4..5fed429a1b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-action/common/clear/property-action-clear.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-action/common/clear/property-action-clear.element.ts @@ -1,5 +1,5 @@ -import { UmbPropertyContext, UMB_PROPERTY_CONTEXT } from '@umbraco-cms/backoffice/property'; import type { UmbPropertyAction } from '../../shared/property-action/property-action.interface.js'; +import { UmbPropertyContext, UMB_PROPERTY_CONTEXT } from '@umbraco-cms/backoffice/property'; import { html, customElement, property } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property/property-dataset/property-dataset-base-context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property/property-dataset/property-dataset-base-context.ts index 9f6a32fb01..6536b47d7f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property/property-dataset/property-dataset-base-context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property/property-dataset/property-dataset-base-context.ts @@ -1,9 +1,9 @@ +import type { UmbPropertyValueData } from '../types/property-value-data.type.js'; import { UMB_PROPERTY_DATASET_CONTEXT, type UmbNameablePropertyDatasetContext, type UmbPropertyDatasetContext, } from '@umbraco-cms/backoffice/property'; -import type { UmbPropertyValueData } from '../types/property-value-data.type.js'; import { type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbContextBase } from '@umbraco-cms/backoffice/class-api'; import { UmbArrayState, UmbStringState } from '@umbraco-cms/backoffice/observable-api'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property/property/property.context.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property/property/property.context.ts index 21bb1b1517..ddf15ca5e4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property/property/property.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property/property/property.context.ts @@ -1,6 +1,6 @@ -import { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property'; import { UmbPropertyEditorUiElement } from '../../extension-registry/interfaces/property-editor-ui-element.interface.js'; import { type WorkspacePropertyData } from '../../workspace/types/workspace-property-data.type.js'; +import { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property'; import { UmbVariantId } from '@umbraco-cms/backoffice/variant'; import { type UmbControllerHostElement } from '@umbraco-cms/backoffice/controller-api'; import { UmbBaseController } from '@umbraco-cms/backoffice/class-api'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/property-dataset-context/document-property-dataset-context.token.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/property-dataset-context/document-property-dataset-context.token.ts index 882da08611..b7ddcf95ac 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/property-dataset-context/document-property-dataset-context.token.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/property-dataset-context/document-property-dataset-context.token.ts @@ -1,6 +1,6 @@ -import { UmbPropertyDatasetContext } from '@umbraco-cms/backoffice/property'; import { UMB_DOCUMENT_ENTITY_TYPE } from '../entity.js'; import type { UmbDocumentPropertyDataContext } from './document-property-dataset-context.js'; +import { UmbPropertyDatasetContext } from '@umbraco-cms/backoffice/property'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; export const IsDocumentVariantContext = ( diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/property-dataset-context/document-property-dataset-context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/property-dataset-context/document-property-dataset-context.ts index 24e8b55ac2..951a97ddbe 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/property-dataset-context/document-property-dataset-context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/property-dataset-context/document-property-dataset-context.ts @@ -1,9 +1,9 @@ +import type { UmbDocumentWorkspaceContext } from '../workspace/index.js'; import { UMB_PROPERTY_DATASET_CONTEXT, UmbNameablePropertyDatasetContext, UmbPropertyDatasetContext, } from '@umbraco-cms/backoffice/property'; -import type { UmbDocumentWorkspaceContext } from '../workspace/index.js'; import { DocumentVariantResponseModel, PropertyTypeModelBaseModel } from '@umbraco-cms/backoffice/backend-api'; import { type UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbContextBase } from '@umbraco-cms/backoffice/class-api'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tags/property-editors/tags/property-editor-ui-tags.element.ts b/src/Umbraco.Web.UI.Client/src/packages/tags/property-editors/tags/property-editor-ui-tags.element.ts index 455a1dab21..636d4866f0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tags/property-editors/tags/property-editor-ui-tags.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tags/property-editors/tags/property-editor-ui-tags.element.ts @@ -1,5 +1,5 @@ -import { UMB_PROPERTY_CONTEXT } from '@umbraco-cms/backoffice/property'; import { UmbTagsInputElement } from '../../components/tags-input/tags-input.element.js'; +import { UMB_PROPERTY_CONTEXT } from '@umbraco-cms/backoffice/property'; import { html, customElement, property, state, ifDefined } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import type { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/property-editor'; From 8d538b3c14740269cb11b7179aca323074e25fa7 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Wed, 10 Jan 2024 11:07:36 +0100 Subject: [PATCH 64/86] avatar img and link section --- .../history/history-item.element.ts | 17 ++- .../history/history-list.element.ts | 2 +- ...ent-workspace-view-info-history.element.ts | 46 +++++-- ...t-workspace-view-info-reference.element.ts | 19 ++- .../document-workspace-view-info.element.ts | 116 ++++++------------ 5 files changed, 108 insertions(+), 92 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/history/history-item.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/history/history-item.element.ts index 3a5d2695e7..e9f696d443 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/history/history-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/history/history-item.element.ts @@ -1,4 +1,5 @@ -import { css, html, customElement, property } from '@umbraco-cms/backoffice/external/lit'; +import { UMB_APP_CONTEXT } from '@umbraco-cms/backoffice/app'; +import { css, html, customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @@ -13,10 +14,22 @@ export class UmbHistoryItemElement extends UmbLitElement { @property({ type: String }) detail?: string; + @state() + private _serverUrl?: string; + + constructor() { + super(); + this.consumeContext(UMB_APP_CONTEXT, (instance) => { + this._serverUrl = instance.getServerUrl(); + }); + } + render() { return html` `; } From eda6c6344d322601fe01c971c817524ff550299e Mon Sep 17 00:00:00 2001 From: leekelleher Date: Wed, 10 Jan 2024 12:04:25 +0000 Subject: [PATCH 75/86] Reordered `@property` setter methods to align with supporting Lit 3. --- .../src/packages/core/tree/tree.element.ts | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree.element.ts index 4f6477fde3..368a1db369 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree.element.ts @@ -16,12 +16,12 @@ export type UmbTreeSelectionConfiguration = { @customElement('umb-tree') export class UmbTreeElement extends UmbLitElement { @property({ type: String, reflect: true }) - get alias() { - return this.#treeContext.getTreeAlias(); - } set alias(newVal) { this.#treeContext.setTreeAlias(newVal); } + get alias() { + return this.#treeContext.getTreeAlias(); + } private _selectionConfiguration: UmbTreeSelectionConfiguration = { multiple: false, @@ -30,22 +30,19 @@ export class UmbTreeElement extends UmbLitElement { }; @property({ type: Object }) - get selectionConfiguration(): UmbTreeSelectionConfiguration { - return this._selectionConfiguration; - } set selectionConfiguration(config: UmbTreeSelectionConfiguration) { this._selectionConfiguration = config; this.#treeContext.selection.setMultiple(config.multiple ?? false); this.#treeContext.selection.setSelectable(config.selectable ?? true); this.#treeContext.selection.setSelection(config.selection ?? []); } + get selectionConfiguration(): UmbTreeSelectionConfiguration { + return this._selectionConfiguration; + } // TODO: what is the best name for this functionality? private _hideTreeRoot = false; @property({ type: Boolean, attribute: 'hide-tree-root' }) - get hideTreeRoot() { - return this._hideTreeRoot; - } set hideTreeRoot(newVal: boolean) { const oldVal = this._hideTreeRoot; this._hideTreeRoot = newVal; @@ -55,22 +52,25 @@ export class UmbTreeElement extends UmbLitElement { this.requestUpdate('hideTreeRoot', oldVal); } + get hideTreeRoot() { + return this._hideTreeRoot; + } @property() - get selectableFilter() { - return this.#treeContext.selectableFilter; - } set selectableFilter(newVal) { this.#treeContext.selectableFilter = newVal; } + get selectableFilter() { + return this.#treeContext.selectableFilter; + } @property() - get filter() { - return this.#treeContext.filter; - } set filter(newVal) { this.#treeContext.filter = newVal; } + get filter() { + return this.#treeContext.filter; + } @state() private _items: UmbTreeItemModelBase[] = []; From 6af5e56bd1765a4786a3bc224414454070a46960 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Tue, 19 Dec 2023 17:41:02 +0000 Subject: [PATCH 76/86] Added `umb-property-editor-ui-tree-picker-filter` to filter content-types from the selected start-node. Observes the DataType workspace for changes to the `startNode` configuration. --- .../tree-picker/config/filter/manifests.ts | 14 +++ ...ty-editor-ui-tree-picker-filter.element.ts | 95 +++++++++++++++++++ .../uis/tree-picker/manifests.ts | 7 +- 3 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/manifests.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/manifests.ts new file mode 100644 index 0000000000..f8ab97c236 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/manifests.ts @@ -0,0 +1,14 @@ +import type { ManifestPropertyEditorUi } from '@umbraco-cms/backoffice/extension-registry'; + +export const manifest: ManifestPropertyEditorUi = { + type: 'propertyEditorUi', + alias: 'Umb.PropertyEditorUi.TreePicker.Filter', + name: 'Tree Picker Filter Property Editor UI', + js: () => import('./property-editor-ui-tree-picker-filter.element.js'), + meta: { + label: 'Tree Picker Filter', + icon: 'icon-page-add', + group: 'pickers', + propertyEditorSchemaAlias: '', + }, +}; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts new file mode 100644 index 0000000000..575a616fb9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts @@ -0,0 +1,95 @@ +import { UMB_DATA_TYPE_WORKSPACE_CONTEXT } from '../../../../../data-type/workspace/data-type-workspace.context.js'; +import { UmbDocumentTypeInputElement } from '../../../../../../documents/document-types/components/document-type-input/document-type-input.element.js'; +import { UmbMediaTypeInputElement } from '../../../../../../media/media-types/components/media-type-input/media-type-input.element.js'; +import { StartNode } from '@umbraco-cms/backoffice/components'; +import type { UmbPropertyEditorUiElement } from '@umbraco-cms/backoffice/extension-registry'; +import { customElement, html, property } from '@umbraco-cms/backoffice/external/lit'; +import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; +import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; + +@customElement('umb-property-editor-ui-tree-picker-filter') +export class UmbPropertyEditorUITreePickerFilterElement extends UmbLitElement implements UmbPropertyEditorUiElement { + constructor() { + super(); + + this.consumeContext(UMB_DATA_TYPE_WORKSPACE_CONTEXT, (instance) => { + const workspace = instance; + this.observe(workspace.data, (data) => { + const property = data?.values.find((setting) => setting.alias === 'startNode'); + if (property) { + const startNode = property.value as StartNode; + if (startNode.type) { + this.sourceType = startNode.type; + } + } + }); + }); + } + + @property({ type: Array }) + value?: string[]; + + @property({ attribute: false }) + sourceType: string = 'content'; + + #onChange(event: CustomEvent) { + switch (this.sourceType) { + case 'content': + this.value = (event.target).selectedIds; + break; + case 'media': + this.value = (event.target).selectedIds; + break; + default: + break; + } + + this.dispatchEvent(new CustomEvent('property-value-change')); + } + + render() { + return this.#renderType(); + } + + #renderType() { + switch (this.sourceType) { + case 'content': + return this.#renderTypeContent(); + case 'media': + return this.#renderTypeMedia(); + case 'member': + return this.#renderTypeMember(); + default: + // TODO: Could we make this message to be friendlier? [LK] + return 'No source type found'; + } + } + + #renderTypeContent() { + return html``; + } + + #renderTypeMedia() { + return html``; + } + + #renderTypeMember() { + return html``; + } + + static styles = [UmbTextStyles]; +} + +export default UmbPropertyEditorUITreePickerFilterElement; + +declare global { + interface HTMLElementTagNameMap { + 'umb-property-editor-ui-tree-picker-filter': UmbPropertyEditorUITreePickerFilterElement; + } +} diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/manifests.ts index 4c81dbda44..b45db5e824 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/manifests.ts @@ -1,3 +1,4 @@ +import { manifest as filter } from './config/filter/manifests.js'; import { manifest as startNode } from './config/start-node/manifests.js'; import type { ManifestPropertyEditorUi } from '@umbraco-cms/backoffice/extension-registry'; @@ -22,8 +23,8 @@ const manifest: ManifestPropertyEditorUi = { { alias: 'filter', label: 'Allow items of type', - description: '', - propertyEditorUiAlias: 'Umb.PropertyEditorUi.TreePicker', + description: 'Select the applicable types', + propertyEditorUiAlias: 'Umb.PropertyEditorUi.TreePicker.Filter', }, { alias: 'showOpenButton', @@ -36,6 +37,6 @@ const manifest: ManifestPropertyEditorUi = { }, }; -const config: Array = [startNode]; +const config: Array = [filter, startNode]; export const manifests = [manifest, ...config]; From ac8b9701e719aad639128f44cab86c26822953d3 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Tue, 2 Jan 2024 12:30:53 +0000 Subject: [PATCH 77/86] Moved properties to top of the class ref: https://github.com/umbraco/Umbraco.CMS.Backoffice/pull/1083#discussion_r1434848898 --- .../property-editor-ui-tree-picker-filter.element.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts index 575a616fb9..2941c9d906 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts @@ -3,12 +3,18 @@ import { UmbDocumentTypeInputElement } from '../../../../../../documents/documen import { UmbMediaTypeInputElement } from '../../../../../../media/media-types/components/media-type-input/media-type-input.element.js'; import { StartNode } from '@umbraco-cms/backoffice/components'; import type { UmbPropertyEditorUiElement } from '@umbraco-cms/backoffice/extension-registry'; -import { customElement, html, property } from '@umbraco-cms/backoffice/external/lit'; +import { customElement, html, property, state } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; @customElement('umb-property-editor-ui-tree-picker-filter') export class UmbPropertyEditorUITreePickerFilterElement extends UmbLitElement implements UmbPropertyEditorUiElement { + @property({ type: Array }) + value?: string[]; + + @state() + private sourceType: string = 'content'; + constructor() { super(); @@ -26,11 +32,7 @@ export class UmbPropertyEditorUITreePickerFilterElement extends UmbLitElement im }); } - @property({ type: Array }) - value?: string[]; - @property({ attribute: false }) - sourceType: string = 'content'; #onChange(event: CustomEvent) { switch (this.sourceType) { From 32db24a4915701ee856686c96859f099cff492cd Mon Sep 17 00:00:00 2001 From: leekelleher Date: Tue, 2 Jan 2024 12:33:36 +0000 Subject: [PATCH 78/86] Changed Workspace Context for Property Dataset Context ref: https://github.com/umbraco/Umbraco.CMS.Backoffice/pull/1083#discussion_r1434832644 --- ...ty-editor-ui-tree-picker-filter.element.ts | 44 +++++++++++++------ 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts index 2941c9d906..bee723286a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts @@ -1,38 +1,56 @@ -import { UMB_DATA_TYPE_WORKSPACE_CONTEXT } from '../../../../../data-type/workspace/data-type-workspace.context.js'; import { UmbDocumentTypeInputElement } from '../../../../../../documents/document-types/components/document-type-input/document-type-input.element.js'; import { UmbMediaTypeInputElement } from '../../../../../../media/media-types/components/media-type-input/media-type-input.element.js'; -import { StartNode } from '@umbraco-cms/backoffice/components'; +import type { StartNode } from '@umbraco-cms/backoffice/components'; import type { UmbPropertyEditorUiElement } from '@umbraco-cms/backoffice/extension-registry'; import { customElement, html, property, state } from '@umbraco-cms/backoffice/external/lit'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; +import { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property'; @customElement('umb-property-editor-ui-tree-picker-filter') export class UmbPropertyEditorUITreePickerFilterElement extends UmbLitElement implements UmbPropertyEditorUiElement { + #datasetContext?: typeof UMB_PROPERTY_DATASET_CONTEXT.TYPE; + @property({ type: Array }) value?: string[]; @state() private sourceType: string = 'content'; + #initialized: boolean = false; + constructor() { super(); - this.consumeContext(UMB_DATA_TYPE_WORKSPACE_CONTEXT, (instance) => { - const workspace = instance; - this.observe(workspace.data, (data) => { - const property = data?.values.find((setting) => setting.alias === 'startNode'); - if (property) { - const startNode = property.value as StartNode; - if (startNode.type) { - this.sourceType = startNode.type; - } - } - }); + this.consumeContext(UMB_PROPERTY_DATASET_CONTEXT, (datasetContext) => { + this.#datasetContext = datasetContext; + this._observeProperty(); }); } + private async _observeProperty() { + if (!this.#datasetContext) return; + this.observe( + await this.#datasetContext.propertyValueByAlias('startNode'), + (value) => { + const startNode = value as StartNode; + if (startNode.type) { + // If we had a sourceType before, we can see this as a change and not the initial value, + // so let's reset the value, so we don't carry over content-types to the new source type. + if (this.#initialized && this.sourceType !== startNode.type) { + this.value = []; + } + this.sourceType = startNode.type; + + if (!this.#initialized) { + this.#initialized = true; + } + } + }, + 'observeValue', + ); + } #onChange(event: CustomEvent) { switch (this.sourceType) { From 9775ebd233cf11ade89c7941ea5ea297d2951407 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Tue, 2 Jan 2024 12:34:52 +0000 Subject: [PATCH 79/86] Used friendlier import paths Needed to add exports to the Document/Media Type indexes. --- .../filter/property-editor-ui-tree-picker-filter.element.ts | 4 ++-- .../src/packages/documents/document-types/components/index.ts | 2 ++ .../src/packages/documents/document-types/index.ts | 1 + .../src/packages/media/media-types/components/index.ts | 2 ++ .../src/packages/media/media-types/index.ts | 2 ++ 5 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts index bee723286a..f50fb06ae3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts @@ -1,5 +1,5 @@ -import { UmbDocumentTypeInputElement } from '../../../../../../documents/document-types/components/document-type-input/document-type-input.element.js'; -import { UmbMediaTypeInputElement } from '../../../../../../media/media-types/components/media-type-input/media-type-input.element.js'; +import { UmbDocumentTypeInputElement } from '@umbraco-cms/backoffice/document-type'; +import { UmbMediaTypeInputElement } from '@umbraco-cms/backoffice/media-type'; import type { StartNode } from '@umbraco-cms/backoffice/components'; import type { UmbPropertyEditorUiElement } from '@umbraco-cms/backoffice/extension-registry'; import { customElement, html, property, state } from '@umbraco-cms/backoffice/external/lit'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/components/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/components/index.ts index d0e3e2cad3..9fab8f47f9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/components/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/components/index.ts @@ -1 +1,3 @@ import './document-type-input/document-type-input.element.js'; + +export * from './document-type-input/document-type-input.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/index.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/index.ts index df7eace207..e7337b7678 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/document-types/index.ts @@ -1,6 +1,7 @@ import './components/index.js'; export * from './repository/index.js'; +export * from './components/index.js'; export const UMB_DOCUMENT_TYPE_ROOT_ENTITY_TYPE = 'document-type-root'; export const UMB_DOCUMENT_TYPE_ENTITY_TYPE = 'document-type'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/components/index.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/components/index.ts index 6e336698ee..df9290d984 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/components/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/components/index.ts @@ -1 +1,3 @@ import './media-type-input/media-type-input.element.js'; + +export * from './media-type-input/media-type-input.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/index.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/index.ts index 8cf991d68a..3b232278a9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/index.ts @@ -12,3 +12,5 @@ export { UMB_MEDIA_TYPE_ENTITY_TYPE, UMB_MEDIA_TYPE_FOLDER_ENTITY_TYPE, } from './entity.js'; + +export * from './components/index.js'; From eefa4519335f285d4407fc9d78ec264ccf7c1262 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Tue, 2 Jan 2024 12:35:34 +0000 Subject: [PATCH 80/86] Added placeholder for Member Type input picker Commented out until the `` element is ready. --- .../filter/property-editor-ui-tree-picker-filter.element.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts index f50fb06ae3..b848e911b2 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts @@ -1,5 +1,6 @@ import { UmbDocumentTypeInputElement } from '@umbraco-cms/backoffice/document-type'; import { UmbMediaTypeInputElement } from '@umbraco-cms/backoffice/media-type'; +//import { UmbMemberTypeInputElement } from '@umbraco-cms/backoffice/member-type'; import type { StartNode } from '@umbraco-cms/backoffice/components'; import type { UmbPropertyEditorUiElement } from '@umbraco-cms/backoffice/extension-registry'; import { customElement, html, property, state } from '@umbraco-cms/backoffice/external/lit'; @@ -60,6 +61,10 @@ export class UmbPropertyEditorUITreePickerFilterElement extends UmbLitElement im case 'media': this.value = (event.target).selectedIds; break; + // TODO: Uncomment once the `` element is in place. [LK] + // case 'member': + // this.value = (event.target).selectedIds; + // break; default: break; } From c0b8f1029d8b4ad9ec1923a79fec26c3a386cec2 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Wed, 10 Jan 2024 09:59:50 +0000 Subject: [PATCH 81/86] Renamed "start-node" to "source-picker" e.g. `` --- .../{start-node => source-picker}/manifests.ts | 8 ++++---- ...ditor-ui-tree-picker-source-picker.element.ts} | 10 +++++----- ...editor-ui-tree-picker-source-picker.stories.ts | 15 +++++++++++++++ ...y-editor-ui-tree-picker-source-picker.test.ts} | 10 +++++----- ...ty-editor-ui-tree-picker-start-node.stories.ts | 15 --------------- .../property-editor/uis/tree-picker/manifests.ts | 6 +++--- 6 files changed, 32 insertions(+), 32 deletions(-) rename src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/{start-node => source-picker}/manifests.ts (53%) rename src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/{start-node/property-editor-ui-tree-picker-start-node.element.ts => source-picker/property-editor-ui-tree-picker-source-picker.element.ts} (73%) create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.stories.ts rename src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/{start-node/property-editor-ui-tree-picker-start-node.test.ts => source-picker/property-editor-ui-tree-picker-source-picker.test.ts} (56%) delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.stories.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/start-node/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/manifests.ts similarity index 53% rename from src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/start-node/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/manifests.ts index 6f2287e7ab..fd6e0da2f0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/start-node/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/manifests.ts @@ -2,11 +2,11 @@ import type { ManifestPropertyEditorUi } from '@umbraco-cms/backoffice/extension export const manifest: ManifestPropertyEditorUi = { type: 'propertyEditorUi', - alias: 'Umb.PropertyEditorUi.TreePicker.StartNode', - name: 'Tree Picker Start Node Property Editor UI', - js: () => import('./property-editor-ui-tree-picker-start-node.element.js'), + alias: 'Umb.PropertyEditorUi.TreePicker.SourcePicker', + name: 'Tree Picker Source Picker Property Editor UI', + js: () => import('./property-editor-ui-tree-picker-source-picker.element.js'), meta: { - label: 'Tree Picker Start Node', + label: 'Tree Picker Source Picker', icon: 'icon-page-add', group: 'pickers', propertyEditorSchemaAlias: '', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.element.ts similarity index 73% rename from src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.element.ts index c7c60ef8d1..fc72176aa6 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.element.ts @@ -6,10 +6,10 @@ import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; /** - * @element umb-property-editor-ui-tree-picker-start-node + * @element umb-property-editor-ui-tree-picker-source-picker */ -@customElement('umb-property-editor-ui-tree-picker-start-node') -export class UmbPropertyEditorUITreePickerStartNodeElement extends UmbLitElement implements UmbPropertyEditorUiElement { +@customElement('umb-property-editor-ui-tree-picker-source-picker') +export class UmbPropertyEditorUITreePickerSourcePickerElement extends UmbLitElement implements UmbPropertyEditorUiElement { @property({ type: Object }) value?: StartNode; @@ -38,10 +38,10 @@ export class UmbPropertyEditorUITreePickerStartNodeElement extends UmbLitElement static styles = [UmbTextStyles]; } -export default UmbPropertyEditorUITreePickerStartNodeElement; +export default UmbPropertyEditorUITreePickerSourcePickerElement; declare global { interface HTMLElementTagNameMap { - 'umb-property-editor-ui-tree-picker-start-node': UmbPropertyEditorUITreePickerStartNodeElement; + 'umb-property-editor-ui-tree-picker-source-picker': UmbPropertyEditorUITreePickerSourcePickerElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.stories.ts new file mode 100644 index 0000000000..4da73e7a85 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.stories.ts @@ -0,0 +1,15 @@ +import { Meta, Story } from '@storybook/web-components'; +import type { UmbPropertyEditorUITreePickerSourcePickerElement } from './property-editor-ui-tree-picker-source-picker.element.js'; +import { html } from '@umbraco-cms/backoffice/external/lit'; + +import './property-editor-ui-tree-picker-source-picker.element.js'; + +export default { + title: 'Property Editor UIs/Tree Picker Start Node', + component: 'umb-property-editor-ui-tree-picker-source-picker', + id: 'umb-property-editor-ui-tree-picker-source-pickere', +} as Meta; + +export const AAAOverview: Story = () => + html``; +AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.test.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.test.ts similarity index 56% rename from src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.test.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.test.ts index 7349b7e78b..1ce9777fa8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.test.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.test.ts @@ -1,18 +1,18 @@ import { expect, fixture, html } from '@open-wc/testing'; -import { UmbPropertyEditorUITreePickerStartNodeElement } from './property-editor-ui-tree-picker-start-node.element.js'; +import { UmbPropertyEditorUITreePickerSourcePickerElement } from './property-editor-ui-tree-picker-source-picker.element.js'; import { defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; -describe('UmbPropertyEditorUITreePickerStartNodeElement', () => { - let element: UmbPropertyEditorUITreePickerStartNodeElement; +describe('UmbPropertyEditorUITreePickerSourcePickerElement', () => { + let element: UmbPropertyEditorUITreePickerSourcePickerElement; beforeEach(async () => { element = await fixture(html` - + `); }); it('is defined with its own instance', () => { - expect(element).to.be.instanceOf(UmbPropertyEditorUITreePickerStartNodeElement); + expect(element).to.be.instanceOf(UmbPropertyEditorUITreePickerSourcePickerElement); }); if ((window as any).__UMBRACO_TEST_RUN_A11Y_TEST) { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.stories.ts deleted file mode 100644 index dbd4d37ebb..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/start-node/property-editor-ui-tree-picker-start-node.stories.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Meta, Story } from '@storybook/web-components'; -import type { UmbPropertyEditorUITreePickerStartNodeElement } from './property-editor-ui-tree-picker-start-node.element.js'; -import { html } from '@umbraco-cms/backoffice/external/lit'; - -import './property-editor-ui-tree-picker-start-node.element.js'; - -export default { - title: 'Property Editor UIs/Tree Picker Start Node', - component: 'umb-property-editor-ui-tree-picker-start-node', - id: 'umb-property-editor-ui-tree-picker-start-node', -} as Meta; - -export const AAAOverview: Story = () => - html``; -AAAOverview.storyName = 'Overview'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/manifests.ts index b45db5e824..3bfe28485a 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/manifests.ts @@ -1,5 +1,5 @@ import { manifest as filter } from './config/filter/manifests.js'; -import { manifest as startNode } from './config/start-node/manifests.js'; +import { manifest as sourcePicker } from './config/source-picker/manifests.js'; import type { ManifestPropertyEditorUi } from '@umbraco-cms/backoffice/extension-registry'; const manifest: ManifestPropertyEditorUi = { @@ -18,7 +18,7 @@ const manifest: ManifestPropertyEditorUi = { alias: 'startNode', label: 'Node type', description: '', - propertyEditorUiAlias: 'Umb.PropertyEditorUi.TreePicker.StartNode', + propertyEditorUiAlias: sourcePicker.alias, }, { alias: 'filter', @@ -37,6 +37,6 @@ const manifest: ManifestPropertyEditorUi = { }, }; -const config: Array = [filter, startNode]; +const config: Array = [sourcePicker, filter]; export const manifests = [manifest, ...config]; From bdd06a7effdef3578b8ec672fd81931f4993c7b6 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Wed, 10 Jan 2024 10:16:24 +0000 Subject: [PATCH 82/86] Renamed "filter" to "source-type-picker" e.g. `` --- .../{filter => source-type-picker}/manifests.ts | 8 ++++---- ...itor-ui-tree-picker-source-type-picker.element.ts} | 11 +++++++---- .../core/property-editor/uis/tree-picker/manifests.ts | 6 +++--- 3 files changed, 14 insertions(+), 11 deletions(-) rename src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/{filter => source-type-picker}/manifests.ts (51%) rename src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/{filter/property-editor-ui-tree-picker-filter.element.ts => source-type-picker/property-editor-ui-tree-picker-source-type-picker.element.ts} (87%) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-type-picker/manifests.ts similarity index 51% rename from src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/manifests.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-type-picker/manifests.ts index f8ab97c236..cc098a86bb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-type-picker/manifests.ts @@ -2,11 +2,11 @@ import type { ManifestPropertyEditorUi } from '@umbraco-cms/backoffice/extension export const manifest: ManifestPropertyEditorUi = { type: 'propertyEditorUi', - alias: 'Umb.PropertyEditorUi.TreePicker.Filter', - name: 'Tree Picker Filter Property Editor UI', - js: () => import('./property-editor-ui-tree-picker-filter.element.js'), + alias: 'Umb.PropertyEditorUi.TreePicker.SourceTypePicker', + name: 'Tree Picker Source Type Picker Property Editor UI', + js: () => import('./property-editor-ui-tree-picker-source-type-picker.element.js'), meta: { - label: 'Tree Picker Filter', + label: 'Tree Picker Source Type Picker', icon: 'icon-page-add', group: 'pickers', propertyEditorSchemaAlias: '', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-type-picker/property-editor-ui-tree-picker-source-type-picker.element.ts similarity index 87% rename from src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-type-picker/property-editor-ui-tree-picker-source-type-picker.element.ts index b848e911b2..e51831a4be 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/filter/property-editor-ui-tree-picker-filter.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-type-picker/property-editor-ui-tree-picker-source-type-picker.element.ts @@ -8,8 +8,11 @@ import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UMB_PROPERTY_DATASET_CONTEXT } from '@umbraco-cms/backoffice/property'; -@customElement('umb-property-editor-ui-tree-picker-filter') -export class UmbPropertyEditorUITreePickerFilterElement extends UmbLitElement implements UmbPropertyEditorUiElement { +/** + * @element umb-property-editor-ui-tree-picker-source-type-picker + */ +@customElement('umb-property-editor-ui-tree-picker-source-type-picker') +export class UmbPropertyEditorUITreePickerSourceTypePickerElement extends UmbLitElement implements UmbPropertyEditorUiElement { #datasetContext?: typeof UMB_PROPERTY_DATASET_CONTEXT.TYPE; @property({ type: Array }) @@ -111,10 +114,10 @@ export class UmbPropertyEditorUITreePickerFilterElement extends UmbLitElement im static styles = [UmbTextStyles]; } -export default UmbPropertyEditorUITreePickerFilterElement; +export default UmbPropertyEditorUITreePickerSourceTypePickerElement; declare global { interface HTMLElementTagNameMap { - 'umb-property-editor-ui-tree-picker-filter': UmbPropertyEditorUITreePickerFilterElement; + 'umb-property-editor-ui-tree-picker-source-type-picker': UmbPropertyEditorUITreePickerSourceTypePickerElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/manifests.ts index 3bfe28485a..c459cb5ca5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/manifests.ts @@ -1,5 +1,5 @@ -import { manifest as filter } from './config/filter/manifests.js'; import { manifest as sourcePicker } from './config/source-picker/manifests.js'; +import { manifest as sourceTypePicker } from './config/source-type-picker/manifests.js'; import type { ManifestPropertyEditorUi } from '@umbraco-cms/backoffice/extension-registry'; const manifest: ManifestPropertyEditorUi = { @@ -24,7 +24,7 @@ const manifest: ManifestPropertyEditorUi = { alias: 'filter', label: 'Allow items of type', description: 'Select the applicable types', - propertyEditorUiAlias: 'Umb.PropertyEditorUi.TreePicker.Filter', + propertyEditorUiAlias: sourceTypePicker.alias, }, { alias: 'showOpenButton', @@ -37,6 +37,6 @@ const manifest: ManifestPropertyEditorUi = { }, }; -const config: Array = [sourcePicker, filter]; +const config: Array = [sourcePicker, sourceTypePicker]; export const manifests = [manifest, ...config]; From 8324ec69e35964175742d5ae58e251e7c13c2cff Mon Sep 17 00:00:00 2001 From: leekelleher Date: Wed, 10 Jan 2024 10:25:51 +0000 Subject: [PATCH 83/86] Source Type Picker: enables Member Type Picker --- ...or-ui-tree-picker-source-type-picker.element.ts | 14 ++++++-------- .../members/member-types/components/index.ts | 2 ++ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-type-picker/property-editor-ui-tree-picker-source-type-picker.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-type-picker/property-editor-ui-tree-picker-source-type-picker.element.ts index e51831a4be..50862fa3d7 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-type-picker/property-editor-ui-tree-picker-source-type-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-type-picker/property-editor-ui-tree-picker-source-type-picker.element.ts @@ -1,6 +1,6 @@ import { UmbDocumentTypeInputElement } from '@umbraco-cms/backoffice/document-type'; import { UmbMediaTypeInputElement } from '@umbraco-cms/backoffice/media-type'; -//import { UmbMemberTypeInputElement } from '@umbraco-cms/backoffice/member-type'; +import { UmbMemberTypeInputElement } from '@umbraco-cms/backoffice/member-type'; import type { StartNode } from '@umbraco-cms/backoffice/components'; import type { UmbPropertyEditorUiElement } from '@umbraco-cms/backoffice/extension-registry'; import { customElement, html, property, state } from '@umbraco-cms/backoffice/external/lit'; @@ -64,10 +64,9 @@ export class UmbPropertyEditorUITreePickerSourceTypePickerElement extends UmbLit case 'media': this.value = (event.target).selectedIds; break; - // TODO: Uncomment once the `` element is in place. [LK] - // case 'member': - // this.value = (event.target).selectedIds; - // break; + case 'member': + this.value = (event.target).selectedIds; + break; default: break; } @@ -88,7 +87,6 @@ export class UmbPropertyEditorUITreePickerSourceTypePickerElement extends UmbLit case 'member': return this.#renderTypeMember(); default: - // TODO: Could we make this message to be friendlier? [LK] return 'No source type found'; } } @@ -106,9 +104,9 @@ export class UmbPropertyEditorUITreePickerSourceTypePickerElement extends UmbLit } #renderTypeMember() { - return html``; + .selectedIds=${this.value || []}>`; } static styles = [UmbTextStyles]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-types/components/index.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-types/components/index.ts index eacc86c77b..086cb33bf0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-types/components/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-types/components/index.ts @@ -1 +1,3 @@ import './input-member-type/input-member-type.element.js'; + +export * from './input-member-type/input-member-type.element.js'; From d153d84e14e36d97067324c9db73f1ca4c26c1a9 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Wed, 10 Jan 2024 10:47:57 +0000 Subject: [PATCH 84/86] Renamed "input-start-node" to "input-tree-picker-source" e.g. `` --- .../src/packages/core/components/index.ts | 2 +- .../packages/core/components/input-start-node/index.ts | 1 - .../core/components/input-tree-picker-source/index.ts | 1 + .../input-tree-picker-source.element.ts} | 8 ++++---- ...roperty-editor-ui-tree-picker-source-picker.element.ts | 8 ++++---- 5 files changed, 10 insertions(+), 10 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/components/input-start-node/index.ts create mode 100644 src/Umbraco.Web.UI.Client/src/packages/core/components/input-tree-picker-source/index.ts rename src/Umbraco.Web.UI.Client/src/packages/core/components/{input-start-node/input-start-node.element.ts => input-tree-picker-source/input-tree-picker-source.element.ts} (93%) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/index.ts index 9c2ae87ad0..e03884ea26 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/index.ts @@ -23,7 +23,7 @@ export * from './input-number-range/index.js'; export * from './input-radio-button-list/index.js'; export * from './input-section/index.js'; export * from './input-slider/index.js'; -export * from './input-start-node/index.js'; +export * from './input-tree-picker-source/index.js'; export * from './input-tiny-mce/index.js'; export * from './input-toggle/index.js'; export * from './input-upload-field/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-start-node/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-start-node/index.ts deleted file mode 100644 index a712befd6d..0000000000 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-start-node/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './input-start-node.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-tree-picker-source/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-tree-picker-source/index.ts new file mode 100644 index 0000000000..7f9792d5a4 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-tree-picker-source/index.ts @@ -0,0 +1 @@ +export * from './input-tree-picker-source.element.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-start-node/input-start-node.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-tree-picker-source/input-tree-picker-source.element.ts similarity index 93% rename from src/Umbraco.Web.UI.Client/src/packages/core/components/input-start-node/input-start-node.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/components/input-tree-picker-source/input-tree-picker-source.element.ts index 5694745a44..2a3c5b1823 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-start-node/input-start-node.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-tree-picker-source/input-tree-picker-source.element.ts @@ -23,8 +23,8 @@ export type StartNode = { dynamicRoot?: DynamicRootType | null; }; -@customElement('umb-input-start-node') -export class UmbInputStartNodeElement extends FormControlMixin(UmbLitElement) { +@customElement('umb-input-tree-picker-source') +export class UmbInputTreePickerSourceElement extends FormControlMixin(UmbLitElement) { protected getFormElement() { return undefined; } @@ -140,10 +140,10 @@ export class UmbInputStartNodeElement extends FormControlMixin(UmbLitElement) { ]; } -export default UmbInputStartNodeElement; +export default UmbInputTreePickerSourceElement; declare global { interface HTMLElementTagNameMap { - 'umb-input-start-node': UmbInputStartNodeElement; + 'umb-input-tree-picker-source': UmbInputTreePickerSourceElement; } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.element.ts index fc72176aa6..f542c75f97 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editor/uis/tree-picker/config/source-picker/property-editor-ui-tree-picker-source-picker.element.ts @@ -1,4 +1,4 @@ -import { StartNode, UmbInputStartNodeElement } from '@umbraco-cms/backoffice/components'; +import { StartNode, UmbInputTreePickerSourceElement } from '@umbraco-cms/backoffice/components'; import type { UmbPropertyEditorUiElement } from '@umbraco-cms/backoffice/extension-registry'; import { html, customElement, property } from '@umbraco-cms/backoffice/external/lit'; import type { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/property-editor'; @@ -17,7 +17,7 @@ export class UmbPropertyEditorUITreePickerSourcePickerElement extends UmbLitElem public config?: UmbPropertyEditorConfigCollection; #onChange(event: CustomEvent) { - const target = event.target as UmbInputStartNodeElement; + const target = event.target as UmbInputTreePickerSourceElement; this.value = { type: target.type, @@ -29,10 +29,10 @@ export class UmbPropertyEditorUITreePickerSourcePickerElement extends UmbLitElem } render() { - return html``; + .nodeId=${this.value?.id}>`; } static styles = [UmbTextStyles]; From bd0133065221912e495e94b352d21accafc95454 Mon Sep 17 00:00:00 2001 From: leekelleher Date: Wed, 10 Jan 2024 10:52:11 +0000 Subject: [PATCH 85/86] Renamed the types for the tree-picker-source - `StartNode` to `UmbTreePickerSource` - `ContentType` to `UmbTreePickerSourceType` - `DynamicRootType` to `UmbTreePickerDynamicRoot` - `DynamicRootQueryStepType` to `UmbTreePickerDynamicRootQueryStep` --- .../input-tree-picker-source.element.ts | 36 +++++++++---------- ...or-ui-tree-picker-source-picker.element.ts | 4 +-- ...-tree-picker-source-type-picker.element.ts | 4 +-- .../property-editor-ui-tree-picker.element.ts | 6 ++-- .../input-tree/input-tree.element.ts | 10 +++--- 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-tree-picker-source/input-tree-picker-source.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-tree-picker-source/input-tree-picker-source.element.ts index 2a3c5b1823..90f59172a5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-tree-picker-source/input-tree-picker-source.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-tree-picker-source/input-tree-picker-source.element.ts @@ -5,34 +5,34 @@ import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbInputMediaElement } from '@umbraco-cms/backoffice/media'; //import { UmbChangeEvent } from '@umbraco-cms/backoffice/event'; -export type ContentType = 'content' | 'member' | 'media'; +export type UmbTreePickerSource = { + type?: UmbTreePickerSourceType; + id?: string | null; + dynamicRoot?: UmbTreePickerDynamicRoot | null; +}; -export type DynamicRootQueryStepType = { +export type UmbTreePickerSourceType = 'content' | 'member' | 'media'; + +export type UmbTreePickerDynamicRoot = { + originAlias: string; + querySteps?: Array | null; +}; + +export type UmbTreePickerDynamicRootQueryStep = { alias: string; anyOfDocTypeKeys: Array; }; -export type DynamicRootType = { - originAlias: string; - querySteps?: Array | null; -}; - -export type StartNode = { - type?: ContentType; - id?: string | null; - dynamicRoot?: DynamicRootType | null; -}; - @customElement('umb-input-tree-picker-source') export class UmbInputTreePickerSourceElement extends FormControlMixin(UmbLitElement) { protected getFormElement() { return undefined; } - private _type: StartNode['type'] = 'content'; + private _type: UmbTreePickerSource['type'] = 'content'; @property() - public set type(value: StartNode['type']) { + public set type(value: UmbTreePickerSource['type']) { if (value === undefined) { value = this._type; } @@ -47,7 +47,7 @@ export class UmbInputTreePickerSourceElement extends FormControlMixin(UmbLitElem this.requestUpdate('type', oldValue); } - public get type(): StartNode['type'] { + public get type(): UmbTreePickerSource['type'] { return this._type; } @@ -55,7 +55,7 @@ export class UmbInputTreePickerSourceElement extends FormControlMixin(UmbLitElem nodeId?: string | null; @property({ attribute: false }) - dynamicRoot?: DynamicRootType | null; + dynamicRoot?: UmbTreePickerDynamicRoot | null; @state() _options: Array