@pacem/pacem 1.0.0-euler → 1.0.0-galois
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/pacem-2d.js +1 -1
- package/dist/browser/pacem-2d.min.js +1 -1
- package/dist/browser/pacem-3d.js +4 -2
- package/dist/browser/pacem-3d.js.map +1 -1
- package/dist/browser/pacem-3d.min.js +2 -2
- package/dist/browser/pacem-charts.js +1 -1
- package/dist/browser/pacem-charts.min.js +1 -1
- package/dist/browser/pacem-cms.js +1 -1
- package/dist/browser/pacem-cms.min.js +1 -1
- package/dist/browser/pacem-core.js +1 -1
- package/dist/browser/pacem-core.min.js +1 -1
- package/dist/browser/pacem-foundation.js +1 -1
- package/dist/browser/pacem-foundation.min.js +1 -1
- package/dist/browser/pacem-fx.js +1 -1
- package/dist/browser/pacem-fx.min.js +1 -1
- package/dist/browser/pacem-logging.js +1 -1
- package/dist/browser/pacem-logging.min.js +1 -1
- package/dist/browser/pacem-maps.js +1 -1
- package/dist/browser/pacem-maps.min.js +1 -1
- package/dist/browser/pacem-media.js +1 -1
- package/dist/browser/pacem-media.min.js +1 -1
- package/dist/browser/pacem-networking.js +1 -1
- package/dist/browser/pacem-networking.min.js +1 -1
- package/dist/browser/pacem-numerical.js +1 -1
- package/dist/browser/pacem-numerical.min.js +1 -1
- package/dist/browser/pacem-plus.js +2 -2
- package/dist/browser/pacem-plus.js.map +1 -1
- package/dist/browser/pacem-plus.min.js +2 -2
- package/dist/browser/pacem-scaffolding.js +66 -23
- package/dist/browser/pacem-scaffolding.js.map +1 -1
- package/dist/browser/pacem-scaffolding.min.js +2 -2
- package/dist/browser/pacem-ui.js +47 -34
- package/dist/browser/pacem-ui.js.map +1 -1
- package/dist/browser/pacem-ui.min.js +2 -2
- package/dist/bundle/pacem.min.mjs +144 -144
- package/dist/bundle/pacem.mjs +104 -51
- package/dist/bundle/pacem.mjs.map +2 -2
- package/dist/docs/pacem-ui.json +96 -0
- package/dist/typings/index.d.ts +6 -2
- package/dist/vscode.html-custom.json +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pacem-plus.js","sources":["../esm/datagrid/types.js","../esm/datagrid/l10n.js","../esm/carousel.js","../esm/context-menu.js","../esm/edit.js","../esm/gallery.js","../esm/modal-form.js","../esm/router-hash-state.js","../esm/router-view-scroll.js","../esm/search.js","../esm/datagrid/datacell.js","../esm/datagrid/headcell.js","../esm/datagrid/datagrid.js","../esm/index-iife.js"],"sourcesContent":["var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Watch, PropertyConverters, Components } from '@pacem/pacem-core';\n/**\n * Base class shared by {@link PacemDataCellElement} and {@link PacemHeadCellElement}: both are bound to the\n * same `metadata`/`state`/`gridState` triple describing their column, both position themselves within the\n * grid's CSS-grid layout according to `gridState.orderedColumns`, and both toggle their own visibility from\n * `state.hidden`. Concrete subclasses only need to implement {@link updateLayout} to (re)build their own\n * content whenever `metadata` changes.\n */\nexport class PacemBaseCellElement extends Components.PacemSafeContentElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.updateColumnPosition();\n this.updateLayout(this.metadata);\n }\n /** Positions this cell within the grid's CSS-grid layout according to `gridState.orderedColumns`. */\n updateColumnPosition(metadata = this.metadata, state = this.gridState) {\n this.style.gridColumn = (state.orderedColumns.indexOf(metadata.prop) + 1).toString();\n }\n /** Shows/hides this cell according to `state.hidden`. */\n updateVisibility(state = this.state) {\n this.hide = !!state.hidden;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'metadata':\n this.updateLayout(val);\n break;\n case 'gridState':\n this.updateColumnPosition();\n break;\n case 'state':\n this.updateVisibility();\n break;\n }\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemBaseCellElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemBaseCellElement.prototype, \"state\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemBaseCellElement.prototype, \"gridState\", void 0);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Utils, Transformer } from '@pacem/pacem-core';\nconst DefaultLocalizationOptions = {\n headCell: (headCellProp, prop, dictionary) => {\n switch (headCellProp) {\n case 'name':\n return dictionary['column_name_' + prop] ?? dictionary['name_' + prop];\n case 'description':\n return dictionary['column_description_' + prop] ?? dictionary['description_' + prop];\n }\n return null;\n }\n};\n/** Namespaced helpers for working with {@link PacemDataGridElement} column metadata, e.g. localization. */\nexport class DataGrids {\n /**\n * Localizes the metadata of a data grid **in place** using a translation dictionary.\n * Only the `name` and `description` properties of data columns are localized.\n *\n * By default, this method uses an opinionated key lookup strategy and attempts to resolve translation keys in the following format:\n * - `column_name_{key}` for column names\n * - `column_description_{key}` for column descriptions/tooltips\n *\n * This behavior can be customized by providing a replacement strategy through the `options` parameter.\n *\n * @param metadata The metadata to localize.\n * @param dictionary The translation dictionary.\n * @param options Optional customization of the replacement strategy.\n * @returns The localized metadata.\n */\n static localizeMetadata(metadata, dictionary, options) {\n options = Utils.extend({}, DefaultLocalizationOptions, options ?? {});\n // do not clone (for now...)\n for (let prop of metadata) {\n const display = prop.headCell = prop.headCell ?? {};\n display.name = options.headCell('name', prop.prop, dictionary) ?? display.name; // dictionary['column_name_' + prop.prop] ?? dictionary['name_' + prop.prop] ?? display.name;\n display.description = options.headCell('description', prop.prop, dictionary) ?? /* dictionary['column_description_' + prop.prop] ?? dictionary['description_' + prop.prop] ?? */ display.description;\n }\n return metadata;\n }\n}\n__decorate([\n Transformer('datagrids.localizeMetadata')\n], DataGrids, \"localizeMetadata\", null);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, ViewChild, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { Components as UIComponents } from '@pacem/pacem-ui';\nconst UI = UIComponents.UI;\n/**\n * @deprecated Superseded by composing a `${P}-repeater`/`${P}-slideshow` pair directly (see the template this\n * element generates below for reference). Renders a `datasource` of {@link CarouselDataItem}s as a full-bleed,\n * auto-advancing slideshow with a per-slide image, title and caption, applying 'previous'/'next'/'focus' CSS\n * classes to neighbouring slides so they can be animated in/out as the current slide changes.\n */\nlet PacemCarouselElement = class PacemCarouselElement extends UI.PacemAdaptedIterativeElement {\n constructor() {\n super(...arguments);\n /** Gets or sets the interval (in milliseconds) between automatic slide transitions. Default: `4000`. */\n this.interval = 4000;\n }\n};\n__decorate([\n ViewChild(P + '-adapter')\n], PacemCarouselElement.prototype, \"adapter\", void 0);\n__decorate([\n ViewChild(P + '-slideshow')\n], PacemCarouselElement.prototype, \"slideshow\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemCarouselElement.prototype, \"interval\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemCarouselElement.prototype, \"pausable\", void 0);\nPacemCarouselElement = __decorate([\n CustomElement({\n tagName: P + '-carousel', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater datasource=\"{{ :host.datasource }}\">\r\n <${P}-slideshow class=\"${PCSS}-carousel\" adapter=\"{{ ::adapter }}\" index=\"{{ :host.index, twoway }}\" on-load=\"this.focus()\">\r\n\r\n <template>\r\n\r\n <${P}-slide class=\"${PCSS}-carousel-item\" css-class=\"{{ { '${PCSS}-carousel-previous': :host.isPrevious(^index, ::slideshow.index), '${PCSS}-carousel-next': :host.isNext(^index, ::slideshow.index), '${PCSS}-carousel-focus': ^index === ::slideshow.index } }}\">\r\n <${P}-a href=\"{{ ^item.url }}\">\r\n <${P}-img disabled=\"{{ !:host.isCloseTo(^index, ::slideshow.index) }}\" class=\"${PCSS}-carousel-splash\" adapt=\"cover\" src=\"{{ ^item.image }}\"></${P}-img>\r\n <div class=\"${PCSS}-carousel-content\">\r\n <div class=\"${PCSS}-carousel-caption\">\r\n <h3><${P}-text text=\"{{ ^item.title }}\"></${P}-text></h3>\r\n <${P}-panel class=\"paragraph\" content=\"{{ ^item.content }}\"></${P}-panel>\r\n </div>\r\n </div>\r\n </${P}-a>\r\n </${P}-slide>\r\n\r\n </template>\r\n </${P}-slideshow>\r\n\r\n </${P}-repeater><${P}-adapter pausable=\"{{ :host.pausable }}\" class=\"${PCSS}-carousel-adapter\" interval=\"{{ :host.interval }}\"></${P}-adapter>`\n })\n], PacemCarouselElement);\nexport { PacemCarouselElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters, Utils, CustomElementUtils, avoidHandler, Debounce, ViewChild, Components, CommandEvent, CommandEventName, AttributeChangeEventName } from '@pacem/pacem-core';\nimport { Components as UIComponents } from '@pacem/pacem-ui';\nconst UI = UIComponents.UI;\n//namespace Pacem.Components.Plus {\n/**\n * Base class for the items registered within a {@link PacemContextMenuElement}: either a command button\n * ({@link PacemContextMenuItemCommandElement}) or a separator ({@link PacemContextMenuItemSeparatorElement}).\n * Subclasses only need to implement {@link createMenuItemElement} to produce the actual DOM element rendered\n * inside the menu's balloon; this base class takes care of the `pacem-context-menuitem` CSS class and of\n * notifying the owning {@link PacemContextMenuElement} (via `refresh()`) whenever one of its properties changes.\n */\nexport class PacemContextMenuItemElement extends Components.PacemItemElement {\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, PCSS + '-context-menuitem');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n const container = this.container;\n if (container instanceof PacemContextMenuElement) {\n container.refresh();\n }\n }\n}\n/** A {@link PacemContextMenuElement} item rendered as a clickable command button ({@link UI.PacemButtonElement}). */\nlet PacemContextMenuItemCommandElement = class PacemContextMenuItemCommandElement extends PacemContextMenuItemElement {\n createMenuItemElement() {\n const retval = new UI.PacemButtonElement();\n retval.commandArgument = this.commandArgument;\n retval.commandName = this.commandName;\n retval.textContent = this.caption;\n retval.iconGlyph = this.iconGlyph;\n retval.confirmationDialog = this.confirmationDialog;\n retval.confirmationMessage = this.confirmationMessage;\n retval.tooltip = this.tooltip;\n retval.disabled = this.disabled;\n retval.cssClass = this.buttonCssClass;\n return retval;\n }\n};\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.String })\n], PacemContextMenuItemCommandElement.prototype, \"commandName\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.String })\n], PacemContextMenuItemCommandElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.String })\n], PacemContextMenuItemCommandElement.prototype, \"tooltip\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.String })\n], PacemContextMenuItemCommandElement.prototype, \"iconGlyph\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.StringArray })\n], PacemContextMenuItemCommandElement.prototype, \"buttonCssClass\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.String })\n], PacemContextMenuItemCommandElement.prototype, \"confirmationMessage\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.Element })\n], PacemContextMenuItemCommandElement.prototype, \"confirmationDialog\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.Json })\n], PacemContextMenuItemCommandElement.prototype, \"commandArgument\", void 0);\nPacemContextMenuItemCommandElement = __decorate([\n CustomElement({ tagName: P + '-context-menuitem-command' })\n], PacemContextMenuItemCommandElement);\nexport { PacemContextMenuItemCommandElement };\n/** A {@link PacemContextMenuElement} item rendered as a non-interactive `<hr>` separator between commands. */\nlet PacemContextMenuItemSeparatorElement = class PacemContextMenuItemSeparatorElement extends PacemContextMenuItemElement {\n createMenuItemElement() {\n const retval = document.createElement('hr');\n retval.style.pointerEvents = 'none';\n return retval;\n }\n};\nPacemContextMenuItemSeparatorElement = __decorate([\n CustomElement({ tagName: P + '-context-menuitem-separator' })\n], PacemContextMenuItemSeparatorElement);\nexport { PacemContextMenuItemSeparatorElement };\n// <${P}-button class=\"button-flat ${PCSS}-margin margin-0\"><${P}-icon icon=\"{{ :host.icon || 'more_horiz' }}\"></${P}-icon></${P}-button>\n/**\n * A button that pops out a floating balloon menu built from its {@link PacemContextMenuItemElement} children\n * (commands and separators). If a `slot=\"button\"` element is provided by the consumer it's used as the trigger;\n * otherwise a default icon button is generated. Menu items are rendered lazily into a {@link UI.PacemBalloonElement}\n * appended to the nearest shell, and kept in sync with the registered items whenever they (or their attributes)\n * change - see `refresh`.\n */\nlet PacemContextMenuElement = class PacemContextMenuElement extends Components.PacemItemsContainerElement {\n constructor() {\n super(...arguments);\n this._dispatchCommand = (e) => {\n avoidHandler(e);\n this._onCommand(new CommandEvent({ commandName: e.detail.commandName, commandArgument: e.detail.commandArgument ?? this.commandArgument }));\n };\n this._slotchangeHandler = (evt) => {\n this._resetLayout();\n };\n this._attributeChangeHandler = (evt) => this._refreshMenuItems;\n this._mouseupHandler = (evt) => {\n const balloon = this._ensureBalloon();\n if (!Utils.isNull(balloon)) {\n balloon.popout();\n }\n };\n }\n /** Only accepts {@link PacemContextMenuItemElement} instances (commands or separators) as registrable items. */\n validate(item) {\n return item instanceof PacemContextMenuItemElement;\n }\n #btn;\n #icon;\n #balloon;\n _ensureButton() {\n if (!Utils.isNull(this.#btn)) {\n return this.#btn;\n }\n const btnSlot = this._slot;\n if (Utils.isNull(btnSlot)) {\n return null;\n }\n const found = this._lookForAButton();\n if (!Utils.isNull(found)) {\n return this.#btn = found;\n }\n const retval = new UI.PacemButtonElement();\n retval.setAttribute('slot', 'button');\n retval.className = `${PCSS}-margin margin-0 button-flat`;\n const icon = this.#icon = new UI.PacemIconElement();\n retval.appendChild(icon);\n this.appendChild(retval);\n return this.#btn = retval;\n }\n _lookForAButton() {\n const btnSlot = this._slot;\n if (Utils.isNull(btnSlot)) {\n return null;\n }\n const buttons = btnSlot.assignedElements({ flatten: true });\n if (Utils.isNullOrEmpty(buttons)) {\n return null;\n }\n return buttons[0];\n }\n _ensureBalloon() {\n let balloon = this.#balloon;\n if (!Utils.isNull(balloon)) {\n return balloon;\n }\n const shell = CustomElementUtils.findAncestorShell(this);\n if (Utils.isNull(shell)) {\n return null;\n }\n balloon = new UI.PacemBalloonElement();\n balloon.options = { trigger: UI.BalloonTrigger.Click, position: UI.BalloonPosition.HorizontalAuto, align: UI.BalloonAlignment.Auto, autoAdjust: true };\n //balloon.target = this._btn;\n balloon.addEventListener(CommandEventName, this._dispatchCommand, false);\n balloon.className = `${PCSS}-contextmenu`;\n shell.appendChild(balloon);\n return this.#balloon = balloon;\n }\n /** Registers a menu item, wiring its attribute-change notifications and rebuilding the rendered menu. */\n register(item) {\n const retval = super.register(item);\n if (retval) {\n item.addEventListener(AttributeChangeEventName, this._attributeChangeHandler, false);\n this._refreshMenuItems();\n }\n return retval;\n }\n /** Unregisters a menu item and rebuilds the rendered menu. */\n unregister(item) {\n const retval = super.unregister(item);\n if (retval) {\n item.removeEventListener(AttributeChangeEventName, this._attributeChangeHandler, false);\n this._refreshMenuItems();\n }\n return retval;\n }\n _onCommand(evt) {\n this.dispatchEvent(new CustomEvent(CommandEventName, { detail: evt.detail, cancelable: true, bubbles: true }));\n this.dispatchEvent(new CustomEvent(evt.detail.commandName.toLowerCase(), { detail: evt.detail.commandArgument, cancelable: true, bubbles: true }));\n }\n _resetLayout() {\n const btn = this._ensureButton();\n const balloon = this._ensureBalloon();\n if (!Utils.isNull(btn) && !Utils.isNull(balloon)) {\n balloon.target = btn;\n }\n this._toggleBtn();\n this._toggleIcon();\n }\n _toggleBtn(disabled = this.disabled) {\n const btn = this.#btn;\n if (!Utils.isNull(btn) && btn instanceof Components.PacemElement) {\n btn.disabled = disabled;\n }\n }\n _toggleIcon(icon = this.icon) {\n const iconEl = this.#icon;\n if (!Utils.isNull(iconEl)) {\n iconEl.icon = icon;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._resetLayout();\n this._slot.addEventListener('slotchange', this._slotchangeHandler, false);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'icon':\n this._toggleIcon(val);\n break;\n case 'disabled':\n this._toggleBtn(val);\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeButton();\n this._disposeSlot();\n this._disposeBalloon();\n super.disconnectedCallback();\n }\n /** Forces the balloon's menu items to be rebuilt from the currently registered items. */\n refresh() {\n this._refreshMenuItems();\n }\n _disposeButton() {\n this.#btn = this.#icon = null;\n }\n _disposeSlot() {\n const slot = this._slot;\n if (!Utils.isNull(slot)) {\n slot.removeEventListener('slotchange', this._slotchangeHandler, false);\n }\n }\n _disposeBalloon() {\n const balloon = this.#balloon;\n if (!Utils.isNull(balloon)) {\n balloon.removeEventListener(CommandEventName, this._dispatchCommand, false);\n this._disposeBalloonChildren(0);\n balloon.remove();\n this.#balloon = null;\n }\n }\n _disposeBalloonChildren(startAt) {\n const balloon = this.#balloon;\n const count = balloon.children.length;\n for (let j = count - 1; j >= startAt; j--) {\n // cleanup\n const rem = balloon.children.item(j);\n rem.removeEventListener('mouseup', this._mouseupHandler, false);\n rem.remove();\n }\n }\n _refreshMenuItems() {\n const balloon = this._ensureBalloon();\n if (Utils.isNull(balloon)) {\n return;\n }\n const count = balloon.children.length;\n let cursor = 0;\n for (let item of this.items) {\n if (item.hide) {\n continue;\n }\n const menuitem = item.createMenuItemElement();\n menuitem.addEventListener('mouseup', this._mouseupHandler, false);\n if (cursor < count) {\n const repl = balloon.children.item(cursor);\n repl.removeEventListener('mouseup', this._mouseupHandler, false);\n repl.replaceWith(menuitem);\n }\n else {\n balloon.appendChild(menuitem);\n }\n cursor++;\n }\n this._disposeBalloonChildren(cursor);\n }\n};\n__decorate([\n ViewChild('slot[name=button]')\n], PacemContextMenuElement.prototype, \"_slot\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemContextMenuElement.prototype, \"commandArgument\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContextMenuElement.prototype, \"icon\", void 0);\n__decorate([\n Debounce(true)\n], PacemContextMenuElement.prototype, \"_refreshMenuItems\", null);\nPacemContextMenuElement = __decorate([\n CustomElement({\n tagName: P + '-context-menu', shadow: true,\n template: `<slot name=\"button\"></slot><slot></slot>`\n })\n], PacemContextMenuElement);\nexport { PacemContextMenuElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters, Utils, PropertyChangeEventName, Components, avoidHandler } from '@pacem/pacem-core';\nimport { Components as UIComponents } from '@pacem/pacem-ui';\nimport { Components as ScaffoldingComponents } from '@pacem/pacem-scaffolding';\nconst UI = UIComponents.UI;\nconst Scaffolding = ScaffoldingComponents.Scaffolding;\n//namespace Pacem.Components.Plus {\n/** The kind of inline content a {@link PacemEditElement} edits, and the editor UI it swaps in accordingly. */\nexport var EditMode;\n(function (EditMode) {\n /** Plain text, edited via a `${P}-textarea`. */\n EditMode[\"Text\"] = \"text\";\n /** Rich HTML, edited via a `${P}-contenteditable`. */\n EditMode[\"Html\"] = \"html\";\n /** An image URL, edited via a `${P}-edit-image` (with optional upload/snapshot support). */\n EditMode[\"Image\"] = \"image\";\n /** Markdown source, edited via a `${P}-textarea` and rendered back through the markdown service. */\n EditMode[\"Markdown\"] = \"markdown\";\n})(EditMode || (EditMode = {}));\n/**\n * Makes an arbitrary piece of content (`target`, or this element's first child when unset) inline-editable:\n * overlays an edit button that, on click, opens a modal `${P}-dialog` hosting the editor matching `type`\n * (text, HTML, markdown or image - see {@link EditMode}), and writes the result back into the target element\n * once confirmed. The dialog and its editors (textarea/contenteditable/edit-image) are created once, lazily,\n * on connect, and shown/hidden according to `type` rather than being recreated on every edit.\n */\nlet PacemEditElement = class PacemEditElement extends Components.PacemElement {\n constructor(_markdown = new UI.MarkdownService()) {\n super();\n this._markdown = _markdown;\n // #endregion\n // #endregion\n this._dialogPropertyChangedHandler = (evt) => {\n this._dialogPropertyChangedCallback(evt);\n };\n this._broadcastFetchRequestEventName = (evt) => {\n this.dispatchEvent(new Scaffolding.ImageFetchRequestEvent(evt.detail));\n };\n this._innerValueChangedHandler = (evt) => {\n if (evt.detail.propertyName === 'value' && !Utils.isNull(this._dialog))\n this._dialog.state = evt.detail.currentValue;\n };\n this._editHandler = (evt) => {\n this.edit(evt);\n };\n }\n _addButton() {\n /*<pacem-balloon options=\"{ position: '${UI.BalloonPosition.Top}', align: '${UI.BalloonAlignment.End}', behavior: '${UI.BalloonBehavior.Inert}', hoverDelay: 0 }\" disabled=\"{{ :host.disabled }}\" class=\"pacem-edit-balloon\">\n <pacem-button class=\"pacem-edit\" on-click=\":host.edit($event)\"></pacem-button>\n </pacem-balloon>*/\n if (!Utils.isNull(this._button))\n return;\n //\n var btn = document.createElement(P + '-button');\n btn.className = PCSS + '-edit-button';\n btn.addEventListener('click', this._editHandler, false);\n this._target.appendChild(btn);\n //\n return this._button = btn;\n }\n _removeButton() {\n var btn = this._button;\n if (Utils.isNull(btn))\n return;\n btn.removeEventListener('click', this._editHandler, false);\n btn.remove();\n this._button = null;\n }\n // #region dialog\n _addDialog() {\n /* <pacem-dialog buttons=\"'${ UI.DialogButtons.OkCancel}'\" on-${PropertyChangeEventName}=\":host._dialogPropertyChangedCallback($event)\"> */\n var dialog = document.createElement(P + '-dialog');\n dialog.buttons = UI.DialogButtons.OkCancel;\n dialog.addEventListener(PropertyChangeEventName, this._dialogPropertyChangedHandler, false);\n dialog.appendChild(this._addTextarea());\n dialog.appendChild(this._addContenteditable());\n dialog.appendChild(this._addEditImage());\n document.body.appendChild(dialog);\n //\n return this._dialog = dialog;\n }\n _removeDialog() {\n this._removeTextarea();\n this._removeContenteditable();\n this._removeEditImage();\n if (!Utils.isNull(this._dialog)) {\n this._dialog.removeEventListener(PropertyChangeEventName, this._dialogPropertyChangedHandler, false);\n this._dialog.remove();\n }\n }\n // #region textarea\n _addTextarea() {\n /*<pacem-textarea hide=\"{{ :host.type === '${ EditMode.Html}' || :host.type === '${EditMode.Image}' }}\" value=\"{{ ::_dialog.state, twoway }}\"></pacem-textarea>*/\n var textarea = document.createElement(P + '-textarea');\n textarea.className = PCSS + '-edit-text';\n textarea.addEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n const type = this.type || EditMode.Text;\n textarea.hide = type !== EditMode.Text && type !== EditMode.Markdown;\n return this._textarea = textarea;\n }\n _removeTextarea() {\n if (!Utils.isNull(this._textarea))\n this._textarea.removeEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n }\n // #endregion\n // #region contenteditable\n _addContenteditable() {\n /*<pacem-contenteditable hide=\"{{ :host.type != '${ EditMode.Html}' }}\" value=\"{{ ::_dialog.state, twoway }}\"></pacem-contenteditable> */\n var contenteditable = document.createElement(P + '-contenteditable');\n contenteditable.className = PCSS + '-edit-content';\n contenteditable.addEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n const type = this.type || EditMode.Text;\n contenteditable.hide = type !== EditMode.Html;\n return this._contenteditable = contenteditable;\n }\n _removeContenteditable() {\n if (!Utils.isNull(this._contenteditable))\n this._contenteditable.removeEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n }\n // #endregion\n // #region edit-image\n _addEditImage() {\n /*<!-- img -->\n<pacem-panel class=\"pacem-edit-image\" hide=\"{{ :host.type != '${ EditMode.Image}' }}\"\n css-class=\"{{ {'pacem-uploading': ::_uploader.uploading, 'pacem-upload-enabled': !Pacem.Utils.isNullOrEmpty(:host.imageUploadUrl)} }}\">\n <pacem-input-search value=\"{{ :host.hint, twoway }}\"></pacem-input-search>\n <pacem-upload pattern=\"'.+\\.(jpe?g|png)$'\" url=\"{{ :host.imageUploadUrl }}\" on-${ PropertyChangeEventName}=\":host._uploaderPropertyChangedCallback($event)\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.imageUploadUrl) }}\"></pacem-upload>\n <pacem-infinite-scroller container=\"{{ ::_repeater }}\" on-fetchmore=\":host._imagefetchSuddenly()\" disabled=\"{{ :host._fetching || !:host._open || :host._images.length >= :host.imageSet.total }}\"></pacem-infinite-scroller>\n <pacem-repeater datasource=\"{{ :host._images }}\">\n <template>\n <pacem-img css-class=\"{{ {'pacem-selected': ^item.src === ::_dialog.state } }}\" on-click=\"::_dialog.state = ^item.src\" src=\"{{ ^item.thumb }}\" adapt=\"'contain'\"></pacem-img>\n </template>\n </pacem-repeater>\n <pacem-progressbar></pacem-progressbar>\n</pacem-panel>*/\n var editImage = document.createElement(P + '-edit-image');\n editImage.disabled = true;\n editImage.addEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n editImage.addEventListener(Scaffolding.ImageFetchRequestEventName, this._broadcastFetchRequestEventName, false);\n const type = this.type || EditMode.Text;\n editImage.hide = type !== EditMode.Image;\n editImage.uploadUrl = this.imageUploadUrl;\n editImage.allowSnapshot = this.allowSnapshot;\n editImage.maxWidth = this.maxImageWidth;\n editImage.maxHeight = this.maxImageHeight;\n return this._editImage = editImage;\n }\n _removeEditImage() {\n if (!Utils.isNull(this._editImage)) {\n this._editImage.removeEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n this._editImage.removeEventListener(Scaffolding.ImageFetchRequestEventName, this._broadcastFetchRequestEventName, false);\n }\n }\n _update(val) {\n var cnt = this._content;\n switch (this.type) {\n case EditMode.Html:\n cnt.innerHTML = val;\n break;\n case EditMode.Markdown:\n switch (cnt.localName) {\n case P + '-markdown':\n cnt.value = val;\n break;\n default:\n cnt.innerHTML = this._markdown.toHtml(val);\n break;\n }\n break;\n case EditMode.Image:\n switch (cnt.localName) {\n case 'img':\n case P + '-img':\n cnt['src'] = val;\n break;\n default:\n cnt.style.backgroundImage = `url(${val})`;\n break;\n }\n break;\n default:\n this._content.textContent = val;\n break;\n }\n }\n _retrieve() {\n var cnt = this._content;\n switch (this.type) {\n case EditMode.Html:\n return cnt.innerHTML;\n case EditMode.Image:\n switch (cnt.localName) {\n case P + '-img':\n case 'img':\n return cnt['src'];\n default:\n let styled = getComputedStyle(cnt).backgroundImage, matches = /url\\([\"']?([^'\"]+)[\"']?\\)/.exec(styled);\n return matches && matches.length && matches[1];\n }\n case EditMode.Markdown:\n return cnt['value'] || cnt.textContent;\n default:\n return cnt.textContent;\n }\n }\n _setup() {\n const val = this.disabled;\n if (val) {\n Utils.removeClass(this._target, PCSS + '-editing');\n this._removeButton();\n }\n else {\n Utils.addClass(this._target, PCSS + '-editing');\n this._addButton();\n }\n }\n _dialogPropertyChangedCallback(evt) {\n if (evt.detail.propertyName === 'state') {\n const val = evt.detail.currentValue;\n if (!Utils.isNull(this._textarea))\n this._textarea.value = val;\n if (!Utils.isNull(this._contenteditable))\n this._contenteditable.value = val;\n if (!Utils.isNull(this._editImage))\n this._editImage.value = val;\n this._update(evt.detail.currentValue);\n }\n }\n get _target() {\n var cnt = this.target;\n if (Utils.isNull(cnt))\n cnt = this.firstElementChild;\n return cnt;\n }\n connectedCallback() {\n super.connectedCallback();\n this._addDialog();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._addButton();\n this._setup();\n }\n disconnectedCallback() {\n this._removeButton();\n this._removeDialog();\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'imageUploadUrl':\n if (!Utils.isNull(this._editImage))\n this._editImage.uploadUrl = val;\n break;\n case 'allowSnapshot':\n if (!Utils.isNull(this._editImage))\n this._editImage.allowSnapshot = val;\n break;\n case 'imageSet':\n if (!Utils.isNull(this._editImage))\n this._editImage.imageSet = val;\n break;\n case 'disabled':\n this._setup();\n break;\n case 'type':\n const type = val;\n if (!Utils.isNull(this._textarea))\n this._textarea.hide = type !== EditMode.Text && type !== EditMode.Markdown;\n if (!Utils.isNull(this._contenteditable))\n this._contenteditable.hide = type !== EditMode.Html;\n if (!Utils.isNull(this._editImage))\n this._editImage.hide = type !== EditMode.Image;\n break;\n case 'maxImageHeight':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxHeight = val;\n break;\n case 'maxImageWidth':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxWidth = val;\n break;\n }\n }\n /**\n * Opens the modal editor over `target`'s current content. On 'Ok' the edited value is written back into\n * `target` and a `commit` event is dispatched with `{ value }`; on 'Cancel' the target's original content\n * is restored.\n */\n edit(evt) {\n avoidHandler(evt);\n var cnt = this._target;\n if (Utils.isNull(cnt))\n return;\n this._removeButton();\n this._content = cnt;\n var state = this._state = this._retrieve();\n if (!Utils.isNull(this._editImage))\n this._editImage.disabled = false;\n this._dialog.open(state).then(args => {\n switch (args.button) {\n case UI.DialogButton.Cancel:\n // reset value\n this._update(this._state);\n break;\n case UI.DialogButton.Ok:\n // save\n this._update(args.state);\n this.dispatchEvent(new CustomEvent('commit', { detail: { value: args.state } }));\n break;\n }\n this._content = null;\n if (!Utils.isNull(this._editImage))\n this._editImage.disabled = true;\n this._addButton();\n });\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemEditElement.prototype, \"key\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditElement.prototype, \"type\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemEditElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemEditElement.prototype, \"imageUploadUrl\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemEditElement.prototype, \"imageSet\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemEditElement.prototype, \"maxImageWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemEditElement.prototype, \"maxImageHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemEditElement.prototype, \"allowSnapshot\", void 0);\nPacemEditElement = __decorate([\n CustomElement({\n tagName: P + '-edit'\n })\n], PacemEditElement);\nexport { PacemEditElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, ViewChild, Watch, PropertyConverters, Utils, Components } from '@pacem/pacem-core';\nimport { Components as UIComponents } from '@pacem/pacem-ui';\nconst UI = UIComponents.UI;\n/** Builds the markup for a single `${P}-slide`, embedding `captionTemplate`'s markup and reading the image from `imageProperty`. */\nfunction getGallerySlideShowTemplate(captionTemplate = getDefaultCaptionTemplate(), imageProperty = 'image') {\n return `<${P}-slide class=\"${PCSS}-gallery-item\"\r\ncss-class=\"{{ { '${PCSS}-gallery-previous': :host.isPrevious(^index, ::_slideshow.index), '${PCSS}-gallery-next': :host.isNext(^index, ::_slideshow.index), '${PCSS}-gallery-focus': ^index === ::_slideshow.index } }}\"\r\n>\r\n <${P}-img src=\"{{ ^item.${imageProperty} }}\" disabled=\"{{ !::_lightbox.show || !(:host.isCloseTo(^index, ::_slideshow.index) || ^index === ::_slideshow.index) }}\"\r\ncss=\"{{ {'visibility': (:host._poppingUp ? 'hidden' : ''), 'transition': (:host._poppingUp ? 'none' : '')} }}\" class=\"${PCSS}-gallery-splash\" adapt=\"contain\"></${P}-img>\r\n\r\n${captionTemplate}\r\n\r\n </${P}-slide>`;\n}\n/** Default caption markup: a simple panel bound to `captionProperty`, hidden when the value is empty. */\nfunction getDefaultCaptionTemplate(captionProperty = 'caption') {\n return `<${P}-panel hide=\"{{ $pacem.isNullOrEmpty(^item.${captionProperty}) }}\" class=\"${PCSS}-gallery-caption gallery-caption-default\">\r\n <${P}-span class=\"paragraph\" text=\"{{ ^item.${captionProperty} }}\"></${P}-span>\r\n </${P}-panel>`;\n}\n;\n/**\n * A lightbox photo gallery: renders `datasource` (a list of {@link GalleryDataItem}, or any shape when a custom\n * `captionTemplate`/`imageProperty`/`captionProperty` is supplied) as a `${P}-lightbox`-hosted `${P}-slideshow`,\n * opened via {@link open} with an optional 'hero' image-morph transition animating from the triggering thumbnail\n * into the lightbox. The per-slide markup (image + caption) is generated dynamically from `captionTemplate`\n * (or a default caption panel) so consumers can customize the caption's content without overriding the whole slide.\n */\nlet PacemGalleryElement = class PacemGalleryElement extends UI.PacemAdaptedIterativeElement {\n constructor() {\n super(...arguments);\n this._templateChangeHandler = (evt) => {\n const proxy = evt.target;\n this._setupWithCaptionTemplate(proxy.target);\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setupWithCaptionTemplate();\n this._databind();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'datasource':\n this._databind();\n break;\n case 'captionTemplate':\n this._setupWithCaptionTemplate(val, old);\n break;\n case 'imageProperty':\n this._setupWithCaptionTemplate(this.captionTemplate, this.captionTemplate);\n break;\n case 'captionProperty':\n if (Utils.isNull(this.captionTemplate)) {\n this._setupDefaultTemplate();\n }\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeTemplate();\n super.disconnectedCallback();\n }\n _disposeTemplate(val = this.captionTemplate) {\n if (val instanceof Components.PacemTemplateProxyElement) {\n val.removeEventListener('templatechange', this._templateChangeHandler);\n }\n }\n _setupWithCaptionTemplate(val = this.captionTemplate, old) {\n this._disposeTemplate(old);\n if (Utils.isNull(val)) {\n this._setupDefaultTemplate();\n return;\n }\n if (val instanceof Components.PacemTemplateProxyElement) {\n val.addEventListener('templatechange', this._templateChangeHandler, false);\n val = val.target;\n }\n const container = val.content.firstElementChild;\n Utils.addClass(container, PCSS + '-gallery-caption');\n const tmpl = document.createElement('template');\n tmpl.innerHTML = getGallerySlideShowTemplate(val.innerHTML, this.imageProperty);\n this._setupTemplate(tmpl);\n }\n _setupTemplate(val) {\n this._templateProxy.target = val;\n }\n _setupDefaultTemplate() {\n const tmpl = document.createElement('template');\n tmpl.innerHTML = getGallerySlideShowTemplate(getDefaultCaptionTemplate(this.captionProperty), this.imageProperty);\n this._setupTemplate(tmpl);\n }\n _databind() {\n const rep = this._repeater;\n if (!Utils.isNull(rep)) {\n rep.datasource = this.datasource;\n }\n }\n /** @readonly Gets the `${P}-adapter` driving the gallery's slideshow. */\n get adapter() {\n return this._adapter;\n }\n async _heroAnimate(fromEl, src) {\n if (!Utils.isNull(fromEl)) {\n let pImg = new UI.PacemImageElement();\n let goalEl = this._heroPlaceholderProxy.dom[0];\n const TRANSITION = 300;\n pImg.src = src || /* assuming an img-ish element */ fromEl['src'];\n pImg.adapt = 'contain';\n let goal = Utils.offset(goalEl), from = Utils.offset(fromEl), style = pImg.style;\n const cfrStyle = getComputedStyle(goalEl);\n style.border = cfrStyle.border;\n style.width = goalEl.clientWidth + 'px';\n style.height = goalEl.clientHeight + 'px';\n style.position = 'absolute';\n style.zIndex = cfrStyle.zIndex;\n style.top = goal.top + 'px';\n style.left = goal.left + 'px';\n const scaleX = fromEl.clientWidth / goalEl.clientWidth, scaleY = fromEl.clientHeight / goalEl.clientHeight, translateX = (from.left - goal.left) + 'px', translateY = (from.top - goal.top) + 'px';\n style.transformOrigin = '0 0';\n style.transition = `transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${TRANSITION}ms, opacity ${TRANSITION}ms`;\n style.transform = `translate(${translateX}, ${translateY}) scale(${scaleX}, ${scaleY})`;\n document.body.appendChild(pImg);\n requestAnimationFrame(() => {\n pImg.style.transform = '';\n });\n await Utils.waitForAnimationEnd(pImg, TRANSITION);\n pImg.remove();\n }\n }\n /**\n * Opens the lightbox at `startIndex`, animating a morph from `heroFrom` (typically the thumbnail that\n * triggered the gallery) into the lightbox's hero placeholder, when provided.\n * @param startIndex Index of the slide to open the gallery on.\n * @param heroFrom Optional element to morph the opening transition from.\n * @param src Optional image URL to use for the morph, when different from `heroFrom`'s own `src`.\n */\n open(startIndex, heroFrom, src) {\n this._poppingUp = true;\n this._lightbox.show = true;\n this._slideshow.index = startIndex; // reflects on 'this' (twoway)\n this._heroAnimate(heroFrom, src)\n .then(_ => {\n this._poppingUp = false;\n this._slideshow.focus();\n });\n }\n};\n__decorate([\n ViewChild(P + '-adapter')\n], PacemGalleryElement.prototype, \"_adapter\", void 0);\n__decorate([\n ViewChild(P + '-lightbox')\n], PacemGalleryElement.prototype, \"_lightbox\", void 0);\n__decorate([\n ViewChild(P + '-slideshow')\n], PacemGalleryElement.prototype, \"_slideshow\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemGalleryElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-template-proxy')\n], PacemGalleryElement.prototype, \"_templateProxy\", void 0);\n__decorate([\n ViewChild(P + '-shell-proxy')\n], PacemGalleryElement.prototype, \"_heroPlaceholderProxy\", void 0);\n__decorate([\n Watch()\n], PacemGalleryElement.prototype, \"_poppingUp\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemGalleryElement.prototype, \"captionTemplate\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemGalleryElement.prototype, \"captionProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemGalleryElement.prototype, \"imageProperty\", void 0);\nPacemGalleryElement = __decorate([\n CustomElement({\n tagName: P + '-gallery', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-lightbox class=\"${PCSS}-gallery\">\r\n <${P}-repeater>\r\n <${P}-slideshow adapter=\"{{ ::_adapter }}\" index=\"{{ :host.index, twoway }}\" hide=\"{{ !::_lightbox.show }}\">\r\n <${P}-template-proxy></${P}-template-proxy>\r\n </${P}-slideshow>\r\n </${P}-repeater>\r\n<${P}-adapter class=\"${PCSS}-gallery-adapter\"></${P}-adapter>\r\n</${P}-lightbox>\r\n<${P}-shell-proxy><div class=\"${PCSS}-gallery-hero-target\"></div></${P}-shell-proxy>`\n })\n], PacemGalleryElement);\nexport { PacemGalleryElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemModalFormElement_1;\nimport { CustomElement, Defaults, P, PCSS, Watch, PropertyConverters, ViewChild, Utils, Net, avoidHandler } from '@pacem/pacem-core';\nimport { Components as UIComponents } from '@pacem/pacem-ui';\nimport { Components as ScaffoldingComponents } from '@pacem/pacem-scaffolding';\nconst UI = UIComponents.UI;\n//namespace Pacem.Components.Plus {\n// TODO: use onewaytosource as a binding mode\n/**\n * A modal, `${P}-lightbox`-hosted CRUD form: wraps an autogenerated `${P}-form` bound to `state`/`metadata`,\n * relays its submit/success/fail events, and turns 'Ok' into a `${P}-fetch` request (`method`) to `action`\n * before committing the dialog - or, when `action` is empty, commits immediately without any network call.\n * Extends {@link UI.PacemDialogBase}, so it's opened the same way (`open(state)`) and resolves the same\n * `{ button, state }` result once committed.\n */\nlet PacemModalFormElement = PacemModalFormElement_1 = class PacemModalFormElement extends UI.PacemDialogBase {\n /** @readonly Gets the underlying `${P}-form` element. */\n get form() {\n return this._form;\n }\n constructor() {\n super();\n /** Gets or sets whether the 'Ok' button stays disabled until the form is both valid and dirty. Default: `true`. */\n this.suddenValidation = true;\n /** Gets or sets the HTTP method used to submit the form to `action`. Default: `Net.HttpMethod.Post`. */\n this.method = Net.HttpMethod.Post;\n this._keyupHandler = (evt) => {\n if (evt.keyCode === /* Enter */ 13\n // no modifiers\n && !evt.shiftKey && !evt.ctrlKey && !evt.altKey && !evt.metaKey) {\n let btn = evt.currentTarget.querySelector(`.${PCSS}-dialog-buttons ${P}-button[type=submit]`);\n if (!Utils.isNull(btn) && Utils.isVisible(btn) && !btn.disabled) {\n btn.click();\n }\n }\n };\n this.#keepStateOnCommit = false;\n this._emitter = new ScaffoldingComponents.Scaffolding.FormEventEmitter(this);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n // HACK: move the buttons outside the .pacem-scrollable element in the lightbox\n //var lightboxCore = this.querySelector(`.${PCSS}-lightbox`);\n //lightboxCore.appendChild(\n // this._buttons = this.querySelector(`.${PCSS}-dialog-buttons`)\n //);\n //lightboxCore.appendChild(\n // this.querySelector(`.${PCSS}-dialog-heading`)\n //);\n //lightboxCore.appendChild(\n // this.querySelector(P + '-loader')\n //);\n //this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'modalButtons', currentValue: this.modalButtons }));\n this.addEventListener('keyup', this._keyupHandler, false);\n this._emitter.start();\n }\n disconnectedCallback() {\n this._emitter.stop();\n this.removeEventListener('keyup', this._keyupHandler, false);\n super.disconnectedCallback();\n }\n _submit(evt) {\n if (this.readonly) {\n this.commit(UI.DialogButton.Ok, evt);\n }\n else {\n avoidHandler(evt);\n this._form.validate().then(valid => {\n if (valid) {\n if (Utils.isNullOrEmpty(this.action)) {\n this.commit(UI.DialogButton.Ok, evt);\n }\n else {\n this._form.submit(this._fetcher).then(_ => {\n this.commit(UI.DialogButton.Ok, evt);\n }, r => {\n // do nothing\n });\n }\n }\n });\n }\n }\n _onSubmit(evt) {\n // no need to broadcast, event bubbles itself...\n // ...just handle it using the eventual listeners:\n this.emit(evt);\n }\n #keepStateOnCommit;\n open(state, keepStateOnCommit, setAsPristine = true) {\n if (Utils.isNull(state)) {\n throw `The state of a ${PacemModalFormElement_1} cannot be null.`;\n }\n this.#keepStateOnCommit = keepStateOnCommit;\n var retval = super.open(state);\n if (setAsPristine) {\n this._form.setPristine();\n }\n return retval;\n }\n /** Commits the dialog, then - unless `keepStateOnCommit` was requested on `open` - resets `state` to `{}` once the closing animation ends. */\n commit(btn, evt) {\n super.commit(btn, evt);\n if (!this.#keepStateOnCommit) {\n Utils.waitForAnimationEnd(this, 500).then(_ => {\n // BREAKING change (v0.8.37): state destroyed when dialog committed\n // TODO: consider 'if' and 'how' to avoid this.\n this.state = {};\n });\n }\n }\n _cancel(evt) {\n this.commit(UI.DialogButton.Cancel, evt);\n this._form.reset();\n }\n _broadcast(evt) {\n this.dispatchEvent(new CustomEvent(evt.type, { detail: evt.detail }));\n }\n /** Gets the 'ok' and 'cancel' modal buttons. */\n get modalButtons() {\n const btns = this._buttons;\n return {\n ok: btns && btns.firstElementChild && btns.firstElementChild.firstElementChild,\n cancel: btns && btns.firstElementChild && btns.firstElementChild.lastElementChild\n };\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModalFormElement.prototype, \"suddenValidation\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemModalFormElement.prototype, \"okCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemModalFormElement.prototype, \"cancelCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemModalFormElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemModalFormElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModalFormElement.prototype, \"action\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModalFormElement.prototype, \"loaderType\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModalFormElement.prototype, \"success\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModalFormElement.prototype, \"fail\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModalFormElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemModalFormElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModalFormElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n ViewChild(P + '-lightbox')\n], PacemModalFormElement.prototype, \"lightbox\", void 0);\n__decorate([\n ViewChild(P + '-form[entity]')\n], PacemModalFormElement.prototype, \"_form\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemModalFormElement.prototype, \"_fetcher\", void 0);\nPacemModalFormElement = PacemModalFormElement_1 = __decorate([\n CustomElement({\n tagName: P + '-modal-form', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-lightbox modal=\"true\" logger=\"{{ :host.logger }}\">\r\n <${P}-form wrapper>\r\n <${P}-form logger=\"{{ :host.logger }}\" on-submit=\":host._onSubmit($event)\" readonly=\"{{ :host.readonly }}\" entity=\"{{ :host.state, twoway }}\" on-success=\":host._broadcast($event)\"\r\n on-fail=\":host._broadcast($event)\" success=\"{{ :host.success, twoway }}\" fail=\"{{ :host.fail, twoway }}\" autogenerate=\"{{ !$pacem.isNull($this.entity) }}\" metadata=\"{{ :host.metadata }}\"\r\n fetch-headers=\"{{ :host.fetchHeaders }}\" fetch-credentials=\"{{ :host.fetchCredentials }}\" sudden-validation=\"{{ :host.suddenValidation }}\"></${P}-form>\r\n </${P}-form>\r\n <${P}-fetch logger=\"{{ :host.logger }}\" method=\"{{ :host.method }}\" headers=\"{{ :host.fetchHeaders }}\" credentials=\"{{ :host.fetchCredentials }}\" autofetch=\"false\" url=\"{{ :host.action }}\"></${P}-fetch>\r\n <div class=\"${PCSS}-dialog-buttons ${PCSS}-buttonset buttons\" slot=\"bottom\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button on-click=\":host._submit($event)\" css-class=\"{{ {'buttonset-last': :host.readonly} }}\" type=\"submit\"\r\n class=\"button primary button-size size-small\" disabled=\"{{ (:host.suddenValidation && !:host.readonly && !(::_form.valid && ::_form.dirty)) || ::_fetcher.fetching }}\">\r\n <${P}-panel class=\"submit-spinner ${PCSS}-anim anim-pop\" hide=\"{{ !::_form.fetching }}\"><i class=\"${PCSS}-icon ${PCSS}-anim anim-rotate rotate-uniform display-block\">refresh</i></${P}-panel>\r\n <${P}-text text=\"{{ :host.okCaption || 'OK' }}\"></${P}-text>\r\n </${P}-button>\r\n <${P}-button on-click=\":host._cancel($event)\" hide=\"{{ :host.readonly }}\" class=\"button button-size size-small\" disabled=\"{{ ::_fetcher.fetching }}\"><${P}-text text=\"{{ :host.cancelCaption || 'Cancel' }}\"></${P}-text></${P}-button>\r\n </div></div>\r\n <div class=\"${PCSS}-dialog-heading\" slot=\"top\">\r\n <${P}-content></${P}-content>\r\n </div>\r\n <div class=\"pos-absolute absolute-top absolute-right absolute-left absolute-bottom overflow-hidden ${PCSS}-inert display-flex flex-center flex-middle\">\r\n <${P}-loader type=\"{{ :host.loaderType }}\" class=\"loader-primary loader-smaller ${PCSS}-anim anim-pop\" active=\"{{ ::_fetcher.fetching }}\"></${P}-loader>\r\n </div>\r\n</${P}-lightbox>`\n })\n], PacemModalFormElement);\nexport { PacemModalFormElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils, PacemEventTarget } from '@pacem/pacem-core';\n//namespace Pacem.Components.Plus {\n/**\n * Two-way syncs a plain `state` object with the URL hash's query-string (`#...`) through a\n * {@link Components.PacemRouterElement}: reading the hash into `state` on navigation, and pushing `state`\n * back into the hash (merged with `default`, minus anything already matching `default`) whenever `state`\n * changes. Values are normalized to strings for the URL (see `normalizedState`) and denormalized back to\n * their original type using `default` as a type mold, so booleans/numbers/dates/regexes round-trip correctly.\n * Navigation events lock the element (`#locked`) to avoid feedback loops between the router-driven read and\n * the state-driven write while a navigation is in flight.\n */\nlet PacemRouterHashStateElement = class PacemRouterHashStateElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Gets or sets the default/mold values: used both to fill in missing `state` entries and to infer each value's original type when denormalizing from the URL. */\n this.default = {};\n /** Gets or sets the current state, kept in sync with the URL hash's query-string. */\n this.state = {};\n /** @readonly Gets the string-normalized projection of `state` actually written to the URL hash. */\n this.normalizedState = {};\n this._routerNavigatingHandler = (_) => {\n this.#locked = true;\n };\n this._routerNavigateHandler = (_) => {\n this.#locked = false;\n this._updateStateFromURI();\n };\n }\n #locked;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._updateStateFromURI();\n this._setupRouterHandlers(this.router);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'state':\n if (!first && !this.#locked) {\n this._updateNormalizedState();\n this._updateURIFromState();\n }\n break;\n case 'disabled':\n if (!!val) {\n this._updateStateFromURI();\n }\n break;\n case 'default':\n this._updateStateFromURI();\n break;\n case 'router':\n if (!first) {\n this._disposeRouterHandlers(old);\n this._setupRouterHandlers(val);\n }\n break;\n }\n }\n disconnectedCallback() {\n this._disposeRouterHandlers();\n super.disconnectedCallback();\n }\n _setupRouterHandlers(router = this.router) {\n if (!Utils.isNull(router)) {\n window.addEventListener('navigating', this._routerNavigatingHandler, false);\n window.addEventListener('navigate', this._routerNavigateHandler, false);\n }\n }\n _disposeRouterHandlers(router = this.router) {\n if (!Utils.isNull(router)) {\n window.removeEventListener('navigating', this._routerNavigatingHandler, false);\n window.removeEventListener('navigate', this._routerNavigateHandler, false);\n }\n }\n _currentBasePath() {\n const router = this.router;\n if (!Utils.isNull(router)) {\n const q = router.state.$querystring;\n return this._normalizePath(document.location.pathname, q);\n }\n return null;\n }\n _normalizePath(path, q) {\n if (Utils.isNullOrEmpty(path)) {\n return path;\n }\n if (path.endsWith('/')) {\n path = path.substring(0, path.length - 1);\n }\n q ??= '';\n return path + (q.length > 0 ? ('?' + q) : '');\n }\n _areStatesEquivalent(s1, s2) {\n const state1 = Utils.extend({}, s1 || {}), state2 = Utils.extend({}, s2 || {});\n for (let prop in state1) {\n if (!this._areSubstantiallyEquivalent(state1[prop], state2[prop])) {\n return false;\n }\n delete state1[prop];\n delete state2[prop];\n }\n for (let prop in state2) {\n if (!this._areSubstantiallyEquivalent(state1[prop], state2[prop])) {\n return false;\n }\n }\n return true;\n }\n _updateNormalizedState(state = this.state) {\n if (this.disabled || this.#locked) {\n return;\n }\n const normalizedState = this._normalizeState(state);\n if (!this._areStatesEquivalent(normalizedState, this.normalizedState)) {\n this.normalizedState = normalizedState;\n }\n }\n _updateStateFromURI() {\n if (this.disabled || this.#locked) {\n return;\n }\n var state = Utils.extend({}, this.default || {});\n const router = this.router;\n if (!Utils.isNull(router)) {\n const denormalized = this._denormalizeState(Utils.URIs.parseQuery(router.state && router.state.$hash || '{}'));\n Utils.extend(state, denormalized);\n }\n if (!this._areStatesEquivalent(this.state, state)) {\n this.state = state;\n }\n }\n _updateURIFromState(state = this.normalizedState) {\n if (this.disabled || this.#locked) {\n return;\n }\n const router = this.router;\n if (!Utils.isNull(router)) {\n const actual = this._currentBasePath();\n const currentState = Utils.URIs.parseQuery(router.state.$hash || '{}'), targetState = state || {};\n if (!this._areStatesEquivalent(currentState, targetState)) {\n // checked state equivalence to avoid superfluous navigation\n const clean = this._cleanupStateForURI(targetState);\n var url = actual;\n if (!Utils.isNullOrEmpty(clean)) {\n url = Utils.URIs.appendQuery(actual, clean, false, true);\n }\n // navigate\n router.path = url;\n }\n }\n }\n _areSubstantiallyEquivalent(v1, v2) {\n v1 ??= '';\n v2 ??= '';\n return v1.toString() == v2.toString() || Utils.areSemanticallyEqual(v1, v2) || JSON.stringify(v1) === JSON.stringify(v2);\n }\n _cleanupStateForURI(state = this.state) {\n const copy = Utils.clone(state || {}), base = this.default;\n for (let key in copy) {\n if ((Utils.isNullOrEmpty(copy[key]) && (Utils.isNull(base) || !(key in base)))\n || (!Utils.isNull(base) && (key in base) && this._areSubstantiallyEquivalent(base[key], copy[key]))) {\n delete copy[key];\n }\n }\n return copy;\n }\n _normalizeState(state = this.state, mold = this.default) {\n var output = {};\n const base = mold;\n for (let key in state || {}) {\n const value = state[key];\n if (Utils.isNullOrEmpty(value)) {\n if (!Utils.isNull(base) && (key in base) && !Utils.isNullOrEmpty(base[key])) {\n output[key] = '';\n }\n continue;\n }\n switch (typeof value) {\n case 'number':\n case 'bigint':\n case 'boolean':\n Object.defineProperty(output, key, { enumerable: true, value: value.toString() });\n break;\n case 'symbol':\n case 'string':\n Object.defineProperty(output, key, { enumerable: true, value });\n break;\n default:\n if (Utils.Dates.isDate(value)) {\n Object.defineProperty(output, key, { enumerable: true, value: value.toISOString() });\n }\n else if (value instanceof RegExp) {\n Object.defineProperty(output, key, { enumerable: true, value: value.source });\n }\n else {\n throw new Error('Type not supported to be normalized into a URI hash.');\n }\n break;\n }\n }\n return output;\n }\n _denormalizeState(state = this.normalizedState, mold = this.default) {\n const output = {};\n const base = mold || {};\n for (let prop in state) {\n if (!(prop in base)) {\n output[prop] = state[prop];\n continue;\n }\n const moldProp = base[prop], value = state[prop];\n switch (typeof moldProp) {\n case 'boolean':\n Object.defineProperty(output, prop, { enumerable: true, value: PropertyConverters.Boolean.convert(value) });\n break;\n case 'number':\n case 'bigint':\n Object.defineProperty(output, prop, { enumerable: true, value: PropertyConverters.Number.convert(value) });\n break;\n case 'symbol':\n case 'string':\n Object.defineProperty(output, prop, { enumerable: true, value: PropertyConverters.String.convert(value) });\n break;\n default:\n if (moldProp instanceof Date) {\n Object.defineProperty(output, prop, { enumerable: true, value: PropertyConverters.Date.convert(value) });\n }\n else if (moldProp instanceof RegExp) {\n Object.defineProperty(output, prop, { enumerable: true, value: new RegExp(value, moldProp.flags) });\n }\n else {\n Object.defineProperty(output, prop, { enumerable: true, value });\n }\n break;\n }\n }\n return output;\n }\n set(key, value) {\n var obj = {};\n if (typeof key === 'string') {\n Object.defineProperty(obj, key, { enumerable: true, value });\n }\n else {\n obj = key;\n }\n this.state = Utils.extend({}, this.state || {}, obj);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemRouterHashStateElement.prototype, \"router\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemRouterHashStateElement.prototype, \"default\", void 0);\n__decorate([\n Watch()\n], PacemRouterHashStateElement.prototype, \"state\", void 0);\n__decorate([\n Watch()\n], PacemRouterHashStateElement.prototype, \"normalizedState\", void 0);\nPacemRouterHashStateElement = __decorate([\n CustomElement({ tagName: P + '-router-hash-state' })\n], PacemRouterHashStateElement);\nexport { PacemRouterHashStateElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils, PacemEventTarget } from '@pacem/pacem-core';\n/**\n * Bridges a {@link Pacem.Components.PacemRouterElement}'s persisted scroll position (`state.$scrollY`, populated\n * when `PacemRouterElement.scrollRestoration` is enabled) with a {@link Pacem.Components.UI.PacemViewElement}'s\n * content lifecycle: navigating to a new page starts at the top, navigating back restores where the user\n * left off - without either the router or the view needing to know about the other.\n *\n * This listens to the *view*'s `prerender`/`render` events rather than the router's own navigation events,\n * because `render` only fires once the view's content has stopped resizing (it's debounced against the\n * view's own resize detection, not just \"content was inserted\"). That mitigates - though doesn't fully\n * eliminate - restoring to a scrollTop the page isn't tall enough to reach yet (e.g. images or async\n * content still loading in): content changes that don't affect the view's own box size won't retrigger it.\n */\nlet PacemRouterViewScrollElement = class PacemRouterViewScrollElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** The old content is already gone and the new content hasn't landed yet - jump to the top now, instantly, so the transition never shows a scrolled-down blank/stale view. */\n this._prerenderHandler = (_) => {\n Utils.scrollTo(0, false);\n };\n /**\n * New content has landed and its size has settled (see class remarks on `render`'s debounce). Restores the\n * router's persisted scroll position for this entry, if any: `$scrollY` is `undefined` (or `0`) for a\n * freshly-pushed page - never explicitly set on push, only captured when *leaving* a page - so this\n * correctly leaves new pages at the top without any special-casing.\n */\n this._renderHandler = (_) => {\n const state = this.router?.state;\n if (state.$scrollY > 0) {\n const smooth = this.scrollBehavior != 'instant';\n Utils.scrollTo(state.$scrollY, smooth);\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setupRouter();\n this._setupView();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'router':\n // re-wire if the `router` reference itself is swapped out at runtime, not just on first assignment\n if (!Utils.isNull(old)) {\n this._disposeRouter(old);\n }\n if (!Utils.isNull(val)) {\n this._setupRouter(val);\n }\n break;\n case 'view':\n if (!Utils.isNull(old)) {\n this._disposeView(old);\n }\n if (!Utils.isNull(val)) {\n this._setupView(val);\n }\n break;\n }\n }\n disconnectedCallback() {\n this._disposeRouter();\n this._disposeView();\n super.disconnectedCallback();\n }\n /** Turns on the router's own scroll-position bookkeeping (capturing `state.$scrollY` per history entry); see `PacemRouterElement.scrollRestoration`. */\n _setupRouter(router = this.router) {\n if (Utils.isNull(router)) {\n return;\n }\n router.scrollRestoration = true;\n }\n /** No-op: `_setupRouter` only flips a flag on the router, there's no subscription to tear down. Kept for symmetry with `_disposeView`, and in case this grows one later. */\n _disposeRouter(router = this.router) {\n // do nothing\n }\n _setupView(view = this.view) {\n if (Utils.isNull(view)) {\n return;\n }\n view.addEventListener('prerender', this._prerenderHandler, false);\n view.addEventListener('render', this._renderHandler, false);\n }\n _disposeView(view = this.view) {\n if (Utils.isNull(view)) {\n return;\n }\n view.removeEventListener('prerender', this._prerenderHandler);\n view.removeEventListener('render', this._renderHandler);\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Element, emit: false })\n], PacemRouterViewScrollElement.prototype, \"router\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element, emit: false })\n], PacemRouterViewScrollElement.prototype, \"view\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String, emit: false })\n], PacemRouterViewScrollElement.prototype, \"scrollBehavior\", void 0);\nPacemRouterViewScrollElement = __decorate([\n CustomElement({ tagName: P + '-router-view-scroll' })\n], PacemRouterViewScrollElement);\nexport { PacemRouterViewScrollElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, Watch, PropertyConverters, ViewChild, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.Plus {\n/**\n * A simple search box: a `${P}-input-search`'s `hint` text feeds a debounced `${P}-fetch` against `url` as\n * the `hintParameter` query-string parameter, and the results are rendered through a `${P}-repeater`\n * (customize the row markup via the element's default `${P}-content` slot).\n */\nlet PacemSearchElement = class PacemSearchElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n /** Gets or sets the name of the query-string parameter `hint` is sent as. Default: `'q'`. */\n this.hintParameter = 'q';\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'hint') {\n let params = {};\n params[this.hintParameter] = val;\n this._fetcher.parameters = params;\n }\n }\n};\n__decorate([\n ViewChild(P + '-fetch')\n], PacemSearchElement.prototype, \"_fetcher\", void 0);\n__decorate([\n Watch()\n], PacemSearchElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSearchElement.prototype, \"hint\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSearchElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSearchElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemSearchElement.prototype, \"hintParameter\", void 0);\nPacemSearchElement = __decorate([\n CustomElement({\n tagName: P + '-search', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-fetch debounce=\"800\" url=\"{{ :host.url }}\" method=\"{{ :host.method }}\">\r\n</${P}-fetch><${P}-input-search value=\"{{ :host.hint, twoway }}\"></${P}-input-search>\r\n<${P}-repeater datasource=\"{{ ::_fetch.result }}\">\r\n <${P}-content></${P}-content>\r\n</${P}-repeater>`\n })\n], PacemSearchElement);\nexport { PacemSearchElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters, Utils, CustomElementUtils, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseCellElement } from './types';\n//namespace Pacem.Components.Plus {\n/** Name of the {@link DataRowSelectChangeEvent}. */\nexport const DataRowSelectChangeEventName = \"datarowselectchange\";\n/**\n * Dispatched by a {@link PacemDataGridElement} whenever its row selection is about to change (e.g. a row was\n * clicked while in 'row' select mode). Cancelable: a listener can call `preventDefault()` and instead assign\n * its own `detail.selectedRows` to override which rows actually end up selected.\n */\nexport class DataRowSelectChangeEvent extends CustomEvent {\n constructor(detail) {\n super(DataRowSelectChangeEventName, { detail, bubbles: false, cancelable: true });\n }\n}\nconst EMPTY_CSS = {};\nconst EMPTY_CSSCLASS = [];\n/**\n * The `<td>`-like cell of a {@link PacemDataGridElement}'s body: renders `dataitem`'s `metadata.prop` value\n * according to `metadata.dataType`/`metadata.dataCell.format` (numbers, currency, percentages, dates,\n * booleans, ...), or through a custom `metadata.dataCell.format` function when one is supplied. Also derives\n * the cell's CSS class(es)/inline style from `metadata.dataCell`, and reflects the grid's row-selection state\n * (`gridState.selectedRows`) via the `datarow-selected`/`datacell-filled`/`datacell-primary` CSS classes.\n */\nlet PacemDataCellElement = class PacemDataCellElement extends PacemBaseCellElement {\n updateLayout(metadata = this.metadata) {\n this._setup(metadata);\n }\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, PCSS + '-datacell');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case '_contentTooltip':\n this._updateTooltipJustInCase();\n break;\n case 'gridState':\n case 'rowindex':\n this._updateSelection();\n break;\n }\n }\n }\n _updateTooltipJustInCase() {\n const tip = this.metadata.dataCell?.autoTooltip ?? true;\n if (tip && !Utils.isNullOrEmpty(this._contentTooltip)) {\n this.setAttribute('tooltip', this._contentTooltip);\n }\n else {\n this.removeAttribute('tooltip');\n }\n }\n _inflateContent(item = this.dataitem, index = this.rowindex, metadata = this.metadata) {\n this._contentTooltip = '';\n let format = metadata.dataCell?.format;\n const nullValue = metadata.dataCell?.null ?? '';\n // is 'format' a custom function?\n if (typeof format === 'function') {\n const htmlOrNode = format(this, metadata, item, index);\n if (Utils.isNullOrEmpty(htmlOrNode)) {\n return nullValue;\n }\n if (typeof htmlOrNode === 'string') {\n return htmlOrNode;\n }\n return htmlOrNode;\n }\n // standard column\n const tget = CustomElementUtils.resolvePath(metadata.prop, item)?.target;\n const plainValue = tget?.value;\n if (Utils.isNullOrEmpty(plainValue)) {\n return nullValue;\n }\n const culture = Utils.lang(this);\n switch (metadata.dataType) {\n case \"boolean\":\n return `<${P}-icon icon=\"material ${(!plainValue ? 'radio_button_unchecked' : 'check_circle_outline')} text-big-steady\"></${P}-icon>`;\n case \"time\":\n case \"date\":\n case \"datetime\":\n return this._contentTooltip = Utils.core.date(plainValue, format, culture);\n case \"byte\":\n case \"int16\":\n case \"int32\":\n case \"int64\":\n case \"short\":\n case \"integer\":\n case \"int\":\n case \"long\":\n case \"double\":\n case \"decimal\":\n case \"float\":\n case \"single\":\n case \"number\":\n return this._contentTooltip = Utils.core.number(plainValue, format || '', culture);\n case \"currency\":\n format ??= 'EUR';\n if (typeof format === 'string') {\n return this._contentTooltip = Utils.core.currency(plainValue, format, culture);\n }\n return this._contentTooltip = Utils.core.number(plainValue, format, culture);\n case \"percent\":\n case \"percentage\":\n format ??= { style: 'percent', maximumFractionDigits: 2 };\n if (typeof format === 'string') {\n return this._contentTooltip = Utils.core.currency(plainValue, format, culture);\n }\n return this._contentTooltip = Utils.core.number(plainValue, format, culture);\n case \"url\":\n case \"emailaddress\":\n case \"phonenumber\":\n // TODO: render links\n default:\n return this._contentTooltip = plainValue;\n }\n }\n // @Debounce(true)\n _inflateCssClass(item = this.dataitem, index = this.rowindex, metadata = this.metadata, datasource) {\n if (Utils.isNull(item) || Utils.isNullOrEmpty(metadata)) {\n return EMPTY_CSSCLASS;\n }\n const cssClass = metadata.dataCell && metadata.dataCell.cssClass || EMPTY_CSSCLASS;\n const retval = [];\n if (typeof cssClass === 'function') {\n Array.prototype.push.apply(retval, cssClass(this, metadata, item, index) || []);\n }\n else {\n Array.prototype.push.apply(retval, cssClass);\n }\n // alignment\n switch (metadata.dataCell?.verticalAlign?.toLowerCase()) {\n case 'top':\n retval.push('datacell-top');\n break;\n case 'bottom':\n retval.push('datacell-bottom');\n break;\n case 'middle':\n retval.push('datacell-middle');\n break;\n }\n switch (metadata.dataCell?.horizontalAlign?.toLowerCase()) {\n // headcell display is flex: set h-alignment at container-level\n case 'left':\n retval.push('datacell-left');\n break;\n case 'right':\n retval.push('datacell-right');\n break;\n case 'center':\n retval.push('datacell-center');\n break;\n }\n if (datasource?.length) {\n if (index === 0) {\n retval.push('datacell-firstrow');\n }\n if (index === (datasource.length - 1)) {\n retval.push('datacell-lastrow');\n }\n }\n return retval;\n }\n _inflateCss(item = this.dataitem, index = this.rowindex, metadata = this.metadata) {\n if (Utils.isNull(item) || Utils.isNullOrEmpty(metadata)) {\n return EMPTY_CSS;\n }\n const css = metadata.dataCell && metadata.dataCell.css || EMPTY_CSS;\n if (typeof css === 'function') {\n return css(this, metadata, item, index);\n }\n return css;\n }\n _setup(metadata = this.metadata) {\n this.setAttribute(\"css-class\", \"{{ this._inflateCssClass(^item, ^index, this.metadata, :host.datasource) }}\");\n this.setAttribute(\"css\", \"{{ Pacem.Utils.extend({ 'grid-row': ^index+2 }, this._inflateCss(^item, ^index, this.metadata, :host.datasource)) }}\");\n const truncate = !!(metadata.dataCell?.textEllipsis);\n const contentCssClass = truncate ? ['text-truncate'] : [];\n const selectMode = metadata?.dataCell?.selectMode?.toLowerCase();\n switch (selectMode) {\n case 'cell':\n case 'row':\n // make the content wrapper inert so that the click event can bubble\n contentCssClass.push(PCSS + '-inert');\n contentCssClass.push(PCSS + '-unselect');\n break;\n }\n this._content.cssClass = contentCssClass;\n this._updateSelection();\n }\n _updateSelection() {\n const selectedRows = this.gridState?.selectedRows ?? [];\n if (selectedRows.indexOf(this.rowindex) >= 0) {\n Utils.addClass(this, 'datarow-selected datacell-filled datacell-primary');\n }\n else {\n Utils.removeClass(this, 'datarow-selected datacell-filled datacell-primary');\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Eval })\n], PacemDataCellElement.prototype, \"dataitem\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataCellElement.prototype, \"rowindex\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, debounce: 200 })\n], PacemDataCellElement.prototype, \"_contentTooltip\", void 0);\n__decorate([\n ViewChild(P + '-span')\n], PacemDataCellElement.prototype, \"_content\", void 0);\nPacemDataCellElement = __decorate([\n CustomElement({ tagName: P + '-datacell', shadow: false, template: `<${P}-span content=\"{{ :host._inflateContent(^item, ^index, :host.metadata) }}\"></${P}-span>` })\n], PacemDataCellElement);\nexport { PacemDataCellElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Utils, CustomElementUtils, Components, UI as CoreUI } from '@pacem/pacem-core';\nimport { Components as UIPkgComponents } from '@pacem/pacem-ui';\nimport { PacemBaseCellElement } from './types';\nconst UI = UIPkgComponents.UI;\n//namespace Pacem.Components.Plus {\n/** Name of the {@link DataColumnSortEvent}. */\nexport const DataColumnSortEventName = \"datacolumnsort\";\n/**\n * Dispatched by a {@link PacemHeadCellElement} when its sort button is clicked, and re-dispatched by the\n * owning {@link PacemDataGridElement} after it updates its internal sort state. Cancelable: a listener can\n * call `preventDefault()` to veto the sort, or normalize/override `detail` (e.g. fetch a re-sorted datasource)\n * before the grid applies it.\n */\nexport class DataColumnSortEvent extends CustomEvent {\n constructor(detail) {\n super(DataColumnSortEventName, { detail, bubbles: false, cancelable: true });\n }\n}\n/** Name of the {@link DataColumnRescaleEvent}. */\nexport const DataColumnRescaleEventName = \"datacolumnrescale\";\n/**\n * Dispatched by a {@link PacemHeadCellElement} while its rescale handle is being dragged, and re-dispatched\n * by the owning {@link PacemDataGridElement} after it updates the column's pixel width. Cancelable: a\n * listener can call `preventDefault()` and override `detail.width` to clamp/snap the resulting width.\n */\nexport class DataColumnRescaleEvent extends CustomEvent {\n constructor(detail) {\n super(DataColumnRescaleEventName, { detail, bubbles: false, cancelable: true });\n }\n}\n/**\n * The `<th>`-like cell of a {@link PacemDataGridElement}'s header row: renders `metadata.headCell.name`\n * (falling back to `metadata.prop`), and - depending on `metadata` flags - a sort button that dispatches\n * {@link DataColumnSortEvent}, a rescale handle (backed by a `${P}-rescale` behavior appended to the shell)\n * that dispatches {@link DataColumnRescaleEvent}, and a description tooltip balloon rendered as plain text,\n * HTML or Markdown according to `metadata.headCell.tooltip`.\n */\nlet PacemHeadCellElement = class PacemHeadCellElement extends PacemBaseCellElement {\n constructor(_md = new UI.MarkdownService()) {\n super();\n this._md = _md;\n //#region sort button\n this._sortButtonClickHandler = (evt) => {\n const metadata = this.metadata, gridState = this.gridState, column = metadata.prop;\n const dir = gridState.sort?.column === column ? (gridState.sort.dir === 'desc' ? 'asc' : 'desc') : (metadata.defaultSort || 'asc');\n this.dispatchEvent(new DataColumnSortEvent({ column, dir }));\n };\n this._rescaleHandler = (evt) => {\n evt.preventDefault();\n const detail = evt.detail;\n const width = Math.max(this.metadata.minPixelWidth ?? 24, detail.currentPosition.x - this._columnBBox.x);\n this.dispatchEvent(new DataColumnRescaleEvent({ width }));\n };\n this._rescaleStartHandler = (evt) => {\n this._columnBBox = Utils.offsetRect(this);\n };\n this._rescaleEndHandler = (evt) => {\n // nothing(?)\n };\n }\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, PCSS + '-headcell');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && name === 'gridState') {\n this._updateSortButtonIconGlyph();\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._ensureBalloon();\n }\n disconnectedCallback() {\n this._disposeBalloon();\n this._disposeRescaler();\n super.disconnectedCallback();\n }\n updateLayout(metadata = this.metadata) {\n this._setup(metadata);\n }\n _setupSortButton() {\n const btn = new UI.PacemButtonElement();\n btn.className = `button-flat headcell-sort ${PCSS}-inert`;\n this.addEventListener('click', this._sortButtonClickHandler, false);\n Utils.addClass(this, PCSS + '-clickable');\n return btn;\n }\n _disposeSortButton(btn = this._sortButton) {\n if (Utils.isNull(btn)) {\n return;\n }\n Utils.removeClass(this, PCSS + '-clickable');\n this.removeEventListener('click', this._sortButtonClickHandler, false);\n btn.remove();\n this._sortButton = null;\n }\n _updateSortButtonIconGlyph(btn = this._sortButton, state = this.gridState, metadata = this.metadata) {\n if (Utils.isNull(btn) || Utils.isNullOrEmpty(metadata)) {\n return;\n }\n btn.iconGlyph = state?.sort?.column === metadata.prop ? (state.sort.dir === 'desc' ? 'arrow_drop_down' : 'arrow_drop_up') : '';\n }\n _ensureRescaler() {\n if (Utils.isNull(this._rescaler)) {\n const r = this._rescaler = this._rescaler || new Components.PacemRescaleElement();\n r.handles = [CoreUI.RescaleHandle.Right];\n r.addEventListener(CoreUI.RescaleEventType.Rescale, this._rescaleHandler, false);\n r.addEventListener(CoreUI.RescaleEventType.Start, this._rescaleStartHandler, false);\n r.addEventListener(CoreUI.RescaleEventType.End, this._rescaleEndHandler, false);\n CustomElementUtils.findAncestorShell(this).appendChild(r);\n }\n }\n _setupRescaleContainer() {\n this._ensureRescaler();\n const c = new Components.PacemPanelElement();\n c.className = \"headcell-rescale\";\n c.behaviors = [this._rescaler];\n return c;\n }\n _disposeRescaleContainer(c = this._rescaleContainer) {\n if (Utils.isNull(c)) {\n return;\n }\n c.remove();\n this._rescaleContainer = null;\n }\n _disposeRescaler(r = this._rescaler) {\n if (Utils.isNull(r)) {\n return;\n }\n r.removeEventListener(CoreUI.RescaleEventType.Rescale, this._rescaleHandler, false);\n r.removeEventListener(CoreUI.RescaleEventType.Start, this._rescaleStartHandler, false);\n r.removeEventListener(CoreUI.RescaleEventType.End, this._rescaleEndHandler, false);\n r.remove();\n this._rescaler = null;\n }\n //#endregion\n _setup(metadata = this.metadata) {\n this.setAttribute(\"css-class\", \"{{ this.metadata && this.metadata.headCell && this.metadata.headCell.cssClass || [] }}\");\n this.setAttribute(\"css\", \"{{ this.metadata && this.metadata.headCell && this.metadata.headCell.css }}\");\n const truncate = !!(metadata.headCell?.textEllipsis);\n const cssClass = truncate ? ['text-truncate'] : [];\n // alignment\n switch (metadata.headCell?.verticalAlign?.toLowerCase()) {\n case 'top':\n Utils.addClass(this, 'headcell-top');\n break;\n case 'bottom':\n Utils.addClass(this, 'headcell-bottom');\n break;\n case 'middle':\n Utils.addClass(this, 'headcell-middle');\n break;\n }\n switch (metadata.headCell?.horizontalAlign?.toLowerCase()) {\n // headcell display is grid: set h-alignment at content-level\n case 'left':\n cssClass.push('text-left');\n break;\n case 'right':\n cssClass.push('text-right');\n break;\n case 'center':\n cssClass.push('text-center');\n break;\n }\n // basic content\n this.removeAttribute('content');\n const css = !Utils.isNullOrEmpty(cssClass) ? ` class=\"${cssClass.join(' ')}\"` : '';\n const headContent = metadata.headCell?.name ?? metadata.prop;\n this.innerHTML = `<div${css}>${headContent}</div>`;\n if (metadata.isSortable) {\n this._disposeSortButton();\n const btn = this._sortButton = this._setupSortButton();\n this._updateSortButtonIconGlyph(btn);\n this.appendChild(btn);\n }\n if (metadata.isRescalable) {\n this._disposeRescaleContainer();\n const cnt = this._rescaleContainer = this._setupRescaleContainer();\n this.appendChild(cnt);\n }\n if (metadata.isTogglable) {\n // TODO: add context menu actions (hide, filter)\n }\n }\n //#region balloon\n _normalizeTooltip() {\n const metadata = this.metadata.headCell?.tooltip || false;\n if (typeof metadata === 'object') {\n return metadata;\n }\n return { type: metadata };\n }\n _ensureBalloon() {\n var innerText, tooltip;\n const noBalloon = ((tooltip = this._normalizeTooltip()).type === false)\n || Utils.isNullOrEmpty(innerText = this.metadata.headCell?.description);\n // balloon\n if (Utils.isNull(this._balloon) && !noBalloon) {\n let balloon = new UI.PacemBalloonElement();\n balloon.options = {\n behavior: UI.BalloonBehavior.Tooltip,\n trigger: tooltip.trigger || UI.BalloonTrigger.Hover,\n position: tooltip.position || UI.BalloonPosition.Top,\n hoverDelay: 200, hoverTimeout: 50,\n align: tooltip.align || UI.BalloonAlignment.Auto,\n };\n Utils.addClass(balloon, PCSS + '-headcell-tooltip');\n var shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(this._balloon = balloon);\n }\n const balloon = this._balloon;\n if (!Utils.isNull(balloon)) {\n balloon.target = this;\n if (!(balloon.disabled = noBalloon)) {\n const content = innerText || '';\n switch (tooltip.type) {\n case 'md':\n case 'markdown':\n balloon.innerHTML = this._md.toHtml(content);\n break;\n case 'html':\n balloon.innerHTML = content;\n break;\n default:\n balloon.innerText = content;\n break;\n }\n }\n }\n }\n _disposeBalloon() {\n if (!Utils.isNull(this._balloon)) {\n this._balloon.remove();\n this._balloon = null;\n }\n }\n};\nPacemHeadCellElement = __decorate([\n CustomElement({ tagName: P + '-headcell' })\n], PacemHeadCellElement);\nexport { PacemHeadCellElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters, Utils, Debounce, ViewChild, CommandEventName, CustomUIEvent, Components, Logging } from '@pacem/pacem-core';\nimport { DataColumnSortEvent, DataColumnSortEventName, DataColumnRescaleEvent, DataColumnRescaleEventName } from './headcell';\nimport { DataRowSelectChangeEvent } from './datacell';\n//namespace Pacem.Components.Plus {\nconst DataColumnRebuildEventName = 'datacolumnchange';\nconst DataColumnStateChangeEventName = 'datacolumnstatechange';\nconst DataGridConsts = {\n Defaults: {\n selectCaption: 'Details',\n editCaption: 'Edit',\n editIcon: 'edit',\n deleteCaption: 'Delete',\n deleteIcon: 'delete'\n }\n};\n/**\n * Dispatched by a {@link PacemDataGridElement} right after its `datasource` changes and before row selection\n * is cleared; a listener can set `detail.keepRowSelection` to `true` to preserve the current selection instead\n * of the default reset-on-rebind behavior.\n */\nexport class DataGridBindEvent extends CustomEvent {\n constructor(detail) {\n super('databind', { cancelable: false, bubbles: false, detail });\n }\n}\n/**\n * Dispatched by a {@link PacemDataGridElement} for every UI event bubbling up from one of its data cells\n * (see `Components.PacemElement.emittedEventTypes`), re-typed as `'datacell' + originalType` (e.g. a cell's\n * `click` becomes `datacellclick`) and enriched with the originating cell/item/row-index. An un-prevented\n * `click` while in `'row'` select mode additionally toggles that row's selection.\n */\nexport class DataCellUIEvent extends CustomUIEvent {\n constructor(type, detail, orig) {\n super(type, detail, { bubbles: false, cancelable: true }, orig);\n }\n}\n/**\n * Declarative, `<${P}-datacolumn>`-authored description of a {@link PacemDataGridElement} column: field\n * binding, label, sort/resize/toggle flags and per-column CSS. Registering, unregistering or changing one of\n * these items causes the owning grid to recompute its adapted column metadata and rebuild its rendered\n * columns/state accordingly.\n */\nlet PacemDataColumnElement = class PacemDataColumnElement extends Components.PacemItemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'field':\n case 'headcellCss':\n case 'headcellCssClass':\n case 'datacellCss':\n case 'datacellCssClass':\n case 'resizable':\n case 'togglable':\n case 'sortable':\n case 'label':\n this.dispatchEvent(new Event(DataColumnRebuildEventName));\n break;\n case 'order':\n case 'hide':\n this.dispatchEvent(new Event(DataColumnStateChangeEventName));\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataColumnElement.prototype, \"field\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataColumnElement.prototype, \"label\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemDataColumnElement.prototype, \"resizable\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemDataColumnElement.prototype, \"togglable\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemDataColumnElement.prototype, \"sortable\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataColumnElement.prototype, \"order\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json /*OrString (TODO)*/ })\n], PacemDataColumnElement.prototype, \"format\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataColumnElement.prototype, \"headcellCss\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataColumnElement.prototype, \"headcellCssClass\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataColumnElement.prototype, \"datacellCss\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataColumnElement.prototype, \"datacellCssClass\", void 0);\nPacemDataColumnElement = __decorate([\n CustomElement({ tagName: P + '-datacolumn' })\n], PacemDataColumnElement);\nexport { PacemDataColumnElement };\n/** Builds the bindable `${P}-headcell` markup for a single column, wired to relay sort/rescale requests up to the grid. */\nfunction headColumnHtml(c) {\n return `<${P}-headcell metadata=\"{{ :host._getColumnMetadata('${c.prop}') }}\" state=\"{{ :host._columnState.${c.prop} }}\" grid-state=\"{{ :host._gridState }}\"\r\non-${DataColumnSortEventName}=\":host._broadcastSortCommand($event)\"\r\non-${DataColumnRescaleEventName}=\":host._broadcastRescaleCommand($event)\"></${P}-headcell>`;\n}\n/** Builds the bindable `${P}-datacell` markup for a single column/row, appending `extra` (typically the UI event relays) to the tag. */\nfunction dataColumnHtml(c, extra) {\n return `<${P}-datacell metadata=\"{{ :host._getColumnMetadata('${c.prop}') }}\" state=\"{{ :host._columnState.${c.prop} }}\" grid-state=\"{{ :host._gridState }}\"\r\ndataitem=\"{{ ^item }}\" rowindex=\"{{ ^index }}\" ${extra}></${P}-datacell>`;\n}\n/**\n * A CSS-grid-based data table driven by an array of {@link PacemDataColumnElement} children and/or a\n * `metadata` array (columns declared as elements are merged on top of `metadata` by matching `field`/`prop`,\n * see `_adaptColumnMetadata`). For each bound `datasource` row, one `${P}-datacell` is generated per column,\n * matched by a `${P}-headcell` per column in the header row; columns can independently be sortable,\n * rescalable and togglable, coordinated through `_gridState`/`_columnState` and the head cell's\n * {@link DataColumnSortEvent}/{@link DataColumnRescaleEvent}.\n *\n * The grid's markup is fully re-generated (`innerHTML` on the internal grid container, see `_buildUpGrid`)\n * whenever the adapted column metadata changes, so adding/removing/reordering `${P}-datacolumn` children -\n * or changing `metadata` directly - keeps the grid's markup, `grid-template-columns` and per-cell bindings\n * in sync. Row selection is centralized here (`setRowSelection`, `_gridState.selectedRows`) and exposed both\n * as the public, mergeable `state` and as bubbling {@link DataRowSelectChangeEvent}s/{@link DataCellUIEvent}s\n * relayed from the individual cells.\n */\nlet PacemDataGridElement = class PacemDataGridElement extends Components.PacemItemsContainerElement {\n constructor(_key = Utils.uniqueCode()) {\n super();\n this._key = _key;\n /** Gets or sets the grid's public state (currently just row selection); merged into, and kept in sync with, the internal `_gridState`. */\n this.state = {};\n // TODO: allow to persist states (key) on the session or location level...\n /** @readonly Per-column runtime state (visibility, rescaled width), keyed by `prop`; fed into each cell's `state`. */\n this._columnState = {};\n /** @readonly The grid's internal, always-consistent state (sort, selection, column order); `state` is merged from/into this. */\n this._gridState = { sort: {}, orderedColumns: [], selectedRows: [] };\n /** A registered column's display-affecting properties changed (field/label/css/sort/resize/toggle flags): re-adapt the column metadata so the grid rebuilds. */\n this._itemDataColumnRebuildHandler = (evt) => {\n this._adaptColumnMetadata(this.items || []);\n };\n /** A registered column's order/hide state changed: re-adapt the column metadata so the grid rebuilds. */\n this._itemDataColumnChangeHandler = (evt) => {\n this._adaptColumnMetadata(this.items || []);\n };\n /** Per-column-`prop` cache of {@link DataColumnMetadata} lookups (see `_getColumnMetadata`), invalidated whenever `_adaptedColumnMetadata` is recomputed. */\n this._memoizer = {};\n }\n /** Only accepts {@link PacemDataColumnElement} instances as registrable items. */\n validate(item) {\n return item instanceof PacemDataColumnElement;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.addEventListener(CommandEventName, this._onCommand, false);\n this._adaptColumnMetadata();\n const cols = this._adaptedColumnMetadata || [];\n this._buildUpGrid(cols);\n }\n disconnectedCallback() {\n this.removeEventListener(CommandEventName, this._onCommand, false);\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'items':\n case 'metadata':\n this._adaptColumnMetadata();\n break;\n case '_adaptedColumnMetadata':\n this._buildUpGrid(val);\n break;\n case 'datasource':\n // cleanup row selection as datasource changes...\n const eventArgs = { keepRowSelection: false, datasource: val };\n const event = new DataGridBindEvent(eventArgs);\n this.dispatchEvent(event);\n if (!eventArgs.keepRowSelection) {\n this._setRowSelection();\n }\n break;\n case 'state':\n this._mergeState(val);\n break;\n }\n }\n }\n /** Registers a column item, wiring its rebuild/state-change notifications so the grid re-adapts its metadata whenever the column changes. */\n register(item) {\n if (super.register(item)) {\n // add listeners\n item.addEventListener(DataColumnRebuildEventName, this._itemDataColumnRebuildHandler, false);\n item.addEventListener(DataColumnStateChangeEventName, this._itemDataColumnChangeHandler, false);\n return true;\n }\n return false;\n }\n /** Unregisters a column item and removes its rebuild/state-change listeners. */\n unregister(item) {\n if (super.unregister(item)) {\n // remove listeners\n item.removeEventListener(DataColumnRebuildEventName, this._itemDataColumnRebuildHandler, false);\n item.removeEventListener(DataColumnStateChangeEventName, this._itemDataColumnChangeHandler, false);\n return true;\n }\n return false;\n }\n /**\n * Sets the selected rows among the current ones.\n * @param args\n */\n setRowSelection(...args) {\n const indices = Array.from(args);\n this._setRowSelection(indices);\n }\n /** Dispatches a cancelable {@link DataRowSelectChangeEvent} for `indices`, then applies `event.detail.selectedRows` (possibly overridden by a listener) as the new selection - unless the event was prevented. */\n _setRowSelection(indices) {\n const args = (indices || []).map(i => { return { item: this.datasource[i], index: i }; });\n const evt = new DataRowSelectChangeEvent({ selectedRows: args });\n this.dispatchEvent(evt);\n if (!evt.defaultPrevented) {\n let retval = evt.detail.selectedRows;\n if (!Utils.isArray(retval)) {\n retval = [];\n }\n this._doSetRowSelection(retval.map(i => (i?.index ?? -1)).filter(i => i >= 0));\n }\n }\n /** Merges the given `selectedRows` indices into `_gridState`/`state`. */\n _doSetRowSelection(selectedRows) {\n const selection = { selectedRows };\n this._mergeState(selection);\n }\n /**\n * Merges and synchronizes grid states (public vs private).\n * @param state Partial state to be merged\n */\n _mergeState(state = this.state) {\n state ??= {};\n // normalize selected rows into numbers\n const normalizedState = { selectedRows: (state.selectedRows || []).map((i) => typeof i === 'number' ? i : i.index) };\n const newState = this._gridState = Utils.extend({}, this._gridState, state, normalizedState);\n // does not trigger propertychange event (does not have to).\n this.state = Utils.extend(this.state ?? {}, newState);\n }\n /** Recomputes `_adaptedColumnMetadata` by projecting each {@link PacemDataColumnElement} item into a {@link DataColumnMetadata} and concatenating the plain `metadata` array after it. Debounced, since several column items/attributes typically change together. */\n _adaptColumnMetadata(items = this.items, metadata = this.metadata) {\n const output = Array.prototype.concat.apply((items || []).map(i => {\n const retval = {\n prop: i.field,\n // format: i.format,\n headCell: {\n name: i.label, cssClass: i.headcellCssClass || [], css: i.headcellCss || {}\n },\n dataCell: {\n format: i.format, cssClass: i.datacellCssClass || [], css: i.datacellCss || {}\n },\n hide: i.hide,\n isRescalable: i.resizable,\n isSortable: i.sortable,\n isTogglable: i.togglable,\n order: i.order,\n width: 1,\n };\n return retval;\n }), metadata || []);\n this._memoizer = {};\n this._adaptedColumnMetadata = output;\n }\n /** Looks up (and memoizes) a column's {@link DataColumnMetadata} by `prop`; bound from each generated head/data cell's `metadata` attribute. */\n _getColumnMetadata(prop) {\n return this._memoizer[prop] = this._memoizer[prop] || this._adaptedColumnMetadata.find(m => m.prop === prop);\n }\n /**\n * (Re)generates the grid's entire markup - the CSS grid-template-columns, one `${P}-headcell` and one\n * `${P}-datacell` per column (repeated per `datasource` row via a `${P}-repeater`), plus the optional\n * multi-select gutter column - and assigns it as `innerHTML` of the internal grid container.\n */\n _buildUpGrid(metadata) {\n const container = this._tableContainer;\n if (Utils.isNull(container)) {\n return;\n }\n if (Utils.isNullOrEmpty(metadata)) {\n container.innerHTML = '';\n return;\n }\n const options = this.options = Utils.extend({}, DataGridConsts.Defaults, this.options || {}), hasCommands = options.allowDelete || options.allowEdit || options.allowSelect, multiSelect = options.allowMultiSelect && hasCommands;\n let css = multiSelect ? 'auto ' : '', headcells = multiSelect ? `<div class=\"${PCSS}-headcell\"></div>` : '', datacells = multiSelect ? `<${P}-panel class=\"${PCSS}-datacell\" style=\"grid-column: 1;\" css=\"{{ {'grid-row': ^index+2} }}\"></${P}-panel>` : '', footcells = multiSelect ? `<div class=\"${PCSS}-footcell\"></div>` : '';\n // 1-based column index\n let colIndex = multiSelect ? 2 : 1;\n const colCount = multiSelect ? (metadata.length + 2) : (hasCommands ? (metadata.length + 1) : metadata.length);\n this._gridState.orderedColumns = metadata.sort((i, j) => ((i.order ?? 0) - (j.order ?? 0))).map(i => i.prop);\n let extraUi = '';\n for (let evtType of Components.PacemElement.emittedEventTypes) {\n extraUi += ` on-${evtType}=\":host._broadcastUiEvent(^item, ^index, $event)\"`;\n }\n // loop\n for (let c of metadata) {\n this._columnState[c.prop] = {\n hidden: c.hide\n };\n // css\n css += this._getColumnSize(c).replaceAll(' ', '') + ' ';\n // headcell\n headcells += headColumnHtml(c);\n // datacell\n datacells += dataColumnHtml(c, extraUi);\n // footcell\n // end-of-loop\n colIndex++;\n }\n datacells += `<${P}-panel class=\"${PCSS}-datarow\" css-class=\"{{ {'datarow-alt': ^index % 2 === 1, 'datarow-first': ^index === 0, 'datarow-last': ^index === (:host.datasource.length - 1), 'datarow-selected': :host._gridState.selectedRows.indexOf(^index) >= 0 } }}\" style=\"grid-column: 1 /span ${colCount};\" css=\"{{ {'grid-row': ^index+2} }}\"></${P}-panel>`;\n const html = `<${P}-repeater datasource=\"{{ :host.datasource }}\">\r\n<${P}-panel class=\"${PCSS}-datatable\" css=\"{{ {'grid-template-columns': :host._getColumnSizes(:host._columnState, '${css.trimEnd()}', :host._gridState) } }}\">\r\n ${headcells}\r\n <template>\r\n ${datacells}\r\n </template>\r\n ${footcells}\r\n</${P}-panel>`;\n container.innerHTML = html;\n }\n /** Patches the static `grid-template-columns` track list with any per-column overrides from `_columnState` (`auto` when hidden, a pixel width when rescaled). Bound as the grid container's `css['grid-template-columns']`. */\n _getColumnSizes(state = this._columnState, css, grid = this._gridState) {\n if (Utils.isNullOrEmpty(state)) {\n return css;\n }\n const split = css.split(' ');\n for (let prop in state) {\n const col = state[prop];\n const ndx = grid.orderedColumns.indexOf(prop);\n if (col.hidden) {\n split[ndx] = 'auto';\n }\n else if (col.pixelWidth > 0) {\n split[ndx] = col.pixelWidth + 'px';\n }\n }\n return split.join(' ');\n }\n /** Computes a column's initial CSS grid-template-columns track (`auto`, a flex `fr` unit, or a `minmax()`) from its `width`/`minPixelWidth`/`maxPixelWidth`. */\n _getColumnSize(c) {\n if (c.hide) {\n return 'auto';\n }\n const min = c.minPixelWidth, max = c.maxPixelWidth;\n if (max > 0 && min > 0) {\n return `minmax(${min}px, ${max}px)`;\n }\n else {\n const flexWidth = typeof c.width === 'number' ? (c.width + 'fr') : 'auto';\n if (min > 0) {\n return `minmax(${min}px, ${flexWidth})`;\n }\n if (max > 0) {\n return `minmax(${flexWidth}, ${max}px)`;\n }\n return flexWidth;\n }\n }\n //#endregion\n //#region events\n /** Relays a bubbled `CommandEvent` (e.g. from an autogenerated row-command button) as the grid's own `itemcommand`/`item<cmd>` events. */\n _onCommand(evt) {\n // DO NOT stop bubbling! Might be 'handy' in autogenerated forms...\n // Pacem.stopPropagationHandler(evt);\n // ...But might lead to unwanted behaviors in nested repeaters.\n // Thus include the 'originalEvent' in the outscoped one as a read-only property.\n // 'itemcommand' event fires first\n this.dispatchEvent(new Components.ItemCommandEvent(/* 'originalEvent' */ evt));\n // custom 'item<cmd>' event fires next\n this.dispatchEvent(new Components.CustomItemCommandEvent(/* 'originalEvent' */ evt));\n }\n /** Relays a UI event bubbled from a data cell as a {@link DataCellUIEvent} (`'datacell' + type`) on the grid, and toggles the row's selection on an un-prevented `click` while in `'row'` select mode. */\n _broadcastUiEvent(item, index, evt) {\n const evtType = evt.type.toLowerCase(), type = 'datacell' + evtType;\n const args = { dataitem: item, rowindex: index, datacell: evt.srcElement }, uiEvt = (evt instanceof MouseEvent || evt instanceof TouchEvent || evt instanceof KeyboardEvent) ? new DataCellUIEvent(type, args, evt) : new DataCellUIEvent(type, args);\n this.dispatchEvent(uiEvt);\n if (evtType === 'click' && !uiEvt.defaultPrevented) {\n const datacell = uiEvt.detail.datacell;\n const selectMode = datacell.metadata?.dataCell?.selectMode?.toLowerCase();\n switch (selectMode) {\n case 'cell':\n break;\n case 'row':\n this._broadcastSelectCommand(uiEvt.detail.rowindex);\n break;\n }\n }\n }\n /** Relays a head cell's {@link DataColumnSortEvent} up as the grid's own event, then - unless prevented - normalizes and applies the resulting sort into `_gridState.sort`. */\n _broadcastSortCommand(evt) {\n const sort = evt.detail;\n const event = new DataColumnSortEvent(sort);\n this.dispatchEvent(event);\n if (!event.defaultPrevented) {\n const sort2 = { column: '' };\n if (typeof event.detail.column === 'string') {\n sort2.column = event.detail.column;\n }\n if (typeof event.detail.dir === 'string') {\n sort2.dir = event.detail.dir === 'desc' ? 'desc' : 'asc';\n }\n this._gridState = Utils.extend({}, this._gridState, /* let it be manipulated on the \"other side\" */ { sort: sort2 });\n }\n }\n /** Relays a head cell's {@link DataColumnRescaleEvent} up as the grid's own event, then - unless prevented - stores the resulting pixel width into that column's `_columnState`. */\n _broadcastRescaleCommand(evt) {\n const rescale = evt.detail;\n const event = new DataColumnRescaleEvent(rescale);\n this.dispatchEvent(event);\n if (!event.defaultPrevented) {\n let width2 = rescale.width;\n if (typeof event.detail.width === 'number' && event.detail.width > 0) {\n width2 = event.detail.width;\n }\n const column = evt.srcElement.metadata;\n const newState = {};\n newState[column.prop] = { pixelWidth: width2 };\n this._columnState = Utils.extend({}, this._columnState, newState);\n }\n }\n /** Toggles `toggledRowIndex` in/out of the current row selection, honoring `options.allowMultiSelect`/`allowSelect` (logging a warning and doing nothing if selection isn't allowed at all), then applies it via `_setRowSelection`. */\n _broadcastSelectCommand(toggledRowIndex) {\n let actualRows = (this._gridState.selectedRows || []).slice(0);\n const ndx = actualRows.indexOf(toggledRowIndex);\n let trigger = true;\n if (ndx >= 0) {\n actualRows.splice(ndx, 1);\n }\n else {\n const options = this.options;\n if (options.allowMultiSelect) {\n actualRows.push(toggledRowIndex);\n }\n else if (options.allowSelect) {\n actualRows = [toggledRowIndex];\n }\n else {\n trigger = false;\n const msg = `Cannot select the row at index ${toggledRowIndex} since datagrid options do not allow any row selection.`;\n if (Utils.isNull(this.logger)) {\n console.warn(msg);\n }\n else {\n this.log(Logging.LogLevel.Warn, msg);\n }\n }\n }\n if (trigger) {\n this._setRowSelection(actualRows);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemDataGridElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemDataGridElement.prototype, \"options\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemDataGridElement.prototype, \"state\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Json })\n], PacemDataGridElement.prototype, \"datasource\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datagrid')\n], PacemDataGridElement.prototype, \"_tableContainer\", void 0);\n__decorate([\n Watch()\n], PacemDataGridElement.prototype, \"_adaptedColumnMetadata\", void 0);\n__decorate([\n Watch()\n], PacemDataGridElement.prototype, \"_columnState\", void 0);\n__decorate([\n Watch()\n], PacemDataGridElement.prototype, \"_gridState\", void 0);\n__decorate([\n Debounce()\n], PacemDataGridElement.prototype, \"_adaptColumnMetadata\", null);\nPacemDataGridElement = __decorate([\n CustomElement({ tagName: P + '-datagrid', shadow: false, template: `<div class=\"${PCSS}-datagrid\"></div><${P}-content></${P}-content>` })\n], PacemDataGridElement);\nexport { PacemDataGridElement };\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["__decorate","this","Components","Watch","PropertyConverters","Utils","Transformer","UI","UIComponents","ViewChild","P","CustomElement","Defaults","PCSS","avoidHandler","CommandEvent","CustomElementUtils","CommandEventName","AttributeChangeEventName","Debounce","ScaffoldingComponents","PropertyChangeEventName","Net","PacemEventTarget","UIPkgComponents","CoreUI","CustomUIEvent","Logging","DeepMerger"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pacem-plus.js","sources":["../esm/datagrid/types.js","../esm/datagrid/l10n.js","../esm/carousel.js","../esm/context-menu.js","../esm/edit.js","../esm/gallery.js","../esm/modal-form.js","../esm/router-hash-state.js","../esm/router-view-scroll.js","../esm/search.js","../esm/datagrid/datacell.js","../esm/datagrid/headcell.js","../esm/datagrid/datagrid.js","../esm/index-iife.js"],"sourcesContent":["var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Watch, PropertyConverters, Components } from '@pacem/pacem-core';\n/**\n * Base class shared by {@link PacemDataCellElement} and {@link PacemHeadCellElement}: both are bound to the\n * same `metadata`/`state`/`gridState` triple describing their column, both position themselves within the\n * grid's CSS-grid layout according to `gridState.orderedColumns`, and both toggle their own visibility from\n * `state.hidden`. Concrete subclasses only need to implement {@link updateLayout} to (re)build their own\n * content whenever `metadata` changes.\n */\nexport class PacemBaseCellElement extends Components.PacemSafeContentElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.updateColumnPosition();\n this.updateLayout(this.metadata);\n }\n /** Positions this cell within the grid's CSS-grid layout according to `gridState.orderedColumns`. */\n updateColumnPosition(metadata = this.metadata, state = this.gridState) {\n this.style.gridColumn = (state.orderedColumns.indexOf(metadata.prop) + 1).toString();\n }\n /** Shows/hides this cell according to `state.hidden`. */\n updateVisibility(state = this.state) {\n this.hide = !!state.hidden;\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'metadata':\n this.updateLayout(val);\n break;\n case 'gridState':\n this.updateColumnPosition();\n break;\n case 'state':\n this.updateVisibility();\n break;\n }\n }\n }\n}\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemBaseCellElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemBaseCellElement.prototype, \"state\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemBaseCellElement.prototype, \"gridState\", void 0);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Utils, Transformer } from '@pacem/pacem-core';\nconst DefaultLocalizationOptions = {\n headCell: (headCellProp, prop, dictionary) => {\n switch (headCellProp) {\n case 'name':\n return dictionary['column_name_' + prop] ?? dictionary['name_' + prop];\n case 'description':\n return dictionary['column_description_' + prop] ?? dictionary['description_' + prop];\n }\n return null;\n }\n};\n/** Namespaced helpers for working with {@link PacemDataGridElement} column metadata, e.g. localization. */\nexport class DataGrids {\n /**\n * Localizes the metadata of a data grid **in place** using a translation dictionary.\n * Only the `name` and `description` properties of data columns are localized.\n *\n * By default, this method uses an opinionated key lookup strategy and attempts to resolve translation keys in the following format:\n * - `column_name_{key}` for column names\n * - `column_description_{key}` for column descriptions/tooltips\n *\n * This behavior can be customized by providing a replacement strategy through the `options` parameter.\n *\n * @param metadata The metadata to localize.\n * @param dictionary The translation dictionary.\n * @param options Optional customization of the replacement strategy.\n * @returns The localized metadata.\n */\n static localizeMetadata(metadata, dictionary, options) {\n options = Utils.extend({}, DefaultLocalizationOptions, options ?? {});\n // do not clone (for now...)\n for (let prop of metadata) {\n const display = prop.headCell = prop.headCell ?? {};\n display.name = options.headCell('name', prop.prop, dictionary) ?? display.name; // dictionary['column_name_' + prop.prop] ?? dictionary['name_' + prop.prop] ?? display.name;\n display.description = options.headCell('description', prop.prop, dictionary) ?? /* dictionary['column_description_' + prop.prop] ?? dictionary['description_' + prop.prop] ?? */ display.description;\n }\n return metadata;\n }\n}\n__decorate([\n Transformer('datagrids.localizeMetadata')\n], DataGrids, \"localizeMetadata\", null);\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, ViewChild, Watch, PropertyConverters } from '@pacem/pacem-core';\nimport { Components as UIComponents } from '@pacem/pacem-ui';\nconst UI = UIComponents.UI;\n/**\n * @deprecated Superseded by composing a `${P}-repeater`/`${P}-slideshow` pair directly (see the template this\n * element generates below for reference). Renders a `datasource` of {@link CarouselDataItem}s as a full-bleed,\n * auto-advancing slideshow with a per-slide image, title and caption, applying 'previous'/'next'/'focus' CSS\n * classes to neighbouring slides so they can be animated in/out as the current slide changes.\n */\nlet PacemCarouselElement = class PacemCarouselElement extends UI.PacemAdaptedIterativeElement {\n constructor() {\n super(...arguments);\n /** Gets or sets the interval (in milliseconds) between automatic slide transitions. Default: `4000`. */\n this.interval = 4000;\n }\n};\n__decorate([\n ViewChild(P + '-adapter')\n], PacemCarouselElement.prototype, \"adapter\", void 0);\n__decorate([\n ViewChild(P + '-slideshow')\n], PacemCarouselElement.prototype, \"slideshow\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Number })\n], PacemCarouselElement.prototype, \"interval\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemCarouselElement.prototype, \"pausable\", void 0);\nPacemCarouselElement = __decorate([\n CustomElement({\n tagName: P + '-carousel', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-repeater datasource=\"{{ :host.datasource }}\">\r\n <${P}-slideshow class=\"${PCSS}-carousel\" adapter=\"{{ ::adapter }}\" index=\"{{ :host.index, twoway }}\" on-load=\"this.focus()\">\r\n\r\n <template>\r\n\r\n <${P}-slide class=\"${PCSS}-carousel-item\" css-class=\"{{ { '${PCSS}-carousel-previous': :host.isPrevious(^index, ::slideshow.index), '${PCSS}-carousel-next': :host.isNext(^index, ::slideshow.index), '${PCSS}-carousel-focus': ^index === ::slideshow.index } }}\">\r\n <${P}-a href=\"{{ ^item.url }}\">\r\n <${P}-img disabled=\"{{ !:host.isCloseTo(^index, ::slideshow.index) }}\" class=\"${PCSS}-carousel-splash\" adapt=\"cover\" src=\"{{ ^item.image }}\"></${P}-img>\r\n <div class=\"${PCSS}-carousel-content\">\r\n <div class=\"${PCSS}-carousel-caption\">\r\n <h3><${P}-text text=\"{{ ^item.title }}\"></${P}-text></h3>\r\n <${P}-panel class=\"paragraph\" content=\"{{ ^item.content }}\"></${P}-panel>\r\n </div>\r\n </div>\r\n </${P}-a>\r\n </${P}-slide>\r\n\r\n </template>\r\n </${P}-slideshow>\r\n\r\n </${P}-repeater><${P}-adapter pausable=\"{{ :host.pausable }}\" class=\"${PCSS}-carousel-adapter\" interval=\"{{ :host.interval }}\"></${P}-adapter>`\n })\n], PacemCarouselElement);\nexport { PacemCarouselElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters, Utils, CustomElementUtils, avoidHandler, Debounce, ViewChild, Components, CommandEvent, CommandEventName, AttributeChangeEventName } from '@pacem/pacem-core';\nimport { Components as UIComponents } from '@pacem/pacem-ui';\nconst UI = UIComponents.UI;\n//namespace Pacem.Components.Plus {\n/**\n * Base class for the items registered within a {@link PacemContextMenuElement}: either a command button\n * ({@link PacemContextMenuItemCommandElement}) or a separator ({@link PacemContextMenuItemSeparatorElement}).\n * Subclasses only need to implement {@link createMenuItemElement} to produce the actual DOM element rendered\n * inside the menu's balloon; this base class takes care of the `pacem-context-menuitem` CSS class and of\n * notifying the owning {@link PacemContextMenuElement} (via `refresh()`) whenever one of its properties changes.\n */\nexport class PacemContextMenuItemElement extends Components.PacemItemElement {\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, PCSS + '-context-menuitem');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n const container = this.container;\n if (container instanceof PacemContextMenuElement) {\n container.refresh();\n }\n }\n}\n/** A {@link PacemContextMenuElement} item rendered as a clickable command button ({@link UI.PacemButtonElement}). */\nlet PacemContextMenuItemCommandElement = class PacemContextMenuItemCommandElement extends PacemContextMenuItemElement {\n createMenuItemElement() {\n const retval = new UI.PacemButtonElement();\n retval.commandArgument = this.commandArgument;\n retval.commandName = this.commandName;\n retval.textContent = this.caption;\n retval.iconGlyph = this.iconGlyph;\n retval.confirmationDialog = this.confirmationDialog;\n retval.confirmationMessage = this.confirmationMessage;\n retval.tooltip = this.tooltip;\n retval.disabled = this.disabled;\n retval.cssClass = this.buttonCssClass;\n return retval;\n }\n};\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.String })\n], PacemContextMenuItemCommandElement.prototype, \"commandName\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.String })\n], PacemContextMenuItemCommandElement.prototype, \"caption\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.String })\n], PacemContextMenuItemCommandElement.prototype, \"tooltip\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.String })\n], PacemContextMenuItemCommandElement.prototype, \"iconGlyph\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.StringArray })\n], PacemContextMenuItemCommandElement.prototype, \"buttonCssClass\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.String })\n], PacemContextMenuItemCommandElement.prototype, \"confirmationMessage\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.Element })\n], PacemContextMenuItemCommandElement.prototype, \"confirmationDialog\", void 0);\n__decorate([\n Watch({ emit: false, /* important */ reflectBack: true, converter: PropertyConverters.Json })\n], PacemContextMenuItemCommandElement.prototype, \"commandArgument\", void 0);\nPacemContextMenuItemCommandElement = __decorate([\n CustomElement({ tagName: P + '-context-menuitem-command' })\n], PacemContextMenuItemCommandElement);\nexport { PacemContextMenuItemCommandElement };\n/** A {@link PacemContextMenuElement} item rendered as a non-interactive `<hr>` separator between commands. */\nlet PacemContextMenuItemSeparatorElement = class PacemContextMenuItemSeparatorElement extends PacemContextMenuItemElement {\n createMenuItemElement() {\n const retval = document.createElement('hr');\n retval.style.pointerEvents = 'none';\n return retval;\n }\n};\nPacemContextMenuItemSeparatorElement = __decorate([\n CustomElement({ tagName: P + '-context-menuitem-separator' })\n], PacemContextMenuItemSeparatorElement);\nexport { PacemContextMenuItemSeparatorElement };\n// <${P}-button class=\"button-flat ${PCSS}-margin margin-0\"><${P}-icon icon=\"{{ :host.icon || 'more_horiz' }}\"></${P}-icon></${P}-button>\n/**\n * A button that pops out a floating balloon menu built from its {@link PacemContextMenuItemElement} children\n * (commands and separators). If a `slot=\"button\"` element is provided by the consumer it's used as the trigger;\n * otherwise a default icon button is generated. Menu items are rendered lazily into a {@link UI.PacemBalloonElement}\n * appended to the nearest shell, and kept in sync with the registered items whenever they (or their attributes)\n * change - see `refresh`.\n */\nlet PacemContextMenuElement = class PacemContextMenuElement extends Components.PacemItemsContainerElement {\n constructor() {\n super(...arguments);\n this._dispatchCommand = (e) => {\n avoidHandler(e);\n this._onCommand(new CommandEvent({ commandName: e.detail.commandName, commandArgument: e.detail.commandArgument ?? this.commandArgument }));\n };\n this._slotchangeHandler = (evt) => {\n this._resetLayout();\n };\n this._attributeChangeHandler = (evt) => this._refreshMenuItems;\n this._mouseupHandler = (evt) => {\n const balloon = this._ensureBalloon();\n if (!Utils.isNull(balloon)) {\n balloon.popout();\n }\n };\n }\n /** Only accepts {@link PacemContextMenuItemElement} instances (commands or separators) as registrable items. */\n validate(item) {\n return item instanceof PacemContextMenuItemElement;\n }\n #btn;\n #icon;\n #balloon;\n _ensureButton() {\n if (!Utils.isNull(this.#btn)) {\n return this.#btn;\n }\n const btnSlot = this._slot;\n if (Utils.isNull(btnSlot)) {\n return null;\n }\n const found = this._lookForAButton();\n if (!Utils.isNull(found)) {\n return this.#btn = found;\n }\n const retval = new UI.PacemButtonElement();\n retval.setAttribute('slot', 'button');\n retval.className = `${PCSS}-margin margin-0 button-flat`;\n const icon = this.#icon = new UI.PacemIconElement();\n retval.appendChild(icon);\n this.appendChild(retval);\n return this.#btn = retval;\n }\n _lookForAButton() {\n const btnSlot = this._slot;\n if (Utils.isNull(btnSlot)) {\n return null;\n }\n const buttons = btnSlot.assignedElements({ flatten: true });\n if (Utils.isNullOrEmpty(buttons)) {\n return null;\n }\n return buttons[0];\n }\n _ensureBalloon() {\n let balloon = this.#balloon;\n if (!Utils.isNull(balloon)) {\n return balloon;\n }\n const shell = CustomElementUtils.findAncestorShell(this);\n if (Utils.isNull(shell)) {\n return null;\n }\n balloon = new UI.PacemBalloonElement();\n balloon.options = { trigger: UI.BalloonTrigger.Click, position: UI.BalloonPosition.HorizontalAuto, align: UI.BalloonAlignment.Auto, autoAdjust: true };\n //balloon.target = this._btn;\n balloon.addEventListener(CommandEventName, this._dispatchCommand, false);\n balloon.className = `${PCSS}-contextmenu`;\n shell.appendChild(balloon);\n return this.#balloon = balloon;\n }\n /** Registers a menu item, wiring its attribute-change notifications and rebuilding the rendered menu. */\n register(item) {\n const retval = super.register(item);\n if (retval) {\n item.addEventListener(AttributeChangeEventName, this._attributeChangeHandler, false);\n this._refreshMenuItems();\n }\n return retval;\n }\n /** Unregisters a menu item and rebuilds the rendered menu. */\n unregister(item) {\n const retval = super.unregister(item);\n if (retval) {\n item.removeEventListener(AttributeChangeEventName, this._attributeChangeHandler, false);\n this._refreshMenuItems();\n }\n return retval;\n }\n _onCommand(evt) {\n this.dispatchEvent(new CustomEvent(CommandEventName, { detail: evt.detail, cancelable: true, bubbles: true }));\n this.dispatchEvent(new CustomEvent(evt.detail.commandName.toLowerCase(), { detail: evt.detail.commandArgument, cancelable: true, bubbles: true }));\n }\n _resetLayout() {\n const btn = this._ensureButton();\n const balloon = this._ensureBalloon();\n if (!Utils.isNull(btn) && !Utils.isNull(balloon)) {\n balloon.target = btn;\n }\n this._toggleBtn();\n this._toggleIcon();\n }\n _toggleBtn(disabled = this.disabled) {\n const btn = this.#btn;\n if (!Utils.isNull(btn) && btn instanceof Components.PacemElement) {\n btn.disabled = disabled;\n }\n }\n _toggleIcon(icon = this.icon) {\n const iconEl = this.#icon;\n if (!Utils.isNull(iconEl)) {\n iconEl.icon = icon;\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._resetLayout();\n this._slot.addEventListener('slotchange', this._slotchangeHandler, false);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'icon':\n this._toggleIcon(val);\n break;\n case 'disabled':\n this._toggleBtn(val);\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeButton();\n this._disposeSlot();\n this._disposeBalloon();\n super.disconnectedCallback();\n }\n /** Forces the balloon's menu items to be rebuilt from the currently registered items. */\n refresh() {\n this._refreshMenuItems();\n }\n _disposeButton() {\n this.#btn = this.#icon = null;\n }\n _disposeSlot() {\n const slot = this._slot;\n if (!Utils.isNull(slot)) {\n slot.removeEventListener('slotchange', this._slotchangeHandler, false);\n }\n }\n _disposeBalloon() {\n const balloon = this.#balloon;\n if (!Utils.isNull(balloon)) {\n balloon.removeEventListener(CommandEventName, this._dispatchCommand, false);\n this._disposeBalloonChildren(0);\n balloon.remove();\n this.#balloon = null;\n }\n }\n _disposeBalloonChildren(startAt) {\n const balloon = this.#balloon;\n const count = balloon.children.length;\n for (let j = count - 1; j >= startAt; j--) {\n // cleanup\n const rem = balloon.children.item(j);\n rem.removeEventListener('mouseup', this._mouseupHandler, false);\n rem.remove();\n }\n }\n _refreshMenuItems() {\n const balloon = this._ensureBalloon();\n if (Utils.isNull(balloon)) {\n return;\n }\n const count = balloon.children.length;\n let cursor = 0;\n for (let item of this.items) {\n if (item.hide) {\n continue;\n }\n const menuitem = item.createMenuItemElement();\n menuitem.addEventListener('mouseup', this._mouseupHandler, false);\n if (cursor < count) {\n const repl = balloon.children.item(cursor);\n repl.removeEventListener('mouseup', this._mouseupHandler, false);\n repl.replaceWith(menuitem);\n }\n else {\n balloon.appendChild(menuitem);\n }\n cursor++;\n }\n this._disposeBalloonChildren(cursor);\n }\n};\n__decorate([\n ViewChild('slot[name=button]')\n], PacemContextMenuElement.prototype, \"_slot\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemContextMenuElement.prototype, \"commandArgument\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemContextMenuElement.prototype, \"icon\", void 0);\n__decorate([\n Debounce(true)\n], PacemContextMenuElement.prototype, \"_refreshMenuItems\", null);\nPacemContextMenuElement = __decorate([\n CustomElement({\n tagName: P + '-context-menu', shadow: true,\n template: `<slot name=\"button\"></slot><slot></slot>`\n })\n], PacemContextMenuElement);\nexport { PacemContextMenuElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters, Utils, PropertyChangeEventName, Components, avoidHandler } from '@pacem/pacem-core';\nimport { Components as UIComponents } from '@pacem/pacem-ui';\nimport { Components as ScaffoldingComponents } from '@pacem/pacem-scaffolding';\nconst UI = UIComponents.UI;\nconst Scaffolding = ScaffoldingComponents.Scaffolding;\n//namespace Pacem.Components.Plus {\n/** The kind of inline content a {@link PacemEditElement} edits, and the editor UI it swaps in accordingly. */\nexport var EditMode;\n(function (EditMode) {\n /** Plain text, edited via a `${P}-textarea`. */\n EditMode[\"Text\"] = \"text\";\n /** Rich HTML, edited via a `${P}-contenteditable`. */\n EditMode[\"Html\"] = \"html\";\n /** An image URL, edited via a `${P}-edit-image` (with optional upload/snapshot support). */\n EditMode[\"Image\"] = \"image\";\n /** Markdown source, edited via a `${P}-textarea` and rendered back through the markdown service. */\n EditMode[\"Markdown\"] = \"markdown\";\n})(EditMode || (EditMode = {}));\n/**\n * Makes an arbitrary piece of content (`target`, or this element's first child when unset) inline-editable:\n * overlays an edit button that, on click, opens a modal `${P}-dialog` hosting the editor matching `type`\n * (text, HTML, markdown or image - see {@link EditMode}), and writes the result back into the target element\n * once confirmed. The dialog and its editors (textarea/contenteditable/edit-image) are created once, lazily,\n * on connect, and shown/hidden according to `type` rather than being recreated on every edit.\n */\nlet PacemEditElement = class PacemEditElement extends Components.PacemElement {\n constructor(_markdown = new UI.MarkdownService()) {\n super();\n this._markdown = _markdown;\n // #endregion\n // #endregion\n this._dialogPropertyChangedHandler = (evt) => {\n this._dialogPropertyChangedCallback(evt);\n };\n this._broadcastFetchRequestEventName = (evt) => {\n this.dispatchEvent(new Scaffolding.ImageFetchRequestEvent(evt.detail));\n };\n this._innerValueChangedHandler = (evt) => {\n if (evt.detail.propertyName === 'value' && !Utils.isNull(this._dialog))\n this._dialog.state = evt.detail.currentValue;\n };\n this._editHandler = (evt) => {\n this.edit(evt);\n };\n }\n _addButton() {\n /*<pacem-balloon options=\"{ position: '${UI.BalloonPosition.Top}', align: '${UI.BalloonAlignment.End}', behavior: '${UI.BalloonBehavior.Inert}', hoverDelay: 0 }\" disabled=\"{{ :host.disabled }}\" class=\"pacem-edit-balloon\">\n <pacem-button class=\"pacem-edit\" on-click=\":host.edit($event)\"></pacem-button>\n </pacem-balloon>*/\n if (!Utils.isNull(this._button))\n return;\n //\n var btn = document.createElement(P + '-button');\n btn.className = PCSS + '-edit-button';\n btn.addEventListener('click', this._editHandler, false);\n this._target.appendChild(btn);\n //\n return this._button = btn;\n }\n _removeButton() {\n var btn = this._button;\n if (Utils.isNull(btn))\n return;\n btn.removeEventListener('click', this._editHandler, false);\n btn.remove();\n this._button = null;\n }\n // #region dialog\n _addDialog() {\n /* <pacem-dialog buttons=\"'${ UI.DialogButtons.OkCancel}'\" on-${PropertyChangeEventName}=\":host._dialogPropertyChangedCallback($event)\"> */\n var dialog = document.createElement(P + '-dialog');\n dialog.buttons = UI.DialogButtons.OkCancel;\n dialog.addEventListener(PropertyChangeEventName, this._dialogPropertyChangedHandler, false);\n dialog.appendChild(this._addTextarea());\n dialog.appendChild(this._addContenteditable());\n dialog.appendChild(this._addEditImage());\n document.body.appendChild(dialog);\n //\n return this._dialog = dialog;\n }\n _removeDialog() {\n this._removeTextarea();\n this._removeContenteditable();\n this._removeEditImage();\n if (!Utils.isNull(this._dialog)) {\n this._dialog.removeEventListener(PropertyChangeEventName, this._dialogPropertyChangedHandler, false);\n this._dialog.remove();\n }\n }\n // #region textarea\n _addTextarea() {\n /*<pacem-textarea hide=\"{{ :host.type === '${ EditMode.Html}' || :host.type === '${EditMode.Image}' }}\" value=\"{{ ::_dialog.state, twoway }}\"></pacem-textarea>*/\n var textarea = document.createElement(P + '-textarea');\n textarea.className = PCSS + '-edit-text';\n textarea.addEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n const type = this.type || EditMode.Text;\n textarea.hide = type !== EditMode.Text && type !== EditMode.Markdown;\n return this._textarea = textarea;\n }\n _removeTextarea() {\n if (!Utils.isNull(this._textarea))\n this._textarea.removeEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n }\n // #endregion\n // #region contenteditable\n _addContenteditable() {\n /*<pacem-contenteditable hide=\"{{ :host.type != '${ EditMode.Html}' }}\" value=\"{{ ::_dialog.state, twoway }}\"></pacem-contenteditable> */\n var contenteditable = document.createElement(P + '-contenteditable');\n contenteditable.className = PCSS + '-edit-content';\n contenteditable.addEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n const type = this.type || EditMode.Text;\n contenteditable.hide = type !== EditMode.Html;\n return this._contenteditable = contenteditable;\n }\n _removeContenteditable() {\n if (!Utils.isNull(this._contenteditable))\n this._contenteditable.removeEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n }\n // #endregion\n // #region edit-image\n _addEditImage() {\n /*<!-- img -->\n<pacem-panel class=\"pacem-edit-image\" hide=\"{{ :host.type != '${ EditMode.Image}' }}\"\n css-class=\"{{ {'pacem-uploading': ::_uploader.uploading, 'pacem-upload-enabled': !Pacem.Utils.isNullOrEmpty(:host.imageUploadUrl)} }}\">\n <pacem-input-search value=\"{{ :host.hint, twoway }}\"></pacem-input-search>\n <pacem-upload pattern=\"'.+\\.(jpe?g|png)$'\" url=\"{{ :host.imageUploadUrl }}\" on-${ PropertyChangeEventName}=\":host._uploaderPropertyChangedCallback($event)\" hide=\"{{ Pacem.Utils.isNullOrEmpty(:host.imageUploadUrl) }}\"></pacem-upload>\n <pacem-infinite-scroller container=\"{{ ::_repeater }}\" on-fetchmore=\":host._imagefetchSuddenly()\" disabled=\"{{ :host._fetching || !:host._open || :host._images.length >= :host.imageSet.total }}\"></pacem-infinite-scroller>\n <pacem-repeater datasource=\"{{ :host._images }}\">\n <template>\n <pacem-img css-class=\"{{ {'pacem-selected': ^item.src === ::_dialog.state } }}\" on-click=\"::_dialog.state = ^item.src\" src=\"{{ ^item.thumb }}\" adapt=\"'contain'\"></pacem-img>\n </template>\n </pacem-repeater>\n <pacem-progressbar></pacem-progressbar>\n</pacem-panel>*/\n var editImage = document.createElement(P + '-edit-image');\n editImage.disabled = true;\n editImage.addEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n editImage.addEventListener(Scaffolding.ImageFetchRequestEventName, this._broadcastFetchRequestEventName, false);\n const type = this.type || EditMode.Text;\n editImage.hide = type !== EditMode.Image;\n editImage.uploadUrl = this.imageUploadUrl;\n editImage.allowSnapshot = this.allowSnapshot;\n editImage.maxWidth = this.maxImageWidth;\n editImage.maxHeight = this.maxImageHeight;\n return this._editImage = editImage;\n }\n _removeEditImage() {\n if (!Utils.isNull(this._editImage)) {\n this._editImage.removeEventListener(PropertyChangeEventName, this._innerValueChangedHandler, false);\n this._editImage.removeEventListener(Scaffolding.ImageFetchRequestEventName, this._broadcastFetchRequestEventName, false);\n }\n }\n _update(val) {\n var cnt = this._content;\n switch (this.type) {\n case EditMode.Html:\n cnt.innerHTML = val;\n break;\n case EditMode.Markdown:\n switch (cnt.localName) {\n case P + '-markdown':\n cnt.value = val;\n break;\n default:\n cnt.innerHTML = this._markdown.toHtml(val);\n break;\n }\n break;\n case EditMode.Image:\n switch (cnt.localName) {\n case 'img':\n case P + '-img':\n cnt['src'] = val;\n break;\n default:\n cnt.style.backgroundImage = `url(${val})`;\n break;\n }\n break;\n default:\n this._content.textContent = val;\n break;\n }\n }\n _retrieve() {\n var cnt = this._content;\n switch (this.type) {\n case EditMode.Html:\n return cnt.innerHTML;\n case EditMode.Image:\n switch (cnt.localName) {\n case P + '-img':\n case 'img':\n return cnt['src'];\n default:\n let styled = getComputedStyle(cnt).backgroundImage, matches = /url\\([\"']?([^'\"]+)[\"']?\\)/.exec(styled);\n return matches && matches.length && matches[1];\n }\n case EditMode.Markdown:\n return cnt['value'] || cnt.textContent;\n default:\n return cnt.textContent;\n }\n }\n _setup() {\n const val = this.disabled;\n if (val) {\n Utils.removeClass(this._target, PCSS + '-editing');\n this._removeButton();\n }\n else {\n Utils.addClass(this._target, PCSS + '-editing');\n this._addButton();\n }\n }\n _dialogPropertyChangedCallback(evt) {\n if (evt.detail.propertyName === 'state') {\n const val = evt.detail.currentValue;\n if (!Utils.isNull(this._textarea))\n this._textarea.value = val;\n if (!Utils.isNull(this._contenteditable))\n this._contenteditable.value = val;\n if (!Utils.isNull(this._editImage))\n this._editImage.value = val;\n this._update(evt.detail.currentValue);\n }\n }\n get _target() {\n var cnt = this.target;\n if (Utils.isNull(cnt))\n cnt = this.firstElementChild;\n return cnt;\n }\n connectedCallback() {\n super.connectedCallback();\n this._addDialog();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._addButton();\n this._setup();\n }\n disconnectedCallback() {\n this._removeButton();\n this._removeDialog();\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'imageUploadUrl':\n if (!Utils.isNull(this._editImage))\n this._editImage.uploadUrl = val;\n break;\n case 'allowSnapshot':\n if (!Utils.isNull(this._editImage))\n this._editImage.allowSnapshot = val;\n break;\n case 'imageSet':\n if (!Utils.isNull(this._editImage))\n this._editImage.imageSet = val;\n break;\n case 'disabled':\n this._setup();\n break;\n case 'type':\n const type = val;\n if (!Utils.isNull(this._textarea))\n this._textarea.hide = type !== EditMode.Text && type !== EditMode.Markdown;\n if (!Utils.isNull(this._contenteditable))\n this._contenteditable.hide = type !== EditMode.Html;\n if (!Utils.isNull(this._editImage))\n this._editImage.hide = type !== EditMode.Image;\n break;\n case 'maxImageHeight':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxHeight = val;\n break;\n case 'maxImageWidth':\n if (!Utils.isNull(this._editImage))\n this._editImage.maxWidth = val;\n break;\n }\n }\n /**\n * Opens the modal editor over `target`'s current content. On 'Ok' the edited value is written back into\n * `target` and a `commit` event is dispatched with `{ value }`; on 'Cancel' the target's original content\n * is restored.\n */\n edit(evt) {\n avoidHandler(evt);\n var cnt = this._target;\n if (Utils.isNull(cnt))\n return;\n this._removeButton();\n this._content = cnt;\n var state = this._state = this._retrieve();\n if (!Utils.isNull(this._editImage))\n this._editImage.disabled = false;\n this._dialog.open(state).then(args => {\n switch (args.button) {\n case UI.DialogButton.Cancel:\n // reset value\n this._update(this._state);\n break;\n case UI.DialogButton.Ok:\n // save\n this._update(args.state);\n this.dispatchEvent(new CustomEvent('commit', { detail: { value: args.state } }));\n break;\n }\n this._content = null;\n if (!Utils.isNull(this._editImage))\n this._editImage.disabled = true;\n this._addButton();\n });\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemEditElement.prototype, \"key\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemEditElement.prototype, \"type\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element })\n], PacemEditElement.prototype, \"target\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemEditElement.prototype, \"imageUploadUrl\", void 0);\n__decorate([\n Watch({ emit: false })\n], PacemEditElement.prototype, \"imageSet\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemEditElement.prototype, \"maxImageWidth\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemEditElement.prototype, \"maxImageHeight\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemEditElement.prototype, \"allowSnapshot\", void 0);\nPacemEditElement = __decorate([\n CustomElement({\n tagName: P + '-edit'\n })\n], PacemEditElement);\nexport { PacemEditElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, PCSS, ViewChild, Watch, PropertyConverters, Utils, Components } from '@pacem/pacem-core';\nimport { Components as UIComponents } from '@pacem/pacem-ui';\nconst UI = UIComponents.UI;\n/** Builds the markup for a single `${P}-slide`, embedding `captionTemplate`'s markup and reading the image from `imageProperty`. */\nfunction getGallerySlideShowTemplate(captionTemplate = getDefaultCaptionTemplate(), imageProperty = 'image') {\n return `<${P}-slide class=\"${PCSS}-gallery-item\"\r\ncss-class=\"{{ { '${PCSS}-gallery-previous': :host.isPrevious(^index, ::_slideshow.index), '${PCSS}-gallery-next': :host.isNext(^index, ::_slideshow.index), '${PCSS}-gallery-focus': ^index === ::_slideshow.index } }}\"\r\n>\r\n <${P}-img src=\"{{ ^item.${imageProperty} }}\" disabled=\"{{ !::_lightbox.show || !(:host.isCloseTo(^index, ::_slideshow.index) || ^index === ::_slideshow.index) }}\"\r\ncss=\"{{ {'visibility': (:host._poppingUp ? 'hidden' : ''), 'transition': (:host._poppingUp ? 'none' : '')} }}\" class=\"${PCSS}-gallery-splash\" adapt=\"contain\"></${P}-img>\r\n\r\n${captionTemplate}\r\n\r\n </${P}-slide>`;\n}\n/** Default caption markup: a simple panel bound to `captionProperty`, hidden when the value is empty. */\nfunction getDefaultCaptionTemplate(captionProperty = 'caption') {\n return `<${P}-panel hide=\"{{ $pacem.isNullOrEmpty(^item.${captionProperty}) }}\" class=\"${PCSS}-gallery-caption gallery-caption-default\">\r\n <${P}-span class=\"paragraph\" text=\"{{ ^item.${captionProperty} }}\"></${P}-span>\r\n </${P}-panel>`;\n}\n;\n/**\n * A lightbox photo gallery: renders `datasource` (a list of {@link GalleryDataItem}, or any shape when a custom\n * `captionTemplate`/`imageProperty`/`captionProperty` is supplied) as a `${P}-lightbox`-hosted `${P}-slideshow`,\n * opened via {@link open} with an optional 'hero' image-morph transition animating from the triggering thumbnail\n * into the lightbox. The per-slide markup (image + caption) is generated dynamically from `captionTemplate`\n * (or a default caption panel) so consumers can customize the caption's content without overriding the whole slide.\n */\nlet PacemGalleryElement = class PacemGalleryElement extends UI.PacemAdaptedIterativeElement {\n constructor() {\n super(...arguments);\n this._templateChangeHandler = (evt) => {\n const proxy = evt.target;\n this._setupWithCaptionTemplate(proxy.target);\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setupWithCaptionTemplate();\n this._databind();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'datasource':\n this._databind();\n break;\n case 'captionTemplate':\n this._setupWithCaptionTemplate(val, old);\n break;\n case 'imageProperty':\n this._setupWithCaptionTemplate(this.captionTemplate, this.captionTemplate);\n break;\n case 'captionProperty':\n if (Utils.isNull(this.captionTemplate)) {\n this._setupDefaultTemplate();\n }\n break;\n }\n }\n }\n disconnectedCallback() {\n this._disposeTemplate();\n super.disconnectedCallback();\n }\n _disposeTemplate(val = this.captionTemplate) {\n if (val instanceof Components.PacemTemplateProxyElement) {\n val.removeEventListener('templatechange', this._templateChangeHandler);\n }\n }\n _setupWithCaptionTemplate(val = this.captionTemplate, old) {\n this._disposeTemplate(old);\n if (Utils.isNull(val)) {\n this._setupDefaultTemplate();\n return;\n }\n if (val instanceof Components.PacemTemplateProxyElement) {\n val.addEventListener('templatechange', this._templateChangeHandler, false);\n val = val.target;\n }\n const container = val.content.firstElementChild;\n Utils.addClass(container, PCSS + '-gallery-caption');\n const tmpl = document.createElement('template');\n tmpl.innerHTML = getGallerySlideShowTemplate(val.innerHTML, this.imageProperty);\n this._setupTemplate(tmpl);\n }\n _setupTemplate(val) {\n this._templateProxy.target = val;\n }\n _setupDefaultTemplate() {\n const tmpl = document.createElement('template');\n tmpl.innerHTML = getGallerySlideShowTemplate(getDefaultCaptionTemplate(this.captionProperty), this.imageProperty);\n this._setupTemplate(tmpl);\n }\n _databind() {\n const rep = this._repeater;\n if (!Utils.isNull(rep)) {\n rep.datasource = this.datasource;\n }\n }\n /** @readonly Gets the `${P}-adapter` driving the gallery's slideshow. */\n get adapter() {\n return this._adapter;\n }\n async _heroAnimate(fromEl, src) {\n if (!Utils.isNull(fromEl)) {\n let pImg = new UI.PacemImageElement();\n let goalEl = this._heroPlaceholderProxy.dom[0];\n const TRANSITION = 300;\n pImg.src = src || /* assuming an img-ish element */ fromEl['src'];\n pImg.adapt = 'contain';\n let goal = Utils.offset(goalEl), from = Utils.offset(fromEl), style = pImg.style;\n const cfrStyle = getComputedStyle(goalEl);\n style.border = cfrStyle.border;\n style.width = goalEl.clientWidth + 'px';\n style.height = goalEl.clientHeight + 'px';\n style.position = 'absolute';\n style.zIndex = cfrStyle.zIndex;\n style.top = goal.top + 'px';\n style.left = goal.left + 'px';\n const scaleX = fromEl.clientWidth / goalEl.clientWidth, scaleY = fromEl.clientHeight / goalEl.clientHeight, translateX = (from.left - goal.left) + 'px', translateY = (from.top - goal.top) + 'px';\n style.transformOrigin = '0 0';\n style.transition = `transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${TRANSITION}ms, opacity ${TRANSITION}ms`;\n style.transform = `translate(${translateX}, ${translateY}) scale(${scaleX}, ${scaleY})`;\n document.body.appendChild(pImg);\n requestAnimationFrame(() => {\n pImg.style.transform = '';\n });\n await Utils.waitForAnimationEnd(pImg, TRANSITION);\n pImg.remove();\n }\n }\n /**\n * Opens the lightbox at `startIndex`, animating a morph from `heroFrom` (typically the thumbnail that\n * triggered the gallery) into the lightbox's hero placeholder, when provided.\n * @param startIndex Index of the slide to open the gallery on.\n * @param heroFrom Optional element to morph the opening transition from.\n * @param src Optional image URL to use for the morph, when different from `heroFrom`'s own `src`.\n */\n open(startIndex, heroFrom, src) {\n this._poppingUp = true;\n this._lightbox.show = true;\n this._slideshow.index = startIndex; // reflects on 'this' (twoway)\n this._heroAnimate(heroFrom, src)\n .then(_ => {\n this._poppingUp = false;\n this._slideshow.focus();\n });\n }\n};\n__decorate([\n ViewChild(P + '-adapter')\n], PacemGalleryElement.prototype, \"_adapter\", void 0);\n__decorate([\n ViewChild(P + '-lightbox')\n], PacemGalleryElement.prototype, \"_lightbox\", void 0);\n__decorate([\n ViewChild(P + '-slideshow')\n], PacemGalleryElement.prototype, \"_slideshow\", void 0);\n__decorate([\n ViewChild(P + '-repeater')\n], PacemGalleryElement.prototype, \"_repeater\", void 0);\n__decorate([\n ViewChild(P + '-template-proxy')\n], PacemGalleryElement.prototype, \"_templateProxy\", void 0);\n__decorate([\n ViewChild(P + '-shell-proxy')\n], PacemGalleryElement.prototype, \"_heroPlaceholderProxy\", void 0);\n__decorate([\n Watch()\n], PacemGalleryElement.prototype, \"_poppingUp\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemGalleryElement.prototype, \"captionTemplate\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemGalleryElement.prototype, \"captionProperty\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemGalleryElement.prototype, \"imageProperty\", void 0);\nPacemGalleryElement = __decorate([\n CustomElement({\n tagName: P + '-gallery', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-lightbox class=\"${PCSS}-gallery\">\r\n <${P}-repeater>\r\n <${P}-slideshow adapter=\"{{ ::_adapter }}\" index=\"{{ :host.index, twoway }}\" hide=\"{{ !::_lightbox.show }}\">\r\n <${P}-template-proxy></${P}-template-proxy>\r\n </${P}-slideshow>\r\n </${P}-repeater>\r\n<${P}-adapter class=\"${PCSS}-gallery-adapter\"></${P}-adapter>\r\n</${P}-lightbox>\r\n<${P}-shell-proxy><div class=\"${PCSS}-gallery-hero-target\"></div></${P}-shell-proxy>`\n })\n], PacemGalleryElement);\nexport { PacemGalleryElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar PacemModalFormElement_1;\nimport { CustomElement, Defaults, P, PCSS, Watch, PropertyConverters, ViewChild, Utils, Net, avoidHandler } from '@pacem/pacem-core';\nimport { Components as UIComponents } from '@pacem/pacem-ui';\nimport { Components as ScaffoldingComponents } from '@pacem/pacem-scaffolding';\nconst UI = UIComponents.UI;\n//namespace Pacem.Components.Plus {\n// TODO: use onewaytosource as a binding mode\n/**\n * A modal, `${P}-lightbox`-hosted CRUD form: wraps an autogenerated `${P}-form` bound to `state`/`metadata`,\n * relays its submit/success/fail events, and turns 'Ok' into a `${P}-fetch` request (`method`) to `action`\n * before committing the dialog - or, when `action` is empty, commits immediately without any network call.\n * Extends {@link UI.PacemDialogBase}, so it's opened the same way (`open(state)`) and resolves the same\n * `{ button, state }` result once committed.\n */\nlet PacemModalFormElement = PacemModalFormElement_1 = class PacemModalFormElement extends UI.PacemDialogBase {\n /** @readonly Gets the underlying `${P}-form` element. */\n get form() {\n return this._form;\n }\n constructor() {\n super();\n /** Gets or sets whether the 'Ok' button stays disabled until the form is both valid and dirty. Default: `true`. */\n this.suddenValidation = true;\n /** Gets or sets the HTTP method used to submit the form to `action`. Default: `Net.HttpMethod.Post`. */\n this.method = Net.HttpMethod.Post;\n this._keyupHandler = (evt) => {\n if (evt.keyCode === /* Enter */ 13\n // no modifiers\n && !evt.shiftKey && !evt.ctrlKey && !evt.altKey && !evt.metaKey) {\n let btn = evt.currentTarget.querySelector(`.${PCSS}-dialog-buttons ${P}-button[type=submit]`);\n if (!Utils.isNull(btn) && Utils.isVisible(btn) && !btn.disabled) {\n btn.click();\n }\n }\n };\n this.#keepStateOnCommit = false;\n this._emitter = new ScaffoldingComponents.Scaffolding.FormEventEmitter(this);\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n // HACK: move the buttons outside the .pacem-scrollable element in the lightbox\n //var lightboxCore = this.querySelector(`.${PCSS}-lightbox`);\n //lightboxCore.appendChild(\n // this._buttons = this.querySelector(`.${PCSS}-dialog-buttons`)\n //);\n //lightboxCore.appendChild(\n // this.querySelector(`.${PCSS}-dialog-heading`)\n //);\n //lightboxCore.appendChild(\n // this.querySelector(P + '-loader')\n //);\n //this.dispatchEvent(new PropertyChangeEvent({ propertyName: 'modalButtons', currentValue: this.modalButtons }));\n this.addEventListener('keyup', this._keyupHandler, false);\n this._emitter.start();\n }\n disconnectedCallback() {\n this._emitter.stop();\n this.removeEventListener('keyup', this._keyupHandler, false);\n super.disconnectedCallback();\n }\n _submit(evt) {\n if (this.readonly) {\n this.commit(UI.DialogButton.Ok, evt);\n }\n else {\n avoidHandler(evt);\n this._form.validate().then(valid => {\n if (valid) {\n if (Utils.isNullOrEmpty(this.action)) {\n this.commit(UI.DialogButton.Ok, evt);\n }\n else {\n this._form.submit(this._fetcher).then(_ => {\n this.commit(UI.DialogButton.Ok, evt);\n }, r => {\n // do nothing\n });\n }\n }\n });\n }\n }\n _onSubmit(evt) {\n // no need to broadcast, event bubbles itself...\n // ...just handle it using the eventual listeners:\n this.emit(evt);\n }\n #keepStateOnCommit;\n open(state, keepStateOnCommit, setAsPristine = true) {\n if (Utils.isNull(state)) {\n throw `The state of a ${PacemModalFormElement_1} cannot be null.`;\n }\n this.#keepStateOnCommit = keepStateOnCommit;\n var retval = super.open(state);\n if (setAsPristine) {\n this._form.setPristine();\n }\n return retval;\n }\n /** Commits the dialog, then - unless `keepStateOnCommit` was requested on `open` - resets `state` to `{}` once the closing animation ends. */\n commit(btn, evt) {\n super.commit(btn, evt);\n if (!this.#keepStateOnCommit) {\n Utils.waitForAnimationEnd(this, 500).then(_ => {\n // BREAKING change (v0.8.37): state destroyed when dialog committed\n // TODO: consider 'if' and 'how' to avoid this.\n this.state = {};\n });\n }\n }\n _cancel(evt) {\n this.commit(UI.DialogButton.Cancel, evt);\n this._form.reset();\n }\n _broadcast(evt) {\n this.dispatchEvent(new CustomEvent(evt.type, { detail: evt.detail }));\n }\n /** Gets the 'ok' and 'cancel' modal buttons. */\n get modalButtons() {\n const btns = this._buttons;\n return {\n ok: btns && btns.firstElementChild && btns.firstElementChild.firstElementChild,\n cancel: btns && btns.firstElementChild && btns.firstElementChild.lastElementChild\n };\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModalFormElement.prototype, \"suddenValidation\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemModalFormElement.prototype, \"okCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemModalFormElement.prototype, \"cancelCaption\", void 0);\n__decorate([\n Watch({ reflectBack: true, converter: PropertyConverters.String })\n], PacemModalFormElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemModalFormElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModalFormElement.prototype, \"action\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModalFormElement.prototype, \"loaderType\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModalFormElement.prototype, \"success\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModalFormElement.prototype, \"fail\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemModalFormElement.prototype, \"readonly\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Json })\n], PacemModalFormElement.prototype, \"fetchHeaders\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemModalFormElement.prototype, \"fetchCredentials\", void 0);\n__decorate([\n ViewChild(P + '-lightbox')\n], PacemModalFormElement.prototype, \"lightbox\", void 0);\n__decorate([\n ViewChild(P + '-form[entity]')\n], PacemModalFormElement.prototype, \"_form\", void 0);\n__decorate([\n ViewChild(P + '-fetch')\n], PacemModalFormElement.prototype, \"_fetcher\", void 0);\nPacemModalFormElement = PacemModalFormElement_1 = __decorate([\n CustomElement({\n tagName: P + '-modal-form', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-lightbox modal=\"true\" logger=\"{{ :host.logger }}\">\r\n <${P}-form wrapper>\r\n <${P}-form logger=\"{{ :host.logger }}\" on-submit=\":host._onSubmit($event)\" readonly=\"{{ :host.readonly }}\" entity=\"{{ :host.state, twoway }}\" on-success=\":host._broadcast($event)\"\r\n on-fail=\":host._broadcast($event)\" success=\"{{ :host.success, twoway }}\" fail=\"{{ :host.fail, twoway }}\" autogenerate=\"{{ !$pacem.isNull($this.entity) }}\" metadata=\"{{ :host.metadata }}\"\r\n fetch-headers=\"{{ :host.fetchHeaders }}\" fetch-credentials=\"{{ :host.fetchCredentials }}\" sudden-validation=\"{{ :host.suddenValidation }}\"></${P}-form>\r\n </${P}-form>\r\n <${P}-fetch logger=\"{{ :host.logger }}\" method=\"{{ :host.method }}\" headers=\"{{ :host.fetchHeaders }}\" credentials=\"{{ :host.fetchCredentials }}\" autofetch=\"false\" url=\"{{ :host.action }}\"></${P}-fetch>\r\n <div class=\"${PCSS}-dialog-buttons ${PCSS}-buttonset buttons\" slot=\"bottom\">\r\n <div class=\"buttonset-left\">\r\n <${P}-button on-click=\":host._submit($event)\" css-class=\"{{ {'buttonset-last': :host.readonly} }}\" type=\"submit\"\r\n class=\"button primary button-size size-small\" disabled=\"{{ (:host.suddenValidation && !:host.readonly && !(::_form.valid && ::_form.dirty)) || ::_fetcher.fetching }}\">\r\n <${P}-panel class=\"submit-spinner ${PCSS}-anim anim-pop\" hide=\"{{ !::_form.fetching }}\"><i class=\"${PCSS}-icon ${PCSS}-anim anim-rotate rotate-uniform display-block\">refresh</i></${P}-panel>\r\n <${P}-text text=\"{{ :host.okCaption || 'OK' }}\"></${P}-text>\r\n </${P}-button>\r\n <${P}-button on-click=\":host._cancel($event)\" hide=\"{{ :host.readonly }}\" class=\"button button-size size-small\" disabled=\"{{ ::_fetcher.fetching }}\"><${P}-text text=\"{{ :host.cancelCaption || 'Cancel' }}\"></${P}-text></${P}-button>\r\n </div></div>\r\n <div class=\"${PCSS}-dialog-heading\" slot=\"top\">\r\n <${P}-content></${P}-content>\r\n </div>\r\n <div class=\"pos-absolute absolute-top absolute-right absolute-left absolute-bottom overflow-hidden ${PCSS}-inert display-flex flex-center flex-middle\">\r\n <${P}-loader type=\"{{ :host.loaderType }}\" class=\"loader-primary loader-smaller ${PCSS}-anim anim-pop\" active=\"{{ ::_fetcher.fetching }}\"></${P}-loader>\r\n </div>\r\n</${P}-lightbox>`\n })\n], PacemModalFormElement);\nexport { PacemModalFormElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils, PacemEventTarget } from '@pacem/pacem-core';\n//namespace Pacem.Components.Plus {\n/**\n * Two-way syncs a plain `state` object with the URL hash's query-string (`#...`) through a\n * {@link Components.PacemRouterElement}: reading the hash into `state` on navigation, and pushing `state`\n * back into the hash (merged with `default`, minus anything already matching `default`) whenever `state`\n * changes. Values are normalized to strings for the URL (see `normalizedState`) and denormalized back to\n * their original type using `default` as a type mold, so booleans/numbers/dates/regexes round-trip correctly.\n * Navigation events lock the element (`#locked`) to avoid feedback loops between the router-driven read and\n * the state-driven write while a navigation is in flight.\n */\nlet PacemRouterHashStateElement = class PacemRouterHashStateElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** Gets or sets the default/mold values: used both to fill in missing `state` entries and to infer each value's original type when denormalizing from the URL. */\n this.default = {};\n /** Gets or sets the current state, kept in sync with the URL hash's query-string. */\n this.state = {};\n /** @readonly Gets the string-normalized projection of `state` actually written to the URL hash. */\n this.normalizedState = {};\n this._routerNavigatingHandler = (_) => {\n this.#locked = true;\n };\n this._routerNavigateHandler = (_) => {\n this.#locked = false;\n this._updateStateFromURI();\n };\n }\n #locked;\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._updateStateFromURI();\n this._setupRouterHandlers(this.router);\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'state':\n if (!first && !this.#locked) {\n this._updateNormalizedState();\n this._updateURIFromState();\n }\n break;\n case 'disabled':\n if (!!val) {\n this._updateStateFromURI();\n }\n break;\n case 'default':\n this._updateStateFromURI();\n break;\n case 'router':\n if (!first) {\n this._disposeRouterHandlers(old);\n this._setupRouterHandlers(val);\n }\n break;\n }\n }\n disconnectedCallback() {\n this._disposeRouterHandlers();\n super.disconnectedCallback();\n }\n _setupRouterHandlers(router = this.router) {\n if (!Utils.isNull(router)) {\n window.addEventListener('navigating', this._routerNavigatingHandler, false);\n window.addEventListener('navigate', this._routerNavigateHandler, false);\n }\n }\n _disposeRouterHandlers(router = this.router) {\n if (!Utils.isNull(router)) {\n window.removeEventListener('navigating', this._routerNavigatingHandler, false);\n window.removeEventListener('navigate', this._routerNavigateHandler, false);\n }\n }\n _currentBasePath() {\n const router = this.router;\n if (!Utils.isNull(router)) {\n const q = router.state.$querystring;\n return this._normalizePath(document.location.pathname, q);\n }\n return null;\n }\n _normalizePath(path, q) {\n if (Utils.isNullOrEmpty(path)) {\n return path;\n }\n if (path.endsWith('/')) {\n path = path.substring(0, path.length - 1);\n }\n q ??= '';\n return path + (q.length > 0 ? ('?' + q) : '');\n }\n _areStatesEquivalent(s1, s2) {\n const state1 = Utils.extend({}, s1 || {}), state2 = Utils.extend({}, s2 || {});\n for (let prop in state1) {\n if (!this._areSubstantiallyEquivalent(state1[prop], state2[prop])) {\n return false;\n }\n delete state1[prop];\n delete state2[prop];\n }\n for (let prop in state2) {\n if (!this._areSubstantiallyEquivalent(state1[prop], state2[prop])) {\n return false;\n }\n }\n return true;\n }\n _updateNormalizedState(state = this.state) {\n if (this.disabled || this.#locked) {\n return;\n }\n const normalizedState = this._normalizeState(state);\n if (!this._areStatesEquivalent(normalizedState, this.normalizedState)) {\n this.normalizedState = normalizedState;\n }\n }\n _updateStateFromURI() {\n if (this.disabled || this.#locked) {\n return;\n }\n var state = Utils.extend({}, this.default || {});\n const router = this.router;\n if (!Utils.isNull(router)) {\n const denormalized = this._denormalizeState(Utils.URIs.parseQuery(router.state && router.state.$hash || '{}'));\n Utils.extend(state, denormalized);\n }\n if (!this._areStatesEquivalent(this.state, state)) {\n this.state = state;\n }\n }\n _updateURIFromState(state = this.normalizedState) {\n if (this.disabled || this.#locked) {\n return;\n }\n const router = this.router;\n if (!Utils.isNull(router)) {\n const actual = this._currentBasePath();\n const currentState = Utils.URIs.parseQuery(router.state.$hash || '{}'), targetState = state || {};\n if (!this._areStatesEquivalent(currentState, targetState)) {\n // checked state equivalence to avoid superfluous navigation\n const clean = this._cleanupStateForURI(targetState);\n var url = actual;\n if (!Utils.isNullOrEmpty(clean)) {\n url = Utils.URIs.appendQuery(actual, clean, false, true);\n }\n // navigate\n router.path = url;\n }\n }\n }\n _areSubstantiallyEquivalent(v1, v2) {\n v1 ??= '';\n v2 ??= '';\n return v1.toString() == v2.toString() || Utils.areSemanticallyEqual(v1, v2) || JSON.stringify(v1) === JSON.stringify(v2);\n }\n _cleanupStateForURI(state = this.state) {\n const copy = Utils.clone(state || {}), base = this.default;\n for (let key in copy) {\n if ((Utils.isNullOrEmpty(copy[key]) && (Utils.isNull(base) || !(key in base)))\n || (!Utils.isNull(base) && (key in base) && this._areSubstantiallyEquivalent(base[key], copy[key]))) {\n delete copy[key];\n }\n }\n return copy;\n }\n _normalizeState(state = this.state, mold = this.default) {\n var output = {};\n const base = mold;\n for (let key in state || {}) {\n const value = state[key];\n if (Utils.isNullOrEmpty(value)) {\n if (!Utils.isNull(base) && (key in base) && !Utils.isNullOrEmpty(base[key])) {\n output[key] = '';\n }\n continue;\n }\n switch (typeof value) {\n case 'number':\n case 'bigint':\n case 'boolean':\n Object.defineProperty(output, key, { enumerable: true, value: value.toString() });\n break;\n case 'symbol':\n case 'string':\n Object.defineProperty(output, key, { enumerable: true, value });\n break;\n default:\n if (Utils.Dates.isDate(value)) {\n Object.defineProperty(output, key, { enumerable: true, value: value.toISOString() });\n }\n else if (value instanceof RegExp) {\n Object.defineProperty(output, key, { enumerable: true, value: value.source });\n }\n else {\n throw new Error('Type not supported to be normalized into a URI hash.');\n }\n break;\n }\n }\n return output;\n }\n _denormalizeState(state = this.normalizedState, mold = this.default) {\n const output = {};\n const base = mold || {};\n for (let prop in state) {\n if (!(prop in base)) {\n output[prop] = state[prop];\n continue;\n }\n const moldProp = base[prop], value = state[prop];\n switch (typeof moldProp) {\n case 'boolean':\n Object.defineProperty(output, prop, { enumerable: true, value: PropertyConverters.Boolean.convert(value) });\n break;\n case 'number':\n case 'bigint':\n Object.defineProperty(output, prop, { enumerable: true, value: PropertyConverters.Number.convert(value) });\n break;\n case 'symbol':\n case 'string':\n Object.defineProperty(output, prop, { enumerable: true, value: PropertyConverters.String.convert(value) });\n break;\n default:\n if (moldProp instanceof Date) {\n Object.defineProperty(output, prop, { enumerable: true, value: PropertyConverters.Date.convert(value) });\n }\n else if (moldProp instanceof RegExp) {\n Object.defineProperty(output, prop, { enumerable: true, value: new RegExp(value, moldProp.flags) });\n }\n else {\n Object.defineProperty(output, prop, { enumerable: true, value });\n }\n break;\n }\n }\n return output;\n }\n set(key, value) {\n var obj = {};\n if (typeof key === 'string') {\n Object.defineProperty(obj, key, { enumerable: true, value });\n }\n else {\n obj = key;\n }\n this.state = Utils.extend({}, this.state || {}, obj);\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Element })\n], PacemRouterHashStateElement.prototype, \"router\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemRouterHashStateElement.prototype, \"default\", void 0);\n__decorate([\n Watch()\n], PacemRouterHashStateElement.prototype, \"state\", void 0);\n__decorate([\n Watch()\n], PacemRouterHashStateElement.prototype, \"normalizedState\", void 0);\nPacemRouterHashStateElement = __decorate([\n CustomElement({ tagName: P + '-router-hash-state' })\n], PacemRouterHashStateElement);\nexport { PacemRouterHashStateElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, Watch, PropertyConverters, Utils, PacemEventTarget } from '@pacem/pacem-core';\n/**\n * Bridges a {@link Pacem.Components.PacemRouterElement}'s persisted scroll position (`state.$scrollY`, populated\n * when `PacemRouterElement.scrollRestoration` is enabled) with a {@link Pacem.Components.UI.PacemViewElement}'s\n * content lifecycle: navigating to a new page starts at the top, navigating back restores where the user\n * left off - without either the router or the view needing to know about the other.\n *\n * This listens to the *view*'s `prerender`/`render` events rather than the router's own navigation events,\n * because `render` only fires once the view's content has stopped resizing (it's debounced against the\n * view's own resize detection, not just \"content was inserted\"). That mitigates - though doesn't fully\n * eliminate - restoring to a scrollTop the page isn't tall enough to reach yet (e.g. images or async\n * content still loading in): content changes that don't affect the view's own box size won't retrigger it.\n */\nlet PacemRouterViewScrollElement = class PacemRouterViewScrollElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n /** The old content is already gone and the new content hasn't landed yet - jump to the top now, instantly, so the transition never shows a scrolled-down blank/stale view. */\n this._prerenderHandler = (_) => {\n Utils.scrollTo(0, false);\n };\n /**\n * New content has landed and its size has settled (see class remarks on `render`'s debounce). Restores the\n * router's persisted scroll position for this entry, if any: `$scrollY` is `undefined` (or `0`) for a\n * freshly-pushed page - never explicitly set on push, only captured when *leaving* a page - so this\n * correctly leaves new pages at the top without any special-casing.\n */\n this._renderHandler = (_) => {\n const state = this.router?.state;\n if (state.$scrollY > 0) {\n const smooth = this.scrollBehavior != 'instant';\n Utils.scrollTo(state.$scrollY, smooth);\n }\n };\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._setupRouter();\n this._setupView();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (first) {\n return;\n }\n switch (name) {\n case 'router':\n // re-wire if the `router` reference itself is swapped out at runtime, not just on first assignment\n if (!Utils.isNull(old)) {\n this._disposeRouter(old);\n }\n if (!Utils.isNull(val)) {\n this._setupRouter(val);\n }\n break;\n case 'view':\n if (!Utils.isNull(old)) {\n this._disposeView(old);\n }\n if (!Utils.isNull(val)) {\n this._setupView(val);\n }\n break;\n }\n }\n disconnectedCallback() {\n this._disposeRouter();\n this._disposeView();\n super.disconnectedCallback();\n }\n /** Turns on the router's own scroll-position bookkeeping (capturing `state.$scrollY` per history entry); see `PacemRouterElement.scrollRestoration`. */\n _setupRouter(router = this.router) {\n if (Utils.isNull(router)) {\n return;\n }\n router.scrollRestoration = true;\n }\n /** No-op: `_setupRouter` only flips a flag on the router, there's no subscription to tear down. Kept for symmetry with `_disposeView`, and in case this grows one later. */\n _disposeRouter(router = this.router) {\n // do nothing\n }\n _setupView(view = this.view) {\n if (Utils.isNull(view)) {\n return;\n }\n view.addEventListener('prerender', this._prerenderHandler, false);\n view.addEventListener('render', this._renderHandler, false);\n }\n _disposeView(view = this.view) {\n if (Utils.isNull(view)) {\n return;\n }\n view.removeEventListener('prerender', this._prerenderHandler);\n view.removeEventListener('render', this._renderHandler);\n }\n};\n__decorate([\n Watch({ converter: PropertyConverters.Element, emit: false })\n], PacemRouterViewScrollElement.prototype, \"router\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Element, emit: false })\n], PacemRouterViewScrollElement.prototype, \"view\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String, emit: false })\n], PacemRouterViewScrollElement.prototype, \"scrollBehavior\", void 0);\nPacemRouterViewScrollElement = __decorate([\n CustomElement({ tagName: P + '-router-view-scroll' })\n], PacemRouterViewScrollElement);\nexport { PacemRouterViewScrollElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, Defaults, P, Watch, PropertyConverters, ViewChild, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.Plus {\n/**\n * A simple search box: a `${P}-input-search`'s `hint` text feeds a debounced `${P}-fetch` against `url` as\n * the `hintParameter` query-string parameter, and the results are rendered through a `${P}-repeater`\n * (customize the row markup via the element's default `${P}-content` slot).\n */\nlet PacemSearchElement = class PacemSearchElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\n /** Gets or sets the name of the query-string parameter `hint` is sent as. Default: `'q'`. */\n this.hintParameter = 'q';\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (name === 'hint') {\n let params = {};\n params[this.hintParameter] = val;\n this._fetcher.parameters = params;\n }\n }\n};\n__decorate([\n ViewChild(P + '-fetch')\n], PacemSearchElement.prototype, \"_fetcher\", void 0);\n__decorate([\n Watch()\n], PacemSearchElement.prototype, \"datasource\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSearchElement.prototype, \"hint\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSearchElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.String })\n], PacemSearchElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemSearchElement.prototype, \"hintParameter\", void 0);\nPacemSearchElement = __decorate([\n CustomElement({\n tagName: P + '-search', shadow: Defaults.USE_SHADOW_ROOT,\n template: `<${P}-fetch debounce=\"800\" url=\"{{ :host.url }}\" method=\"{{ :host.method }}\">\r\n</${P}-fetch><${P}-input-search value=\"{{ :host.hint, twoway }}\"></${P}-input-search>\r\n<${P}-repeater datasource=\"{{ ::_fetch.result }}\">\r\n <${P}-content></${P}-content>\r\n</${P}-repeater>`\n })\n], PacemSearchElement);\nexport { PacemSearchElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters, Utils, CustomElementUtils, ViewChild } from '@pacem/pacem-core';\nimport { PacemBaseCellElement } from './types';\n//namespace Pacem.Components.Plus {\n/** Name of the {@link DataRowSelectChangeEvent}. */\nexport const DataRowSelectChangeEventName = \"datarowselectchange\";\n/**\n * Dispatched by a {@link PacemDataGridElement} whenever its row selection is about to change (e.g. a row was\n * clicked while in 'row' select mode). Cancelable: a listener can call `preventDefault()` and instead assign\n * its own `detail.selectedRows` to override which rows actually end up selected.\n */\nexport class DataRowSelectChangeEvent extends CustomEvent {\n constructor(detail) {\n super(DataRowSelectChangeEventName, { detail, bubbles: false, cancelable: true });\n }\n}\nconst EMPTY_CSS = {};\nconst EMPTY_CSSCLASS = [];\n/**\n * The `<td>`-like cell of a {@link PacemDataGridElement}'s body: renders `dataitem`'s `metadata.prop` value\n * according to `metadata.dataType`/`metadata.dataCell.format` (numbers, currency, percentages, dates,\n * booleans, ...), or through a custom `metadata.dataCell.format` function when one is supplied. Also derives\n * the cell's CSS class(es)/inline style from `metadata.dataCell`, and reflects the grid's row-selection state\n * (`gridState.selectedRows`) via the `datarow-selected`/`datacell-filled`/`datacell-primary` CSS classes.\n */\nlet PacemDataCellElement = class PacemDataCellElement extends PacemBaseCellElement {\n updateLayout(metadata = this.metadata) {\n this._setup(metadata);\n }\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, PCSS + '-datacell');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case '_contentTooltip':\n this._updateTooltipJustInCase();\n break;\n case 'gridState':\n case 'rowindex':\n this._updateSelection();\n break;\n }\n }\n }\n _updateTooltipJustInCase() {\n const tip = this.metadata.dataCell?.autoTooltip ?? true;\n if (tip && !Utils.isNullOrEmpty(this._contentTooltip)) {\n this.setAttribute('tooltip', this._contentTooltip);\n }\n else {\n this.removeAttribute('tooltip');\n }\n }\n _inflateContent(item = this.dataitem, index = this.rowindex, metadata = this.metadata) {\n this._contentTooltip = '';\n let format = metadata.dataCell?.format;\n const nullValue = metadata.dataCell?.null ?? '';\n // is 'format' a custom function?\n if (typeof format === 'function') {\n const htmlOrNode = format(this, metadata, item, index);\n if (Utils.isNullOrEmpty(htmlOrNode)) {\n return nullValue;\n }\n if (typeof htmlOrNode === 'string') {\n return htmlOrNode;\n }\n return htmlOrNode;\n }\n // standard column\n const tget = CustomElementUtils.resolvePath(metadata.prop, item)?.target;\n const plainValue = tget?.value;\n if (Utils.isNullOrEmpty(plainValue)) {\n return nullValue;\n }\n const culture = Utils.lang(this);\n switch (metadata.dataType) {\n case \"boolean\":\n return `<${P}-icon icon=\"${(!plainValue ? 'radio_button_unchecked icon-outline' : 'check_circle_outline icon-fill')} icon-size icon-size-2\"></${P}-icon>`;\n case \"time\":\n case \"date\":\n case \"datetime\":\n return this._contentTooltip = Utils.core.date(plainValue, format, culture);\n case \"byte\":\n case \"int16\":\n case \"int32\":\n case \"int64\":\n case \"short\":\n case \"integer\":\n case \"int\":\n case \"long\":\n case \"double\":\n case \"decimal\":\n case \"float\":\n case \"single\":\n case \"number\":\n return this._contentTooltip = Utils.core.number(plainValue, format || '', culture);\n case \"currency\":\n format ??= 'EUR';\n if (typeof format === 'string') {\n return this._contentTooltip = Utils.core.currency(plainValue, format, culture);\n }\n return this._contentTooltip = Utils.core.number(plainValue, format, culture);\n case \"percent\":\n case \"percentage\":\n format ??= { style: 'percent', maximumFractionDigits: 2 };\n if (typeof format === 'string') {\n return this._contentTooltip = Utils.core.currency(plainValue, format, culture);\n }\n return this._contentTooltip = Utils.core.number(plainValue, format, culture);\n case \"url\":\n case \"emailaddress\":\n case \"phonenumber\":\n // TODO: render links\n default:\n return this._contentTooltip = plainValue;\n }\n }\n // @Debounce(true)\n _inflateCssClass(item = this.dataitem, index = this.rowindex, metadata = this.metadata, datasource) {\n if (Utils.isNull(item) || Utils.isNullOrEmpty(metadata)) {\n return EMPTY_CSSCLASS;\n }\n const cssClass = metadata.dataCell && metadata.dataCell.cssClass || EMPTY_CSSCLASS;\n const retval = [];\n if (typeof cssClass === 'function') {\n Array.prototype.push.apply(retval, cssClass(this, metadata, item, index) || []);\n }\n else {\n Array.prototype.push.apply(retval, cssClass);\n }\n // alignment\n switch (metadata.dataCell?.verticalAlign?.toLowerCase()) {\n case 'top':\n retval.push('datacell-top');\n break;\n case 'bottom':\n retval.push('datacell-bottom');\n break;\n case 'middle':\n retval.push('datacell-middle');\n break;\n }\n switch (metadata.dataCell?.horizontalAlign?.toLowerCase()) {\n // headcell display is flex: set h-alignment at container-level\n case 'left':\n retval.push('datacell-left');\n break;\n case 'right':\n retval.push('datacell-right');\n break;\n case 'center':\n retval.push('datacell-center');\n break;\n }\n if (datasource?.length) {\n if (index === 0) {\n retval.push('datacell-firstrow');\n }\n if (index === (datasource.length - 1)) {\n retval.push('datacell-lastrow');\n }\n }\n return retval;\n }\n _inflateCss(item = this.dataitem, index = this.rowindex, metadata = this.metadata) {\n if (Utils.isNull(item) || Utils.isNullOrEmpty(metadata)) {\n return EMPTY_CSS;\n }\n const css = metadata.dataCell && metadata.dataCell.css || EMPTY_CSS;\n if (typeof css === 'function') {\n return css(this, metadata, item, index);\n }\n return css;\n }\n _setup(metadata = this.metadata) {\n this.setAttribute(\"css-class\", \"{{ this._inflateCssClass(^item, ^index, this.metadata, :host.datasource) }}\");\n this.setAttribute(\"css\", \"{{ Pacem.Utils.extend({ 'grid-row': ^index+2 }, this._inflateCss(^item, ^index, this.metadata, :host.datasource)) }}\");\n const truncate = !!(metadata.dataCell?.textEllipsis);\n const contentCssClass = truncate ? ['text-truncate'] : [];\n const selectMode = metadata?.dataCell?.selectMode?.toLowerCase();\n switch (selectMode) {\n case 'cell':\n case 'row':\n // make the content wrapper inert so that the click event can bubble\n contentCssClass.push(PCSS + '-inert');\n contentCssClass.push(PCSS + '-unselect');\n break;\n }\n this._content.cssClass = contentCssClass;\n this._updateSelection();\n }\n _updateSelection() {\n const selectedRows = this.gridState?.selectedRows ?? [];\n if (selectedRows.indexOf(this.rowindex) >= 0) {\n Utils.addClass(this, 'datarow-selected datacell-filled datacell-primary');\n }\n else {\n Utils.removeClass(this, 'datarow-selected datacell-filled datacell-primary');\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Eval })\n], PacemDataCellElement.prototype, \"dataitem\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataCellElement.prototype, \"rowindex\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String, debounce: 200 })\n], PacemDataCellElement.prototype, \"_contentTooltip\", void 0);\n__decorate([\n ViewChild(P + '-span')\n], PacemDataCellElement.prototype, \"_content\", void 0);\nPacemDataCellElement = __decorate([\n CustomElement({ tagName: P + '-datacell', shadow: false, template: `<${P}-span content=\"{{ :host._inflateContent(^item, ^index, :host.metadata) }}\"></${P}-span>` })\n], PacemDataCellElement);\nexport { PacemDataCellElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Utils, CustomElementUtils, Components, UI as CoreUI } from '@pacem/pacem-core';\nimport { Components as UIPkgComponents } from '@pacem/pacem-ui';\nimport { PacemBaseCellElement } from './types';\nconst UI = UIPkgComponents.UI;\n//namespace Pacem.Components.Plus {\n/** Name of the {@link DataColumnSortEvent}. */\nexport const DataColumnSortEventName = \"datacolumnsort\";\n/**\n * Dispatched by a {@link PacemHeadCellElement} when its sort button is clicked, and re-dispatched by the\n * owning {@link PacemDataGridElement} after it updates its internal sort state. Cancelable: a listener can\n * call `preventDefault()` to veto the sort, or normalize/override `detail` (e.g. fetch a re-sorted datasource)\n * before the grid applies it.\n */\nexport class DataColumnSortEvent extends CustomEvent {\n constructor(detail) {\n super(DataColumnSortEventName, { detail, bubbles: false, cancelable: true });\n }\n}\n/** Name of the {@link DataColumnRescaleEvent}. */\nexport const DataColumnRescaleEventName = \"datacolumnrescale\";\n/**\n * Dispatched by a {@link PacemHeadCellElement} while its rescale handle is being dragged, and re-dispatched\n * by the owning {@link PacemDataGridElement} after it updates the column's pixel width. Cancelable: a\n * listener can call `preventDefault()` and override `detail.width` to clamp/snap the resulting width.\n */\nexport class DataColumnRescaleEvent extends CustomEvent {\n constructor(detail) {\n super(DataColumnRescaleEventName, { detail, bubbles: false, cancelable: true });\n }\n}\n/**\n * The `<th>`-like cell of a {@link PacemDataGridElement}'s header row: renders `metadata.headCell.name`\n * (falling back to `metadata.prop`), and - depending on `metadata` flags - a sort button that dispatches\n * {@link DataColumnSortEvent}, a rescale handle (backed by a `${P}-rescale` behavior appended to the shell)\n * that dispatches {@link DataColumnRescaleEvent}, and a description tooltip balloon rendered as plain text,\n * HTML or Markdown according to `metadata.headCell.tooltip`.\n */\nlet PacemHeadCellElement = class PacemHeadCellElement extends PacemBaseCellElement {\n constructor(_md = new UI.MarkdownService()) {\n super();\n this._md = _md;\n //#region sort button\n this._sortButtonClickHandler = (evt) => {\n const metadata = this.metadata, gridState = this.gridState, column = metadata.prop;\n const dir = gridState.sort?.column === column ? (gridState.sort.dir === 'desc' ? 'asc' : 'desc') : (metadata.defaultSort || 'asc');\n this.dispatchEvent(new DataColumnSortEvent({ column, dir }));\n };\n this._rescaleHandler = (evt) => {\n evt.preventDefault();\n const detail = evt.detail;\n const width = Math.max(this.metadata.minPixelWidth ?? 24, detail.currentPosition.x - this._columnBBox.x);\n this.dispatchEvent(new DataColumnRescaleEvent({ width }));\n };\n this._rescaleStartHandler = (evt) => {\n this._columnBBox = Utils.offsetRect(this);\n };\n this._rescaleEndHandler = (evt) => {\n // nothing(?)\n };\n }\n connectedCallback() {\n super.connectedCallback();\n Utils.addClass(this, PCSS + '-headcell');\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first && name === 'gridState') {\n this._updateSortButtonIconGlyph();\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._ensureBalloon();\n }\n disconnectedCallback() {\n this._disposeBalloon();\n this._disposeRescaler();\n super.disconnectedCallback();\n }\n updateLayout(metadata = this.metadata) {\n this._setup(metadata);\n }\n _setupSortButton() {\n const btn = new UI.PacemButtonElement();\n btn.className = `button-flat headcell-sort ${PCSS}-inert`;\n this.addEventListener('click', this._sortButtonClickHandler, false);\n Utils.addClass(this, PCSS + '-clickable');\n return btn;\n }\n _disposeSortButton(btn = this._sortButton) {\n if (Utils.isNull(btn)) {\n return;\n }\n Utils.removeClass(this, PCSS + '-clickable');\n this.removeEventListener('click', this._sortButtonClickHandler, false);\n btn.remove();\n this._sortButton = null;\n }\n _updateSortButtonIconGlyph(btn = this._sortButton, state = this.gridState, metadata = this.metadata) {\n if (Utils.isNull(btn) || Utils.isNullOrEmpty(metadata)) {\n return;\n }\n btn.iconGlyph = state?.sort?.column === metadata.prop ? (state.sort.dir === 'desc' ? 'arrow_drop_down' : 'arrow_drop_up') : '';\n }\n _ensureRescaler() {\n if (Utils.isNull(this._rescaler)) {\n const r = this._rescaler = this._rescaler || new Components.PacemRescaleElement();\n r.handles = [CoreUI.RescaleHandle.Right];\n r.addEventListener(CoreUI.RescaleEventType.Rescale, this._rescaleHandler, false);\n r.addEventListener(CoreUI.RescaleEventType.Start, this._rescaleStartHandler, false);\n r.addEventListener(CoreUI.RescaleEventType.End, this._rescaleEndHandler, false);\n CustomElementUtils.findAncestorShell(this).appendChild(r);\n }\n }\n _setupRescaleContainer() {\n this._ensureRescaler();\n const c = new Components.PacemPanelElement();\n c.className = \"headcell-rescale\";\n c.behaviors = [this._rescaler];\n return c;\n }\n _disposeRescaleContainer(c = this._rescaleContainer) {\n if (Utils.isNull(c)) {\n return;\n }\n c.remove();\n this._rescaleContainer = null;\n }\n _disposeRescaler(r = this._rescaler) {\n if (Utils.isNull(r)) {\n return;\n }\n r.removeEventListener(CoreUI.RescaleEventType.Rescale, this._rescaleHandler, false);\n r.removeEventListener(CoreUI.RescaleEventType.Start, this._rescaleStartHandler, false);\n r.removeEventListener(CoreUI.RescaleEventType.End, this._rescaleEndHandler, false);\n r.remove();\n this._rescaler = null;\n }\n //#endregion\n _setup(metadata = this.metadata) {\n this.setAttribute(\"css-class\", \"{{ this.metadata && this.metadata.headCell && this.metadata.headCell.cssClass || [] }}\");\n this.setAttribute(\"css\", \"{{ this.metadata && this.metadata.headCell && this.metadata.headCell.css }}\");\n const truncate = !!(metadata.headCell?.textEllipsis);\n const cssClass = truncate ? ['text-truncate'] : [];\n // alignment\n switch (metadata.headCell?.verticalAlign?.toLowerCase()) {\n case 'top':\n Utils.addClass(this, 'headcell-top');\n break;\n case 'bottom':\n Utils.addClass(this, 'headcell-bottom');\n break;\n case 'middle':\n Utils.addClass(this, 'headcell-middle');\n break;\n }\n switch (metadata.headCell?.horizontalAlign?.toLowerCase()) {\n // headcell display is grid: set h-alignment at content-level\n case 'left':\n cssClass.push('text-left');\n break;\n case 'right':\n cssClass.push('text-right');\n break;\n case 'center':\n cssClass.push('text-center');\n break;\n }\n // basic content\n this.removeAttribute('content');\n const css = !Utils.isNullOrEmpty(cssClass) ? ` class=\"${cssClass.join(' ')}\"` : '';\n const headContent = metadata.headCell?.name ?? metadata.prop;\n this.innerHTML = `<div${css}>${headContent}</div>`;\n if (metadata.isSortable) {\n this._disposeSortButton();\n const btn = this._sortButton = this._setupSortButton();\n this._updateSortButtonIconGlyph(btn);\n this.appendChild(btn);\n }\n if (metadata.isRescalable) {\n this._disposeRescaleContainer();\n const cnt = this._rescaleContainer = this._setupRescaleContainer();\n this.appendChild(cnt);\n }\n if (metadata.isTogglable) {\n // TODO: add context menu actions (hide, filter)\n }\n }\n //#region balloon\n _normalizeTooltip() {\n const metadata = this.metadata.headCell?.tooltip || false;\n if (typeof metadata === 'object') {\n return metadata;\n }\n return { type: metadata };\n }\n _ensureBalloon() {\n var innerText, tooltip;\n const noBalloon = ((tooltip = this._normalizeTooltip()).type === false)\n || Utils.isNullOrEmpty(innerText = this.metadata.headCell?.description);\n // balloon\n if (Utils.isNull(this._balloon) && !noBalloon) {\n let balloon = new UI.PacemBalloonElement();\n balloon.options = {\n behavior: UI.BalloonBehavior.Tooltip,\n trigger: tooltip.trigger || UI.BalloonTrigger.Hover,\n position: tooltip.position || UI.BalloonPosition.Top,\n hoverDelay: 200, hoverTimeout: 50,\n align: tooltip.align || UI.BalloonAlignment.Auto,\n };\n Utils.addClass(balloon, PCSS + '-headcell-tooltip');\n var shell = CustomElementUtils.findAncestorShell(this);\n shell.appendChild(this._balloon = balloon);\n }\n const balloon = this._balloon;\n if (!Utils.isNull(balloon)) {\n balloon.target = this;\n if (!(balloon.disabled = noBalloon)) {\n const content = innerText || '';\n switch (tooltip.type) {\n case 'md':\n case 'markdown':\n balloon.innerHTML = this._md.toHtml(content);\n break;\n case 'html':\n balloon.innerHTML = content;\n break;\n default:\n balloon.innerText = content;\n break;\n }\n }\n }\n }\n _disposeBalloon() {\n if (!Utils.isNull(this._balloon)) {\n this._balloon.remove();\n this._balloon = null;\n }\n }\n};\nPacemHeadCellElement = __decorate([\n CustomElement({ tagName: P + '-headcell' })\n], PacemHeadCellElement);\nexport { PacemHeadCellElement };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { CustomElement, P, PCSS, Watch, PropertyConverters, Utils, Debounce, ViewChild, CommandEventName, CustomUIEvent, Components, Logging } from '@pacem/pacem-core';\nimport { DataColumnSortEvent, DataColumnSortEventName, DataColumnRescaleEvent, DataColumnRescaleEventName } from './headcell';\nimport { DataRowSelectChangeEvent } from './datacell';\n//namespace Pacem.Components.Plus {\nconst DataColumnRebuildEventName = 'datacolumnchange';\nconst DataColumnStateChangeEventName = 'datacolumnstatechange';\nconst DataGridConsts = {\n Defaults: {\n selectCaption: 'Details',\n editCaption: 'Edit',\n editIcon: 'edit',\n deleteCaption: 'Delete',\n deleteIcon: 'delete'\n }\n};\n/**\n * Dispatched by a {@link PacemDataGridElement} right after its `datasource` changes and before row selection\n * is cleared; a listener can set `detail.keepRowSelection` to `true` to preserve the current selection instead\n * of the default reset-on-rebind behavior.\n */\nexport class DataGridBindEvent extends CustomEvent {\n constructor(detail) {\n super('databind', { cancelable: false, bubbles: false, detail });\n }\n}\n/**\n * Dispatched by a {@link PacemDataGridElement} for every UI event bubbling up from one of its data cells\n * (see `Components.PacemElement.emittedEventTypes`), re-typed as `'datacell' + originalType` (e.g. a cell's\n * `click` becomes `datacellclick`) and enriched with the originating cell/item/row-index. An un-prevented\n * `click` while in `'row'` select mode additionally toggles that row's selection.\n */\nexport class DataCellUIEvent extends CustomUIEvent {\n constructor(type, detail, orig) {\n super(type, detail, { bubbles: false, cancelable: true }, orig);\n }\n}\n/**\n * Declarative, `<${P}-datacolumn>`-authored description of a {@link PacemDataGridElement} column: field\n * binding, label, sort/resize/toggle flags and per-column CSS. Registering, unregistering or changing one of\n * these items causes the owning grid to recompute its adapted column metadata and rebuild its rendered\n * columns/state accordingly.\n */\nlet PacemDataColumnElement = class PacemDataColumnElement extends Components.PacemItemElement {\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'field':\n case 'headcellCss':\n case 'headcellCssClass':\n case 'datacellCss':\n case 'datacellCssClass':\n case 'resizable':\n case 'togglable':\n case 'sortable':\n case 'label':\n this.dispatchEvent(new Event(DataColumnRebuildEventName));\n break;\n case 'order':\n case 'hide':\n this.dispatchEvent(new Event(DataColumnStateChangeEventName));\n break;\n }\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataColumnElement.prototype, \"field\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemDataColumnElement.prototype, \"label\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemDataColumnElement.prototype, \"resizable\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemDataColumnElement.prototype, \"togglable\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemDataColumnElement.prototype, \"sortable\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataColumnElement.prototype, \"order\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json /*OrString (TODO)*/ })\n], PacemDataColumnElement.prototype, \"format\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataColumnElement.prototype, \"headcellCss\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataColumnElement.prototype, \"headcellCssClass\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataColumnElement.prototype, \"datacellCss\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Number })\n], PacemDataColumnElement.prototype, \"datacellCssClass\", void 0);\nPacemDataColumnElement = __decorate([\n CustomElement({ tagName: P + '-datacolumn' })\n], PacemDataColumnElement);\nexport { PacemDataColumnElement };\n/** Builds the bindable `${P}-headcell` markup for a single column, wired to relay sort/rescale requests up to the grid. */\nfunction headColumnHtml(c) {\n return `<${P}-headcell metadata=\"{{ :host._getColumnMetadata('${c.prop}') }}\" state=\"{{ :host._columnState.${c.prop} }}\" grid-state=\"{{ :host._gridState }}\"\r\non-${DataColumnSortEventName}=\":host._broadcastSortCommand($event)\"\r\non-${DataColumnRescaleEventName}=\":host._broadcastRescaleCommand($event)\"></${P}-headcell>`;\n}\n/** Builds the bindable `${P}-datacell` markup for a single column/row, appending `extra` (typically the UI event relays) to the tag. */\nfunction dataColumnHtml(c, extra) {\n return `<${P}-datacell metadata=\"{{ :host._getColumnMetadata('${c.prop}') }}\" state=\"{{ :host._columnState.${c.prop} }}\" grid-state=\"{{ :host._gridState }}\"\r\ndataitem=\"{{ ^item }}\" rowindex=\"{{ ^index }}\" ${extra}></${P}-datacell>`;\n}\n/**\n * A CSS-grid-based data table driven by an array of {@link PacemDataColumnElement} children and/or a\n * `metadata` array (columns declared as elements are merged on top of `metadata` by matching `field`/`prop`,\n * see `_adaptColumnMetadata`). For each bound `datasource` row, one `${P}-datacell` is generated per column,\n * matched by a `${P}-headcell` per column in the header row; columns can independently be sortable,\n * rescalable and togglable, coordinated through `_gridState`/`_columnState` and the head cell's\n * {@link DataColumnSortEvent}/{@link DataColumnRescaleEvent}.\n *\n * The grid's markup is fully re-generated (`innerHTML` on the internal grid container, see `_buildUpGrid`)\n * whenever the adapted column metadata changes, so adding/removing/reordering `${P}-datacolumn` children -\n * or changing `metadata` directly - keeps the grid's markup, `grid-template-columns` and per-cell bindings\n * in sync. Row selection is centralized here (`setRowSelection`, `_gridState.selectedRows`) and exposed both\n * as the public, mergeable `state` and as bubbling {@link DataRowSelectChangeEvent}s/{@link DataCellUIEvent}s\n * relayed from the individual cells.\n */\nlet PacemDataGridElement = class PacemDataGridElement extends Components.PacemItemsContainerElement {\n constructor(_key = Utils.uniqueCode()) {\n super();\n this._key = _key;\n /** Gets or sets the grid's public state (currently just row selection); merged into, and kept in sync with, the internal `_gridState`. */\n this.state = {};\n // TODO: allow to persist states (key) on the session or location level...\n /** @readonly Per-column runtime state (visibility, rescaled width), keyed by `prop`; fed into each cell's `state`. */\n this._columnState = {};\n /** @readonly The grid's internal, always-consistent state (sort, selection, column order); `state` is merged from/into this. */\n this._gridState = { sort: {}, orderedColumns: [], selectedRows: [] };\n /** A registered column's display-affecting properties changed (field/label/css/sort/resize/toggle flags): re-adapt the column metadata so the grid rebuilds. */\n this._itemDataColumnRebuildHandler = (evt) => {\n this._adaptColumnMetadata(this.items || []);\n };\n /** A registered column's order/hide state changed: re-adapt the column metadata so the grid rebuilds. */\n this._itemDataColumnChangeHandler = (evt) => {\n this._adaptColumnMetadata(this.items || []);\n };\n /** Per-column-`prop` cache of {@link DataColumnMetadata} lookups (see `_getColumnMetadata`), invalidated whenever `_adaptedColumnMetadata` is recomputed. */\n this._memoizer = {};\n }\n /** Only accepts {@link PacemDataColumnElement} instances as registrable items. */\n validate(item) {\n return item instanceof PacemDataColumnElement;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.addEventListener(CommandEventName, this._onCommand, false);\n this._adaptColumnMetadata();\n const cols = this._adaptedColumnMetadata || [];\n this._buildUpGrid(cols);\n }\n disconnectedCallback() {\n this.removeEventListener(CommandEventName, this._onCommand, false);\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n if (!first) {\n switch (name) {\n case 'items':\n case 'metadata':\n this._adaptColumnMetadata();\n break;\n case '_adaptedColumnMetadata':\n this._buildUpGrid(val);\n break;\n case 'datasource':\n // cleanup row selection as datasource changes...\n const eventArgs = { keepRowSelection: false, datasource: val };\n const event = new DataGridBindEvent(eventArgs);\n this.dispatchEvent(event);\n if (!eventArgs.keepRowSelection) {\n this._setRowSelection();\n }\n break;\n case 'state':\n this._mergeState(val);\n break;\n }\n }\n }\n /** Registers a column item, wiring its rebuild/state-change notifications so the grid re-adapts its metadata whenever the column changes. */\n register(item) {\n if (super.register(item)) {\n // add listeners\n item.addEventListener(DataColumnRebuildEventName, this._itemDataColumnRebuildHandler, false);\n item.addEventListener(DataColumnStateChangeEventName, this._itemDataColumnChangeHandler, false);\n return true;\n }\n return false;\n }\n /** Unregisters a column item and removes its rebuild/state-change listeners. */\n unregister(item) {\n if (super.unregister(item)) {\n // remove listeners\n item.removeEventListener(DataColumnRebuildEventName, this._itemDataColumnRebuildHandler, false);\n item.removeEventListener(DataColumnStateChangeEventName, this._itemDataColumnChangeHandler, false);\n return true;\n }\n return false;\n }\n /**\n * Sets the selected rows among the current ones.\n * @param args\n */\n setRowSelection(...args) {\n const indices = Array.from(args);\n this._setRowSelection(indices);\n }\n /** Dispatches a cancelable {@link DataRowSelectChangeEvent} for `indices`, then applies `event.detail.selectedRows` (possibly overridden by a listener) as the new selection - unless the event was prevented. */\n _setRowSelection(indices) {\n const args = (indices || []).map(i => { return { item: this.datasource[i], index: i }; });\n const evt = new DataRowSelectChangeEvent({ selectedRows: args });\n this.dispatchEvent(evt);\n if (!evt.defaultPrevented) {\n let retval = evt.detail.selectedRows;\n if (!Utils.isArray(retval)) {\n retval = [];\n }\n this._doSetRowSelection(retval.map(i => (i?.index ?? -1)).filter(i => i >= 0));\n }\n }\n /** Merges the given `selectedRows` indices into `_gridState`/`state`. */\n _doSetRowSelection(selectedRows) {\n const selection = { selectedRows };\n this._mergeState(selection);\n }\n /**\n * Merges and synchronizes grid states (public vs private).\n * @param state Partial state to be merged\n */\n _mergeState(state = this.state) {\n state ??= {};\n // normalize selected rows into numbers\n const normalizedState = { selectedRows: (state.selectedRows || []).map((i) => typeof i === 'number' ? i : i.index) };\n const newState = this._gridState = Utils.extend({}, this._gridState, state, normalizedState);\n // does not trigger propertychange event (does not have to).\n this.state = Utils.extend(this.state ?? {}, newState);\n }\n /** Recomputes `_adaptedColumnMetadata` by projecting each {@link PacemDataColumnElement} item into a {@link DataColumnMetadata} and concatenating the plain `metadata` array after it. Debounced, since several column items/attributes typically change together. */\n _adaptColumnMetadata(items = this.items, metadata = this.metadata) {\n const output = Array.prototype.concat.apply((items || []).map(i => {\n const retval = {\n prop: i.field,\n // format: i.format,\n headCell: {\n name: i.label, cssClass: i.headcellCssClass || [], css: i.headcellCss || {}\n },\n dataCell: {\n format: i.format, cssClass: i.datacellCssClass || [], css: i.datacellCss || {}\n },\n hide: i.hide,\n isRescalable: i.resizable,\n isSortable: i.sortable,\n isTogglable: i.togglable,\n order: i.order,\n width: 1,\n };\n return retval;\n }), metadata || []);\n this._memoizer = {};\n this._adaptedColumnMetadata = output;\n }\n /** Looks up (and memoizes) a column's {@link DataColumnMetadata} by `prop`; bound from each generated head/data cell's `metadata` attribute. */\n _getColumnMetadata(prop) {\n return this._memoizer[prop] = this._memoizer[prop] || this._adaptedColumnMetadata.find(m => m.prop === prop);\n }\n /**\n * (Re)generates the grid's entire markup - the CSS grid-template-columns, one `${P}-headcell` and one\n * `${P}-datacell` per column (repeated per `datasource` row via a `${P}-repeater`), plus the optional\n * multi-select gutter column - and assigns it as `innerHTML` of the internal grid container.\n */\n _buildUpGrid(metadata) {\n const container = this._tableContainer;\n if (Utils.isNull(container)) {\n return;\n }\n if (Utils.isNullOrEmpty(metadata)) {\n container.innerHTML = '';\n return;\n }\n const options = this.options = Utils.extend({}, DataGridConsts.Defaults, this.options || {}), hasCommands = options.allowDelete || options.allowEdit || options.allowSelect, multiSelect = options.allowMultiSelect && hasCommands;\n let css = multiSelect ? 'auto ' : '', headcells = multiSelect ? `<div class=\"${PCSS}-headcell\"></div>` : '', datacells = multiSelect ? `<${P}-panel class=\"${PCSS}-datacell\" style=\"grid-column: 1;\" css=\"{{ {'grid-row': ^index+2} }}\"></${P}-panel>` : '', footcells = multiSelect ? `<div class=\"${PCSS}-footcell\"></div>` : '';\n // 1-based column index\n let colIndex = multiSelect ? 2 : 1;\n const colCount = multiSelect ? (metadata.length + 2) : (hasCommands ? (metadata.length + 1) : metadata.length);\n this._gridState.orderedColumns = metadata.sort((i, j) => ((i.order ?? 0) - (j.order ?? 0))).map(i => i.prop);\n let extraUi = '';\n for (let evtType of Components.PacemElement.emittedEventTypes) {\n extraUi += ` on-${evtType}=\":host._broadcastUiEvent(^item, ^index, $event)\"`;\n }\n // loop\n for (let c of metadata) {\n this._columnState[c.prop] = {\n hidden: c.hide\n };\n // css\n css += this._getColumnSize(c).replaceAll(' ', '') + ' ';\n // headcell\n headcells += headColumnHtml(c);\n // datacell\n datacells += dataColumnHtml(c, extraUi);\n // footcell\n // end-of-loop\n colIndex++;\n }\n datacells += `<${P}-panel class=\"${PCSS}-datarow\" css-class=\"{{ {'datarow-alt': ^index % 2 === 1, 'datarow-first': ^index === 0, 'datarow-last': ^index === (:host.datasource.length - 1), 'datarow-selected': :host._gridState.selectedRows.indexOf(^index) >= 0 } }}\" style=\"grid-column: 1 /span ${colCount};\" css=\"{{ {'grid-row': ^index+2} }}\"></${P}-panel>`;\n const html = `<${P}-repeater datasource=\"{{ :host.datasource }}\">\r\n<${P}-panel class=\"${PCSS}-datatable\" css=\"{{ {'grid-template-columns': :host._getColumnSizes(:host._columnState, '${css.trimEnd()}', :host._gridState) } }}\">\r\n ${headcells}\r\n <template>\r\n ${datacells}\r\n </template>\r\n ${footcells}\r\n</${P}-panel>`;\n container.innerHTML = html;\n }\n /** Patches the static `grid-template-columns` track list with any per-column overrides from `_columnState` (`auto` when hidden, a pixel width when rescaled). Bound as the grid container's `css['grid-template-columns']`. */\n _getColumnSizes(state = this._columnState, css, grid = this._gridState) {\n if (Utils.isNullOrEmpty(state)) {\n return css;\n }\n const split = css.split(' ');\n for (let prop in state) {\n const col = state[prop];\n const ndx = grid.orderedColumns.indexOf(prop);\n if (col.hidden) {\n split[ndx] = 'auto';\n }\n else if (col.pixelWidth > 0) {\n split[ndx] = col.pixelWidth + 'px';\n }\n }\n return split.join(' ');\n }\n /** Computes a column's initial CSS grid-template-columns track (`auto`, a flex `fr` unit, or a `minmax()`) from its `width`/`minPixelWidth`/`maxPixelWidth`. */\n _getColumnSize(c) {\n if (c.hide) {\n return 'auto';\n }\n const min = c.minPixelWidth, max = c.maxPixelWidth;\n if (max > 0 && min > 0) {\n return `minmax(${min}px, ${max}px)`;\n }\n else {\n const flexWidth = typeof c.width === 'number' ? (c.width + 'fr') : 'auto';\n if (min > 0) {\n return `minmax(${min}px, ${flexWidth})`;\n }\n if (max > 0) {\n return `minmax(${flexWidth}, ${max}px)`;\n }\n return flexWidth;\n }\n }\n //#endregion\n //#region events\n /** Relays a bubbled `CommandEvent` (e.g. from an autogenerated row-command button) as the grid's own `itemcommand`/`item<cmd>` events. */\n _onCommand(evt) {\n // DO NOT stop bubbling! Might be 'handy' in autogenerated forms...\n // Pacem.stopPropagationHandler(evt);\n // ...But might lead to unwanted behaviors in nested repeaters.\n // Thus include the 'originalEvent' in the outscoped one as a read-only property.\n // 'itemcommand' event fires first\n this.dispatchEvent(new Components.ItemCommandEvent(/* 'originalEvent' */ evt));\n // custom 'item<cmd>' event fires next\n this.dispatchEvent(new Components.CustomItemCommandEvent(/* 'originalEvent' */ evt));\n }\n /** Relays a UI event bubbled from a data cell as a {@link DataCellUIEvent} (`'datacell' + type`) on the grid, and toggles the row's selection on an un-prevented `click` while in `'row'` select mode. */\n _broadcastUiEvent(item, index, evt) {\n const evtType = evt.type.toLowerCase(), type = 'datacell' + evtType;\n const args = { dataitem: item, rowindex: index, datacell: evt.srcElement }, uiEvt = (evt instanceof MouseEvent || evt instanceof TouchEvent || evt instanceof KeyboardEvent) ? new DataCellUIEvent(type, args, evt) : new DataCellUIEvent(type, args);\n this.dispatchEvent(uiEvt);\n if (evtType === 'click' && !uiEvt.defaultPrevented) {\n const datacell = uiEvt.detail.datacell;\n const selectMode = datacell.metadata?.dataCell?.selectMode?.toLowerCase();\n switch (selectMode) {\n case 'cell':\n break;\n case 'row':\n this._broadcastSelectCommand(uiEvt.detail.rowindex);\n break;\n }\n }\n }\n /** Relays a head cell's {@link DataColumnSortEvent} up as the grid's own event, then - unless prevented - normalizes and applies the resulting sort into `_gridState.sort`. */\n _broadcastSortCommand(evt) {\n const sort = evt.detail;\n const event = new DataColumnSortEvent(sort);\n this.dispatchEvent(event);\n if (!event.defaultPrevented) {\n const sort2 = { column: '' };\n if (typeof event.detail.column === 'string') {\n sort2.column = event.detail.column;\n }\n if (typeof event.detail.dir === 'string') {\n sort2.dir = event.detail.dir === 'desc' ? 'desc' : 'asc';\n }\n this._gridState = Utils.extend({}, this._gridState, /* let it be manipulated on the \"other side\" */ { sort: sort2 });\n }\n }\n /** Relays a head cell's {@link DataColumnRescaleEvent} up as the grid's own event, then - unless prevented - stores the resulting pixel width into that column's `_columnState`. */\n _broadcastRescaleCommand(evt) {\n const rescale = evt.detail;\n const event = new DataColumnRescaleEvent(rescale);\n this.dispatchEvent(event);\n if (!event.defaultPrevented) {\n let width2 = rescale.width;\n if (typeof event.detail.width === 'number' && event.detail.width > 0) {\n width2 = event.detail.width;\n }\n const column = evt.srcElement.metadata;\n const newState = {};\n newState[column.prop] = { pixelWidth: width2 };\n this._columnState = Utils.extend({}, this._columnState, newState);\n }\n }\n /** Toggles `toggledRowIndex` in/out of the current row selection, honoring `options.allowMultiSelect`/`allowSelect` (logging a warning and doing nothing if selection isn't allowed at all), then applies it via `_setRowSelection`. */\n _broadcastSelectCommand(toggledRowIndex) {\n let actualRows = (this._gridState.selectedRows || []).slice(0);\n const ndx = actualRows.indexOf(toggledRowIndex);\n let trigger = true;\n if (ndx >= 0) {\n actualRows.splice(ndx, 1);\n }\n else {\n const options = this.options;\n if (options.allowMultiSelect) {\n actualRows.push(toggledRowIndex);\n }\n else if (options.allowSelect) {\n actualRows = [toggledRowIndex];\n }\n else {\n trigger = false;\n const msg = `Cannot select the row at index ${toggledRowIndex} since datagrid options do not allow any row selection.`;\n if (Utils.isNull(this.logger)) {\n console.warn(msg);\n }\n else {\n this.log(Logging.LogLevel.Warn, msg);\n }\n }\n }\n if (trigger) {\n this._setRowSelection(actualRows);\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemDataGridElement.prototype, \"metadata\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemDataGridElement.prototype, \"options\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemDataGridElement.prototype, \"state\", void 0);\n__decorate([\n Watch({ emit: true, converter: PropertyConverters.Json })\n], PacemDataGridElement.prototype, \"datasource\", void 0);\n__decorate([\n ViewChild('.' + PCSS + '-datagrid')\n], PacemDataGridElement.prototype, \"_tableContainer\", void 0);\n__decorate([\n Watch()\n], PacemDataGridElement.prototype, \"_adaptedColumnMetadata\", void 0);\n__decorate([\n Watch()\n], PacemDataGridElement.prototype, \"_columnState\", void 0);\n__decorate([\n Watch()\n], PacemDataGridElement.prototype, \"_gridState\", void 0);\n__decorate([\n Debounce()\n], PacemDataGridElement.prototype, \"_adaptColumnMetadata\", null);\nPacemDataGridElement = __decorate([\n CustomElement({ tagName: P + '-datagrid', shadow: false, template: `<div class=\"${PCSS}-datagrid\"></div><${P}-content></${P}-content>` })\n], PacemDataGridElement);\nexport { PacemDataGridElement };\n","import { DeepMerger } from '@pacem/pacem-foundation';\nimport * as Output from './index';\nDeepMerger.merge(Output);\n"],"names":["__decorate","this","Components","Watch","PropertyConverters","Utils","Transformer","UI","UIComponents","ViewChild","P","CustomElement","Defaults","PCSS","avoidHandler","CommandEvent","CustomElementUtils","CommandEventName","AttributeChangeEventName","Debounce","ScaffoldingComponents","PropertyChangeEventName","Net","PacemEventTarget","UIPkgComponents","CoreUI","CustomUIEvent","Logging","DeepMerger"],"mappings":"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"}
|