{"version":3,"file":"table.element-DCiw8goK.js","sources":["../../../src/packages/core/components/backoffice-modal-container/backoffice-modal-container.element.ts","../../../src/packages/core/components/backoffice-notification-container/backoffice-notification-container.element.ts","../../../src/packages/core/components/body-layout/body-layout.element.ts","../../../src/packages/core/components/code-block/code-block.element.ts","../../../src/packages/core/components/dropdown/dropdown.element.ts","../../../src/packages/core/components/entity-actions-bundle/entity-actions-bundle.element.ts","../../../src/packages/core/components/footer-layout/footer-layout.element.ts","../../../src/packages/core/components/header-app/header-app-button.element.ts","../../../src/packages/core/components/history/history-item.element.ts","../../../src/packages/core/components/history/history-list.element.ts","../../../src/packages/core/components/icon/icon.element.ts","../../../src/packages/core/components/input-collection-configuration/input-collection-configuration.element.ts","../../../src/packages/core/components/input-color/input-color.element.ts","../../../src/packages/core/components/input-date/input-date.element.ts","../../../src/packages/core/components/input-dropdown/input-dropdown-list.element.ts","../../../src/packages/core/components/input-entity/input-entity.element.ts","../../../src/packages/core/components/input-eye-dropper/input-eye-dropper.element.ts","../../../src/packages/core/components/input-manifest/input-manifest.element.ts","../../../src/packages/core/components/input-number-range/input-number-range.element.ts","../../../src/packages/core/components/input-radio-button-list/input-radio-button-list.element.ts","../../../src/packages/core/components/input-slider/input-slider.element.ts","../../../src/packages/core/components/input-toggle/input-toggle.element.ts","../../../src/packages/core/components/input-with-alias/input-with-alias.element.ts","../../../src/packages/core/components/multiple-color-picker-input/multiple-color-picker-input.element.ts","../../../src/packages/core/components/multiple-color-picker-input/multiple-color-picker-item-input.element.ts","../../../src/packages/core/components/multiple-text-string-input/input-multiple-text-string.element.ts","../../../src/packages/core/components/multiple-text-string-input/input-multiple-text-string-item.element.ts","../../../src/packages/core/components/popover-layout/popover-layout.element.ts","../../../src/packages/core/components/ref-item/ref-item.element.ts","../../../src/packages/core/components/stack/stack.element.ts","../../../src/packages/core/components/split-panel/split-panel.element.ts","../../../src/packages/core/components/table/table.element.ts"],"sourcesContent":["import { UmbTextStyles } from '@umbraco-cms/backoffice/style';\nimport type { CSSResultGroup } from '@umbraco-cms/backoffice/external/lit';\nimport { css, html, repeat, customElement, state, nothing, property } from '@umbraco-cms/backoffice/external/lit';\nimport type { UmbModalManagerContext, UmbModalContext } from '@umbraco-cms/backoffice/modal';\nimport { UMB_MODAL_MANAGER_CONTEXT, UmbModalElement } from '@umbraco-cms/backoffice/modal';\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\n\n@customElement('umb-backoffice-modal-container')\nexport class UmbBackofficeModalContainerElement extends UmbLitElement {\n\t@state()\n\tprivate _modalElementMap: Map = new Map();\n\n\t@state()\n\t_modals: Array = [];\n\n\t@property({ reflect: true, attribute: 'fill-background' })\n\tfillBackground = false;\n\n\tprivate _modalManager?: UmbModalManagerContext;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.consumeContext(UMB_MODAL_MANAGER_CONTEXT, (instance) => {\n\t\t\t//TODO: This is being called way to many times if first page load includes an open modal.\n\t\t\tthis._modalManager = instance;\n\t\t\tthis._observeModals();\n\t\t});\n\t}\n\n\tprivate _observeModals() {\n\t\tif (!this._modalManager) return;\n\t\tthis.observe(this._modalManager.modals, (modals) => {\n\t\t\tthis.#createModalElements(modals);\n\t\t});\n\t}\n\n\t/**\n\t * We cannot render the umb-modal element directly in the uui-modal-container because it wont get recognized by UUI.\n\t * We therefore have a helper class which creates the uui-modal element and returns it.\n\t * @param modals\n\t */\n\t#createModalElements(modals: Array) {\n\t\tthis.removeAttribute('fill-background');\n\t\tconst oldValue = this._modals;\n\t\tthis._modals = modals;\n\n\t\tconst oldModals = oldValue.filter((oldModal) => !modals.some((modal) => modal.key === oldModal.key));\n\n\t\toldModals.forEach((modal) => {\n\t\t\t// TODO: I would not think this works as expected, the callback method has to be the exact same instance as the one added: [NL]\n\t\t\tthis._modalElementMap.get(modal.key)?.removeEventListener('close-end', this.#onCloseEnd.bind(this, modal.key));\n\t\t\tthis._modalElementMap.delete(modal.key);\n\t\t});\n\n\t\tif (this._modals.length === 0) {\n\t\t\t//this._modalElementMap.clear(); // should not make a difference now that we clean it above. [NL]\n\t\t\treturn;\n\t\t}\n\n\t\tthis._modals.forEach((modal) => {\n\t\t\tif (this._modalElementMap.has(modal.key)) return;\n\n\t\t\tconst modalElement = new UmbModalElement();\n\t\t\tmodalElement.modalContext = modal;\n\n\t\t\tmodalElement.element?.addEventListener('close-end', this.#onCloseEnd.bind(this, modal.key));\n\t\t\tmodal.addEventListener('umb:destroy', this.#onCloseEnd.bind(this, modal.key));\n\n\t\t\tthis._modalElementMap.set(modal.key, modalElement);\n\n\t\t\t// If any of the modals are fillBackground, set the fillBackground property to true\n\t\t\tif (modal.backdropBackground) {\n\t\t\t\tthis.fillBackground = true;\n\t\t\t\tthis.shadowRoot\n\t\t\t\t\t?.getElementById('container')\n\t\t\t\t\t?.style.setProperty('--backdrop-background', modal.backdropBackground);\n\t\t\t}\n\n\t\t\tthis.requestUpdate();\n\t\t});\n\t}\n\n\t#onCloseEnd(key: string) {\n\t\tthis._modalManager?.remove(key);\n\t}\n\n\t#renderModal(key: string) {\n\t\tconst modalElement = this._modalElementMap.get(key);\n\t\tif (!modalElement) return nothing;\n\n\t\treturn modalElement.render();\n\t}\n\n\toverride render() {\n\t\treturn html`\n\t\t\t\n\t\t\t\t${this._modals.length > 0\n\t\t\t\t\t? repeat(\n\t\t\t\t\t\t\tthis._modals,\n\t\t\t\t\t\t\t(modal) => modal.key,\n\t\t\t\t\t\t\t(modal) => this.#renderModal(modal.key),\n\t\t\t\t\t\t)\n\t\t\t\t\t: ''}\n\t\t\t\n\t\t`;\n\t}\n\n\tstatic override styles: CSSResultGroup = [\n\t\tUmbTextStyles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tposition: absolute;\n\t\t\t\tz-index: 1000;\n\t\t\t}\n\n\t\t\t:host([fill-background]) {\n\t\t\t\t--uui-modal-dialog-border-radius: 0;\n\t\t\t\t--uui-shadow-depth-5: 0;\n\t\t\t}\n\n\t\t\t:host([fill-background]) #container::after {\n\t\t\t\tbackground: var(--backdrop-background);\n\t\t\t}\n\t\t`,\n\t];\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-backoffice-modal-container': UmbBackofficeModalContainerElement;\n\t}\n}\n","import { UmbTextStyles } from '@umbraco-cms/backoffice/style';\nimport type { CSSResultGroup } from '@umbraco-cms/backoffice/external/lit';\nimport { css, html, customElement, state, repeat, query } from '@umbraco-cms/backoffice/external/lit';\nimport type { UmbNotificationHandler, UmbNotificationContext } from '@umbraco-cms/backoffice/notification';\nimport { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification';\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\n\n@customElement('umb-backoffice-notification-container')\nexport class UmbBackofficeNotificationContainerElement extends UmbLitElement {\n\t@query('#notifications')\n\tprivate _notificationsElement?: HTMLElement;\n\n\t@state()\n\tprivate _notifications?: UmbNotificationHandler[];\n\n\tprivate _notificationContext?: UmbNotificationContext;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.consumeContext(UMB_NOTIFICATION_CONTEXT, (instance) => {\n\t\t\tthis._notificationContext = instance;\n\t\t\tthis._observeNotifications();\n\t\t});\n\t}\n\n\tprivate _observeNotifications() {\n\t\tif (!this._notificationContext) return;\n\n\t\tthis.observe(this._notificationContext.notifications, (notifications) => {\n\t\t\tthis._notifications = notifications;\n\n\t\t\t// Close and instantly open the popover again to make sure it stays on top of all other content on the page\n\t\t\t// TODO: This ignorer is just needed for JSON SCHEMA TO WORK, As its not updated with latest TS jet.\n\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t// @ts-ignore\n\t\t\tthis._notificationsElement?.hidePopover?.(); // To prevent issues in FireFox I added `?.` before `()` [NL]\n\t\t\t// TODO: This ignorer is just needed for JSON SCHEMA TO WORK, As its not updated with latest TS jet.\n\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t// @ts-ignore\n\t\t\tthis._notificationsElement?.showPopover?.(); // To prevent issues in FireFox I added `?.` before `()` [NL]\n\t\t});\n\t}\n\n\toverride render() {\n\t\treturn html`\n\t\t\t\n\t\t\t\t${this._notifications\n\t\t\t\t\t? repeat(\n\t\t\t\t\t\t\tthis._notifications,\n\t\t\t\t\t\t\t(notification: UmbNotificationHandler) => notification.key,\n\t\t\t\t\t\t\t(notification) => html`${notification.element}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t: ''}\n\t\t\t\n\t\t`;\n\t}\n\n\tstatic override styles: CSSResultGroup = [\n\t\tUmbTextStyles,\n\t\tcss`\n\t\t\t#notifications {\n\t\t\t\ttop: 0;\n\t\t\t\tleft: 0;\n\t\t\t\tright: 0;\n\t\t\t\tbottom: 45px;\n\t\t\t\theight: auto;\n\t\t\t\tpadding: var(--uui-size-layout-1);\n\n\t\t\t\tposition: fixed;\n\t\t\t\twidth: 100vw;\n\t\t\t\tbackground: 0;\n\t\t\t\toutline: 0;\n\t\t\t\tborder: 0;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t`,\n\t];\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-backoffice-notification-container': UmbBackofficeNotificationContainerElement;\n\t}\n}\n","import { UmbTextStyles } from '@umbraco-cms/backoffice/style';\nimport {\n\tcss,\n\thtml,\n\tLitElement,\n\tnothing,\n\tcustomElement,\n\tproperty,\n\tstate,\n\tquery,\n} from '@umbraco-cms/backoffice/external/lit';\n\n//TODO: Add the following attributes to JSDocs: header-transparent, main-no-padding, header-no-padding, header-fit-height\n\n/**\n * @element umb-body-layout\n * @description Layout element to arrange elements in a body layout. A general layout for most views.\n * @slot - Slot for main content\n * @slot icon - Slot for icon\n * @slot name - Slot for name\n * @slot header - Slot for header element\n * @slot footer - Slot for footer element\n * @slot footer-info - Slot for info in the footer\n * @slot actions - Slot for actions in the footer\n * @slot default - slot for main content\n * @class UmbBodyLayout\n * @augments {UmbLitElement}\n */\n@customElement('umb-body-layout')\nexport class UmbBodyLayoutElement extends LitElement {\n\t@query('#main')\n\tprivate _scrollContainer?: HTMLElement;\n\n\t@property()\n\tpublic headline = '';\n\n\t@property({ type: Boolean, reflect: true, attribute: 'header-transparent' })\n\tpublic headerTransparent = false;\n\n\t@state()\n\tprivate _headerSlotHasChildren = false;\n\n\t@state()\n\tprivate _navigationSlotHasChildren = false;\n\n\t@state()\n\tprivate _actionsMenuSlotHasChildren = false;\n\n\t@state()\n\tprivate _footerSlotHasChildren = false;\n\n\t@state()\n\tprivate _actionsSlotHasChildren = false;\n\n\t#hasNodes = (e: Event) => {\n\t\treturn (e.target as HTMLSlotElement).assignedNodes({ flatten: true }).length > 0;\n\t};\n\n\toverride connectedCallback(): void {\n\t\tsuper.connectedCallback();\n\t\tif (this.headerTransparent) {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis._scrollContainer?.addEventListener('scroll', this.#onScroll);\n\t\t\t});\n\t\t}\n\t}\n\n\toverride disconnectedCallback(): void {\n\t\tsuper.disconnectedCallback();\n\t\tthis._scrollContainer?.removeEventListener('scroll', this.#onScroll);\n\t}\n\n\t#onScroll = () => {\n\t\tif (!this._scrollContainer) return;\n\t\tthis.toggleAttribute('scrolling', this._scrollContainer.scrollTop > 0);\n\t};\n\n\t#setSlotVisibility(target: HTMLElement, hasChildren: boolean) {\n\t\ttarget.style.display = hasChildren ? 'flex' : 'none';\n\t}\n\n\toverride render() {\n\t\treturn html`\n\t\t\t\n\t\t\t\t${this.headline ? html`

${this.headline}

` : nothing}\n\n\t\t\t\t {\n\t\t\t\t\t\tthis._headerSlotHasChildren = this.#hasNodes(e);\n\t\t\t\t\t\tthis.#setSlotVisibility(e.target as HTMLElement, this._headerSlotHasChildren);\n\t\t\t\t\t}}>\n\t\t\t\t {\n\t\t\t\t\t\tthis._navigationSlotHasChildren = this.#hasNodes(e);\n\t\t\t\t\t\tthis.#setSlotVisibility(e.target as HTMLElement, this._navigationSlotHasChildren);\n\t\t\t\t\t}}>\n\t\t\t\t {\n\t\t\t\t\t\tthis._actionsMenuSlotHasChildren = this.#hasNodes(e);\n\t\t\t\t\t\tthis.#setSlotVisibility(e.target as HTMLElement, this._actionsMenuSlotHasChildren);\n\t\t\t\t\t}}>\n\t\t\t\n\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\n\t\t\t\n\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\tthis._footerSlotHasChildren = this.#hasNodes(e);\n\t\t\t\t\t}}>\n\t\t\t\t {\n\t\t\t\t\t\tthis._actionsSlotHasChildren = this.#hasNodes(e);\n\t\t\t\t\t}}>\n\t\t\t\n\t\t`;\n\t}\n\n\tstatic override styles = [\n\t\tUmbTextStyles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: flex;\n\t\t\t\tbackground-color: var(--umb-body-layout-color-background, var(--uui-color-background));\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tflex-direction: column;\n\t\t\t}\n\n\t\t\t#header {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: var(--umb-header-layout-height);\n\t\t\t\tbackground-color: var(--uui-color-surface);\n\t\t\t\tborder-bottom: 1px solid var(--uui-color-border);\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tz-index: 1;\n\t\t\t}\n\t\t\t:host([header-transparent]) #header {\n\t\t\t\tbackground-color: transparent;\n\t\t\t\tborder-color: transparent;\n\t\t\t\ttransition: box-shadow 150ms ease-in-out;\n\t\t\t\tbox-shadow: 0 -1px 0px 0px rgba(0, 0, 0, 0.5);\n\t\t\t}\n\t\t\t:host([header-transparent][scrolling]) #header {\n\t\t\t\t/* This should be using the uui-shadows but for now they are too drastic for this use case */\n\t\t\t\tbox-shadow: 0 1px 15px 0 rgba(0, 0, 0, 0.2);\n\t\t\t}\n\t\t\t:host([header-fit-height][header-transparent]:not([header-no-padding])) #header-slot {\n\t\t\t\tpadding: var(--uui-size-layout-1);\n\t\t\t}\n\t\t\t:host([header-fit-height]) #header {\n\t\t\t\theight: fit-content;\n\t\t\t}\n\t\t\t#header-slot {\n\t\t\t\tpadding: 0 var(--uui-size-layout-1);\n\t\t\t\tflex-grow: 1;\n\t\t\t}\n\t\t\t:host([header-no-padding]) #header-slot {\n\t\t\t\tpadding: 0;\n\t\t\t}\n\n\t\t\t:host([header-transparent]:not([main-no-padding])) #main:not(*[style='display: none'] + *) {\n\t\t\t\t/* The following styling is only applied if the clear-header IS present,\n\t\t\t\tthe main-no-padding attribute is NOT present, and the header is NOT hidden */\n\t\t\t\tpadding-top: var(--uui-size-space-1);\n\t\t\t}\n\t\t\t:host([main-no-padding]) #main {\n\t\t\t\tpadding: 0;\n\t\t\t}\n\n\t\t\t#header-slot,\n\t\t\t#action-menu-slot,\n\t\t\t#navigation-slot {\n\t\t\t\tdisplay: none;\n\t\t\t\theight: 100%;\n\t\t\t\talign-items: center;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tmin-width: 0;\n\t\t\t}\n\n\t\t\t#navigation-slot {\n\t\t\t\tmargin-left: auto;\n\t\t\t}\n\n\t\t\t#headline {\n\t\t\t\tdisplay: block;\n\t\t\t\tmargin: 0 var(--uui-size-layout-1);\n\t\t\t}\n\n\t\t\t#main {\n\t\t\t\tdisplay: block;\n\t\t\t\tflex: 1;\n\t\t\t\tflex-direction: column;\n\t\t\t\toverflow-y: auto;\n\t\t\t\tpadding: var(--uui-size-layout-1);\n\t\t\t}\n\n\t\t\t#main > slot::slotted(*:first-child) {\n\t\t\t\tpadding-top: 0;\n\t\t\t\tmargin-top: 0;\n\t\t\t}\n\t\t`,\n\t];\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-body-layout': UmbBodyLayoutElement;\n\t}\n}\n","import { UmbTextStyles } from '@umbraco-cms/backoffice/style';\nimport { css, customElement, html, property, state, when, LitElement } from '@umbraco-cms/backoffice/external/lit';\n\n//TODO consider adding a highlight prop to the code block, that could spin up/access monaco instance and highlight the code\n\n/**\n * A simple styled box for showing code-based error messages or blocks od code.\n * @slot - the default slot where the full message resides\n */\n@customElement('umb-code-block')\nexport class UmbCodeBlockElement extends LitElement {\n\t@property()\n\tlanguage = '';\n\n\t@property({ type: Boolean })\n\tcopy = false;\n\n\t@state()\n\tprivate _copyState: 'idle' | 'success' = 'idle';\n\n\tasync copyCode() {\n\t\tconst text = this.textContent;\n\t\tif (text) {\n\t\t\tawait navigator.clipboard.writeText(text);\n\t\t\tthis._copyState = 'success';\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis._copyState = 'idle';\n\t\t\t}, 2000);\n\t\t}\n\t}\n\n\toverride render() {\n\t\treturn html`\n\t\t\t${this.#renderHeader()}\n\t\t\t
\n\t\t`; // Avoid breaks between elements of
\n\t}\n\n\t#renderHeader() {\n\t\tif (!this.language && !this.copy) return;\n\t\treturn html`\n\t\t\t
\n\t\t\t\t${this.language}\n\t\t\t\t${when(\n\t\t\t\t\tthis.copy,\n\t\t\t\t\t() => html`\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\tthis._copyState === 'idle',\n\t\t\t\t\t\t\t\t() => html` Copy`,\n\t\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\t\thtml` Copied!`,\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t`,\n\t\t\t\t)}\n\t\t\t
\n\t\t`;\n\t}\n\n\tstatic override readonly styles = [\n\t\tUmbTextStyles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t\tborder: 1px solid var(--uui-color-divider-emphasis);\n\t\t\t\tborder-radius: var(--uui-border-radius);\n\t\t\t}\n\n\t\t\tuui-scroll-container {\n\t\t\t\tmax-height: 500px;\n\t\t\t\toverflow-y: auto;\n\t\t\t\toverflow-wrap: anywhere;\n\t\t\t}\n\n\t\t\tpre {\n\t\t\t\tfont-family: monospace;\n\t\t\t\tbackground-color: var(--uui-color-surface-alt);\n\t\t\t\tcolor: #303033;\n\t\t\t\tdisplay: block;\n\t\t\t\tmargin: 0;\n\t\t\t\toverflow-x: auto;\n\t\t\t\tpadding: 9.5px;\n\t\t\t}\n\n\t\t\tpre,\n\t\t\tcode {\n\t\t\t\tword-wrap: normal;\n\t\t\t\twhite-space: pre;\n\t\t\t}\n\n\t\t\t#header {\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\talign-items: center;\n\t\t\t\tbackground-color: var(--uui-color-surface-alt);\n\t\t\t\tborder-bottom: 1px solid var(--uui-color-divider-emphasis);\n\t\t\t}\n\n\t\t\t#lang {\n\t\t\t\tmargin-left: 16px;\n\t\t\t\tfont-weight: bold;\n\t\t\t}\n\n\t\t\tbutton {\n\t\t\t\tfont-family: inherit;\n\t\t\t\tpadding: 6px 16px;\n\t\t\t\tbackground-color: transparent;\n\t\t\t\tborder: none;\n\t\t\t\tborder-left: 1px solid var(--uui-color-divider-emphasis);\n\t\t\t\tborder-radius: 0;\n\t\t\t\tcolor: #000;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tgap: 8px;\n\t\t\t}\n\n\t\t\tbutton:hover {\n\t\t\t\tbackground-color: var(--uui-color-surface-emphasis);\n\t\t\t}\n\t\t`,\n\t];\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-code-block': UmbCodeBlockElement;\n\t}\n}\n","import type {\n\tUUIInterfaceColor,\n\tUUIInterfaceLook,\n\tPopoverContainerPlacement,\n\tUUIPopoverContainerElement,\n} from '@umbraco-cms/backoffice/external/uui';\nimport { UmbTextStyles } from '@umbraco-cms/backoffice/style';\nimport type { PropertyValueMap } from '@umbraco-cms/backoffice/external/lit';\nimport { css, html, customElement, property, query, when } from '@umbraco-cms/backoffice/external/lit';\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\n\n// TODO: maybe move this to UI Library.\n@customElement('umb-dropdown')\nexport class UmbDropdownElement extends UmbLitElement {\n\t@query('#dropdown-popover')\n\tpopoverContainerElement?: UUIPopoverContainerElement;\n\t@property({ type: Boolean, reflect: true })\n\topen = false;\n\n\t@property()\n\tlabel = '';\n\n\t@property()\n\tlook: UUIInterfaceLook = 'default';\n\n\t@property()\n\tcolor: UUIInterfaceColor = 'default';\n\n\t@property()\n\tplacement: PopoverContainerPlacement = 'bottom-start';\n\n\t@property({ type: Boolean })\n\tcompact = false;\n\n\t@property({ type: Boolean, attribute: 'hide-expand' })\n\thideExpand = false;\n\n\tprotected override updated(_changedProperties: PropertyValueMap | Map): void {\n\t\tsuper.updated(_changedProperties);\n\t\tif (_changedProperties.has('open') && this.popoverContainerElement) {\n\t\t\tif (this.open) {\n\t\t\t\t// TODO: This ignorer is just needed for JSON SCHEMA TO WORK, As its not updated with latest TS jet.\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t// @ts-ignore\n\t\t\t\tthis.popoverContainerElement.showPopover();\n\t\t\t} else {\n\t\t\t\t// TODO: This ignorer is just needed for JSON SCHEMA TO WORK, As its not updated with latest TS jet.\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t\t\t// @ts-ignore\n\t\t\t\tthis.popoverContainerElement.hidePopover();\n\t\t\t}\n\t\t}\n\t}\n\n\t#onToggle(event: ToggleEvent) {\n\t\t// TODO: This ignorer is just needed for JSON SCHEMA TO WORK, As its not updated with latest TS jet.\n\t\t// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n\t\t// @ts-ignore\n\t\tthis.open = event.newState === 'open';\n\t}\n\n\toverride render() {\n\t\treturn html`\n\t\t\t\n\t\t\t\t\n\t\t\t\t${when(\n\t\t\t\t\t!this.hideExpand,\n\t\t\t\t\t() => html``,\n\t\t\t\t)}\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t`;\n\t}\n\n\tstatic override styles = [\n\t\tUmbTextStyles,\n\t\tcss`\n\t\t\t#dropdown-button {\n\t\t\t\tmin-width: max-content;\n\t\t\t}\n\t\t\t:host(:not([hide-expand]):not([compact])) #dropdown-button {\n\t\t\t\t--uui-button-padding-right-factor: 2;\n\t\t\t}\n\n\t\t\t:host(:not([compact])) #symbol-expand {\n\t\t\t\tmargin-left: var(--uui-size-space-2);\n\t\t\t}\n\t\t`,\n\t];\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-dropdown': UmbDropdownElement;\n\t}\n}\n","import { UmbEntityContext } from '../../entity/entity.context.js';\nimport type { UmbEntityAction } from '@umbraco-cms/backoffice/entity-action';\nimport type { PropertyValueMap } from '@umbraco-cms/backoffice/external/lit';\nimport { html, nothing, customElement, property, state, ifDefined } from '@umbraco-cms/backoffice/external/lit';\nimport type { UmbSectionSidebarContext } from '@umbraco-cms/backoffice/section';\nimport { UMB_SECTION_SIDEBAR_CONTEXT } from '@umbraco-cms/backoffice/section';\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\nimport type { ManifestEntityActionDefaultKind } from '@umbraco-cms/backoffice/extension-registry';\nimport { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';\nimport { UmbExtensionsManifestInitializer, createExtensionApi } from '@umbraco-cms/backoffice/extension-api';\n\n@customElement('umb-entity-actions-bundle')\nexport class UmbEntityActionsBundleElement extends UmbLitElement {\n\t@property({ type: String, attribute: 'entity-type' })\n\tentityType?: string;\n\n\t@property({ type: String })\n\tunique?: string | null;\n\n\t@property({ type: String })\n\tpublic label?: string;\n\n\t@state()\n\tprivate _numberOfActions = 0;\n\n\t@state()\n\tprivate _firstActionManifest?: ManifestEntityActionDefaultKind;\n\n\t@state()\n\tprivate _firstActionApi?: UmbEntityAction;\n\n\t#sectionSidebarContext?: UmbSectionSidebarContext;\n\n\t// TODO: provide the entity context on a higher level, like the root element of this entity, tree-item/workspace/... [NL]\n\t#entityContext = new UmbEntityContext(this);\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.consumeContext(UMB_SECTION_SIDEBAR_CONTEXT, (sectionContext) => {\n\t\t\tthis.#sectionSidebarContext = sectionContext;\n\t\t});\n\t}\n\n\tprotected override updated(_changedProperties: PropertyValueMap | Map): void {\n\t\tif (_changedProperties.has('entityType') && _changedProperties.has('unique')) {\n\t\t\tthis.#entityContext.setEntityType(this.entityType);\n\t\t\tthis.#entityContext.setUnique(this.unique);\n\t\t\tthis.#observeEntityActions();\n\t\t}\n\t}\n\n\t#observeEntityActions() {\n\t\tnew UmbExtensionsManifestInitializer(\n\t\t\tthis,\n\t\t\tumbExtensionsRegistry,\n\t\t\t'entityAction',\n\t\t\t(ext) => ext.forEntityTypes.includes(this.entityType!),\n\t\t\tasync (actions) => {\n\t\t\t\tthis._numberOfActions = actions.length;\n\t\t\t\tthis._firstActionManifest =\n\t\t\t\t\tthis._numberOfActions > 0 ? (actions[0].manifest as ManifestEntityActionDefaultKind) : undefined;\n\t\t\t\tthis.#createFirstActionApi();\n\t\t\t},\n\t\t\t'umbEntityActionsObserver',\n\t\t);\n\t}\n\n\tasync #createFirstActionApi() {\n\t\tif (!this._firstActionManifest) return;\n\t\tthis._firstActionApi = await createExtensionApi(this, this._firstActionManifest, [\n\t\t\t{ unique: this.unique, entityType: this.entityType, meta: this._firstActionManifest.meta },\n\t\t]);\n\t}\n\n\t#openContextMenu() {\n\t\tif (!this.entityType) throw new Error('Entity type is not defined');\n\t\tif (this.unique === undefined) throw new Error('Unique is not defined');\n\t\tthis.#sectionSidebarContext?.toggleContextMenu(this, {\n\t\t\tentityType: this.entityType,\n\t\t\tunique: this.unique,\n\t\t\theadline: this.label,\n\t\t});\n\t}\n\n\tasync #onFirstActionClick(event: PointerEvent) {\n\t\tevent.stopPropagation();\n\t\tthis.#sectionSidebarContext?.closeContextMenu();\n\t\tawait this._firstActionApi?.execute();\n\t}\n\n\toverride render() {\n\t\tif (this._numberOfActions === 0) return nothing;\n\t\treturn html`${this.#renderMore()} ${this.#renderFirstAction()} `;\n\t}\n\n\t#renderMore() {\n\t\tif (this._numberOfActions === 1) return nothing;\n\t\treturn html`\n\t\t\t\n\t\t`;\n\t}\n\n\t#renderFirstAction() {\n\t\tif (!this._firstActionApi) return nothing;\n\t\treturn html`\n\t\t\t\n\t\t`;\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-entity-actions-bundle': UmbEntityActionsBundleElement;\n\t}\n}\n","import { css, html, LitElement, customElement } from '@umbraco-cms/backoffice/external/lit';\nimport { UmbTextStyles } from '@umbraco-cms/backoffice/style';\n\n/**\n * @element umb-footer-layout\n * @description\n * @slot default - Slot footer items\n * @slot actions - Slot actions\n * @class UmbFooterLayout\n * @augments {UmbLitElement}\n */\n@customElement('umb-footer-layout')\nexport class UmbFooterLayoutElement extends LitElement {\n\toverride render() {\n\t\treturn html`\n\t\t\t\n\t\t\t\n\t\t`;\n\t}\n\n\tstatic override styles = [\n\t\tUmbTextStyles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: space-between;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: var(--umb-footer-layout-height);\n\t\t\t\tborder-top: 1px solid var(--uui-color-border);\n\t\t\t\tbackground-color: var(--uui-color-surface);\n\t\t\t\tbox-sizing: border-box;\n\t\t\t}\n\n\t\t\t#actions {\n\t\t\t\tdisplay: flex;\n\t\t\t\tgap: var(--uui-size-space-2);\n\t\t\t\tmargin: 0 var(--uui-size-layout-1);\n\t\t\t\tmargin-left: auto;\n\t\t\t}\n\t\t`,\n\t];\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-footer-layout': UmbFooterLayoutElement;\n\t}\n}\n","import { UmbTextStyles } from '@umbraco-cms/backoffice/style';\nimport type { CSSResultGroup } from '@umbraco-cms/backoffice/external/lit';\nimport { css, html, customElement, ifDefined } from '@umbraco-cms/backoffice/external/lit';\nimport type {\n\tManifestHeaderAppButtonKind,\n\tUmbBackofficeManifestKind,\n} from '@umbraco-cms/backoffice/extension-registry';\nimport { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\n\nconst manifest: UmbBackofficeManifestKind = {\n\ttype: 'kind',\n\talias: 'Umb.Kind.Button',\n\tmatchKind: 'button',\n\tmatchType: 'headerApp',\n\tmanifest: {\n\t\ttype: 'headerApp',\n\t\tkind: 'button',\n\t\telementName: 'umb-header-app-button',\n\t},\n};\numbExtensionsRegistry.register(manifest);\n\n@customElement('umb-header-app-button')\nexport class UmbHeaderAppButtonElement extends UmbLitElement {\n\tpublic manifest?: ManifestHeaderAppButtonKind;\n\n\toverride render() {\n\t\treturn html`\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t`;\n\t}\n\n\tstatic override styles: CSSResultGroup = [\n\t\tUmbTextStyles,\n\t\tcss`\n\t\t\tuui-button {\n\t\t\t\tfont-size: 18px;\n\t\t\t\t--uui-button-background-color: var(--umb-header-app-button-background-color, transparent);\n\t\t\t\t--uui-button-background-color-hover: var(\n\t\t\t\t\t--umb-header-app-button-background-color-hover,\n\t\t\t\t\tvar(--uui-color-emphasis)\n\t\t\t\t);\n\t\t\t}\n\t\t`,\n\t];\n}\n\nexport default UmbHeaderAppButtonElement;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-header-app-button': UmbHeaderAppButtonElement;\n\t}\n}\n","import { css, html, customElement, property } from '@umbraco-cms/backoffice/external/lit';\nimport { UmbTextStyles } from '@umbraco-cms/backoffice/style';\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\n\n@customElement('umb-history-item')\nexport class UmbHistoryItemElement extends UmbLitElement {\n\t@property({ type: String })\n\tname?: string;\n\n\t@property({ type: String })\n\tdetail?: string;\n\n\toverride render() {\n\t\treturn html`\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t${this.name}\n\t\t\t\t\t${this.detail}\n\t\t\t\t
\n\t\t\t
\n\t\t\t\n\t\t\t\n\t\t`;\n\t}\n\n\tstatic override styles = [\n\t\tUmbTextStyles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\t--avatar-size: calc(2em + 4px);\n\t\t\t\tdisplay: contents;\n\t\t\t}\n\n\t\t\tslot[name='actions'] {\n\t\t\t\t--uui-button-border-radius: 50px 50px 50px 50px;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\t--uui-button-height: calc(var(--uui-size-2) * 4);\n\t\t\t\tmargin-right: var(--uui-size-2);\n\t\t\t}\n\n\t\t\t#actions-container {\n\t\t\t\topacity: 0;\n\t\t\t\ttransition: opacity 120ms;\n\t\t\t}\n\n\t\t\t:host(:hover) #actions-container {\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\t:host(:hover) #actions-container {\n\t\t\t\topacity: 1;\n\t\t\t}\n\n\t\t\t.user-info {\n\t\t\t\tposition: relative;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: flex-end;\n\t\t\t\tgap: var(--uui-size-space-5);\n\t\t\t}\n\n\t\t\t.user-info div {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t}\n\n\t\t\t.detail {\n\t\t\t\tfont-size: var(--uui-size-4);\n\t\t\t\tcolor: var(--uui-color-text-alt);\n\t\t\t\tline-height: 1;\n\t\t\t}\n\t\t`,\n\t];\n}\n\nexport default UmbHistoryItemElement;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-history-item': UmbHistoryItemElement;\n\t}\n}\n","import { css, html, customElement } from '@umbraco-cms/backoffice/external/lit';\nimport { UmbTextStyles } from '@umbraco-cms/backoffice/style';\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\n\n@customElement('umb-history-list')\nexport class UmbHistoryListElement extends UmbLitElement {\n\toverride render() {\n\t\treturn html` `;\n\t}\n\n\tstatic override styles = [\n\t\tUmbTextStyles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: grid;\n\t\t\t\tgrid-template-columns: auto 1fr auto;\n\t\t\t\talign-items: center;\n\t\t\t\t--avatar-size: calc(2em + 4px);\n\t\t\t\tgap: var(--uui-size-6);\n\t\t\t\tposition: relative;\n\t\t\t}\n\n\t\t\t/** TODO: This doesn't work due to \"display:contents\" in umb-history-item, but is needed for the way I put the grid together.\n\t\t\t* Find a different solution so we can have the grey line that links each history item together (this is purely a visual effect, no rush)\n\n\t\t\t::slotted(*) {\n\t\t\t\tposition: relative;\n\t\t\t}\n\n\t\t\t::slotted(*:not(:last-child)) {\n\t\t\t\tmargin-bottom: calc(2 * var(--uui-size-space-3));\n\t\t\t}\n\t\t\t::slotted(*:not(:last-child))::before {\n\t\t\t\tcontent: '';\n\t\t\t\tborder: 1px solid var(--uui-color-border);\n\t\t\t\tposition: absolute;\n\t\t\t\tdisplay: block;\n\t\t\t\theight: calc(1.5 * var(--avatar-size));\n\t\t\t\ttop: var(--avatar-size);\n\t\t\t\tleft: calc(-1px + var(--avatar-size) / 2);\n\t\t\t}\n\t\t\t*/\n\t\t`,\n\t];\n}\n\nexport default UmbHistoryListElement;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-history-list': UmbHistoryListElement;\n\t}\n}\n","import { extractUmbColorVariable } from '../../resources/extractUmbColorVariable.function.js';\nimport { UmbTextStyles } from '@umbraco-cms/backoffice/style';\nimport { html, customElement, property, state, ifDefined, css, styleMap } from '@umbraco-cms/backoffice/external/lit';\nimport type { StyleInfo } from '@umbraco-cms/backoffice/external/lit';\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\n\n/**\n * @element umb-icon\n * @description A wrapper for the uui-icon component with color alias support\n * @augments {UmbLitElement}\n */\n@customElement('umb-icon')\nexport class UmbIconElement extends UmbLitElement {\n\t#color?: string;\n\t#fallbackColor?: string;\n\n\t@state()\n\tprivate _icon?: string;\n\n\t@state()\n\tprivate _style: StyleInfo = {};\n\n\t/**\n\t * Color alias or a color code directly.\\\n\t * If a color has been set via the name property, this property will override it.\n\t */\n\t@property({ type: String })\n\tpublic set color(value: string) {\n\t\tthis.#color = value;\n\t\tthis.#updateColorStyle();\n\t}\n\tpublic get color(): string | undefined {\n\t\treturn this.#color || this.#fallbackColor;\n\t}\n\n\t/**\n\t * The icon name. Can be appended with a color.\\\n\t * Example **icon-heart color-red**\n\t */\n\t@property({ type: String })\n\tpublic set name(value: string | undefined) {\n\t\tconst [icon, color] = value ? value.split(' ') : [];\n\t\tthis.#fallbackColor = color;\n\t\tthis._icon = icon;\n\t\tthis.#updateColorStyle();\n\t}\n\tpublic get name(): string | undefined {\n\t\treturn this._icon;\n\t}\n\n\t#updateColorStyle() {\n\t\tconst value = this.#color || this.#fallbackColor;\n\n\t\tif (!value) {\n\t\t\tthis._style = { '--uui-icon-color': 'inherit' };\n\t\t\treturn;\n\t\t}\n\n\t\tconst color = value.replace('color-', '');\n\t\tconst variable = extractUmbColorVariable(color);\n\t\tconst styling = variable ? `var(${variable})` : color;\n\n\t\tthis._style = { '--uui-icon-color': styling };\n\t}\n\n\toverride render() {\n\t\treturn html``;\n\t}\n\n\tstatic override styles = [\n\t\tUmbTextStyles,\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: center;\n\t\t\t\talign-items: center;\n\t\t\t}\n\t\t`,\n\t];\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-icon': UmbIconElement;\n\t}\n}\n","import { html, customElement, property, css, state, nothing } from '@umbraco-cms/backoffice/external/lit';\nimport { UmbChangeEvent } from '@umbraco-cms/backoffice/event';\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\nimport {\n\tUMB_DATATYPE_WORKSPACE_MODAL,\n\tUMB_DATA_TYPE_ENTITY_TYPE,\n\tUMB_DATA_TYPE_PICKER_FLOW_DATA_TYPE_PICKER_MODAL,\n} from '@umbraco-cms/backoffice/data-type';\nimport { UmbModalRouteRegistrationController } from '@umbraco-cms/backoffice/router';\nimport { UmbFormControlMixin } from '@umbraco-cms/backoffice/validation';\n\n@customElement('umb-input-collection-configuration')\nexport class UmbInputCollectionConfigurationElement extends UmbFormControlMixin(\n\tUmbLitElement,\n) {\n\tprotected override getFormElement() {\n\t\treturn undefined;\n\t}\n\n\t#dataTypeModal;\n\n\t#propertyEditorUiAlias = 'Umb.PropertyEditorUi.Collection';\n\n\t@state()\n\tprivate _dataTypePickerModalPath?: string;\n\n\t@property({ attribute: 'default-value' })\n\tdefaultValue?: string;\n\n\t#setValue(value: string | undefined) {\n\t\tthis.value = value;\n\t\tthis.dispatchEvent(new UmbChangeEvent());\n\t}\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tnew UmbModalRouteRegistrationController(this, UMB_DATA_TYPE_PICKER_FLOW_DATA_TYPE_PICKER_MODAL)\n\t\t\t.addAdditionalPath(':uiAlias')\n\t\t\t.onSetup((routingInfo) => {\n\t\t\t\treturn {\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tpropertyEditorUiAlias: routingInfo.uiAlias,\n\t\t\t\t\t},\n\t\t\t\t\tvalue: undefined,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.onSubmit((submitData) => {\n\t\t\t\tif (submitData?.createNewWithPropertyEditorUiAlias) {\n\t\t\t\t\tthis.#createDataType();\n\t\t\t\t} else {\n\t\t\t\t\tthis.#setValue(submitData?.dataTypeId ?? this.defaultValue ?? '');\n\t\t\t\t}\n\t\t\t})\n\t\t\t.observeRouteBuilder((routeBuilder) => {\n\t\t\t\tthis._dataTypePickerModalPath = routeBuilder({ uiAlias: this.#propertyEditorUiAlias });\n\t\t\t});\n\n\t\tthis.#dataTypeModal = new UmbModalRouteRegistrationController(this, UMB_DATATYPE_WORKSPACE_MODAL)\n\t\t\t.addAdditionalPath(':uiAlias')\n\t\t\t.onSetup((params) => {\n\t\t\t\treturn { data: { entityType: UMB_DATA_TYPE_ENTITY_TYPE, preset: { editorUiAlias: params.uiAlias } } };\n\t\t\t})\n\t\t\t.onSubmit((value) => {\n\t\t\t\tthis.#setValue(value?.unique ?? this.defaultValue ?? '');\n\t\t\t});\n\t}\n\n\t#clearDataType() {\n\t\tthis.#setValue(undefined);\n\t}\n\n\t#createDataType() {\n\t\tthis.#dataTypeModal.open(\n\t\t\t{ uiAlias: this.#propertyEditorUiAlias },\n\t\t\t`create/parent/${UMB_DATA_TYPE_ENTITY_TYPE}/null`,\n\t\t);\n\t}\n\n\t#editDataType() {\n\t\tthis.#dataTypeModal?.open({}, `edit/${this.value}`);\n\t}\n\n\toverride render() {\n\t\treturn !this.value ? this.#renderCreate() : this.#renderConfigured();\n\t}\n\n\t#renderCreate() {\n\t\tif (!this._dataTypePickerModalPath) return nothing;\n\t\treturn html`\n\t\t\t\n\t\t`;\n\t}\n\n\t#renderConfigured() {\n\t\tif (!this.value || !this._dataTypePickerModalPath) return nothing;\n\t\treturn html`\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t`;\n\t}\n\n\tstatic override styles = [\n\t\tcss`\n\t\t\t#create-button {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t`,\n\t];\n}\n\nexport default UmbInputCollectionConfigurationElement;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-input-collection-configuration': UmbInputCollectionConfigurationElement;\n\t}\n}\n","import { html, customElement, property, map, nothing } from '@umbraco-cms/backoffice/external/lit';\nimport { UmbChangeEvent } from '@umbraco-cms/backoffice/event';\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\nimport { UUIFormControlMixin } from '@umbraco-cms/backoffice/external/uui';\nimport type { UmbSwatchDetails } from '@umbraco-cms/backoffice/models';\nimport type { UUIColorSwatchesEvent } from '@umbraco-cms/backoffice/external/uui';\n\n/*\n * This wraps the UUI library uui-color-swatches component\n * @element umb-input-color\n */\n@customElement('umb-input-color')\nexport class UmbInputColorElement extends UUIFormControlMixin(UmbLitElement, '') {\n\tprotected override getFormElement() {\n\t\treturn undefined;\n\t}\n\n\t@property({ type: Boolean })\n\tshowLabels = false;\n\n\t@property({ type: Array })\n\tswatches?: Array;\n\n\t#onChange(event: UUIColorSwatchesEvent) {\n\t\tthis.value = event.target.value;\n\t\tthis.dispatchEvent(new UmbChangeEvent());\n\t}\n\n\toverride render() {\n\t\treturn html`\n\t\t\t\n\t\t\t\t${this.#renderColors()}\n\t\t\t\n\t\t`;\n\t}\n\n\t#renderColors() {\n\t\tif (!this.swatches) return nothing;\n\t\treturn map(\n\t\t\tthis.swatches,\n\t\t\t(swatch) => html`\n\t\t\t\t\n\t\t\t`,\n\t\t);\n\t}\n}\n\nexport default UmbInputColorElement;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-input-color': UmbInputColorElement;\n\t}\n}\n","import { html, customElement, property, ifDefined } from '@umbraco-cms/backoffice/external/lit';\nimport { UmbChangeEvent } from '@umbraco-cms/backoffice/event';\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\nimport { UUIFormControlMixin } from '@umbraco-cms/backoffice/external/uui';\nimport type { UUIInputEvent } from '@umbraco-cms/backoffice/external/uui';\n\n/**\n * This element passes a datetime string to a regular HTML input element.\n * @remark Be aware that you cannot include a time demonination, i.e. \"10:44:00\" if you\n * set the input type of this element to \"date\". If you do, the browser will not show\n * the value at all.\n * @element umb-input-date\n */\n@customElement('umb-input-date')\nexport class UmbInputDateElement extends UUIFormControlMixin(UmbLitElement, '') {\n\tprotected override getFormElement() {\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Sets the input to readonly mode, meaning value cannot be changed but still able to read and select its content.\n\t * @type {boolean}\n\t * @attr\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\treadonly: boolean = false;\n\n\t/**\n\t * Specifies the type of input that will be rendered.\n\t * @type {'date'| 'time'| 'datetime-local'}\n\t * @attr\n\t * @default date\n\t */\n\t@property()\n\ttype: 'date' | 'time' | 'datetime-local' = 'date';\n\n\t@property({ type: String })\n\tmin?: string;\n\n\t@property({ type: String })\n\tmax?: string;\n\n\t@property({ type: Number })\n\tstep?: number;\n\n\t#onChange(event: UUIInputEvent) {\n\t\tthis.value = event.target.value;\n\t\tthis.dispatchEvent(new UmbChangeEvent());\n\t}\n\n\toverride render() {\n\t\treturn html`\n\t\t`;\n\t}\n}\n\nexport default UmbInputDateElement;\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'umb-input-date': UmbInputDateElement;\n\t}\n}\n","import { css, html, customElement, property, query } from '@umbraco-cms/backoffice/external/lit';\nimport { UUIFormControlMixin } from '@umbraco-cms/backoffice/external/uui';\nimport { UmbChangeEvent } from '@umbraco-cms/backoffice/event';\nimport { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';\nimport type { UUISelectEvent } from '@umbraco-cms/backoffice/external/uui';\n\n@customElement('umb-input-dropdown-list')\nexport class UmbInputDropdownListElement extends UUIFormControlMixin(UmbLitElement, undefined) {\n\t@property({ type: Array })\n\tpublic options?: Array