{"version":3,"file":"index.js","sources":["../../../../src/packages/media/media-types/repository/structure/constants.ts","../../../../src/packages/media/media-types/components/input-media-type/input-media-type.context.ts","../../../../src/packages/media/media-types/components/input-media-type/input-media-type.element.ts","../../../../src/packages/media/media-types/repository/structure/media-type-structure.server.data-source.ts","../../../../src/packages/media/media-types/repository/structure/media-type-structure.repository.ts","../../../../src/packages/media/media-types/utils/index.ts"],"sourcesContent":["export const UMB_MEDIA_TYPE_STRUCTURE_REPOSITORY_ALIAS = 'Umb.Repository.MediaType.Structure';\r\n","import type { UmbMediaTypeItemModel } from '../../types.js';\r\nimport { UMB_MEDIA_TYPE_ITEM_REPOSITORY_ALIAS } from '../../constants.js';\r\nimport type {\r\n\tUmbMediaTypePickerModalData,\r\n\tUmbMediaTypePickerModalValue,\r\n} from '../../tree/media-type-picker-modal.token.js';\r\nimport { UMB_MEDIA_TYPE_PICKER_MODAL } from '../../tree/media-type-picker-modal.token.js';\r\nimport type { UmbMediaTypeTreeItemModel } from '../../tree/types.js';\r\nimport { UmbPickerInputContext } from '@umbraco-cms/backoffice/picker-input';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\n\r\nexport class UmbMediaTypePickerInputContext extends UmbPickerInputContext<\r\n\tUmbMediaTypeItemModel,\r\n\tUmbMediaTypeTreeItemModel,\r\n\tUmbMediaTypePickerModalData,\r\n\tUmbMediaTypePickerModalValue\r\n> {\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host, UMB_MEDIA_TYPE_ITEM_REPOSITORY_ALIAS, UMB_MEDIA_TYPE_PICKER_MODAL);\r\n\t}\r\n}\r\n\r\n/** @deprecated Use `UmbMediaTypePickerInputContext` instead. This method will be removed in Umbraco 15. */\r\nexport { UmbMediaTypePickerInputContext as UmbMediaTypePickerContext };\r\n","import type { UmbMediaTypeItemModel } from '../../types.js';\r\nimport { UmbMediaTypePickerInputContext } from './input-media-type.context.js';\r\nimport { css, html, customElement, property, state, repeat, nothing } from '@umbraco-cms/backoffice/external/lit';\r\nimport { splitStringToArray } from '@umbraco-cms/backoffice/utils';\r\nimport { UmbChangeEvent } from '@umbraco-cms/backoffice/event';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\nimport { UMB_WORKSPACE_MODAL } from '@umbraco-cms/backoffice/workspace';\r\nimport { UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/router';\r\nimport { UmbSorterController } from '@umbraco-cms/backoffice/sorter';\r\nimport { UmbFormControlMixin } from '@umbraco-cms/backoffice/validation';\r\n\r\n@customElement('umb-input-media-type')\r\nexport class UmbInputMediaTypeElement extends UmbFormControlMixin(\r\n\tUmbLitElement,\r\n) {\r\n\t#sorter = new UmbSorterController(this, {\r\n\t\tgetUniqueOfElement: (element) => {\r\n\t\t\treturn element.id;\r\n\t\t},\r\n\t\tgetUniqueOfModel: (modelEntry) => {\r\n\t\t\treturn modelEntry;\r\n\t\t},\r\n\t\tidentifier: 'Umb.SorterIdentifier.InputMediaType',\r\n\t\titemSelector: 'uui-ref-node-document-type',\r\n\t\tcontainerSelector: 'uui-ref-list',\r\n\t\tonChange: ({ model }) => {\r\n\t\t\tthis.selection = model;\r\n\t\t\tthis.dispatchEvent(new UmbChangeEvent());\r\n\t\t},\r\n\t});\r\n\r\n\t/**\r\n\t * This is a minimum amount of selected items in this input.\r\n\t * @type {number}\r\n\t * @attr\r\n\t * @default\r\n\t */\r\n\t@property({ type: Number })\r\n\tpublic set min(value: number) {\r\n\t\tthis.#pickerContext.min = value;\r\n\t}\r\n\tpublic get min(): number {\r\n\t\treturn this.#pickerContext.min;\r\n\t}\r\n\r\n\t/**\r\n\t * Min validation message.\r\n\t * @type {boolean}\r\n\t * @attr\r\n\t * @default\r\n\t */\r\n\t@property({ type: String, attribute: 'min-message' })\r\n\tminMessage = 'This field need more items';\r\n\r\n\t/**\r\n\t * This is a maximum amount of selected items in this input.\r\n\t * @type {number}\r\n\t * @attr\r\n\t * @default\r\n\t */\r\n\t@property({ type: Number })\r\n\tpublic set max(value: number) {\r\n\t\tthis.#pickerContext.max = value;\r\n\t}\r\n\tpublic get max(): number {\r\n\t\treturn this.#pickerContext.max;\r\n\t}\r\n\r\n\t/**\r\n\t * Max validation message.\r\n\t * @type {boolean}\r\n\t * @attr\r\n\t * @default\r\n\t */\r\n\t@property({ type: String, attribute: 'min-message' })\r\n\tmaxMessage = 'This field exceeds the allowed amount of items';\r\n\r\n\t@property({ type: Array })\r\n\tpublic set selection(uniques: Array) {\r\n\t\tthis.#pickerContext.setSelection(uniques);\r\n\t\tthis.#sorter.setModel(uniques);\r\n\t}\r\n\tpublic get selection(): Array {\r\n\t\treturn this.#pickerContext.getSelection();\r\n\t}\r\n\r\n\t@property({ type: String })\r\n\tpublic override set value(selectionString: string | undefined) {\r\n\t\tthis.selection = splitStringToArray(selectionString);\r\n\t}\r\n\tpublic override get value(): string | undefined {\r\n\t\treturn this.selection.length > 0 ? this.selection.join(',') : undefined;\r\n\t}\r\n\r\n\t@state()\r\n\tprivate _items?: Array;\r\n\r\n\t@state()\r\n\tprivate _editPath = '';\r\n\r\n\t#pickerContext = new UmbMediaTypePickerInputContext(this);\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tnew UmbModalRouteRegistrationController(this, UMB_WORKSPACE_MODAL)\r\n\t\t\t.addAdditionalPath('media-type')\r\n\t\t\t.onSetup(() => {\r\n\t\t\t\treturn { data: { entityType: 'media-type', preset: {} } };\r\n\t\t\t})\r\n\t\t\t.observeRouteBuilder((routeBuilder) => {\r\n\t\t\t\tthis._editPath = routeBuilder({});\r\n\t\t\t});\r\n\r\n\t\tthis.addValidator(\r\n\t\t\t'rangeUnderflow',\r\n\t\t\t() => this.minMessage,\r\n\t\t\t() => !!this.min && this.#pickerContext.getSelection().length < this.min,\r\n\t\t);\r\n\r\n\t\tthis.addValidator(\r\n\t\t\t'rangeOverflow',\r\n\t\t\t() => this.maxMessage,\r\n\t\t\t() => !!this.max && this.#pickerContext.getSelection().length > this.max,\r\n\t\t);\r\n\r\n\t\tthis.observe(this.#pickerContext.selection, (selection) => (this.value = selection.join(',')), '_observeSelection');\r\n\t\tthis.observe(this.#pickerContext.selectedItems, (selectedItems) => (this._items = selectedItems), '_observerItems');\r\n\t}\r\n\r\n\tprotected override getFormElement() {\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t#openPicker() {\r\n\t\tthis.#pickerContext.openPicker({\r\n\t\t\thideTreeRoot: true,\r\n\t\t});\r\n\t}\r\n\r\n\t#removeItem(item: UmbMediaTypeItemModel) {\r\n\t\tthis.#pickerContext.requestRemoveItem(item.unique);\r\n\t}\r\n\r\n\toverride render() {\r\n\t\treturn html`${this.#renderItems()} ${this.#renderAddButton()}`;\r\n\t}\r\n\r\n\t#renderAddButton() {\r\n\t\tif (this.max > 0 && this.selection.length >= this.max) return nothing;\r\n\t\treturn html`\r\n\t\t\t\r\n\t\t`;\r\n\t}\r\n\r\n\t#renderItems() {\r\n\t\tif (!this._items) return nothing;\r\n\t\treturn html`\r\n\t\t\t\r\n\t\t\t\t${repeat(\r\n\t\t\t\t\tthis._items,\r\n\t\t\t\t\t(item) => item.unique,\r\n\t\t\t\t\t(item) => this.#renderItem(item),\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t`;\r\n\t}\r\n\r\n\t#renderItem(item: UmbMediaTypeItemModel) {\r\n\t\tif (!item.unique) return;\r\n\t\tconst href = `${this._editPath}edit/${item.unique}`;\r\n\t\treturn html`\r\n\t\t\t\r\n\t\t\t\t${this.#renderIcon(item)}\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t this.#removeItem(item)} label=${this.localize.term('general_remove')}>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t`;\r\n\t}\r\n\r\n\t#renderIcon(item: UmbMediaTypeItemModel) {\r\n\t\tif (!item.icon) return;\r\n\t\treturn html``;\r\n\t}\r\n\r\n\tstatic override styles = [\r\n\t\tcss`\r\n\t\t\t#btn-add {\r\n\t\t\t\twidth: 100%;\r\n\t\t\t}\r\n\t\t`,\r\n\t];\r\n}\r\n\r\nexport default UmbInputMediaTypeElement;\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-input-media-type': UmbInputMediaTypeElement;\r\n\t}\r\n}\r\n","import { UMB_MEDIA_TYPE_ENTITY_TYPE } from '../../entity.js';\r\nimport type { UmbAllowedMediaTypeModel } from './types.js';\r\nimport { MediaTypeService } from '@umbraco-cms/backoffice/external/backend-api';\r\nimport { UmbContentTypeStructureServerDataSourceBase } from '@umbraco-cms/backoffice/content-type';\r\nimport type { AllowedMediaTypeModel } from '@umbraco-cms/backoffice/external/backend-api';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\n\r\n/**\r\n * @class UmbMediaTypeStructureServerDataSource\r\n * @augments {UmbContentTypeStructureServerDataSourceBase}\r\n */\r\nexport class UmbMediaTypeStructureServerDataSource extends UmbContentTypeStructureServerDataSourceBase<\r\n\tAllowedMediaTypeModel,\r\n\tUmbAllowedMediaTypeModel\r\n> {\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host, { getAllowedChildrenOf, mapper });\r\n\t}\r\n\r\n\tgetMediaTypesOfFileExtension({ fileExtension, skip, take }: { fileExtension: string; skip: number; take: number }) {\r\n\t\treturn getAllowedMediaTypesOfExtension({ fileExtension, skip, take });\r\n\t}\r\n\r\n\tgetMediaTypesOfFolders({ skip, take }: { skip: number; take: number }) {\r\n\t\treturn getAllowedMediaTypesOfFolders({ skip, take });\r\n\t}\r\n}\r\n\r\nconst getAllowedChildrenOf = (unique: string | null) => {\r\n\tif (unique) {\r\n\t\t// eslint-disable-next-line local-rules/no-direct-api-import\r\n\t\treturn MediaTypeService.getMediaTypeByIdAllowedChildren({ id: unique });\r\n\t} else {\r\n\t\t// eslint-disable-next-line local-rules/no-direct-api-import\r\n\t\treturn MediaTypeService.getMediaTypeAllowedAtRoot({});\r\n\t}\r\n};\r\n\r\nconst mapper = (item: AllowedMediaTypeModel): UmbAllowedMediaTypeModel => {\r\n\treturn {\r\n\t\tunique: item.id,\r\n\t\tentityType: UMB_MEDIA_TYPE_ENTITY_TYPE,\r\n\t\tname: item.name,\r\n\t\tdescription: item.description || null,\r\n\t\ticon: item.icon || null,\r\n\t};\r\n};\r\n\r\nconst getAllowedMediaTypesOfFolders = async ({ skip, take }: { skip: number; take: number }) => {\r\n\t// eslint-disable-next-line local-rules/no-direct-api-import\r\n\tconst { items } = await MediaTypeService.getItemMediaTypeFolders({ skip, take });\r\n\treturn items.map((item) => mapper(item));\r\n};\r\n\r\nconst getAllowedMediaTypesOfExtension = async ({\r\n\tfileExtension,\r\n\tskip,\r\n\ttake,\r\n}: {\r\n\tfileExtension: string;\r\n\tskip: number;\r\n\ttake: number;\r\n}) => {\r\n\t// eslint-disable-next-line local-rules/no-direct-api-import\r\n\tconst { items } = await MediaTypeService.getItemMediaTypeAllowed({ fileExtension, skip, take });\r\n\treturn items.map((item) => mapper(item));\r\n};\r\n","import { UmbMediaTypeStructureServerDataSource } from './media-type-structure.server.data-source.js';\r\nimport type { UmbAllowedMediaTypeModel } from './types.js';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport { UmbContentTypeStructureRepositoryBase } from '@umbraco-cms/backoffice/content-type';\r\n\r\nexport class UmbMediaTypeStructureRepository extends UmbContentTypeStructureRepositoryBase {\r\n\t#dataSource;\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host, UmbMediaTypeStructureServerDataSource);\r\n\t\tthis.#dataSource = new UmbMediaTypeStructureServerDataSource(host);\r\n\t}\r\n\r\n\tasync requestMediaTypesOf({\r\n\t\tfileExtension,\r\n\t\tskip = 0,\r\n\t\ttake = 100,\r\n\t}: {\r\n\t\tfileExtension: string;\r\n\t\tskip?: number;\r\n\t\ttake?: number;\r\n\t}) {\r\n\t\treturn this.#dataSource.getMediaTypesOfFileExtension({ fileExtension, skip, take });\r\n\t}\r\n\r\n\tasync requestMediaTypesOfFolders({ skip = 0, take = 100 } = {}) {\r\n\t\treturn this.#dataSource.getMediaTypesOfFolders({ skip, take });\r\n\t}\r\n}\r\n\r\nexport default UmbMediaTypeStructureRepository;\r\n","// TODO: Can we trust this is the unique? This probably need a similar solution like the media collection repository method getDefaultConfiguration()\r\n\r\n/**\r\n * @returns {string} The unique identifier for the Umbraco folder media-type.\r\n */\r\nexport function getUmbracoFolderUnique(): string {\r\n\treturn 'f38bd2d7-65d0-48e6-95dc-87ce06ec2d3d';\r\n}\r\n/**\r\n * @param {string} unique The unique identifier of the media-type to check.\r\n * @returns {boolean} True if the unique identifier is the Umbraco folder media-type.\r\n */\r\nexport function isUmbracoFolder(unique?: string): boolean {\r\n\treturn unique === getUmbracoFolderUnique();\r\n}\r\n"],"names":["UMB_MEDIA_TYPE_STRUCTURE_REPOSITORY_ALIAS","UmbMediaTypePickerInputContext","UmbPickerInputContext","host","UMB_MEDIA_TYPE_ITEM_REPOSITORY_ALIAS","UMB_MEDIA_TYPE_PICKER_MODAL","_sorter","_pickerContext","_UmbInputMediaTypeElement_instances","openPicker_fn","removeItem_fn","renderAddButton_fn","renderItems_fn","renderItem_fn","renderIcon_fn","UmbInputMediaTypeElement","UmbFormControlMixin","UmbLitElement","__privateAdd","UmbSorterController","element","modelEntry","model","UmbChangeEvent","UmbModalRouteRegistrationController","UMB_WORKSPACE_MODAL","routeBuilder","__privateGet","selection","selectedItems","value","uniques","selectionString","splitStringToArray","html","__privateMethod","item","nothing","repeat","href","css","__decorateClass","property","state","customElement","UmbMediaTypeStructureServerDataSource","UmbContentTypeStructureServerDataSourceBase","getAllowedChildrenOf","mapper","fileExtension","skip","take","getAllowedMediaTypesOfExtension","getAllowedMediaTypesOfFolders","unique","MediaTypeService","UMB_MEDIA_TYPE_ENTITY_TYPE","items","UmbMediaTypeStructureRepository","UmbContentTypeStructureRepositoryBase","#dataSource","getUmbracoFolderUnique","isUmbracoFolder"],"mappings":"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"}