@pacem/pacem 1.0.0-babbage → 1.0.0-bernoulli
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 +2 -2
- package/dist/browser/pacem-2d.min.js.map +1 -1
- package/dist/browser/pacem-3d.js +1 -1
- package/dist/browser/pacem-3d.min.js +2 -2
- package/dist/browser/pacem-3d.min.js.map +1 -1
- package/dist/browser/pacem-charts.js +1 -1
- package/dist/browser/pacem-charts.min.js +2 -2
- package/dist/browser/pacem-charts.min.js.map +1 -1
- package/dist/browser/pacem-cms.js +1 -1
- package/dist/browser/pacem-cms.min.js +2 -2
- package/dist/browser/pacem-cms.min.js.map +1 -1
- package/dist/browser/pacem-core.js +1 -1
- package/dist/browser/pacem-core.min.js +2 -2
- package/dist/browser/pacem-core.min.js.map +1 -1
- package/dist/browser/pacem-foundation.js +1 -1
- package/dist/browser/pacem-foundation.min.js +2 -2
- package/dist/browser/pacem-foundation.min.js.map +1 -1
- package/dist/browser/pacem-fx.js +1 -1
- package/dist/browser/pacem-fx.min.js +2 -2
- package/dist/browser/pacem-fx.min.js.map +1 -1
- package/dist/browser/pacem-logging.js +1 -1
- package/dist/browser/pacem-logging.min.js +2 -2
- package/dist/browser/pacem-logging.min.js.map +1 -1
- package/dist/browser/pacem-maps.js +1 -1
- package/dist/browser/pacem-maps.min.js +2 -2
- package/dist/browser/pacem-maps.min.js.map +1 -1
- package/dist/browser/pacem-media.js +1 -1
- package/dist/browser/pacem-media.min.js +2 -2
- package/dist/browser/pacem-media.min.js.map +1 -1
- package/dist/browser/pacem-networking.js +1 -1
- package/dist/browser/pacem-networking.min.js +2 -2
- package/dist/browser/pacem-networking.min.js.map +1 -1
- package/dist/browser/pacem-numerical.js +1 -1
- package/dist/browser/pacem-numerical.min.js +2 -2
- package/dist/browser/pacem-numerical.min.js.map +1 -1
- package/dist/browser/pacem-plus.js +1 -1
- package/dist/browser/pacem-plus.min.js +2 -2
- package/dist/browser/pacem-plus.min.js.map +1 -1
- package/dist/browser/pacem-scaffolding.js +1 -1
- package/dist/browser/pacem-scaffolding.min.js +2 -2
- package/dist/browser/pacem-scaffolding.min.js.map +1 -1
- package/dist/browser/pacem-ui.js +1 -1
- package/dist/browser/pacem-ui.min.js +2 -2
- package/dist/browser/pacem-ui.min.js.map +1 -1
- package/dist/bundle/pacem.min.mjs +1 -1
- package/dist/bundle/pacem.mjs +1 -1
- package/dist/typings/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pacem-plus.min.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/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';\nexport class PacemBaseCellElement extends Components.PacemSafeContentElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.updateColumnPosition();\n this.updateLayout(this.metadata);\n }\n updateColumnPosition(metadata = this.metadata, state = this.gridState) {\n this.style.gridColumn = (state.orderedColumns.indexOf(metadata.prop) + 1).toString();\n }\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};\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/** @deprecated*/\nlet PacemCarouselElement = class PacemCarouselElement extends UI.PacemAdaptedIterativeElement {\n constructor() {\n super(...arguments);\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 {\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}\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 };\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>\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 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 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 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 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 {\nexport var EditMode;\n(function (EditMode) {\n EditMode[\"Text\"] = \"text\";\n EditMode[\"Html\"] = \"html\";\n EditMode[\"Image\"] = \"image\";\n EditMode[\"Markdown\"] = \"markdown\";\n})(EditMode || (EditMode = {}));\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 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;\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}\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;\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 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 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\nlet PacemModalFormElement = PacemModalFormElement_1 = class PacemModalFormElement extends UI.PacemDialogBase {\n get form() {\n return this._form;\n }\n constructor() {\n super();\n this.suddenValidation = true;\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 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 {\nlet PacemRouterHashStateElement = class PacemRouterHashStateElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this.default = {};\n this.state = {};\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, Defaults, P, Watch, PropertyConverters, ViewChild, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.Plus {\nlet PacemSearchElement = class PacemSearchElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\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 {\nexport const DataRowSelectChangeEventName = \"datarowselectchange\";\nexport class DataRowSelectChangeEvent extends CustomEvent {\n constructor(detail) {\n super(DataRowSelectChangeEventName, { detail, bubbles: false, cancelable: true });\n }\n}\nconst EMPTY_CSS = {};\nconst EMPTY_CSSCLASS = [];\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 {\nexport const DataColumnSortEventName = \"datacolumnsort\";\nexport class DataColumnSortEvent extends CustomEvent {\n constructor(detail) {\n super(DataColumnSortEventName, { detail, bubbles: false, cancelable: true });\n }\n}\nexport const DataColumnRescaleEventName = \"datacolumnrescale\";\nexport class DataColumnRescaleEvent extends CustomEvent {\n constructor(detail) {\n super(DataColumnRescaleEventName, { detail, bubbles: false, cancelable: true });\n }\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};\nexport class DataGridBindEvent extends CustomEvent {\n constructor(detail) {\n super('databind', { cancelable: false, bubbles: false, detail });\n }\n}\nexport class DataCellUIEvent extends CustomUIEvent {\n constructor(type, detail, orig) {\n super(type, detail, { bubbles: false, cancelable: true }, orig);\n }\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 };\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}\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}\nlet PacemDataGridElement = class PacemDataGridElement extends Components.PacemItemsContainerElement {\n constructor(_key = Utils.uniqueCode()) {\n super();\n this._key = _key;\n this.state = {};\n // TODO: allow to persist states (key) on the session or location level...\n this._columnState = {};\n this._gridState = { sort: {}, orderedColumns: [], selectedRows: [] };\n this._itemDataColumnRebuildHandler = (evt) => {\n this._adaptColumnMetadata(this.items || []);\n };\n this._itemDataColumnChangeHandler = (evt) => {\n this._adaptColumnMetadata(this.items || []);\n };\n this._memoizer = {};\n }\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 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 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 _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 _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 _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 _getColumnMetadata(prop) {\n return this._memoizer[prop] = this._memoizer[prop] || this._adaptedColumnMetadata.find(m => m.prop === prop);\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 _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 _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 _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 _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 _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 _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 _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","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","PacemBaseCellElement","Components","PacemSafeContentElement","viewActivatedCallback","super","this","updateColumnPosition","updateLayout","metadata","state","gridState","style","gridColumn","orderedColumns","indexOf","prop","toString","updateVisibility","hide","hidden","propertyChangedCallback","name","old","val","first","Watch","converter","PropertyConverters","Json","prototype","DefaultLocalizationOptions","headCell","headCellProp","dictionary","DataGrids","localizeMetadata","options","Utils","extend","display","description","Transformer","UI","UIComponents","PacemCarouselElement","PacemAdaptedIterativeElement","constructor","interval","ViewChild","P","Number","Boolean","CustomElement","tagName","shadow","Defaults","USE_SHADOW_ROOT","template","PCSS","PacemContextMenuItemElement","PacemItemElement","connectedCallback","addClass","container","PacemContextMenuElement","refresh","PacemContextMenuItemCommandElement","createMenuItemElement","retval","PacemButtonElement","commandArgument","commandName","textContent","caption","iconGlyph","confirmationDialog","confirmationMessage","tooltip","disabled","cssClass","buttonCssClass","emit","reflectBack","String","StringArray","Element","PacemContextMenuItemSeparatorElement","document","createElement","pointerEvents","PacemItemsContainerElement","_dispatchCommand","e","avoidHandler","_onCommand","CommandEvent","detail","_slotchangeHandler","evt","_resetLayout","_attributeChangeHandler","_refreshMenuItems","_mouseupHandler","balloon","_ensureBalloon","isNull","popout","validate","item","btn","icon","_ensureButton","btnSlot","_slot","found","_lookForAButton","setAttribute","className","PacemIconElement","appendChild","buttons","assignedElements","flatten","isNullOrEmpty","shell","CustomElementUtils","findAncestorShell","PacemBalloonElement","trigger","BalloonTrigger","Click","position","BalloonPosition","HorizontalAuto","align","BalloonAlignment","Auto","autoAdjust","addEventListener","CommandEventName","register","AttributeChangeEventName","unregister","removeEventListener","dispatchEvent","CustomEvent","cancelable","bubbles","toLowerCase","_toggleBtn","_toggleIcon","PacemElement","iconEl","disconnectedCallback","_disposeButton","_disposeSlot","_disposeBalloon","slot","_disposeBalloonChildren","remove","startAt","j","children","rem","count","cursor","items","menuitem","repl","replaceWith","Debounce","Scaffolding","ScaffoldingComponents","EditMode","PacemEditElement","_markdown","MarkdownService","_dialogPropertyChangedHandler","_dialogPropertyChangedCallback","_broadcastFetchRequestEventName","ImageFetchRequestEvent","_innerValueChangedHandler","propertyName","_dialog","currentValue","_editHandler","edit","_addButton","_button","_target","_removeButton","_addDialog","dialog","DialogButtons","OkCancel","PropertyChangeEventName","_addTextarea","_addContenteditable","_addEditImage","body","_removeDialog","_removeTextarea","_removeContenteditable","_removeEditImage","textarea","type","Text","Markdown","_textarea","contenteditable","Html","_contenteditable","editImage","ImageFetchRequestEventName","Image","uploadUrl","imageUploadUrl","allowSnapshot","maxWidth","maxImageWidth","maxHeight","maxImageHeight","_editImage","_update","cnt","_content","innerHTML","localName","value","toHtml","backgroundImage","_retrieve","styled","getComputedStyle","matches","exec","_setup","removeClass","firstElementChild","imageSet","_state","open","then","args","button","DialogButton","Cancel","Ok","getGallerySlideShowTemplate","captionTemplate","getDefaultCaptionTemplate","imageProperty","captionProperty","PacemGalleryElement","_templateChangeHandler","proxy","_setupWithCaptionTemplate","_databind","_setupDefaultTemplate","_disposeTemplate","PacemTemplateProxyElement","content","tmpl","_setupTemplate","_templateProxy","rep","_repeater","datasource","adapter","_adapter","_heroAnimate","fromEl","src","pImg","PacemImageElement","goalEl","_heroPlaceholderProxy","dom","TRANSITION","adapt","goal","offset","from","cfrStyle","border","width","clientWidth","height","clientHeight","zIndex","top","left","scaleX","scaleY","translateX","translateY","transformOrigin","transition","transform","requestAnimationFrame","waitForAnimationEnd","startIndex","heroFrom","_poppingUp","_lightbox","show","_slideshow","index","_","focus","PacemModalFormElement_1","PacemModalFormElement","PacemDialogBase","form","_form","suddenValidation","method","Net","HttpMethod","Post","_keyupHandler","keyCode","shiftKey","ctrlKey","altKey","metaKey","currentTarget","querySelector","isVisible","click","keepStateOnCommit","_emitter","FormEventEmitter","start","stop","_submit","readonly","commit","valid","action","submit","_fetcher","_onSubmit","setAsPristine","setPristine","_cancel","reset","_broadcast","modalButtons","btns","_buttons","ok","cancel","lastElementChild","PacemRouterHashStateElement","PacemEventTarget","default","normalizedState","_routerNavigatingHandler","locked","_routerNavigateHandler","_updateStateFromURI","_setupRouterHandlers","router","_updateNormalizedState","_updateURIFromState","_disposeRouterHandlers","window","_currentBasePath","q","$querystring","_normalizePath","location","pathname","path","endsWith","substring","_areStatesEquivalent","s1","s2","state1","state2","_areSubstantiallyEquivalent","_normalizeState","denormalized","_denormalizeState","URIs","parseQuery","$hash","actual","currentState","targetState","clean","_cleanupStateForURI","url","appendQuery","v1","v2","areSemanticallyEqual","JSON","stringify","copy","clone","base","mold","output","enumerable","Dates","isDate","toISOString","RegExp","Error","source","moldProp","convert","Date","flags","set","obj","PacemSearchElement","hintParameter","params","parameters","DataRowSelectChangeEventName","DataRowSelectChangeEvent","EMPTY_CSS","EMPTY_CSSCLASS","PacemDataCellElement","_updateTooltipJustInCase","_updateSelection","dataCell","autoTooltip","_contentTooltip","removeAttribute","_inflateContent","dataitem","rowindex","format","nullValue","null","htmlOrNode","tget","resolvePath","plainValue","culture","lang","dataType","core","date","number","currency","maximumFractionDigits","_inflateCssClass","Array","push","apply","verticalAlign","horizontalAlign","_inflateCss","css","contentCssClass","textEllipsis","selectMode","selectedRows","Eval","debounce","UIPkgComponents","DataColumnSortEventName","DataColumnSortEvent","DataColumnRescaleEventName","DataColumnRescaleEvent","PacemHeadCellElement","_md","_sortButtonClickHandler","column","dir","sort","defaultSort","_rescaleHandler","preventDefault","Math","max","minPixelWidth","currentPosition","x","_columnBBox","_rescaleStartHandler","offsetRect","_rescaleEndHandler","_updateSortButtonIconGlyph","_disposeRescaler","_setupSortButton","_disposeSortButton","_sortButton","_ensureRescaler","_rescaler","PacemRescaleElement","handles","CoreUI","RescaleHandle","Right","RescaleEventType","Rescale","Start","End","_setupRescaleContainer","PacemPanelElement","behaviors","_disposeRescaleContainer","_rescaleContainer","join","headContent","isSortable","isRescalable","isTogglable","_normalizeTooltip","innerText","noBalloon","_balloon","behavior","BalloonBehavior","Tooltip","Hover","Top","hoverDelay","hoverTimeout","DataColumnRebuildEventName","DataColumnStateChangeEventName","DataGridConsts","selectCaption","editCaption","editIcon","deleteCaption","deleteIcon","DataGridBindEvent","DataCellUIEvent","CustomUIEvent","orig","PacemDataColumnElement","Event","headColumnHtml","dataColumnHtml","extra","PacemDataGridElement","_key","uniqueCode","_columnState","_gridState","_itemDataColumnRebuildHandler","_adaptColumnMetadata","_itemDataColumnChangeHandler","_memoizer","cols","_adaptedColumnMetadata","_buildUpGrid","eventArgs","keepRowSelection","event","_setRowSelection","_mergeState","setRowSelection","indices","map","defaultPrevented","isArray","_doSetRowSelection","filter","selection","newState","concat","field","label","headcellCssClass","headcellCss","datacellCssClass","datacellCss","resizable","sortable","togglable","order","_getColumnMetadata","find","m","_tableContainer","hasCommands","allowDelete","allowEdit","allowSelect","multiSelect","allowMultiSelect","headcells","datacells","footcells","colCount","extraUi","evtType","emittedEventTypes","_getColumnSize","replaceAll","html","trimEnd","_getColumnSizes","grid","split","col","ndx","pixelWidth","min","maxPixelWidth","flexWidth","ItemCommandEvent","CustomItemCommandEvent","_broadcastUiEvent","datacell","srcElement","uiEvt","MouseEvent","TouchEvent","KeyboardEvent","_broadcastSelectCommand","_broadcastSortCommand","sort2","_broadcastRescaleCommand","rescale","width2","toggledRowIndex","actualRows","slice","splice","msg","logger","console","warn","log","Logging","LogLevel","Warn","DeepMerger","merge","Output"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pacem-plus.min.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/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';\nexport class PacemBaseCellElement extends Components.PacemSafeContentElement {\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.updateColumnPosition();\n this.updateLayout(this.metadata);\n }\n updateColumnPosition(metadata = this.metadata, state = this.gridState) {\n this.style.gridColumn = (state.orderedColumns.indexOf(metadata.prop) + 1).toString();\n }\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};\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/** @deprecated*/\nlet PacemCarouselElement = class PacemCarouselElement extends UI.PacemAdaptedIterativeElement {\n constructor() {\n super(...arguments);\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 {\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}\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 };\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>\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 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 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 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 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 {\nexport var EditMode;\n(function (EditMode) {\n EditMode[\"Text\"] = \"text\";\n EditMode[\"Html\"] = \"html\";\n EditMode[\"Image\"] = \"image\";\n EditMode[\"Markdown\"] = \"markdown\";\n})(EditMode || (EditMode = {}));\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 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;\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}\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;\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 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 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\nlet PacemModalFormElement = PacemModalFormElement_1 = class PacemModalFormElement extends UI.PacemDialogBase {\n get form() {\n return this._form;\n }\n constructor() {\n super();\n this.suddenValidation = true;\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 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 {\nlet PacemRouterHashStateElement = class PacemRouterHashStateElement extends PacemEventTarget {\n constructor() {\n super(...arguments);\n this.default = {};\n this.state = {};\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, Defaults, P, Watch, PropertyConverters, ViewChild, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.Plus {\nlet PacemSearchElement = class PacemSearchElement extends Components.PacemElement {\n constructor() {\n super(...arguments);\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 {\nexport const DataRowSelectChangeEventName = \"datarowselectchange\";\nexport class DataRowSelectChangeEvent extends CustomEvent {\n constructor(detail) {\n super(DataRowSelectChangeEventName, { detail, bubbles: false, cancelable: true });\n }\n}\nconst EMPTY_CSS = {};\nconst EMPTY_CSSCLASS = [];\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 {\nexport const DataColumnSortEventName = \"datacolumnsort\";\nexport class DataColumnSortEvent extends CustomEvent {\n constructor(detail) {\n super(DataColumnSortEventName, { detail, bubbles: false, cancelable: true });\n }\n}\nexport const DataColumnRescaleEventName = \"datacolumnrescale\";\nexport class DataColumnRescaleEvent extends CustomEvent {\n constructor(detail) {\n super(DataColumnRescaleEventName, { detail, bubbles: false, cancelable: true });\n }\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};\nexport class DataGridBindEvent extends CustomEvent {\n constructor(detail) {\n super('databind', { cancelable: false, bubbles: false, detail });\n }\n}\nexport class DataCellUIEvent extends CustomUIEvent {\n constructor(type, detail, orig) {\n super(type, detail, { bubbles: false, cancelable: true }, orig);\n }\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 };\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}\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}\nlet PacemDataGridElement = class PacemDataGridElement extends Components.PacemItemsContainerElement {\n constructor(_key = Utils.uniqueCode()) {\n super();\n this._key = _key;\n this.state = {};\n // TODO: allow to persist states (key) on the session or location level...\n this._columnState = {};\n this._gridState = { sort: {}, orderedColumns: [], selectedRows: [] };\n this._itemDataColumnRebuildHandler = (evt) => {\n this._adaptColumnMetadata(this.items || []);\n };\n this._itemDataColumnChangeHandler = (evt) => {\n this._adaptColumnMetadata(this.items || []);\n };\n this._memoizer = {};\n }\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 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 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 _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 _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 _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 _getColumnMetadata(prop) {\n return this._memoizer[prop] = this._memoizer[prop] || this._adaptedColumnMetadata.find(m => m.prop === prop);\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 _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 _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 _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 _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 _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 _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 _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","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","PacemBaseCellElement","Components","PacemSafeContentElement","viewActivatedCallback","super","this","updateColumnPosition","updateLayout","metadata","state","gridState","style","gridColumn","orderedColumns","indexOf","prop","toString","updateVisibility","hide","hidden","propertyChangedCallback","name","old","val","first","Watch","converter","PropertyConverters","Json","prototype","DefaultLocalizationOptions","headCell","headCellProp","dictionary","DataGrids","localizeMetadata","options","Utils","extend","display","description","Transformer","UI","UIComponents","PacemCarouselElement","PacemAdaptedIterativeElement","constructor","interval","ViewChild","P","Number","Boolean","CustomElement","tagName","shadow","Defaults","USE_SHADOW_ROOT","template","PCSS","PacemContextMenuItemElement","PacemItemElement","connectedCallback","addClass","container","PacemContextMenuElement","refresh","PacemContextMenuItemCommandElement","createMenuItemElement","retval","PacemButtonElement","commandArgument","commandName","textContent","caption","iconGlyph","confirmationDialog","confirmationMessage","tooltip","disabled","cssClass","buttonCssClass","emit","reflectBack","String","StringArray","Element","PacemContextMenuItemSeparatorElement","document","createElement","pointerEvents","PacemItemsContainerElement","_dispatchCommand","e","avoidHandler","_onCommand","CommandEvent","detail","_slotchangeHandler","evt","_resetLayout","_attributeChangeHandler","_refreshMenuItems","_mouseupHandler","balloon","_ensureBalloon","isNull","popout","validate","item","btn","icon","_ensureButton","btnSlot","_slot","found","_lookForAButton","setAttribute","className","PacemIconElement","appendChild","buttons","assignedElements","flatten","isNullOrEmpty","shell","CustomElementUtils","findAncestorShell","PacemBalloonElement","trigger","BalloonTrigger","Click","position","BalloonPosition","HorizontalAuto","align","BalloonAlignment","Auto","autoAdjust","addEventListener","CommandEventName","register","AttributeChangeEventName","unregister","removeEventListener","dispatchEvent","CustomEvent","cancelable","bubbles","toLowerCase","_toggleBtn","_toggleIcon","PacemElement","iconEl","disconnectedCallback","_disposeButton","_disposeSlot","_disposeBalloon","slot","_disposeBalloonChildren","remove","startAt","j","children","rem","count","cursor","items","menuitem","repl","replaceWith","Debounce","Scaffolding","ScaffoldingComponents","EditMode","PacemEditElement","_markdown","MarkdownService","_dialogPropertyChangedHandler","_dialogPropertyChangedCallback","_broadcastFetchRequestEventName","ImageFetchRequestEvent","_innerValueChangedHandler","propertyName","_dialog","currentValue","_editHandler","edit","_addButton","_button","_target","_removeButton","_addDialog","dialog","DialogButtons","OkCancel","PropertyChangeEventName","_addTextarea","_addContenteditable","_addEditImage","body","_removeDialog","_removeTextarea","_removeContenteditable","_removeEditImage","textarea","type","Text","Markdown","_textarea","contenteditable","Html","_contenteditable","editImage","ImageFetchRequestEventName","Image","uploadUrl","imageUploadUrl","allowSnapshot","maxWidth","maxImageWidth","maxHeight","maxImageHeight","_editImage","_update","cnt","_content","innerHTML","localName","value","toHtml","backgroundImage","_retrieve","styled","getComputedStyle","matches","exec","_setup","removeClass","firstElementChild","imageSet","_state","open","then","args","button","DialogButton","Cancel","Ok","getGallerySlideShowTemplate","captionTemplate","getDefaultCaptionTemplate","imageProperty","captionProperty","PacemGalleryElement","_templateChangeHandler","proxy","_setupWithCaptionTemplate","_databind","_setupDefaultTemplate","_disposeTemplate","PacemTemplateProxyElement","content","tmpl","_setupTemplate","_templateProxy","rep","_repeater","datasource","adapter","_adapter","_heroAnimate","fromEl","src","pImg","PacemImageElement","goalEl","_heroPlaceholderProxy","dom","TRANSITION","adapt","goal","offset","from","cfrStyle","border","width","clientWidth","height","clientHeight","zIndex","top","left","scaleX","scaleY","translateX","translateY","transformOrigin","transition","transform","requestAnimationFrame","waitForAnimationEnd","startIndex","heroFrom","_poppingUp","_lightbox","show","_slideshow","index","_","focus","PacemModalFormElement_1","PacemModalFormElement","PacemDialogBase","form","_form","suddenValidation","method","Net","HttpMethod","Post","_keyupHandler","keyCode","shiftKey","ctrlKey","altKey","metaKey","currentTarget","querySelector","isVisible","click","keepStateOnCommit","_emitter","FormEventEmitter","start","stop","_submit","readonly","commit","valid","action","submit","_fetcher","_onSubmit","setAsPristine","setPristine","_cancel","reset","_broadcast","modalButtons","btns","_buttons","ok","cancel","lastElementChild","PacemRouterHashStateElement","PacemEventTarget","default","normalizedState","_routerNavigatingHandler","locked","_routerNavigateHandler","_updateStateFromURI","_setupRouterHandlers","router","_updateNormalizedState","_updateURIFromState","_disposeRouterHandlers","window","_currentBasePath","q","$querystring","_normalizePath","location","pathname","path","endsWith","substring","_areStatesEquivalent","s1","s2","state1","state2","_areSubstantiallyEquivalent","_normalizeState","denormalized","_denormalizeState","URIs","parseQuery","$hash","actual","currentState","targetState","clean","_cleanupStateForURI","url","appendQuery","v1","v2","areSemanticallyEqual","JSON","stringify","copy","clone","base","mold","output","enumerable","Dates","isDate","toISOString","RegExp","Error","source","moldProp","convert","Date","flags","set","obj","PacemSearchElement","hintParameter","params","parameters","DataRowSelectChangeEventName","DataRowSelectChangeEvent","EMPTY_CSS","EMPTY_CSSCLASS","PacemDataCellElement","_updateTooltipJustInCase","_updateSelection","dataCell","autoTooltip","_contentTooltip","removeAttribute","_inflateContent","dataitem","rowindex","format","nullValue","null","htmlOrNode","tget","resolvePath","plainValue","culture","lang","dataType","core","date","number","currency","maximumFractionDigits","_inflateCssClass","Array","push","apply","verticalAlign","horizontalAlign","_inflateCss","css","contentCssClass","textEllipsis","selectMode","selectedRows","Eval","debounce","UIPkgComponents","DataColumnSortEventName","DataColumnSortEvent","DataColumnRescaleEventName","DataColumnRescaleEvent","PacemHeadCellElement","_md","_sortButtonClickHandler","column","dir","sort","defaultSort","_rescaleHandler","preventDefault","Math","max","minPixelWidth","currentPosition","x","_columnBBox","_rescaleStartHandler","offsetRect","_rescaleEndHandler","_updateSortButtonIconGlyph","_disposeRescaler","_setupSortButton","_disposeSortButton","_sortButton","_ensureRescaler","_rescaler","PacemRescaleElement","handles","CoreUI","RescaleHandle","Right","RescaleEventType","Rescale","Start","End","_setupRescaleContainer","PacemPanelElement","behaviors","_disposeRescaleContainer","_rescaleContainer","join","headContent","isSortable","isRescalable","isTogglable","_normalizeTooltip","innerText","noBalloon","_balloon","behavior","BalloonBehavior","Tooltip","Hover","Top","hoverDelay","hoverTimeout","DataColumnRebuildEventName","DataColumnStateChangeEventName","DataGridConsts","selectCaption","editCaption","editIcon","deleteCaption","deleteIcon","DataGridBindEvent","DataCellUIEvent","CustomUIEvent","orig","PacemDataColumnElement","Event","headColumnHtml","dataColumnHtml","extra","PacemDataGridElement","_key","uniqueCode","_columnState","_gridState","_itemDataColumnRebuildHandler","_adaptColumnMetadata","_itemDataColumnChangeHandler","_memoizer","cols","_adaptedColumnMetadata","_buildUpGrid","eventArgs","keepRowSelection","event","_setRowSelection","_mergeState","setRowSelection","indices","map","defaultPrevented","isArray","_doSetRowSelection","filter","selection","newState","concat","field","label","headcellCssClass","headcellCss","datacellCssClass","datacellCss","resizable","sortable","togglable","order","_getColumnMetadata","find","m","_tableContainer","hasCommands","allowDelete","allowEdit","allowSelect","multiSelect","allowMultiSelect","headcells","datacells","footcells","colCount","extraUi","evtType","emittedEventTypes","_getColumnSize","replaceAll","html","trimEnd","_getColumnSizes","grid","split","col","ndx","pixelWidth","min","maxPixelWidth","flexWidth","ItemCommandEvent","CustomItemCommandEvent","_broadcastUiEvent","datacell","srcElement","uiEvt","MouseEvent","TouchEvent","KeyboardEvent","_broadcastSelectCommand","_broadcastSortCommand","sort2","_broadcastRescaleCommand","rescale","width2","toggledRowIndex","actualRows","slice","splice","msg","logger","console","warn","log","Logging","LogLevel","Warn","DeepMerger","merge","Output"],"mappings":"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"}
|