From 53be72c83625c4e2e30cf07e91612380703cbfd8 Mon Sep 17 00:00:00 2001 From: Nathan Woulfe Date: Fri, 2 Jun 2023 12:48:15 +1000 Subject: [PATCH] fixes from merge --- .../src/mocks/data/data-type.data.ts | 6 ++-- .../data-type-property-collection.class.ts | 20 ++++++++++++- .../src/packages/core/components/index.ts | 2 +- .../input-tiny-mce/input-tiny-mce.element.ts | 4 +-- .../packages/core/extension-registry/index.ts | 1 + .../core/extension-registry/models/index.ts | 3 ++ .../extension-registry/tiny-mce-plugin.ts | 2 +- .../code-editor/code-editor-modal.element.ts | 4 +-- .../code-editor/code-editor-modal.stories.ts | 0 .../packages/core/modal/common/manifests.ts | 2 +- .../src/packages/core/modal/token/index.ts | 1 + .../models/Umbraco.TinyMCE.ts | 8 +++--- .../uis/tiny-mce/config/manifests.ts | 28 +++++++++---------- .../plugins/tiny-mce-macropicker.plugin.ts | 2 +- .../property-editor-ui-tiny-mce.element.ts | 3 +- .../{libs => src/shared}/macro/index.ts | 0 .../shared}/macro/macro.service.ts | 0 .../src/shared/utils/index.ts | 9 ++++++ src/Umbraco.Web.UI.Client/tsconfig.json | 1 + .../web-test-runner.config.mjs | 1 + 20 files changed, 65 insertions(+), 32 deletions(-) rename src/Umbraco.Web.UI.Client/src/packages/core/{modals => modal/common}/code-editor/code-editor-modal.element.ts (92%) rename src/Umbraco.Web.UI.Client/src/packages/core/{modals => modal/common}/code-editor/code-editor-modal.stories.ts (100%) rename src/Umbraco.Web.UI.Client/{libs => src/shared}/macro/index.ts (100%) rename src/Umbraco.Web.UI.Client/{libs => src/shared}/macro/macro.service.ts (100%) diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/data-type.data.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/data-type.data.ts index 970d4b0b42..694ca03e48 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/data-type.data.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/data-type.data.ts @@ -1,12 +1,12 @@ -import { UmbEntityTreeData } from './entity-tree.data.js'; -import { UmbEntityData } from './entity.data.js'; -import { createFolderTreeItem } from './utils.js'; import type { FolderTreeItemResponseModel, DataTypeResponseModel, CreateFolderRequestModel, DataTypeItemResponseModel, } from '@umbraco-cms/backoffice/backend-api'; +import { UmbEntityTreeData } from './entity-tree.data.js'; +import { UmbEntityData } from './entity.data.js'; +import { createFolderTreeItem } from './utils.js'; // TODO: investigate why we don't get an type as part of the DataTypeModel export const data: Array = [ diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/data-type/data-type-property-collection.class.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/data-type/data-type-property-collection.class.ts index 0446d85076..90eed2632f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/data-type/data-type-property-collection.class.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/data-type/data-type-property-collection.class.ts @@ -11,7 +11,7 @@ export class UmbDataTypePropertyCollection extends Array(alias: string): T | undefined { const property = this.getByAlias(alias); @@ -25,4 +25,22 @@ export class UmbDataTypePropertyCollection extends Array x.alias === alias); } + + /** + * Convert the underlying array to an object where + * the property value is keyed by its alias + * eg + * `[ + * { 'alias': 'myProperty', 'value': 27 }, + * { 'alias': 'anotherProperty', 'value': 'eleven' }, + * ]` + * is returned as + * `{ + * myProperty: 27, + * anotherProperty: 'eleven', + * }` + */ + toObject(): Record { + return Object.fromEntries(this.map((x) => [x.alias, x.value])); + } } 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 13ad219610..e9aeaa4b26 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 @@ -19,7 +19,7 @@ export * from './input-color-picker/index.js'; export * from './input-eye-dropper/index.js'; export * from './input-list-base/index.js'; export * from './input-multi-url/index.js'; -import './input-tiny-mce/input-tiny-mce.element'; +export * from './input-tiny-mce/input-tiny-mce.element.js'; export * from './input-number-range/index.js'; export * from './input-radio-button-list/index.js'; export * from './input-section/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-tiny-mce/input-tiny-mce.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-tiny-mce/input-tiny-mce.element.ts index 8a2132221b..6dbaaa6627 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/input-tiny-mce/input-tiny-mce.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/input-tiny-mce/input-tiny-mce.element.ts @@ -4,7 +4,6 @@ import { customElement, property, state } from 'lit/decorators.js'; import { FormControlMixin } from '@umbraco-ui/uui-base/lib/mixins'; import tinymce, { AstNode, Editor, EditorEvent } from 'tinymce'; import { firstValueFrom } from 'rxjs'; -import { UmbDataTypePropertyCollection } from '@umbraco-cms/backoffice/data-type'; import { UmbCurrentUserStore, UMB_CURRENT_USER_STORE_CONTEXT_TOKEN, @@ -17,6 +16,7 @@ import { ManifestTinyMcePlugin, umbExtensionsRegistry, } from '@umbraco-cms/backoffice/extension-registry'; +import type { UmbDataTypePropertyCollection } from '@umbraco-cms/backoffice/components'; import { UmbMediaHelper } from '@umbraco-cms/backoffice/utils'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN } from '@umbraco-cms/backoffice/modal'; import { ClassConstructor, hasDefaultExport, loadExtension } from '@umbraco-cms/backoffice/extension-api'; @@ -110,7 +110,7 @@ export class UmbInputTinyMceElement extends FormControlMixin(UmbLitElement) { async #observeCurrentUser() { if (!this.#currentUserStore) return; - this.observe(this.#currentUserStore.currentUser, (currentUser) => { + this.observe(this.#currentUserStore.currentUser, (currentUser: UmbLoggedInUser | undefined) => { this.#currentUser = currentUser; }); } diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/index.ts index d2e414594e..82d6ae30cd 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/index.ts @@ -2,3 +2,4 @@ export * from './interfaces/index.js'; export * from './models/index.js'; export * from './registry.js'; export * from './extension-class-initializer.js'; +export * from './tiny-mce-plugin.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts index d90a705168..4404743cfa 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/models/index.ts @@ -18,6 +18,7 @@ import type { ManifestSectionSidebarApp, ManifestSectionSidebarAppMenuKind } fro import type { ManifestSectionView } from './section-view.model.js'; import type { ManifestStore, ManifestTreeStore, ManifestItemStore } from './store.model.js'; import type { ManifestTheme } from './theme.model.js'; +import type { ManifestTinyMcePlugin } from './tinymce-plugin.model.js'; import type { ManifestTree } from './tree.model.js'; import type { ManifestTreeItem } from './tree-item.model.js'; import type { ManifestUserProfileApp } from './user-profile-app.model.js'; @@ -47,6 +48,7 @@ export * from './section-view.model.js'; export * from './section.model.js'; export * from './store.model.js'; export * from './theme.model.js'; +export * from './tinymce-plugin.model.js'; export * from './tree-item.model.js'; export * from './tree.model.js'; export * from './user-profile-app.model.js'; @@ -82,6 +84,7 @@ export type ManifestTypes = | ManifestSectionView | ManifestStore | ManifestTheme + | ManifestTinyMcePlugin | ManifestTree | ManifestTreeItem | ManifestTreeStore diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/tiny-mce-plugin.ts b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/tiny-mce-plugin.ts index 10919234c6..7c6eb22897 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/tiny-mce-plugin.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/extension-registry/tiny-mce-plugin.ts @@ -1,5 +1,5 @@ -import { UmbLitElement } from "@umbraco-cms/internal/lit-element"; import { DataTypePropertyPresentationModel } from "@umbraco-cms/backoffice/backend-api"; +import { UmbLitElement } from "@umbraco-cms/internal/lit-element"; // TODO => editor property should be typed, but would require libs taking a dependency on TinyMCE, which is not ideal export class UmbTinyMcePluginBase { diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modals/code-editor/code-editor-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/code-editor/code-editor-modal.element.ts similarity index 92% rename from src/Umbraco.Web.UI.Client/src/packages/core/modals/code-editor/code-editor-modal.element.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/modal/common/code-editor/code-editor-modal.element.ts index 77f9355636..d4435dcc45 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modals/code-editor/code-editor-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/code-editor/code-editor-modal.element.ts @@ -1,8 +1,8 @@ -import { UUITextStyles } from '@umbraco-ui/uui-css'; import { customElement, query } from 'lit/decorators.js'; import { css, html } from 'lit'; import { ifDefined } from 'lit/directives/if-defined.js'; -import { UmbCodeEditorElement as UmbCodeEditor } from '../../components/code-editor'; +import { UmbCodeEditorElement as UmbCodeEditor } from '../../../components/code-editor'; +import { UUITextStyles } from '@umbraco-cms/backoffice/external/uui'; import { UmbCodeEditorModalData, UmbCodeEditorModalResult } from '@umbraco-cms/backoffice/modal'; import { UmbInputEvent } from '@umbraco-cms/backoffice/events'; import { UmbModalBaseElement } from '@umbraco-cms/internal/modal'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modals/code-editor/code-editor-modal.stories.ts b/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/code-editor/code-editor-modal.stories.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/packages/core/modals/code-editor/code-editor-modal.stories.ts rename to src/Umbraco.Web.UI.Client/src/packages/core/modal/common/code-editor/code-editor-modal.stories.ts diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/manifests.ts index 79cf7d4e6d..6d7044fd52 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/modal/common/manifests.ts @@ -47,7 +47,7 @@ const modals: Array = [ type: 'modal', alias: 'Umb.Modal.CodeEditor', name: 'Code Editor Modal', - loader: () => import('./code-editor/code-editor-modal.element'), + loader: () => import('./code-editor/code-editor-modal.element.js'), }, { type: 'modal', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/index.ts b/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/index.ts index e7b1cd82c9..f32ab6774e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/index.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/modal/token/index.ts @@ -1,6 +1,7 @@ export * from './modal-token.js'; export * from './allowed-document-types-modal.token.js'; export * from './change-password-modal.token.js'; +export * from './code-editor-modal.token.js'; export * from './confirm-modal.token.js'; export * from './create-dictionary-modal.token.js'; export * from './create-user-modal.token.js'; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/models/Umbraco.TinyMCE.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/models/Umbraco.TinyMCE.ts index 8e953cb514..8acfe1e536 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/models/Umbraco.TinyMCE.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/models/Umbraco.TinyMCE.ts @@ -12,25 +12,25 @@ export const manifest: ManifestPropertyEditorModel = { alias: 'toolbar', label: 'Toolbar', description: 'Pick the toolbar options that should be available when editing', - propertyEditorUI: 'Umb.PropertyEditorUI.TinyMCE.ToolbarConfiguration', + propertyEditorUiAlias: 'Umb.PropertyEditorUI.TinyMCE.ToolbarConfiguration', }, { alias: 'stylesheets', label: 'Stylesheets', description: 'Pick the stylesheets whose editor styles should be available when editing', - propertyEditorUI: 'Umb.PropertyEditorUI.TinyMCE.StylesheetsConfiguration', + propertyEditorUiAlias: 'Umb.PropertyEditorUI.TinyMCE.StylesheetsConfiguration', }, { alias: 'dimensions', label: 'Dimensions', description: 'Set the editor dimensions', - propertyEditorUI: 'Umb.PropertyEditorUI.TinyMCE.DimensionsConfiguration', + propertyEditorUiAlias: 'Umb.PropertyEditorUI.TinyMCE.DimensionsConfiguration', }, { alias: 'maxImageSize', label: 'Maximum size for inserted images', description: 'Maximum width or height - enter 0 to disable resizing', - propertyEditorUi: 'Umb.PropertyEditorUI.TinyMCE.MaxImageSizeConfiguration', + propertyEditorUiAlias: 'Umb.PropertyEditorUI.TinyMCE.MaxImageSizeConfiguration', }, { alias: 'mediaParentId', diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/uis/tiny-mce/config/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/uis/tiny-mce/config/manifests.ts index 1a67a98fa8..657753b4c0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/uis/tiny-mce/config/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/uis/tiny-mce/config/manifests.ts @@ -1,50 +1,50 @@ -import type { ManifestPropertyEditorUI } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestPropertyEditorUi } from '@umbraco-cms/backoffice/extension-registry'; -const configurationManifests: Array = [ +const configurationManifests: Array = [ { - type: 'propertyEditorUI', + type: 'propertyEditorUi', alias: 'Umb.PropertyEditorUI.TinyMCE.ToolbarConfiguration', name: 'TinyMCE Toolbar Property Editor UI', - loader: () => import('./toolbar/property-editor-ui-tiny-mce-toolbar-configuration.element'), + loader: () => import('./toolbar/property-editor-ui-tiny-mce-toolbar-configuration.element.js'), meta: { label: 'TinyMCE Toolbar Configuration', - propertyEditorModel: 'Umbraco.TinyMCE.Configuration', + propertyEditorAlias: 'Umbraco.TinyMCE.Configuration', icon: 'umb:autofill', group: 'common', }, }, { - type: 'propertyEditorUI', + type: 'propertyEditorUi', alias: 'Umb.PropertyEditorUI.TinyMCE.StylesheetsConfiguration', name: 'TinyMCE Stylesheets Property Editor UI', - loader: () => import('./stylesheets/property-editor-ui-tiny-mce-stylesheets-configuration.element'), + loader: () => import('./stylesheets/property-editor-ui-tiny-mce-stylesheets-configuration.element.js'), meta: { label: 'TinyMCE Stylesheets Configuration', - propertyEditorModel: 'Umbraco.TinyMCE.Configuration', + propertyEditorAlias: 'Umbraco.TinyMCE.Configuration', icon: 'umb:autofill', group: 'common', }, }, { - type: 'propertyEditorUI', + type: 'propertyEditorUi', alias: 'Umb.PropertyEditorUI.TinyMCE.DimensionsConfiguration', name: 'TinyMCE Dimensions Property Editor UI', - loader: () => import('./dimensions/property-editor-ui-tiny-mce-dimensions-configuration.element'), + loader: () => import('./dimensions/property-editor-ui-tiny-mce-dimensions-configuration.element.js'), meta: { label: 'TinyMCE Dimensions Configuration', - propertyEditorModel: 'Umbraco.TinyMCE.Configuration', + propertyEditorAlias: 'Umbraco.TinyMCE.Configuration', icon: 'umb:autofill', group: 'common', }, }, { - type: 'propertyEditorUI', + type: 'propertyEditorUi', alias: 'Umb.PropertyEditorUI.TinyMCE.MaxImageSizeConfiguration', name: 'TinyMCE Max Image Size Property Editor UI', - loader: () => import('./max-image-size/property-editor-ui-tiny-mce-maximagesize-configuration.element'), + loader: () => import('./max-image-size/property-editor-ui-tiny-mce-maximagesize-configuration.element.js'), meta: { label: 'TinyMCE Max Image Size Configuration', - propertyEditorModel: 'Umbraco.TinyMCE.Configuration', + propertyEditorAlias: 'Umbraco.TinyMCE.Configuration', icon: 'umb:autofill', group: 'common', }, diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-macropicker.plugin.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-macropicker.plugin.ts index c5a382fe6b..f09dabac73 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-macropicker.plugin.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-macropicker.plugin.ts @@ -1,7 +1,7 @@ import { AstNode } from 'tinymce'; import { TinyMcePluginArguments, UmbTinyMcePluginBase } from '@umbraco-cms/backoffice/extension-registry'; import { UmbModalContext, UMB_MODAL_CONTEXT_TOKEN, UMB_CONFIRM_MODAL } from '@umbraco-cms/backoffice/modal'; -import { MacroSyntaxData, UmbMacroService } from '@umbraco-cms/backoffice/macro'; +import { MacroSyntaxData, UmbMacroService } from 'src/shared/macro'; interface DialogData { richTextEditor: boolean; diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/uis/tiny-mce/property-editor-ui-tiny-mce.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/uis/tiny-mce/property-editor-ui-tiny-mce.element.ts index b431e4f129..030a0a905d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/uis/tiny-mce/property-editor-ui-tiny-mce.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/property-editors/uis/tiny-mce/property-editor-ui-tiny-mce.element.ts @@ -1,6 +1,5 @@ -import { html , customElement, property } from '@umbraco-cms/backoffice/external/lit'; import { UUITextStyles } from '@umbraco-cms/backoffice/external/uui'; -import { UmbDataTypePropertyCollection } from '@umbraco-cms/backoffice/data-type'; +import { html , customElement, property } from '@umbraco-cms/backoffice/external/lit'; import { UmbPropertyEditorExtensionElement } from '@umbraco-cms/backoffice/extension-registry'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; import { UmbDataTypePropertyCollection } from '@umbraco-cms/backoffice/components'; diff --git a/src/Umbraco.Web.UI.Client/libs/macro/index.ts b/src/Umbraco.Web.UI.Client/src/shared/macro/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/macro/index.ts rename to src/Umbraco.Web.UI.Client/src/shared/macro/index.ts diff --git a/src/Umbraco.Web.UI.Client/libs/macro/macro.service.ts b/src/Umbraco.Web.UI.Client/src/shared/macro/macro.service.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/libs/macro/macro.service.ts rename to src/Umbraco.Web.UI.Client/src/shared/macro/macro.service.ts diff --git a/src/Umbraco.Web.UI.Client/src/shared/utils/index.ts b/src/Umbraco.Web.UI.Client/src/shared/utils/index.ts index 4d8ef0542b..8349d9f5ac 100644 --- a/src/Umbraco.Web.UI.Client/src/shared/utils/index.ts +++ b/src/Umbraco.Web.UI.Client/src/shared/utils/index.ts @@ -2,3 +2,12 @@ export * from './generate-umbraco-alias.function.js'; export * from './umbraco-path.js'; export * from './udi-service.js'; export * from './selection-manager.js'; +export * from './media-helper.service'; + +// TODO => tinymce property should be typed, but would require libs taking a dependency on TinyMCE, which is not ideal +declare global { + interface Window { + tinymce: any; + Umbraco: any; + } +} \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/tsconfig.json b/src/Umbraco.Web.UI.Client/tsconfig.json index 6aa564d2ea..63d073b459 100644 --- a/src/Umbraco.Web.UI.Client/tsconfig.json +++ b/src/Umbraco.Web.UI.Client/tsconfig.json @@ -35,6 +35,7 @@ // SHARED "@umbraco-cms/backoffice/events": ["src/shared/umb-events"], + "@umbraco-cms/backoffice/macros": ["src/shared/macros"], "@umbraco-cms/backoffice/models": ["src/shared/models"], "@umbraco-cms/backoffice/repository": ["src/shared/repository"], "@umbraco-cms/backoffice/resources": ["src/shared/resources"], 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 620a2ea5af..625ef842d0 100644 --- a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs +++ b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs @@ -48,6 +48,7 @@ export default { '@umbraco-cms/backoffice/observable-api': './src/libs/observable-api/index.ts', '@umbraco-cms/backoffice/events': './src/shared/umb-events/index.ts', + '@umbraco-cms/backoffice/macros': './src/shared/macros/index.ts', '@umbraco-cms/backoffice/models': './src/shared/models/index.ts', '@umbraco-cms/backoffice/repository': './src/shared/repository/index.ts', '@umbraco-cms/backoffice/resources': './src/shared/resources/index.ts',