{"version":3,"file":"entity-item-ref.element-Bl6X4pWB.js","sources":["../../../src/packages/core/entity-item/entity-item-ref/default-item-ref.element.ts","../../../src/packages/core/entity-item/entity-item-ref/entity-item-ref.element.ts"],"sourcesContent":["import type { UmbDefaultItemModel } from '../types.js';\r\nimport { customElement, html, nothing, property } from '@umbraco-cms/backoffice/external/lit';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\n\r\n@customElement('umb-default-item-ref')\r\nexport class UmbDefaultItemRefElement extends UmbLitElement {\r\n\t@property({ type: Object })\r\n\titem?: UmbDefaultItemModel;\r\n\r\n\t@property({ type: Boolean })\r\n\tstandalone = false;\r\n\r\n\toverride render() {\r\n\t\tif (!this.item) return nothing;\r\n\r\n\t\treturn html`\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t${this.#renderIcon(this.item)}\r\n\t\t\t\r\n\t\t`;\r\n\t}\r\n\r\n\t#renderIcon(item: UmbDefaultItemModel) {\r\n\t\tif (!item.icon) return;\r\n\t\treturn html``;\r\n\t}\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-default-item-ref': UmbDefaultItemRefElement;\r\n\t}\r\n}\r\n","import type { ManifestEntityItemRef } from './entity-item-ref.extension.js';\r\nimport { customElement, property, type PropertyValueMap, state, css, html } from '@umbraco-cms/backoffice/external/lit';\r\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\r\nimport { UmbExtensionsElementInitializer } from '@umbraco-cms/backoffice/extension-api';\r\nimport { UMB_MARK_ATTRIBUTE_NAME } from '@umbraco-cms/backoffice/const';\r\nimport { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';\r\nimport { UmbRoutePathAddendumContext } from '@umbraco-cms/backoffice/router';\r\nimport type { UmbEntityModel } from '@umbraco-cms/backoffice/entity';\r\n\r\nimport './default-item-ref.element.js';\r\n\r\n@customElement('umb-entity-item-ref')\r\nexport class UmbEntityItemRefElement extends UmbLitElement {\r\n\t#extensionsController?: UmbExtensionsElementInitializer;\r\n\t#item?: UmbEntityModel;\r\n\r\n\t@state()\r\n\t_component?: any; // TODO: Add type\r\n\r\n\t@property({ type: Object, attribute: false })\r\n\tpublic get item(): UmbEntityModel | undefined {\r\n\t\treturn this.#item;\r\n\t}\r\n\tpublic set item(value: UmbEntityModel | undefined) {\r\n\t\tconst oldValue = this.#item;\r\n\t\tthis.#item = value;\r\n\r\n\t\tif (value === oldValue) return;\r\n\t\tif (!value) return;\r\n\r\n\t\t// If the component is already created and the entity type is the same, we can just update the item.\r\n\t\tif (this._component && value.entityType === oldValue?.entityType) {\r\n\t\t\tthis._component.item = value;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.#pathAddendum.setAddendum('ref/' + value.entityType + '/' + value.unique);\r\n\r\n\t\t// If the component is already created, but the entity type is different, we need to destroy the component.\r\n\t\tthis.#createController(value.entityType);\r\n\t}\r\n\r\n\t#readonly = false;\r\n\t@property({ type: Boolean, attribute: 'readonly' })\r\n\tpublic get readonly() {\r\n\t\treturn this.#readonly;\r\n\t}\r\n\tpublic set readonly(value) {\r\n\t\tthis.#readonly = value;\r\n\r\n\t\tif (this._component) {\r\n\t\t\tthis._component.readonly = this.#readonly;\r\n\t\t}\r\n\t}\r\n\r\n\t#standalone = false;\r\n\t@property({ type: Boolean, attribute: 'standalone' })\r\n\tpublic get standalone() {\r\n\t\treturn this.#standalone;\r\n\t}\r\n\tpublic set standalone(value) {\r\n\t\tthis.#standalone = value;\r\n\r\n\t\tif (this._component) {\r\n\t\t\tthis._component.standalone = this.#standalone;\r\n\t\t}\r\n\t}\r\n\r\n\t#pathAddendum = new UmbRoutePathAddendumContext(this);\r\n\r\n\tprotected override firstUpdated(_changedProperties: PropertyValueMap | Map): void {\r\n\t\tsuper.firstUpdated(_changedProperties);\r\n\t\tthis.setAttribute(UMB_MARK_ATTRIBUTE_NAME, 'entity-item-ref');\r\n\t}\r\n\r\n\t#createController(entityType: string) {\r\n\t\tif (this.#extensionsController) {\r\n\t\t\tthis.#extensionsController.destroy();\r\n\t\t}\r\n\r\n\t\tthis.#extensionsController = new UmbExtensionsElementInitializer(\r\n\t\t\tthis,\r\n\t\t\tumbExtensionsRegistry,\r\n\t\t\t'entityItemRef',\r\n\t\t\t(manifest: ManifestEntityItemRef) => manifest.forEntityTypes.includes(entityType),\r\n\t\t\t(extensionControllers) => {\r\n\t\t\t\tthis._component?.remove();\r\n\t\t\t\tconst component = extensionControllers[0]?.component || document.createElement('umb-default-item-ref');\r\n\r\n\t\t\t\t// assign the properties to the component\r\n\t\t\t\tcomponent.item = this.#item;\r\n\t\t\t\tcomponent.readonly = this.readonly;\r\n\t\t\t\tcomponent.standalone = this.standalone;\r\n\r\n\t\t\t\t// Proxy the actions slot to the component\r\n\t\t\t\tconst slotElement = document.createElement('slot');\r\n\t\t\t\tslotElement.name = 'actions';\r\n\t\t\t\tslotElement.setAttribute('slot', 'actions');\r\n\t\t\t\tcomponent.appendChild(slotElement);\r\n\r\n\t\t\t\tthis._component = component;\r\n\t\t\t},\r\n\t\t\tundefined, // We can leave the alias to undefined, as we destroy this our selfs.\r\n\t\t\tundefined,\r\n\t\t\t{ single: true },\r\n\t\t);\r\n\t}\r\n\r\n\toverride render() {\r\n\t\treturn html`${this._component}`;\r\n\t}\r\n\r\n\tstatic override styles = [\r\n\t\tcss`\r\n\t\t\t:host {\r\n\t\t\t\tdisplay: block;\r\n\t\t\t\tposition: relative;\r\n\t\t\t}\r\n\t\t`,\r\n\t];\r\n}\r\n\r\nexport { UmbEntityItemRefElement as element };\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'umb-entity-item-ref': UmbEntityItemRefElement;\r\n\t}\r\n}\r\n"],"names":["_UmbDefaultItemRefElement_instances","renderIcon_fn","UmbDefaultItemRefElement","UmbLitElement","__privateAdd","html","__privateMethod","nothing","item","__decorateClass","property","customElement","_extensionsController","_item","_readonly","_standalone","_pathAddendum","_UmbEntityItemRefElement_instances","createController_fn","UmbEntityItemRefElement","UmbRoutePathAddendumContext","__privateGet","value","oldValue","__privateSet","_changedProperties","UMB_MARK_ATTRIBUTE_NAME","entityType","UmbExtensionsElementInitializer","umbExtensionsRegistry","manifest","extensionControllers","component","slotElement","css","state"],"mappings":"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"}