@pacem/pacem 1.0.4 → 1.0.5-bartels

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.
Files changed (46) hide show
  1. package/README.md +16 -22
  2. package/dist/browser/pacem-2d.js +4 -4
  3. package/dist/browser/pacem-2d.js.map +1 -1
  4. package/dist/browser/pacem-2d.min.js +2 -2
  5. package/dist/browser/pacem-3d.js +508 -508
  6. package/dist/browser/pacem-3d.js.map +1 -1
  7. package/dist/browser/pacem-3d.min.js +2 -2
  8. package/dist/browser/pacem-charts.js +1 -1
  9. package/dist/browser/pacem-charts.min.js +1 -1
  10. package/dist/browser/pacem-cms.js +1 -1
  11. package/dist/browser/pacem-cms.min.js +1 -1
  12. package/dist/browser/pacem-core.js +4097 -4097
  13. package/dist/browser/pacem-core.js.map +1 -1
  14. package/dist/browser/pacem-core.min.js +2 -2
  15. package/dist/browser/pacem-foundation.js +1 -4
  16. package/dist/browser/pacem-foundation.js.map +1 -1
  17. package/dist/browser/pacem-foundation.min.js +1 -1
  18. package/dist/browser/pacem-fx.js +1 -1
  19. package/dist/browser/pacem-fx.min.js +1 -1
  20. package/dist/browser/pacem-logging.js +1 -1
  21. package/dist/browser/pacem-logging.min.js +1 -1
  22. package/dist/browser/pacem-maps.js +1 -1
  23. package/dist/browser/pacem-maps.min.js +1 -1
  24. package/dist/browser/pacem-media.js +1 -1
  25. package/dist/browser/pacem-media.min.js +1 -1
  26. package/dist/browser/pacem-networking.js +1 -1
  27. package/dist/browser/pacem-networking.min.js +1 -1
  28. package/dist/browser/pacem-numerical.js +1 -1
  29. package/dist/browser/pacem-numerical.min.js +1 -1
  30. package/dist/browser/pacem-plus.js +7 -2
  31. package/dist/browser/pacem-plus.js.map +1 -1
  32. package/dist/browser/pacem-plus.min.js +2 -2
  33. package/dist/browser/pacem-scaffolding.js +1 -1
  34. package/dist/browser/pacem-scaffolding.min.js +1 -1
  35. package/dist/browser/pacem-ui.js +7 -1
  36. package/dist/browser/pacem-ui.js.map +1 -1
  37. package/dist/browser/pacem-ui.min.js +1 -1
  38. package/dist/bundle/pacem.min.mjs +680 -680
  39. package/dist/bundle/pacem.mjs +40226 -40348
  40. package/dist/bundle/pacem.mjs.map +4 -4
  41. package/dist/docs/pacem-core.json +5 -5
  42. package/dist/docs/pacem-foundation.json +1 -1
  43. package/dist/docs/pacem-numerical.json +2 -2
  44. package/dist/docs/pacem-plus.json +6363 -6351
  45. package/dist/typings/index.d.ts +915 -590
  46. package/package.json +5 -3
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * @pacem/pacem v1.0.4 (https://js.pacem.it)
2
+ * @pacem/pacem v1.0.5-bartels (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
- !function(e,t,a,s){"use strict";var o=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};class PacemBaseCellElement extends t.Components.PacemSafeContentElement{viewActivatedCallback(){super.viewActivatedCallback(),this.updateColumnPosition(),this.updateLayout(this.metadata)}updateColumnPosition(e=this.metadata,t=this.gridState){this.style.gridColumn=(t.orderedColumns.indexOf(e.prop)+1).toString()}updateVisibility(e=this.state){this.hide=!!e.hidden}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"metadata":this.updateLayout(a);break;case"gridState":this.updateColumnPosition();break;case"state":this.updateVisibility()}}}o([t.Watch({converter:t.PropertyConverters.Json})],PacemBaseCellElement.prototype,"metadata",void 0),o([t.Watch({converter:t.PropertyConverters.Json})],PacemBaseCellElement.prototype,"state",void 0),o([t.Watch({converter:t.PropertyConverters.Json})],PacemBaseCellElement.prototype,"gridState",void 0);var n=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const i={headCell:(e,t,a)=>{switch(e){case"name":return a["column_name_"+t]??a["name_"+t];case"description":return a["column_description_"+t]??a["description_"+t]}return null}};class DataGrids{static localizeMetadata(e,a,s){s=t.Utils.extend({},i,s??{});for(let t of e){const e=t.headCell=t.headCell??{};e.name=s.headCell("name",t.prop,a)??e.name,e.description=s.headCell("description",t.prop,a)??e.description}return e}}n([t.Transformer("datagrids.localizeMetadata")],DataGrids,"localizeMetadata",null);var r=Object.freeze({__proto__:null,DataGrids:DataGrids}),l=Object.freeze({__proto__:null,L10n:r,PacemBaseCellElement:PacemBaseCellElement}),c=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const d=a.Components.UI;let h=class PacemCarouselElement extends d.PacemAdaptedIterativeElement{constructor(){super(...arguments),this.interval=4e3}};c([t.ViewChild(t.P+"-adapter")],h.prototype,"adapter",void 0),c([t.ViewChild(t.P+"-slideshow")],h.prototype,"slideshow",void 0),c([t.Watch({converter:t.PropertyConverters.Number})],h.prototype,"interval",void 0),c([t.Watch({converter:t.PropertyConverters.Boolean})],h.prototype,"pausable",void 0),h=c([t.CustomElement({tagName:t.P+"-carousel",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-repeater datasource="{{ :host.datasource }}">\n <${t.P}-slideshow class="${t.PCSS}-carousel" adapter="{{ ::adapter }}" index="{{ :host.index, twoway }}" on-load="this.focus()">\n\n <template>\n\n <${t.P}-slide class="${t.PCSS}-carousel-item" css-class="{{ { '${t.PCSS}-carousel-previous': :host.isPrevious(^index, ::slideshow.index), '${t.PCSS}-carousel-next': :host.isNext(^index, ::slideshow.index), '${t.PCSS}-carousel-focus': ^index === ::slideshow.index } }}">\n <${t.P}-a href="{{ ^item.url }}">\n <${t.P}-img disabled="{{ !:host.isCloseTo(^index, ::slideshow.index) }}" class="${t.PCSS}-carousel-splash" adapt="cover" src="{{ ^item.image }}"></${t.P}-img>\n <div class="${t.PCSS}-carousel-content">\n <div class="${t.PCSS}-carousel-caption">\n <h3><${t.P}-text text="{{ ^item.title }}"></${t.P}-text></h3>\n <${t.P}-panel class="paragraph" content="{{ ^item.content }}"></${t.P}-panel>\n </div>\n </div>\n </${t.P}-a>\n </${t.P}-slide>\n\n </template>\n </${t.P}-slideshow>\n\n </${t.P}-repeater><${t.P}-adapter pausable="{{ :host.pausable }}" class="${t.PCSS}-carousel-adapter" interval="{{ :host.interval }}"></${t.P}-adapter>`})],h);var p=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const m=a.Components.UI;class PacemContextMenuItemElement extends t.Components.PacemItemElement{connectedCallback(){super.connectedCallback(),t.Utils.addClass(this,t.PCSS+"-context-menuitem")}propertyChangedCallback(e,t,a,s){super.propertyChangedCallback(e,t,a,s);const o=this.container;o instanceof C&&o.refresh()}}let u=class PacemContextMenuItemCommandElement extends PacemContextMenuItemElement{createMenuItemElement(){const e=new m.PacemButtonElement;return e.commandArgument=this.commandArgument,e.commandName=this.commandName,e.textContent=this.caption,e.iconGlyph=this.iconGlyph,e.confirmationDialog=this.confirmationDialog,e.confirmationMessage=this.confirmationMessage,e.tooltip=this.tooltip,e.disabled=this.disabled,e.cssClass=this.buttonCssClass,e}};p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],u.prototype,"commandName",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],u.prototype,"caption",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],u.prototype,"tooltip",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],u.prototype,"iconGlyph",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.StringArray})],u.prototype,"buttonCssClass",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],u.prototype,"confirmationMessage",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Element})],u.prototype,"confirmationDialog",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Json})],u.prototype,"commandArgument",void 0),u=p([t.CustomElement({tagName:t.P+"-context-menuitem-command"})],u);let v=class PacemContextMenuItemSeparatorElement extends PacemContextMenuItemElement{createMenuItemElement(){const e=document.createElement("hr");return e.style.pointerEvents="none",e}};v=p([t.CustomElement({tagName:t.P+"-context-menuitem-separator"})],v);let C=class PacemContextMenuElement extends t.Components.PacemItemsContainerElement{constructor(){super(...arguments),this._dispatchCommand=e=>{t.avoidHandler(e),this._onCommand(new t.CommandEvent({commandName:e.detail.commandName,commandArgument:e.detail.commandArgument??this.commandArgument}))},this._slotchangeHandler=e=>{this._resetLayout()},this._attributeChangeHandler=e=>this._refreshMenuItems,this._mouseupHandler=e=>{const a=this._ensureBalloon();t.Utils.isNull(a)||a.popout()}}validate(e){return e instanceof PacemContextMenuItemElement}#e;#t;#a;_ensureButton(){if(!t.Utils.isNull(this.#e))return this.#e;const e=this._slot;if(t.Utils.isNull(e))return null;const a=this._lookForAButton();if(!t.Utils.isNull(a))return this.#e=a;const s=new m.PacemButtonElement;s.setAttribute("slot","button"),s.className=`${t.PCSS}-margin margin-0 button-flat`;const o=this.#t=new m.PacemIconElement;return s.appendChild(o),this.appendChild(s),this.#e=s}_lookForAButton(){const e=this._slot;if(t.Utils.isNull(e))return null;const a=e.assignedElements({flatten:!0});return t.Utils.isNullOrEmpty(a)?null:a[0]}_ensureBalloon(){let e=this.#a;if(!t.Utils.isNull(e))return e;const a=t.CustomElementUtils.findAncestorShell(this);return t.Utils.isNull(a)?null:(e=new m.PacemBalloonElement,e.options={trigger:m.BalloonTrigger.Click,position:m.BalloonPosition.HorizontalAuto,align:m.BalloonAlignment.Auto,autoAdjust:!0},e.addEventListener(t.CommandEventName,this._dispatchCommand,!1),e.className=`${t.PCSS}-contextmenu`,a.appendChild(e),this.#a=e)}register(e){const a=super.register(e);return a&&(e.addEventListener(t.AttributeChangeEventName,this._attributeChangeHandler,!1),this._refreshMenuItems()),a}unregister(e){const a=super.unregister(e);return a&&(e.removeEventListener(t.AttributeChangeEventName,this._attributeChangeHandler,!1),this._refreshMenuItems()),a}_onCommand(e){this.dispatchEvent(new CustomEvent(t.CommandEventName,{detail:e.detail,cancelable:!0,bubbles:!0})),this.dispatchEvent(new CustomEvent(e.detail.commandName.toLowerCase(),{detail:e.detail.commandArgument,cancelable:!0,bubbles:!0}))}_resetLayout(){const e=this._ensureButton(),a=this._ensureBalloon();t.Utils.isNull(e)||t.Utils.isNull(a)||(a.target=e),this._toggleBtn(),this._toggleIcon()}_toggleBtn(e=this.disabled){const a=this.#e;!t.Utils.isNull(a)&&a instanceof t.Components.PacemElement&&(a.disabled=e)}_toggleIcon(e=this.icon){const a=this.#t;t.Utils.isNull(a)||(a.icon=e)}viewActivatedCallback(){super.viewActivatedCallback(),this._resetLayout(),this._slot.addEventListener("slotchange",this._slotchangeHandler,!1)}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"icon":this._toggleIcon(a);break;case"disabled":this._toggleBtn(a)}}disconnectedCallback(){this._disposeButton(),this._disposeSlot(),this._disposeBalloon(),super.disconnectedCallback()}refresh(){this._refreshMenuItems()}_disposeButton(){this.#e=this.#t=null}_disposeSlot(){const e=this._slot;t.Utils.isNull(e)||e.removeEventListener("slotchange",this._slotchangeHandler,!1)}_disposeBalloon(){const e=this.#a;t.Utils.isNull(e)||(e.removeEventListener(t.CommandEventName,this._dispatchCommand,!1),this._disposeBalloonChildren(0),e.remove(),this.#a=null)}_disposeBalloonChildren(e){const t=this.#a;for(let a=t.children.length-1;a>=e;a--){const e=t.children.item(a);e.removeEventListener("mouseup",this._mouseupHandler,!1),e.remove()}}_refreshMenuItems(){const e=this._ensureBalloon();if(t.Utils.isNull(e))return;const a=e.children.length;let s=0;for(let t of this.items){if(t.hide)continue;const o=t.createMenuItemElement();if(o.addEventListener("mouseup",this._mouseupHandler,!1),s<a){const t=e.children.item(s);t.removeEventListener("mouseup",this._mouseupHandler,!1),t.replaceWith(o)}else e.appendChild(o);s++}this._disposeBalloonChildren(s)}};p([t.ViewChild("slot[name=button]")],C.prototype,"_slot",void 0),p([t.Watch({converter:t.PropertyConverters.Json})],C.prototype,"commandArgument",void 0),p([t.Watch({converter:t.PropertyConverters.String})],C.prototype,"icon",void 0),p([t.Debounce(!0)],C.prototype,"_refreshMenuItems",null),C=p([t.CustomElement({tagName:t.P+"-context-menu",shadow:!0,template:'<slot name="button"></slot><slot></slot>'})],C);var g=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const _=a.Components.UI,y=s.Components.Scaffolding;var f;!function(e){e.Text="text",e.Html="html",e.Image="image",e.Markdown="markdown"}(f||(f={}));let b=class PacemEditElement extends t.Components.PacemElement{constructor(e=new _.MarkdownService){super(),this._markdown=e,this._dialogPropertyChangedHandler=e=>{this._dialogPropertyChangedCallback(e)},this._broadcastFetchRequestEventName=e=>{this.dispatchEvent(new y.ImageFetchRequestEvent(e.detail))},this._innerValueChangedHandler=e=>{"value"!==e.detail.propertyName||t.Utils.isNull(this._dialog)||(this._dialog.state=e.detail.currentValue)},this._editHandler=e=>{this.edit(e)}}_addButton(){if(t.Utils.isNull(this._button)){var e=document.createElement(t.P+"-button");return e.className=t.PCSS+"-edit-button",e.addEventListener("click",this._editHandler,!1),this._target.appendChild(e),this._button=e}}_removeButton(){var e=this._button;t.Utils.isNull(e)||(e.removeEventListener("click",this._editHandler,!1),e.remove(),this._button=null)}_addDialog(){var e=document.createElement(t.P+"-dialog");return e.buttons=_.DialogButtons.OkCancel,e.addEventListener(t.PropertyChangeEventName,this._dialogPropertyChangedHandler,!1),e.appendChild(this._addTextarea()),e.appendChild(this._addContenteditable()),e.appendChild(this._addEditImage()),document.body.appendChild(e),this._dialog=e}_removeDialog(){this._removeTextarea(),this._removeContenteditable(),this._removeEditImage(),t.Utils.isNull(this._dialog)||(this._dialog.removeEventListener(t.PropertyChangeEventName,this._dialogPropertyChangedHandler,!1),this._dialog.remove())}_addTextarea(){var e=document.createElement(t.P+"-textarea");e.className=t.PCSS+"-edit-text",e.addEventListener(t.PropertyChangeEventName,this._innerValueChangedHandler,!1);const a=this.type||f.Text;return e.hide=a!==f.Text&&a!==f.Markdown,this._textarea=e}_removeTextarea(){t.Utils.isNull(this._textarea)||this._textarea.removeEventListener(t.PropertyChangeEventName,this._innerValueChangedHandler,!1)}_addContenteditable(){var e=document.createElement(t.P+"-contenteditable");e.className=t.PCSS+"-edit-content",e.addEventListener(t.PropertyChangeEventName,this._innerValueChangedHandler,!1);const a=this.type||f.Text;return e.hide=a!==f.Html,this._contenteditable=e}_removeContenteditable(){t.Utils.isNull(this._contenteditable)||this._contenteditable.removeEventListener(t.PropertyChangeEventName,this._innerValueChangedHandler,!1)}_addEditImage(){var e=document.createElement(t.P+"-edit-image");e.disabled=!0,e.addEventListener(t.PropertyChangeEventName,this._innerValueChangedHandler,!1),e.addEventListener(y.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1);const a=this.type||f.Text;return e.hide=a!==f.Image,e.uploadUrl=this.imageUploadUrl,e.allowSnapshot=this.allowSnapshot,e.maxWidth=this.maxImageWidth,e.maxHeight=this.maxImageHeight,this._editImage=e}_removeEditImage(){t.Utils.isNull(this._editImage)||(this._editImage.removeEventListener(t.PropertyChangeEventName,this._innerValueChangedHandler,!1),this._editImage.removeEventListener(y.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1))}_update(e){var a=this._content;switch(this.type){case f.Html:a.innerHTML=e;break;case f.Markdown:if(a.localName===t.P+"-markdown")a.value=e;else a.innerHTML=this._markdown.toHtml(e);break;case f.Image:switch(a.localName){case"img":case t.P+"-img":a.src=e;break;default:a.style.backgroundImage=`url(${e})`}break;default:this._content.textContent=e}}_retrieve(){var e=this._content;switch(this.type){case f.Html:return e.innerHTML;case f.Image:switch(e.localName){case t.P+"-img":case"img":return e.src;default:let a=getComputedStyle(e).backgroundImage,s=/url\(["']?([^'"]+)["']?\)/.exec(a);return s&&s.length&&s[1]}case f.Markdown:return e.value||e.textContent;default:return e.textContent}}_setup(){this.disabled?(t.Utils.removeClass(this._target,t.PCSS+"-editing"),this._removeButton()):(t.Utils.addClass(this._target,t.PCSS+"-editing"),this._addButton())}_dialogPropertyChangedCallback(e){if("state"===e.detail.propertyName){const a=e.detail.currentValue;t.Utils.isNull(this._textarea)||(this._textarea.value=a),t.Utils.isNull(this._contenteditable)||(this._contenteditable.value=a),t.Utils.isNull(this._editImage)||(this._editImage.value=a),this._update(e.detail.currentValue)}}get _target(){var e=this.target;return t.Utils.isNull(e)&&(e=this.firstElementChild),e}connectedCallback(){super.connectedCallback(),this._addDialog()}viewActivatedCallback(){super.viewActivatedCallback(),this._addButton(),this._setup()}disconnectedCallback(){this._removeButton(),this._removeDialog(),super.disconnectedCallback()}propertyChangedCallback(e,a,s,o){switch(super.propertyChangedCallback(e,a,s,o),e){case"imageUploadUrl":t.Utils.isNull(this._editImage)||(this._editImage.uploadUrl=s);break;case"allowSnapshot":t.Utils.isNull(this._editImage)||(this._editImage.allowSnapshot=s);break;case"imageSet":t.Utils.isNull(this._editImage)||(this._editImage.imageSet=s);break;case"disabled":this._setup();break;case"type":const e=s;t.Utils.isNull(this._textarea)||(this._textarea.hide=e!==f.Text&&e!==f.Markdown),t.Utils.isNull(this._contenteditable)||(this._contenteditable.hide=e!==f.Html),t.Utils.isNull(this._editImage)||(this._editImage.hide=e!==f.Image);break;case"maxImageHeight":t.Utils.isNull(this._editImage)||(this._editImage.maxHeight=s);break;case"maxImageWidth":t.Utils.isNull(this._editImage)||(this._editImage.maxWidth=s)}}edit(e){t.avoidHandler(e);var a=this._target;if(!t.Utils.isNull(a)){this._removeButton(),this._content=a;var s=this._state=this._retrieve();t.Utils.isNull(this._editImage)||(this._editImage.disabled=!1),this._dialog.open(s).then(e=>{switch(e.button){case _.DialogButton.Cancel:this._update(this._state);break;case _.DialogButton.Ok:this._update(e.state),this.dispatchEvent(new CustomEvent("commit",{detail:{value:e.state}}))}this._content=null,t.Utils.isNull(this._editImage)||(this._editImage.disabled=!0),this._addButton()})}}};g([t.Watch({emit:!1,converter:t.PropertyConverters.String})],b.prototype,"key",void 0),g([t.Watch({converter:t.PropertyConverters.String})],b.prototype,"type",void 0),g([t.Watch({converter:t.PropertyConverters.Element})],b.prototype,"target",void 0),g([t.Watch({emit:!1,converter:t.PropertyConverters.String})],b.prototype,"imageUploadUrl",void 0),g([t.Watch({emit:!1})],b.prototype,"imageSet",void 0),g([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],b.prototype,"maxImageWidth",void 0),g([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],b.prototype,"maxImageHeight",void 0),g([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],b.prototype,"allowSnapshot",void 0),b=g([t.CustomElement({tagName:t.P+"-edit"})],b);var P=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const E=a.Components.UI;function S(e=w(),a="image"){return`<${t.P}-slide class="${t.PCSS}-gallery-item"\ncss-class="{{ { '${t.PCSS}-gallery-previous': :host.isPrevious(^index, ::_slideshow.index), '${t.PCSS}-gallery-next': :host.isNext(^index, ::_slideshow.index), '${t.PCSS}-gallery-focus': ^index === ::_slideshow.index } }}"\n>\n <${t.P}-img src="{{ ^item.${a} }}" disabled="{{ !::_lightbox.show || !(:host.isCloseTo(^index, ::_slideshow.index) || ^index === ::_slideshow.index) }}"\ncss="{{ {'visibility': (:host._poppingUp ? 'hidden' : ''), 'transition': (:host._poppingUp ? 'none' : '')} }}" class="${t.PCSS}-gallery-splash" adapt="contain"></${t.P}-img>\n\n${e}\n\n </${t.P}-slide>`}function w(e="caption"){return`<${t.P}-panel hide="{{ $pacem.isNullOrEmpty(^item.${e}) }}" class="${t.PCSS}-gallery-caption gallery-caption-default">\n <${t.P}-span class="paragraph" text="{{ ^item.${e} }}"></${t.P}-span>\n </${t.P}-panel>`}let x=class PacemGalleryElement extends E.PacemAdaptedIterativeElement{constructor(){super(...arguments),this._templateChangeHandler=e=>{const t=e.target;this._setupWithCaptionTemplate(t.target)}}viewActivatedCallback(){super.viewActivatedCallback(),this._setupWithCaptionTemplate(),this._databind()}propertyChangedCallback(e,a,s,o){if(super.propertyChangedCallback(e,a,s,o),!o)switch(e){case"datasource":this._databind();break;case"captionTemplate":this._setupWithCaptionTemplate(s,a);break;case"imageProperty":this._setupWithCaptionTemplate(this.captionTemplate,this.captionTemplate);break;case"captionProperty":t.Utils.isNull(this.captionTemplate)&&this._setupDefaultTemplate()}}disconnectedCallback(){this._disposeTemplate(),super.disconnectedCallback()}_disposeTemplate(e=this.captionTemplate){e instanceof t.Components.PacemTemplateProxyElement&&e.removeEventListener("templatechange",this._templateChangeHandler)}_setupWithCaptionTemplate(e=this.captionTemplate,a){if(this._disposeTemplate(a),t.Utils.isNull(e))return void this._setupDefaultTemplate();e instanceof t.Components.PacemTemplateProxyElement&&(e.addEventListener("templatechange",this._templateChangeHandler,!1),e=e.target);const s=e.content.firstElementChild;t.Utils.addClass(s,t.PCSS+"-gallery-caption");const o=document.createElement("template");o.innerHTML=S(e.innerHTML,this.imageProperty),this._setupTemplate(o)}_setupTemplate(e){this._templateProxy.target=e}_setupDefaultTemplate(){const e=document.createElement("template");e.innerHTML=S(w(this.captionProperty),this.imageProperty),this._setupTemplate(e)}_databind(){const e=this._repeater;t.Utils.isNull(e)||(e.datasource=this.datasource)}get adapter(){return this._adapter}async _heroAnimate(e,a){if(!t.Utils.isNull(e)){let s=new E.PacemImageElement,o=this._heroPlaceholderProxy.dom[0];const n=300;s.src=a||e.src,s.adapt="contain";let i=t.Utils.offset(o),r=t.Utils.offset(e),l=s.style;const c=getComputedStyle(o);l.border=c.border,l.width=o.clientWidth+"px",l.height=o.clientHeight+"px",l.position="absolute",l.zIndex=c.zIndex,l.top=i.top+"px",l.left=i.left+"px";const d=e.clientWidth/o.clientWidth,h=e.clientHeight/o.clientHeight,p=r.left-i.left+"px",m=r.top-i.top+"px";l.transformOrigin="0 0",l.transition=`transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${n}ms, opacity ${n}ms`,l.transform=`translate(${p}, ${m}) scale(${d}, ${h})`,document.body.appendChild(s),requestAnimationFrame(()=>{s.style.transform=""}),await t.Utils.waitForAnimationEnd(s,n),s.remove()}}open(e,t,a){this._poppingUp=!0,this._lightbox.show=!0,this._slideshow.index=e,this._heroAnimate(t,a).then(e=>{this._poppingUp=!1,this._slideshow.focus()})}};P([t.ViewChild(t.P+"-adapter")],x.prototype,"_adapter",void 0),P([t.ViewChild(t.P+"-lightbox")],x.prototype,"_lightbox",void 0),P([t.ViewChild(t.P+"-slideshow")],x.prototype,"_slideshow",void 0),P([t.ViewChild(t.P+"-repeater")],x.prototype,"_repeater",void 0),P([t.ViewChild(t.P+"-template-proxy")],x.prototype,"_templateProxy",void 0),P([t.ViewChild(t.P+"-shell-proxy")],x.prototype,"_heroPlaceholderProxy",void 0),P([t.Watch()],x.prototype,"_poppingUp",void 0),P([t.Watch({emit:!1,converter:t.PropertyConverters.Element})],x.prototype,"captionTemplate",void 0),P([t.Watch({emit:!1,converter:t.PropertyConverters.String})],x.prototype,"captionProperty",void 0),P([t.Watch({emit:!1,converter:t.PropertyConverters.String})],x.prototype,"imageProperty",void 0),x=P([t.CustomElement({tagName:t.P+"-gallery",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-lightbox class="${t.PCSS}-gallery">\n <${t.P}-repeater>\n <${t.P}-slideshow adapter="{{ ::_adapter }}" index="{{ :host.index, twoway }}" hide="{{ !::_lightbox.show }}">\n <${t.P}-template-proxy></${t.P}-template-proxy>\n </${t.P}-slideshow>\n </${t.P}-repeater>\n<${t.P}-adapter class="${t.PCSS}-gallery-adapter"></${t.P}-adapter>\n</${t.P}-lightbox>\n<${t.P}-shell-proxy><div class="${t.PCSS}-gallery-hero-target"></div></${t.P}-shell-proxy>`})],x);var U,k=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const $=a.Components.UI;let N=U=class PacemModalFormElement extends $.PacemDialogBase{get form(){return this._form}constructor(){super(),this.suddenValidation=!0,this.method=t.Net.HttpMethod.Post,this._keyupHandler=e=>{if(!(13!==e.keyCode||e.shiftKey||e.ctrlKey||e.altKey||e.metaKey)){let a=e.currentTarget.querySelector(`.${t.PCSS}-dialog-buttons ${t.P}-button[type=submit]`);t.Utils.isNull(a)||!t.Utils.isVisible(a)||a.disabled||a.click()}},this.#s=!1,this._emitter=new s.Components.Scaffolding.FormEventEmitter(this)}viewActivatedCallback(){super.viewActivatedCallback(),this.addEventListener("keyup",this._keyupHandler,!1),this._emitter.start()}disconnectedCallback(){this._emitter.stop(),this.removeEventListener("keyup",this._keyupHandler,!1),super.disconnectedCallback()}_submit(e){this.readonly?this.commit($.DialogButton.Ok,e):(t.avoidHandler(e),this._form.validate().then(a=>{a&&(t.Utils.isNullOrEmpty(this.action)?this.commit($.DialogButton.Ok,e):this._form.submit(this._fetcher).then(t=>{this.commit($.DialogButton.Ok,e)},e=>{}))}))}_onSubmit(e){this.emit(e)}#s;open(e,a,s=!0){if(t.Utils.isNull(e))throw`The state of a ${U} cannot be null.`;this.#s=a;var o=super.open(e);return s&&this._form.setPristine(),o}commit(e,a){super.commit(e,a),this.#s||t.Utils.waitForAnimationEnd(this,500).then(e=>{this.state={}})}_cancel(e){this.commit($.DialogButton.Cancel,e),this._form.reset()}_broadcast(e){this.dispatchEvent(new CustomEvent(e.type,{detail:e.detail}))}get modalButtons(){const e=this._buttons;return{ok:e&&e.firstElementChild&&e.firstElementChild.firstElementChild,cancel:e&&e.firstElementChild&&e.firstElementChild.lastElementChild}}};k([t.Watch({converter:t.PropertyConverters.Boolean})],N.prototype,"suddenValidation",void 0),k([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],N.prototype,"okCaption",void 0),k([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],N.prototype,"cancelCaption",void 0),k([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],N.prototype,"method",void 0),k([t.Watch({converter:t.PropertyConverters.Json})],N.prototype,"metadata",void 0),k([t.Watch({converter:t.PropertyConverters.String})],N.prototype,"action",void 0),k([t.Watch({converter:t.PropertyConverters.String})],N.prototype,"loaderType",void 0),k([t.Watch({converter:t.PropertyConverters.Boolean})],N.prototype,"success",void 0),k([t.Watch({converter:t.PropertyConverters.Boolean})],N.prototype,"fail",void 0),k([t.Watch({converter:t.PropertyConverters.Boolean})],N.prototype,"readonly",void 0),k([t.Watch({converter:t.PropertyConverters.Json})],N.prototype,"fetchHeaders",void 0),k([t.Watch({converter:t.PropertyConverters.String})],N.prototype,"fetchCredentials",void 0),k([t.ViewChild(t.P+"-lightbox")],N.prototype,"lightbox",void 0),k([t.ViewChild(t.P+"-form[entity]")],N.prototype,"_form",void 0),k([t.ViewChild(t.P+"-fetch")],N.prototype,"_fetcher",void 0),N=U=k([t.CustomElement({tagName:t.P+"-modal-form",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-lightbox modal="true" logger="{{ :host.logger }}">\n <${t.P}-form wrapper>\n <${t.P}-form logger="{{ :host.logger }}" on-submit=":host._onSubmit($event)" readonly="{{ :host.readonly }}" entity="{{ :host.state, twoway }}" on-success=":host._broadcast($event)"\n on-fail=":host._broadcast($event)" success="{{ :host.success, twoway }}" fail="{{ :host.fail, twoway }}" autogenerate="{{ !$pacem.isNull($this.entity) }}" metadata="{{ :host.metadata }}"\n fetch-headers="{{ :host.fetchHeaders }}" fetch-credentials="{{ :host.fetchCredentials }}" sudden-validation="{{ :host.suddenValidation }}"></${t.P}-form>\n </${t.P}-form>\n <${t.P}-fetch logger="{{ :host.logger }}" method="{{ :host.method }}" headers="{{ :host.fetchHeaders }}" credentials="{{ :host.fetchCredentials }}" autofetch="false" url="{{ :host.action }}"></${t.P}-fetch>\n <div class="${t.PCSS}-dialog-buttons ${t.PCSS}-buttonset buttons" slot="bottom">\n <div class="buttonset-left">\n <${t.P}-button on-click=":host._submit($event)" css-class="{{ {'buttonset-last': :host.readonly} }}" type="submit"\n class="button primary button-size size-small" disabled="{{ (:host.suddenValidation && !:host.readonly && !(::_form.valid && ::_form.dirty)) || ::_fetcher.fetching }}">\n <${t.P}-panel class="submit-spinner ${t.PCSS}-anim anim-pop" hide="{{ !::_form.fetching }}"><i class="${t.PCSS}-icon ${t.PCSS}-anim anim-rotate rotate-uniform display-block">refresh</i></${t.P}-panel>\n <${t.P}-text text="{{ :host.okCaption || 'OK' }}"></${t.P}-text>\n </${t.P}-button>\n <${t.P}-button on-click=":host._cancel($event)" hide="{{ :host.readonly }}" class="button button-size size-small" disabled="{{ ::_fetcher.fetching }}"><${t.P}-text text="{{ :host.cancelCaption || 'Cancel' }}"></${t.P}-text></${t.P}-button>\n </div></div>\n <div class="${t.PCSS}-dialog-heading" slot="top">\n <${t.P}-content></${t.P}-content>\n </div>\n <div class="pos-absolute absolute-top absolute-right absolute-left absolute-bottom overflow-hidden ${t.PCSS}-inert display-flex flex-center flex-middle">\n <${t.P}-loader type="{{ :host.loaderType }}" class="loader-primary loader-smaller ${t.PCSS}-anim anim-pop" active="{{ ::_fetcher.fetching }}"></${t.P}-loader>\n </div>\n</${t.P}-lightbox>`})],N);var R=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};let I=class PacemRouterHashStateElement extends t.PacemEventTarget{constructor(){super(...arguments),this.default={},this.state={},this.normalizedState={},this._routerNavigatingHandler=e=>{this.#o=!0},this._routerNavigateHandler=e=>{this.#o=!1,this._updateStateFromURI()}}#o;viewActivatedCallback(){super.viewActivatedCallback(),this._updateStateFromURI(),this._setupRouterHandlers(this.router)}propertyChangedCallback(e,t,a,s){switch(super.propertyChangedCallback(e,t,a,s),e){case"state":s||this.#o||(this._updateNormalizedState(),this._updateURIFromState());break;case"disabled":a&&this._updateStateFromURI();break;case"default":this._updateStateFromURI();break;case"router":s||(this._disposeRouterHandlers(t),this._setupRouterHandlers(a))}}disconnectedCallback(){this._disposeRouterHandlers(),super.disconnectedCallback()}_setupRouterHandlers(e=this.router){t.Utils.isNull(e)||(window.addEventListener("navigating",this._routerNavigatingHandler,!1),window.addEventListener("navigate",this._routerNavigateHandler,!1))}_disposeRouterHandlers(e=this.router){t.Utils.isNull(e)||(window.removeEventListener("navigating",this._routerNavigatingHandler,!1),window.removeEventListener("navigate",this._routerNavigateHandler,!1))}_currentBasePath(){const e=this.router;if(!t.Utils.isNull(e)){const t=e.state.$querystring;return this._normalizePath(document.location.pathname,t)}return null}_normalizePath(e,a){return t.Utils.isNullOrEmpty(e)?e:(e.endsWith("/")&&(e=e.substring(0,e.length-1)),a??="",e+(a.length>0?"?"+a:""))}_areStatesEquivalent(e,a){const s=t.Utils.extend({},e||{}),o=t.Utils.extend({},a||{});for(let e in s){if(!this._areSubstantiallyEquivalent(s[e],o[e]))return!1;delete s[e],delete o[e]}for(let e in o)if(!this._areSubstantiallyEquivalent(s[e],o[e]))return!1;return!0}_updateNormalizedState(e=this.state){if(this.disabled||this.#o)return;const t=this._normalizeState(e);this._areStatesEquivalent(t,this.normalizedState)||(this.normalizedState=t)}_updateStateFromURI(){if(this.disabled||this.#o)return;var e=t.Utils.extend({},this.default||{});const a=this.router;if(!t.Utils.isNull(a)){const s=this._denormalizeState(t.Utils.URIs.parseQuery(a.state&&a.state.$hash||"{}"));t.Utils.extend(e,s)}this._areStatesEquivalent(this.state,e)||(this.state=e)}_updateURIFromState(e=this.normalizedState){if(this.disabled||this.#o)return;const a=this.router;if(!t.Utils.isNull(a)){const o=this._currentBasePath(),n=t.Utils.URIs.parseQuery(a.state.$hash||"{}"),i=e||{};if(!this._areStatesEquivalent(n,i)){const e=this._cleanupStateForURI(i);var s=o;t.Utils.isNullOrEmpty(e)||(s=t.Utils.URIs.appendQuery(o,e,!1,!0)),a.path=s}}}_areSubstantiallyEquivalent(e,a){return e??="",a??="",e.toString()==a.toString()||t.Utils.areSemanticallyEqual(e,a)||JSON.stringify(e)===JSON.stringify(a)}_cleanupStateForURI(e=this.state){const a=t.Utils.clone(e||{}),s=this.default;for(let e in a)(t.Utils.isNullOrEmpty(a[e])&&(t.Utils.isNull(s)||!(e in s))||!t.Utils.isNull(s)&&e in s&&this._areSubstantiallyEquivalent(s[e],a[e]))&&delete a[e];return a}_normalizeState(e=this.state,a=this.default){var s={};const o=a;for(let a in e||{}){const n=e[a];if(t.Utils.isNullOrEmpty(n))t.Utils.isNull(o)||!(a in o)||t.Utils.isNullOrEmpty(o[a])||(s[a]="");else switch(typeof n){case"number":case"bigint":case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:n.toString()});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:n});break;default:if(t.Utils.Dates.isDate(n))Object.defineProperty(s,a,{enumerable:!0,value:n.toISOString()});else{if(!(n instanceof RegExp))throw new Error("Type not supported to be normalized into a URI hash.");Object.defineProperty(s,a,{enumerable:!0,value:n.source})}}}return s}_denormalizeState(e=this.normalizedState,a=this.default){const s={},o=a||{};for(let a in e){if(!(a in o)){s[a]=e[a];continue}const n=o[a],i=e[a];switch(typeof n){case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:t.PropertyConverters.Boolean.convert(i)});break;case"number":case"bigint":Object.defineProperty(s,a,{enumerable:!0,value:t.PropertyConverters.Number.convert(i)});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:t.PropertyConverters.String.convert(i)});break;default:n instanceof Date?Object.defineProperty(s,a,{enumerable:!0,value:t.PropertyConverters.Date.convert(i)}):n instanceof RegExp?Object.defineProperty(s,a,{enumerable:!0,value:new RegExp(i,n.flags)}):Object.defineProperty(s,a,{enumerable:!0,value:i})}}return s}set(e,a){var s={};"string"==typeof e?Object.defineProperty(s,e,{enumerable:!0,value:a}):s=e,this.state=t.Utils.extend({},this.state||{},s)}};R([t.Watch({emit:!1,converter:t.PropertyConverters.Element})],I.prototype,"router",void 0),R([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],I.prototype,"default",void 0),R([t.Watch()],I.prototype,"state",void 0),R([t.Watch()],I.prototype,"normalizedState",void 0),I=R([t.CustomElement({tagName:t.P+"-router-hash-state"})],I);var B=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};let H=class PacemRouterViewScrollElement extends t.PacemEventTarget{constructor(){super(...arguments),this._prerenderHandler=e=>{t.Utils.scrollTo(0,!1)},this._renderHandler=e=>{const a=this.router?.state;if(a.$scrollY>0){const e="instant"!=this.scrollBehavior;t.Utils.scrollTo(a.$scrollY,e)}}}viewActivatedCallback(){super.viewActivatedCallback(),this._setupRouter(),this._setupView()}propertyChangedCallback(e,a,s,o){if(super.propertyChangedCallback(e,a,s,o),!o)switch(e){case"router":t.Utils.isNull(a)||this._disposeRouter(a),t.Utils.isNull(s)||this._setupRouter(s);break;case"view":t.Utils.isNull(a)||this._disposeView(a),t.Utils.isNull(s)||this._setupView(s)}}disconnectedCallback(){this._disposeRouter(),this._disposeView(),super.disconnectedCallback()}_setupRouter(e=this.router){t.Utils.isNull(e)||(e.scrollRestoration=!0)}_disposeRouter(e=this.router){}_setupView(e=this.view){t.Utils.isNull(e)||(e.addEventListener("prerender",this._prerenderHandler,!1),e.addEventListener("render",this._renderHandler,!1))}_disposeView(e=this.view){t.Utils.isNull(e)||(e.removeEventListener("prerender",this._prerenderHandler),e.removeEventListener("render",this._renderHandler))}};B([t.Watch({converter:t.PropertyConverters.Element,emit:!1})],H.prototype,"router",void 0),B([t.Watch({converter:t.PropertyConverters.Element,emit:!1})],H.prototype,"view",void 0),B([t.Watch({converter:t.PropertyConverters.String,emit:!1})],H.prototype,"scrollBehavior",void 0),H=B([t.CustomElement({tagName:t.P+"-router-view-scroll"})],H);var O=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};let W=class PacemSearchElement extends t.Components.PacemElement{constructor(){super(...arguments),this.hintParameter="q"}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),"hint"===e){let e={};e[this.hintParameter]=a,this._fetcher.parameters=e}}};O([t.ViewChild(t.P+"-fetch")],W.prototype,"_fetcher",void 0),O([t.Watch()],W.prototype,"datasource",void 0),O([t.Watch({converter:t.PropertyConverters.String})],W.prototype,"hint",void 0),O([t.Watch({converter:t.PropertyConverters.String})],W.prototype,"url",void 0),O([t.Watch({converter:t.PropertyConverters.String})],W.prototype,"method",void 0),O([t.Watch({emit:!1,converter:t.PropertyConverters.String})],W.prototype,"hintParameter",void 0),W=O([t.CustomElement({tagName:t.P+"-search",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-fetch debounce="800" url="{{ :host.url }}" method="{{ :host.method }}">\n</${t.P}-fetch><${t.P}-input-search value="{{ :host.hint, twoway }}"></${t.P}-input-search>\n<${t.P}-repeater datasource="{{ ::_fetch.result }}">\n <${t.P}-content></${t.P}-content>\n</${t.P}-repeater>`})],W);var D=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const T="datarowselectchange";class DataRowSelectChangeEvent extends CustomEvent{constructor(e){super(T,{detail:e,bubbles:!1,cancelable:!0})}}const L={},M=[];let A=class PacemDataCellElement extends PacemBaseCellElement{updateLayout(e=this.metadata){this._setup(e)}connectedCallback(){super.connectedCallback(),t.Utils.addClass(this,t.PCSS+"-datacell")}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"_contentTooltip":this._updateTooltipJustInCase();break;case"gridState":case"rowindex":this._updateSelection()}}_updateTooltipJustInCase(){(this.metadata.dataCell?.autoTooltip??!0)&&!t.Utils.isNullOrEmpty(this._contentTooltip)?this.setAttribute("tooltip",this._contentTooltip):this.removeAttribute("tooltip")}_inflateContent(e=this.dataitem,a=this.rowindex,s=this.metadata){this._contentTooltip="";let o=s.dataCell?.format;const n=s.dataCell?.null??"";if("function"==typeof o){const i=o(this,s,e,a);return t.Utils.isNullOrEmpty(i)?n:i}const i=t.CustomElementUtils.resolvePath(s.prop,e)?.target,r=i?.value;if(t.Utils.isNullOrEmpty(r))return n;const l=t.Utils.lang(this);switch(s.dataType){case"boolean":return`<${t.P}-icon icon="${r?"check_circle_outline icon-fill":"radio_button_unchecked icon-outline"} icon-size icon-size-2"></${t.P}-icon>`;case"time":case"date":case"datetime":return this._contentTooltip=t.Utils.core.date(r,o,l);case"byte":case"int16":case"int32":case"int64":case"short":case"integer":case"int":case"long":case"double":case"decimal":case"float":case"single":case"number":return this._contentTooltip=t.Utils.core.number(r,o||"",l);case"currency":return o??="EUR",this._contentTooltip="string"==typeof o?t.Utils.core.currency(r,o,l):t.Utils.core.number(r,o,l);case"percent":case"percentage":return o??={style:"percent",maximumFractionDigits:2},this._contentTooltip="string"==typeof o?t.Utils.core.currency(r,o,l):t.Utils.core.number(r,o,l);default:return this._contentTooltip=r}}_inflateCssClass(e=this.dataitem,a=this.rowindex,s=this.metadata,o){if(t.Utils.isNull(e)||t.Utils.isNullOrEmpty(s))return M;const n=s.dataCell&&s.dataCell.cssClass||M,i=[];switch("function"==typeof n?Array.prototype.push.apply(i,n(this,s,e,a)||[]):Array.prototype.push.apply(i,n),s.dataCell?.verticalAlign?.toLowerCase()){case"top":i.push("datacell-top");break;case"bottom":i.push("datacell-bottom");break;case"middle":i.push("datacell-middle")}switch(s.dataCell?.horizontalAlign?.toLowerCase()){case"left":i.push("datacell-left");break;case"right":i.push("datacell-right");break;case"center":i.push("datacell-center")}return o?.length&&(0===a&&i.push("datacell-firstrow"),a===o.length-1&&i.push("datacell-lastrow")),i}_inflateCss(e=this.dataitem,a=this.rowindex,s=this.metadata){if(t.Utils.isNull(e)||t.Utils.isNullOrEmpty(s))return L;const o=s.dataCell&&s.dataCell.css||L;return"function"==typeof o?o(this,s,e,a):o}_setup(e=this.metadata){this.setAttribute("css-class","{{ this._inflateCssClass(^item, ^index, this.metadata, :host.datasource) }}"),this.setAttribute("css","{{ Pacem.Utils.extend({ 'grid-row': ^index+2 }, this._inflateCss(^item, ^index, this.metadata, :host.datasource)) }}");const a=!!e.dataCell?.textEllipsis?["text-truncate"]:[],s=e?.dataCell?.selectMode?.toLowerCase();switch(s){case"cell":case"row":a.push(t.PCSS+"-inert"),a.push(t.PCSS+"-unselect")}this._content.cssClass=a,this._updateSelection()}_updateSelection(){(this.gridState?.selectedRows??[]).indexOf(this.rowindex)>=0?t.Utils.addClass(this,"datarow-selected datacell-filled datacell-primary"):t.Utils.removeClass(this,"datarow-selected datacell-filled datacell-primary")}};D([t.Watch({emit:!1,converter:t.PropertyConverters.Eval})],A.prototype,"dataitem",void 0),D([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],A.prototype,"rowindex",void 0),D([t.Watch({emit:!1,converter:t.PropertyConverters.String,debounce:200})],A.prototype,"_contentTooltip",void 0),D([t.ViewChild(t.P+"-span")],A.prototype,"_content",void 0),A=D([t.CustomElement({tagName:t.P+"-datacell",shadow:!1,template:`<${t.P}-span content="{{ :host._inflateContent(^item, ^index, :host.metadata) }}"></${t.P}-span>`})],A);var j=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const z=a.Components.UI,V="datacolumnsort";class DataColumnSortEvent extends CustomEvent{constructor(e){super(V,{detail:e,bubbles:!1,cancelable:!0})}}const F="datacolumnrescale";class DataColumnRescaleEvent extends CustomEvent{constructor(e){super(F,{detail:e,bubbles:!1,cancelable:!0})}}let G=class PacemHeadCellElement extends PacemBaseCellElement{constructor(e=new z.MarkdownService){super(),this._md=e,this._sortButtonClickHandler=e=>{const t=this.metadata,a=this.gridState,s=t.prop,o=a.sort?.column===s?"desc"===a.sort.dir?"asc":"desc":t.defaultSort||"asc";this.dispatchEvent(new DataColumnSortEvent({column:s,dir:o}))},this._rescaleHandler=e=>{e.preventDefault();const t=e.detail,a=Math.max(this.metadata.minPixelWidth??24,t.currentPosition.x-this._columnBBox.x);this.dispatchEvent(new DataColumnRescaleEvent({width:a}))},this._rescaleStartHandler=e=>{this._columnBBox=t.Utils.offsetRect(this)},this._rescaleEndHandler=e=>{}}connectedCallback(){super.connectedCallback(),t.Utils.addClass(this,t.PCSS+"-headcell")}propertyChangedCallback(e,t,a,s){super.propertyChangedCallback(e,t,a,s),s||"gridState"!==e||this._updateSortButtonIconGlyph()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureBalloon()}disconnectedCallback(){this._disposeBalloon(),this._disposeRescaler(),super.disconnectedCallback()}updateLayout(e=this.metadata){this._setup(e)}_setupSortButton(){const e=new z.PacemButtonElement;return e.className=`button-flat headcell-sort ${t.PCSS}-inert`,this.addEventListener("click",this._sortButtonClickHandler,!1),t.Utils.addClass(this,t.PCSS+"-clickable"),e}_disposeSortButton(e=this._sortButton){t.Utils.isNull(e)||(t.Utils.removeClass(this,t.PCSS+"-clickable"),this.removeEventListener("click",this._sortButtonClickHandler,!1),e.remove(),this._sortButton=null)}_updateSortButtonIconGlyph(e=this._sortButton,a=this.gridState,s=this.metadata){t.Utils.isNull(e)||t.Utils.isNullOrEmpty(s)||(e.iconGlyph=a?.sort?.column===s.prop?"desc"===a.sort.dir?"arrow_drop_down":"arrow_drop_up":"")}_ensureRescaler(){if(t.Utils.isNull(this._rescaler)){const e=this._rescaler=this._rescaler||new t.Components.PacemRescaleElement;e.handles=[t.UI.RescaleHandle.Right],e.addEventListener(t.UI.RescaleEventType.Rescale,this._rescaleHandler,!1),e.addEventListener(t.UI.RescaleEventType.Start,this._rescaleStartHandler,!1),e.addEventListener(t.UI.RescaleEventType.End,this._rescaleEndHandler,!1),t.CustomElementUtils.findAncestorShell(this).appendChild(e)}}_setupRescaleContainer(){this._ensureRescaler();const e=new t.Components.PacemPanelElement;return e.className="headcell-rescale",e.behaviors=[this._rescaler],e}_disposeRescaleContainer(e=this._rescaleContainer){t.Utils.isNull(e)||(e.remove(),this._rescaleContainer=null)}_disposeRescaler(e=this._rescaler){t.Utils.isNull(e)||(e.removeEventListener(t.UI.RescaleEventType.Rescale,this._rescaleHandler,!1),e.removeEventListener(t.UI.RescaleEventType.Start,this._rescaleStartHandler,!1),e.removeEventListener(t.UI.RescaleEventType.End,this._rescaleEndHandler,!1),e.remove(),this._rescaler=null)}_setup(e=this.metadata){this.setAttribute("css-class","{{ this.metadata && this.metadata.headCell && this.metadata.headCell.cssClass || [] }}"),this.setAttribute("css","{{ this.metadata && this.metadata.headCell && this.metadata.headCell.css }}");const a=!!e.headCell?.textEllipsis?["text-truncate"]:[];switch(e.headCell?.verticalAlign?.toLowerCase()){case"top":t.Utils.addClass(this,"headcell-top");break;case"bottom":t.Utils.addClass(this,"headcell-bottom");break;case"middle":t.Utils.addClass(this,"headcell-middle")}switch(e.headCell?.horizontalAlign?.toLowerCase()){case"left":a.push("text-left");break;case"right":a.push("text-right");break;case"center":a.push("text-center")}this.removeAttribute("content");const s=t.Utils.isNullOrEmpty(a)?"":` class="${a.join(" ")}"`,o=e.headCell?.name??e.prop;if(this.innerHTML=`<div${s}>${o}</div>`,e.isSortable){this._disposeSortButton();const e=this._sortButton=this._setupSortButton();this._updateSortButtonIconGlyph(e),this.appendChild(e)}if(e.isRescalable){this._disposeRescaleContainer();const e=this._rescaleContainer=this._setupRescaleContainer();this.appendChild(e)}e.isTogglable}_normalizeTooltip(){const e=this.metadata.headCell?.tooltip||!1;return"object"==typeof e?e:{type:e}}_ensureBalloon(){var e,a;const s=!1===(a=this._normalizeTooltip()).type||t.Utils.isNullOrEmpty(e=this.metadata.headCell?.description);if(t.Utils.isNull(this._balloon)&&!s){let e=new z.PacemBalloonElement;e.options={behavior:z.BalloonBehavior.Tooltip,trigger:a.trigger||z.BalloonTrigger.Hover,position:a.position||z.BalloonPosition.Top,hoverDelay:200,hoverTimeout:50,align:a.align||z.BalloonAlignment.Auto},t.Utils.addClass(e,t.PCSS+"-headcell-tooltip"),t.CustomElementUtils.findAncestorShell(this).appendChild(this._balloon=e)}const o=this._balloon;if(!(t.Utils.isNull(o)||(o.target=this,o.disabled=s))){const t=e||"";switch(a.type){case"md":case"markdown":o.innerHTML=this._md.toHtml(t);break;case"html":o.innerHTML=t;break;default:o.innerText=t}}}_disposeBalloon(){t.Utils.isNull(this._balloon)||(this._balloon.remove(),this._balloon=null)}};G=j([t.CustomElement({tagName:t.P+"-headcell"})],G);var q=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const J="datacolumnchange",K="datacolumnstatechange",Q={selectCaption:"Details",editCaption:"Edit",editIcon:"edit",deleteCaption:"Delete",deleteIcon:"delete"};class DataGridBindEvent extends CustomEvent{constructor(e){super("databind",{cancelable:!1,bubbles:!1,detail:e})}}class DataCellUIEvent extends t.CustomUIEvent{constructor(e,t,a){super(e,t,{bubbles:!1,cancelable:!0},a)}}let Y=class PacemDataColumnElement extends t.Components.PacemItemElement{propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"field":case"headcellCss":case"headcellCssClass":case"datacellCss":case"datacellCssClass":case"resizable":case"togglable":case"sortable":case"label":this.dispatchEvent(new Event(J));break;case"order":case"hide":this.dispatchEvent(new Event(K))}}};function X(e){return`<${t.P}-headcell metadata="{{ :host._getColumnMetadata('${e.prop}') }}" state="{{ :host._columnState.${e.prop} }}" grid-state="{{ :host._gridState }}"\non-${V}=":host._broadcastSortCommand($event)"\non-${F}=":host._broadcastRescaleCommand($event)"></${t.P}-headcell>`}function Z(e,a){return`<${t.P}-datacell metadata="{{ :host._getColumnMetadata('${e.prop}') }}" state="{{ :host._columnState.${e.prop} }}" grid-state="{{ :host._gridState }}"\ndataitem="{{ ^item }}" rowindex="{{ ^index }}" ${a}></${t.P}-datacell>`}q([t.Watch({emit:!1,converter:t.PropertyConverters.String})],Y.prototype,"field",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.String})],Y.prototype,"label",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],Y.prototype,"resizable",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],Y.prototype,"togglable",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],Y.prototype,"sortable",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],Y.prototype,"order",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],Y.prototype,"format",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],Y.prototype,"headcellCss",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],Y.prototype,"headcellCssClass",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],Y.prototype,"datacellCss",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],Y.prototype,"datacellCssClass",void 0),Y=q([t.CustomElement({tagName:t.P+"-datacolumn"})],Y);let ee=class PacemDataGridElement extends t.Components.PacemItemsContainerElement{constructor(e=t.Utils.uniqueCode()){super(),this._key=e,this.state={},this._columnState={},this._gridState={sort:{},orderedColumns:[],selectedRows:[]},this._itemDataColumnRebuildHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._itemDataColumnChangeHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._memoizer={}}validate(e){return e instanceof Y}viewActivatedCallback(){super.viewActivatedCallback(),this.addEventListener(t.CommandEventName,this._onCommand,!1),this._adaptColumnMetadata();const e=this._adaptedColumnMetadata||[];this._buildUpGrid(e)}disconnectedCallback(){this.removeEventListener(t.CommandEventName,this._onCommand,!1),super.disconnectedCallback()}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"items":case"metadata":this._adaptColumnMetadata();break;case"_adaptedColumnMetadata":this._buildUpGrid(a);break;case"datasource":const e={keepRowSelection:!1,datasource:a},t=new DataGridBindEvent(e);this.dispatchEvent(t),e.keepRowSelection||this._setRowSelection();break;case"state":this._mergeState(a)}}register(e){return!!super.register(e)&&(e.addEventListener(J,this._itemDataColumnRebuildHandler,!1),e.addEventListener(K,this._itemDataColumnChangeHandler,!1),!0)}unregister(e){return!!super.unregister(e)&&(e.removeEventListener(J,this._itemDataColumnRebuildHandler,!1),e.removeEventListener(K,this._itemDataColumnChangeHandler,!1),!0)}setRowSelection(...e){const t=Array.from(e);this._setRowSelection(t)}_setRowSelection(e){const a=(e||[]).map(e=>({item:this.datasource[e],index:e})),s=new DataRowSelectChangeEvent({selectedRows:a});if(this.dispatchEvent(s),!s.defaultPrevented){let e=s.detail.selectedRows;t.Utils.isArray(e)||(e=[]),this._doSetRowSelection(e.map(e=>e?.index??-1).filter(e=>e>=0))}}_doSetRowSelection(e){const t={selectedRows:e};this._mergeState(t)}_mergeState(e=this.state){e??={};const a={selectedRows:(e.selectedRows||[]).map(e=>"number"==typeof e?e:e.index)},s=this._gridState=t.Utils.extend({},this._gridState,e,a);this.state=t.Utils.extend(this.state??{},s)}_adaptColumnMetadata(e=this.items,t=this.metadata){const a=Array.prototype.concat.apply((e||[]).map(e=>({prop:e.field,headCell:{name:e.label,cssClass:e.headcellCssClass||[],css:e.headcellCss||{}},dataCell:{format:e.format,cssClass:e.datacellCssClass||[],css:e.datacellCss||{}},hide:e.hide,isRescalable:e.resizable,isSortable:e.sortable,isTogglable:e.togglable,order:e.order,width:1})),t||[]);this._memoizer={},this._adaptedColumnMetadata=a}_getColumnMetadata(e){return this._memoizer[e]=this._memoizer[e]||this._adaptedColumnMetadata.find(t=>t.prop===e)}_buildUpGrid(e){const a=this._tableContainer;if(t.Utils.isNull(a))return;if(t.Utils.isNullOrEmpty(e))return void(a.innerHTML="");const s=this.options=t.Utils.extend({},Q,this.options||{}),o=s.allowDelete||s.allowEdit||s.allowSelect,n=s.allowMultiSelect&&o;let i=n?"auto ":"",r=n?`<div class="${t.PCSS}-headcell"></div>`:"",l=n?`<${t.P}-panel class="${t.PCSS}-datacell" style="grid-column: 1;" css="{{ {'grid-row': ^index+2} }}"></${t.P}-panel>`:"",c=n?`<div class="${t.PCSS}-footcell"></div>`:"";const d=n?e.length+2:o?e.length+1:e.length;this._gridState.orderedColumns=e.sort((e,t)=>(e.order??0)-(t.order??0)).map(e=>e.prop);let h="";for(let e of t.Components.PacemElement.emittedEventTypes)h+=` on-${e}=":host._broadcastUiEvent(^item, ^index, $event)"`;for(let t of e)this._columnState[t.prop]={hidden:t.hide},i+=this._getColumnSize(t).replaceAll(" ","")+" ",r+=X(t),l+=Z(t,h);l+=`<${t.P}-panel class="${t.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 ${d};" css="{{ {'grid-row': ^index+2} }}"></${t.P}-panel>`;const p=`<${t.P}-repeater datasource="{{ :host.datasource }}">\n<${t.P}-panel class="${t.PCSS}-datatable" css="{{ {'grid-template-columns': :host._getColumnSizes(:host._columnState, '${i.trimEnd()}', :host._gridState) } }}">\n ${r}\n <template>\n ${l}\n </template>\n ${c}\n</${t.P}-panel>`;a.innerHTML=p}_getColumnSizes(e=this._columnState,a,s=this._gridState){if(t.Utils.isNullOrEmpty(e))return a;const o=a.split(" ");for(let t in e){const a=e[t],n=s.orderedColumns.indexOf(t);a.hidden?o[n]="auto":a.pixelWidth>0&&(o[n]=a.pixelWidth+"px")}return o.join(" ")}_getColumnSize(e){if(e.hide)return"auto";const t=e.minPixelWidth,a=e.maxPixelWidth;if(a>0&&t>0)return`minmax(${t}px, ${a}px)`;{const s="number"==typeof e.width?e.width+"fr":"auto";return t>0?`minmax(${t}px, ${s})`:a>0?`minmax(${s}, ${a}px)`:s}}_onCommand(e){this.dispatchEvent(new t.Components.ItemCommandEvent(e)),this.dispatchEvent(new t.Components.CustomItemCommandEvent(e))}_broadcastUiEvent(e,t,a){const s=a.type.toLowerCase(),o="datacell"+s,n={dataitem:e,rowindex:t,datacell:a.srcElement},i=a instanceof MouseEvent||a instanceof TouchEvent||a instanceof KeyboardEvent?new DataCellUIEvent(o,n,a):new DataCellUIEvent(o,n);if(this.dispatchEvent(i),"click"===s&&!i.defaultPrevented){const e=i.detail.datacell,t=e.metadata?.dataCell?.selectMode?.toLowerCase();switch(t){case"cell":break;case"row":this._broadcastSelectCommand(i.detail.rowindex)}}}_broadcastSortCommand(e){const a=e.detail,s=new DataColumnSortEvent(a);if(this.dispatchEvent(s),!s.defaultPrevented){const e={column:""};"string"==typeof s.detail.column&&(e.column=s.detail.column),"string"==typeof s.detail.dir&&(e.dir="desc"===s.detail.dir?"desc":"asc"),this._gridState=t.Utils.extend({},this._gridState,{sort:e})}}_broadcastRescaleCommand(e){const a=e.detail,s=new DataColumnRescaleEvent(a);if(this.dispatchEvent(s),!s.defaultPrevented){let o=a.width;"number"==typeof s.detail.width&&s.detail.width>0&&(o=s.detail.width);const n={};n[e.srcElement.metadata.prop]={pixelWidth:o},this._columnState=t.Utils.extend({},this._columnState,n)}}_broadcastSelectCommand(e){let a=(this._gridState.selectedRows||[]).slice(0);const s=a.indexOf(e);let o=!0;if(s>=0)a.splice(s,1);else{const s=this.options;if(s.allowMultiSelect)a.push(e);else if(s.allowSelect)a=[e];else{o=!1;const a=`Cannot select the row at index ${e} since datagrid options do not allow any row selection.`;t.Utils.isNull(this.logger)?console.warn(a):this.log(t.Logging.LogLevel.Warn,a)}}o&&this._setRowSelection(a)}};q([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],ee.prototype,"metadata",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],ee.prototype,"options",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],ee.prototype,"state",void 0),q([t.Watch({emit:!0,converter:t.PropertyConverters.Json})],ee.prototype,"datasource",void 0),q([t.ViewChild("."+t.PCSS+"-datagrid")],ee.prototype,"_tableContainer",void 0),q([t.Watch()],ee.prototype,"_adaptedColumnMetadata",void 0),q([t.Watch()],ee.prototype,"_columnState",void 0),q([t.Watch()],ee.prototype,"_gridState",void 0),q([t.Debounce()],ee.prototype,"_adaptColumnMetadata",null),ee=q([t.CustomElement({tagName:t.P+"-datagrid",shadow:!1,template:`<div class="${t.PCSS}-datagrid"></div><${t.P}-content></${t.P}-content>`})],ee);var te=Object.freeze({__proto__:null,DataCellUIEvent:DataCellUIEvent,DataColumnRescaleEvent:DataColumnRescaleEvent,DataColumnRescaleEventName:F,DataColumnSortEvent:DataColumnSortEvent,DataColumnSortEventName:V,DataGridBindEvent:DataGridBindEvent,DataRowSelectChangeEvent:DataRowSelectChangeEvent,DataRowSelectChangeEventName:T,get EditMode(){return f},PacemBaseCellElement:PacemBaseCellElement,get PacemCarouselElement(){return h},get PacemContextMenuElement(){return C},get PacemContextMenuItemCommandElement(){return u},PacemContextMenuItemElement:PacemContextMenuItemElement,get PacemContextMenuItemSeparatorElement(){return v},get PacemDataCellElement(){return A},get PacemDataColumnElement(){return Y},get PacemDataGridElement(){return ee},get PacemEditElement(){return b},get PacemGalleryElement(){return x},get PacemHeadCellElement(){return G},get PacemModalFormElement(){return N},get PacemRouterHashStateElement(){return I},get PacemRouterViewScrollElement(){return H},get PacemSearchElement(){return W}}),ae=Object.freeze({__proto__:null,Components:te,Plus:l});e.DeepMerger.merge(ae)}(Pacem,Pacem,Pacem,Pacem);
6
+ !function(e,t,a,s){"use strict";var o=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};class PacemBaseCellElement extends t.Components.PacemSafeContentElement{viewActivatedCallback(){super.viewActivatedCallback(),this.updateColumnPosition(),this.updateLayout(this.metadata)}updateColumnPosition(e=this.metadata,t=this.gridState){this.style.gridColumn=(t.orderedColumns.indexOf(e.prop)+1).toString()}updateVisibility(e=this.state){this.hide=!!e.hidden}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"metadata":this.updateLayout(a);break;case"gridState":this.updateColumnPosition();break;case"state":this.updateVisibility()}}}o([t.Watch({converter:t.PropertyConverters.Json})],PacemBaseCellElement.prototype,"metadata",void 0),o([t.Watch({converter:t.PropertyConverters.Json})],PacemBaseCellElement.prototype,"state",void 0),o([t.Watch({converter:t.PropertyConverters.Json})],PacemBaseCellElement.prototype,"gridState",void 0);var n=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const i={headCell:(e,t,a)=>{switch(e){case"name":return a["column_name_"+t]??a["name_"+t];case"description":return a["column_description_"+t]??a["description_"+t]}return null}};class DataGrids{static localizeMetadata(e,a,s){s=t.Utils.extend({},i,s??{});for(let t of e){const e=t.headCell=t.headCell??{};e.name=s.headCell("name",t.prop,a)??e.name,e.description=s.headCell("description",t.prop,a)??e.description}return e}}n([t.Transformer("datagrids.localizeMetadata")],DataGrids,"localizeMetadata",null);var r=Object.freeze({__proto__:null,DataGrids:DataGrids}),l=Object.freeze({__proto__:null,L10n:r,PacemBaseCellElement:PacemBaseCellElement}),c=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const d=a.Components.UI;let h=class PacemCarouselElement extends d.PacemAdaptedIterativeElement{constructor(){super(...arguments),this.interval=4e3}};c([t.ViewChild(t.P+"-adapter")],h.prototype,"adapter",void 0),c([t.ViewChild(t.P+"-slideshow")],h.prototype,"slideshow",void 0),c([t.Watch({converter:t.PropertyConverters.Number})],h.prototype,"interval",void 0),c([t.Watch({converter:t.PropertyConverters.Boolean})],h.prototype,"pausable",void 0),h=c([t.CustomElement({tagName:t.P+"-carousel",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-repeater datasource="{{ :host.datasource }}">\n <${t.P}-slideshow class="${t.PCSS}-carousel" adapter="{{ ::adapter }}" index="{{ :host.index, twoway }}" on-load="this.focus()">\n\n <template>\n\n <${t.P}-slide class="${t.PCSS}-carousel-item" css-class="{{ { '${t.PCSS}-carousel-previous': :host.isPrevious(^index, ::slideshow.index), '${t.PCSS}-carousel-next': :host.isNext(^index, ::slideshow.index), '${t.PCSS}-carousel-focus': ^index === ::slideshow.index } }}">\n <${t.P}-a href="{{ ^item.url }}">\n <${t.P}-img disabled="{{ !:host.isCloseTo(^index, ::slideshow.index) }}" class="${t.PCSS}-carousel-splash" adapt="cover" src="{{ ^item.image }}"></${t.P}-img>\n <div class="${t.PCSS}-carousel-content">\n <div class="${t.PCSS}-carousel-caption">\n <h3><${t.P}-text text="{{ ^item.title }}"></${t.P}-text></h3>\n <${t.P}-panel class="paragraph" content="{{ ^item.content }}"></${t.P}-panel>\n </div>\n </div>\n </${t.P}-a>\n </${t.P}-slide>\n\n </template>\n </${t.P}-slideshow>\n\n </${t.P}-repeater><${t.P}-adapter pausable="{{ :host.pausable }}" class="${t.PCSS}-carousel-adapter" interval="{{ :host.interval }}"></${t.P}-adapter>`})],h);var p=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const m=a.Components.UI;class PacemContextMenuItemElement extends t.Components.PacemItemElement{connectedCallback(){super.connectedCallback(),t.Utils.addClass(this,t.PCSS+"-context-menuitem")}propertyChangedCallback(e,t,a,s){super.propertyChangedCallback(e,t,a,s);const o=this.container;o instanceof C&&o.refresh()}}let u=class PacemContextMenuItemCommandElement extends PacemContextMenuItemElement{createMenuItemElement(){const e=new m.PacemButtonElement;return e.commandArgument=this.commandArgument,e.commandName=this.commandName,e.textContent=this.caption,e.iconGlyph=this.iconGlyph,e.confirmationDialog=this.confirmationDialog,e.confirmationMessage=this.confirmationMessage,e.tooltip=this.tooltip,e.disabled=this.disabled,e.cssClass=this.buttonCssClass,e}};p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],u.prototype,"commandName",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],u.prototype,"caption",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],u.prototype,"tooltip",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],u.prototype,"iconGlyph",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.StringArray})],u.prototype,"buttonCssClass",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],u.prototype,"confirmationMessage",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Element})],u.prototype,"confirmationDialog",void 0),p([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Json})],u.prototype,"commandArgument",void 0),u=p([t.CustomElement({tagName:t.P+"-context-menuitem-command"})],u);let v=class PacemContextMenuItemSeparatorElement extends PacemContextMenuItemElement{createMenuItemElement(){const e=document.createElement("hr");return e.style.pointerEvents="none",e}};v=p([t.CustomElement({tagName:t.P+"-context-menuitem-separator"})],v);let C=class PacemContextMenuElement extends t.Components.PacemItemsContainerElement{constructor(){super(...arguments),this._dispatchCommand=e=>{t.avoidHandler(e),this._onCommand(new t.CommandEvent({commandName:e.detail.commandName,commandArgument:e.detail.commandArgument??this.commandArgument}))},this._slotchangeHandler=e=>{this._resetLayout()},this._attributeChangeHandler=e=>this._refreshMenuItems,this._mouseupHandler=e=>{const a=this._ensureBalloon();t.Utils.isNull(a)||a.popout()}}validate(e){return e instanceof PacemContextMenuItemElement}#e;#t;#a;_ensureButton(){if(!t.Utils.isNull(this.#e))return this.#e;const e=this._slot;if(t.Utils.isNull(e))return null;const a=this._lookForAButton();if(!t.Utils.isNull(a))return this.#e=a;const s=new m.PacemButtonElement;s.setAttribute("slot","button"),s.className=`${t.PCSS}-margin margin-0 button-flat`;const o=this.#t=new m.PacemIconElement;return s.appendChild(o),this.appendChild(s),this.#e=s}_lookForAButton(){const e=this._slot;if(t.Utils.isNull(e))return null;const a=e.assignedElements({flatten:!0});return t.Utils.isNullOrEmpty(a)?null:a[0]}_ensureBalloon(){let e=this.#a;if(!t.Utils.isNull(e))return e;const a=t.CustomElementUtils.findAncestorShell(this);return t.Utils.isNull(a)?null:(e=new m.PacemBalloonElement,e.options={trigger:m.BalloonTrigger.Click,position:m.BalloonPosition.HorizontalAuto,align:m.BalloonAlignment.Auto,autoAdjust:!0},e.addEventListener(t.CommandEventName,this._dispatchCommand,!1),e.className=`${t.PCSS}-contextmenu`,a.appendChild(e),this.#a=e)}register(e){const a=super.register(e);return a&&(e.addEventListener(t.AttributeChangeEventName,this._attributeChangeHandler,!1),this._refreshMenuItems()),a}unregister(e){const a=super.unregister(e);return a&&(e.removeEventListener(t.AttributeChangeEventName,this._attributeChangeHandler,!1),this._refreshMenuItems()),a}_onCommand(e){this.dispatchEvent(new CustomEvent(t.CommandEventName,{detail:e.detail,cancelable:!0,bubbles:!0})),this.dispatchEvent(new CustomEvent(e.detail.commandName.toLowerCase(),{detail:e.detail.commandArgument,cancelable:!0,bubbles:!0}))}_resetLayout(){const e=this._ensureButton(),a=this._ensureBalloon();t.Utils.isNull(e)||t.Utils.isNull(a)||(a.target=e),this._toggleBtn(),this._toggleIcon()}_toggleBtn(e=this.disabled){const a=this.#e;!t.Utils.isNull(a)&&a instanceof t.Components.PacemElement&&(a.disabled=e)}_toggleIcon(e=this.icon){const a=this.#t;t.Utils.isNull(a)||(a.icon=e)}viewActivatedCallback(){super.viewActivatedCallback(),this._resetLayout(),this._slot.addEventListener("slotchange",this._slotchangeHandler,!1)}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"icon":this._toggleIcon(a);break;case"disabled":this._toggleBtn(a)}}disconnectedCallback(){this._disposeButton(),this._disposeSlot(),this._disposeBalloon(),super.disconnectedCallback()}refresh(){this._refreshMenuItems()}_disposeButton(){this.#e=this.#t=null}_disposeSlot(){const e=this._slot;t.Utils.isNull(e)||e.removeEventListener("slotchange",this._slotchangeHandler,!1)}_disposeBalloon(){const e=this.#a;t.Utils.isNull(e)||(e.removeEventListener(t.CommandEventName,this._dispatchCommand,!1),this._disposeBalloonChildren(0),e.remove(),this.#a=null)}_disposeBalloonChildren(e){const t=this.#a;for(let a=t.children.length-1;a>=e;a--){const e=t.children.item(a);e.removeEventListener("mouseup",this._mouseupHandler,!1),e.remove()}}_refreshMenuItems(){const e=this._ensureBalloon();if(t.Utils.isNull(e))return;const a=e.children.length;let s=0;for(let t of this.items){if(t.hide)continue;const o=t.createMenuItemElement();if(o.addEventListener("mouseup",this._mouseupHandler,!1),s<a){const t=e.children.item(s);t.removeEventListener("mouseup",this._mouseupHandler,!1),t.replaceWith(o)}else e.appendChild(o);s++}this._disposeBalloonChildren(s)}};p([t.ViewChild("slot[name=button]")],C.prototype,"_slot",void 0),p([t.Watch({converter:t.PropertyConverters.Json})],C.prototype,"commandArgument",void 0),p([t.Watch({converter:t.PropertyConverters.String})],C.prototype,"icon",void 0),p([t.Debounce(!0)],C.prototype,"_refreshMenuItems",null),C=p([t.CustomElement({tagName:t.P+"-context-menu",shadow:!0,template:'<slot name="button"></slot><slot></slot>'})],C);var g=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const _=a.Components.UI,y=s.Components.Scaffolding;var f;!function(e){e.Text="text",e.Html="html",e.Image="image",e.Markdown="markdown"}(f||(f={}));let b=class PacemEditElement extends t.Components.PacemElement{constructor(e=new _.MarkdownService){super(),this._markdown=e,this._dialogPropertyChangedHandler=e=>{this._dialogPropertyChangedCallback(e)},this._broadcastFetchRequestEventName=e=>{this.dispatchEvent(new y.ImageFetchRequestEvent(e.detail))},this._innerValueChangedHandler=e=>{"value"!==e.detail.propertyName||t.Utils.isNull(this._dialog)||(this._dialog.state=e.detail.currentValue)},this._editHandler=e=>{this.edit(e)}}_addButton(){if(t.Utils.isNull(this._button)){var e=document.createElement(t.P+"-button");return e.className=t.PCSS+"-edit-button",e.addEventListener("click",this._editHandler,!1),this._target.appendChild(e),this._button=e}}_removeButton(){var e=this._button;t.Utils.isNull(e)||(e.removeEventListener("click",this._editHandler,!1),e.remove(),this._button=null)}_addDialog(){var e=document.createElement(t.P+"-dialog");return e.buttons=_.DialogButtons.OkCancel,e.addEventListener(t.PropertyChangeEventName,this._dialogPropertyChangedHandler,!1),e.appendChild(this._addTextarea()),e.appendChild(this._addContenteditable()),e.appendChild(this._addEditImage()),document.body.appendChild(e),this._dialog=e}_removeDialog(){this._removeTextarea(),this._removeContenteditable(),this._removeEditImage(),t.Utils.isNull(this._dialog)||(this._dialog.removeEventListener(t.PropertyChangeEventName,this._dialogPropertyChangedHandler,!1),this._dialog.remove())}_addTextarea(){var e=document.createElement(t.P+"-textarea");e.className=t.PCSS+"-edit-text",e.addEventListener(t.PropertyChangeEventName,this._innerValueChangedHandler,!1);const a=this.type||f.Text;return e.hide=a!==f.Text&&a!==f.Markdown,this._textarea=e}_removeTextarea(){t.Utils.isNull(this._textarea)||this._textarea.removeEventListener(t.PropertyChangeEventName,this._innerValueChangedHandler,!1)}_addContenteditable(){var e=document.createElement(t.P+"-contenteditable");e.className=t.PCSS+"-edit-content",e.addEventListener(t.PropertyChangeEventName,this._innerValueChangedHandler,!1);const a=this.type||f.Text;return e.hide=a!==f.Html,this._contenteditable=e}_removeContenteditable(){t.Utils.isNull(this._contenteditable)||this._contenteditable.removeEventListener(t.PropertyChangeEventName,this._innerValueChangedHandler,!1)}_addEditImage(){var e=document.createElement(t.P+"-edit-image");e.disabled=!0,e.addEventListener(t.PropertyChangeEventName,this._innerValueChangedHandler,!1),e.addEventListener(y.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1);const a=this.type||f.Text;return e.hide=a!==f.Image,e.uploadUrl=this.imageUploadUrl,e.allowSnapshot=this.allowSnapshot,e.maxWidth=this.maxImageWidth,e.maxHeight=this.maxImageHeight,this._editImage=e}_removeEditImage(){t.Utils.isNull(this._editImage)||(this._editImage.removeEventListener(t.PropertyChangeEventName,this._innerValueChangedHandler,!1),this._editImage.removeEventListener(y.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1))}_update(e){var a=this._content;switch(this.type){case f.Html:a.innerHTML=e;break;case f.Markdown:if(a.localName===t.P+"-markdown")a.value=e;else a.innerHTML=this._markdown.toHtml(e);break;case f.Image:switch(a.localName){case"img":case t.P+"-img":a.src=e;break;default:a.style.backgroundImage=`url(${e})`}break;default:this._content.textContent=e}}_retrieve(){var e=this._content;switch(this.type){case f.Html:return e.innerHTML;case f.Image:switch(e.localName){case t.P+"-img":case"img":return e.src;default:let a=getComputedStyle(e).backgroundImage,s=/url\(["']?([^'"]+)["']?\)/.exec(a);return s&&s.length&&s[1]}case f.Markdown:return e.value||e.textContent;default:return e.textContent}}_setup(){this.disabled?(t.Utils.removeClass(this._target,t.PCSS+"-editing"),this._removeButton()):(t.Utils.addClass(this._target,t.PCSS+"-editing"),this._addButton())}_dialogPropertyChangedCallback(e){if("state"===e.detail.propertyName){const a=e.detail.currentValue;t.Utils.isNull(this._textarea)||(this._textarea.value=a),t.Utils.isNull(this._contenteditable)||(this._contenteditable.value=a),t.Utils.isNull(this._editImage)||(this._editImage.value=a),this._update(e.detail.currentValue)}}get _target(){var e=this.target;return t.Utils.isNull(e)&&(e=this.firstElementChild),e}connectedCallback(){super.connectedCallback(),this._addDialog()}viewActivatedCallback(){super.viewActivatedCallback(),this._addButton(),this._setup()}disconnectedCallback(){this._removeButton(),this._removeDialog(),super.disconnectedCallback()}propertyChangedCallback(e,a,s,o){switch(super.propertyChangedCallback(e,a,s,o),e){case"imageUploadUrl":t.Utils.isNull(this._editImage)||(this._editImage.uploadUrl=s);break;case"allowSnapshot":t.Utils.isNull(this._editImage)||(this._editImage.allowSnapshot=s);break;case"imageSet":t.Utils.isNull(this._editImage)||(this._editImage.imageSet=s);break;case"disabled":this._setup();break;case"type":const e=s;t.Utils.isNull(this._textarea)||(this._textarea.hide=e!==f.Text&&e!==f.Markdown),t.Utils.isNull(this._contenteditable)||(this._contenteditable.hide=e!==f.Html),t.Utils.isNull(this._editImage)||(this._editImage.hide=e!==f.Image);break;case"maxImageHeight":t.Utils.isNull(this._editImage)||(this._editImage.maxHeight=s);break;case"maxImageWidth":t.Utils.isNull(this._editImage)||(this._editImage.maxWidth=s)}}edit(e){t.avoidHandler(e);var a=this._target;if(!t.Utils.isNull(a)){this._removeButton(),this._content=a;var s=this._state=this._retrieve();t.Utils.isNull(this._editImage)||(this._editImage.disabled=!1),this._dialog.open(s).then(e=>{switch(e.button){case _.DialogButton.Cancel:this._update(this._state);break;case _.DialogButton.Ok:this._update(e.state),this.dispatchEvent(new CustomEvent("commit",{detail:{value:e.state}}))}this._content=null,t.Utils.isNull(this._editImage)||(this._editImage.disabled=!0),this._addButton()})}}};g([t.Watch({emit:!1,converter:t.PropertyConverters.String})],b.prototype,"key",void 0),g([t.Watch({converter:t.PropertyConverters.String})],b.prototype,"type",void 0),g([t.Watch({converter:t.PropertyConverters.Element})],b.prototype,"target",void 0),g([t.Watch({emit:!1,converter:t.PropertyConverters.String})],b.prototype,"imageUploadUrl",void 0),g([t.Watch({emit:!1})],b.prototype,"imageSet",void 0),g([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],b.prototype,"maxImageWidth",void 0),g([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],b.prototype,"maxImageHeight",void 0),g([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],b.prototype,"allowSnapshot",void 0),b=g([t.CustomElement({tagName:t.P+"-edit"})],b);var P=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const E=a.Components.UI;function S(e=w(),a="image"){return`<${t.P}-slide class="${t.PCSS}-gallery-item"\ncss-class="{{ { '${t.PCSS}-gallery-previous': :host.isPrevious(^index, ::_slideshow.index), '${t.PCSS}-gallery-next': :host.isNext(^index, ::_slideshow.index), '${t.PCSS}-gallery-focus': ^index === ::_slideshow.index } }}"\n>\n <${t.P}-img src="{{ ^item.${a} }}" disabled="{{ !::_lightbox.show || !(:host.isCloseTo(^index, ::_slideshow.index) || ^index === ::_slideshow.index) }}"\ncss="{{ {'visibility': (:host._poppingUp ? 'hidden' : ''), 'transition': (:host._poppingUp ? 'none' : '')} }}" class="${t.PCSS}-gallery-splash" adapt="contain"></${t.P}-img>\n\n${e}\n\n </${t.P}-slide>`}function w(e="caption"){return`<${t.P}-panel hide="{{ $pacem.isNullOrEmpty(^item.${e}) }}" class="${t.PCSS}-gallery-caption gallery-caption-default">\n <${t.P}-span class="paragraph" text="{{ ^item.${e} }}"></${t.P}-span>\n </${t.P}-panel>`}let x=class PacemGalleryElement extends E.PacemAdaptedIterativeElement{constructor(){super(...arguments),this._templateChangeHandler=e=>{const t=e.target;this._setupWithCaptionTemplate(t.target)}}viewActivatedCallback(){super.viewActivatedCallback(),this._setupWithCaptionTemplate(),this._databind()}propertyChangedCallback(e,a,s,o){if(super.propertyChangedCallback(e,a,s,o),!o)switch(e){case"datasource":this._databind();break;case"captionTemplate":this._setupWithCaptionTemplate(s,a);break;case"imageProperty":this._setupWithCaptionTemplate(this.captionTemplate,this.captionTemplate);break;case"captionProperty":t.Utils.isNull(this.captionTemplate)&&this._setupDefaultTemplate()}}disconnectedCallback(){this._disposeTemplate(),super.disconnectedCallback()}_disposeTemplate(e=this.captionTemplate){e instanceof t.Components.PacemTemplateProxyElement&&e.removeEventListener("templatechange",this._templateChangeHandler)}_setupWithCaptionTemplate(e=this.captionTemplate,a){if(this._disposeTemplate(a),t.Utils.isNull(e))return void this._setupDefaultTemplate();e instanceof t.Components.PacemTemplateProxyElement&&(e.addEventListener("templatechange",this._templateChangeHandler,!1),e=e.target);const s=e.content.firstElementChild;t.Utils.addClass(s,t.PCSS+"-gallery-caption");const o=document.createElement("template");o.innerHTML=S(e.innerHTML,this.imageProperty),this._setupTemplate(o)}_setupTemplate(e){this._templateProxy.target=e}_setupDefaultTemplate(){const e=document.createElement("template");e.innerHTML=S(w(this.captionProperty),this.imageProperty),this._setupTemplate(e)}_databind(){const e=this._repeater;t.Utils.isNull(e)||(e.datasource=this.datasource)}get adapter(){return this._adapter}async _heroAnimate(e,a){if(!t.Utils.isNull(e)){let s=new E.PacemImageElement,o=this._heroPlaceholderProxy.dom[0];const n=300;s.src=a||e.src,s.adapt="contain";let i=t.Utils.offset(o),r=t.Utils.offset(e),l=s.style;const c=getComputedStyle(o);l.border=c.border,l.width=o.clientWidth+"px",l.height=o.clientHeight+"px",l.position="absolute",l.zIndex=c.zIndex,l.top=i.top+"px",l.left=i.left+"px";const d=e.clientWidth/o.clientWidth,h=e.clientHeight/o.clientHeight,p=r.left-i.left+"px",m=r.top-i.top+"px";l.transformOrigin="0 0",l.transition=`transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${n}ms, opacity ${n}ms`,l.transform=`translate(${p}, ${m}) scale(${d}, ${h})`,document.body.appendChild(s),requestAnimationFrame(()=>{s.style.transform=""}),await t.Utils.waitForAnimationEnd(s,n),s.remove()}}open(e,t,a){this._poppingUp=!0,this._lightbox.show=!0,this._slideshow.index=e,this._heroAnimate(t,a).then(e=>{this._poppingUp=!1,this._slideshow.focus()})}};P([t.ViewChild(t.P+"-adapter")],x.prototype,"_adapter",void 0),P([t.ViewChild(t.P+"-lightbox")],x.prototype,"_lightbox",void 0),P([t.ViewChild(t.P+"-slideshow")],x.prototype,"_slideshow",void 0),P([t.ViewChild(t.P+"-repeater")],x.prototype,"_repeater",void 0),P([t.ViewChild(t.P+"-template-proxy")],x.prototype,"_templateProxy",void 0),P([t.ViewChild(t.P+"-shell-proxy")],x.prototype,"_heroPlaceholderProxy",void 0),P([t.Watch()],x.prototype,"_poppingUp",void 0),P([t.Watch({emit:!1,converter:t.PropertyConverters.Element})],x.prototype,"captionTemplate",void 0),P([t.Watch({emit:!1,converter:t.PropertyConverters.String})],x.prototype,"captionProperty",void 0),P([t.Watch({emit:!1,converter:t.PropertyConverters.String})],x.prototype,"imageProperty",void 0),x=P([t.CustomElement({tagName:t.P+"-gallery",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-lightbox class="${t.PCSS}-gallery">\n <${t.P}-repeater>\n <${t.P}-slideshow adapter="{{ ::_adapter }}" index="{{ :host.index, twoway }}" hide="{{ !::_lightbox.show }}">\n <${t.P}-template-proxy></${t.P}-template-proxy>\n </${t.P}-slideshow>\n </${t.P}-repeater>\n<${t.P}-adapter class="${t.PCSS}-gallery-adapter"></${t.P}-adapter>\n</${t.P}-lightbox>\n<${t.P}-shell-proxy><div class="${t.PCSS}-gallery-hero-target"></div></${t.P}-shell-proxy>`})],x);var U,k=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const $=a.Components.UI;let N=U=class PacemModalFormElement extends $.PacemDialogBase{get form(){return this._form}constructor(){super(),this.suddenValidation=!0,this.method=t.Net.HttpMethod.Post,this._keyupHandler=e=>{if(!(13!==e.keyCode||e.shiftKey||e.ctrlKey||e.altKey||e.metaKey)){let a=e.currentTarget.querySelector(`.${t.PCSS}-dialog-buttons ${t.P}-button[type=submit]`);t.Utils.isNull(a)||!t.Utils.isVisible(a)||a.disabled||a.click()}},this.#s=!1,this._emitter=new s.Components.Scaffolding.FormEventEmitter(this)}viewActivatedCallback(){super.viewActivatedCallback(),this.addEventListener("keyup",this._keyupHandler,!1),this._emitter.start()}disconnectedCallback(){this._emitter.stop(),this.removeEventListener("keyup",this._keyupHandler,!1),super.disconnectedCallback()}_submit(e){this.readonly?this.commit($.DialogButton.Ok,e):(t.avoidHandler(e),this._form.validate().then(a=>{a&&(t.Utils.isNullOrEmpty(this.action)?this.commit($.DialogButton.Ok,e):this._form.submit(this._fetcher).then(t=>{this.commit($.DialogButton.Ok,e)},e=>{}))}))}_onSubmit(e){this.emit(e)}#s;open(e,a,s=!0){if(t.Utils.isNull(e))throw`The state of a ${U} cannot be null.`;this.#s=a;var o=super.open(e);return s&&this._form.setPristine(),o}commit(e,a){super.commit(e,a),this.#s||t.Utils.waitForAnimationEnd(this,500).then(e=>{this.state={}})}_cancel(e){this.commit($.DialogButton.Cancel,e),this._form.reset()}_broadcast(e){this.dispatchEvent(new CustomEvent(e.type,{detail:e.detail}))}get modalButtons(){const e=this._buttons;return{ok:e&&e.firstElementChild&&e.firstElementChild.firstElementChild,cancel:e&&e.firstElementChild&&e.firstElementChild.lastElementChild}}};k([t.Watch({converter:t.PropertyConverters.Boolean})],N.prototype,"suddenValidation",void 0),k([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],N.prototype,"okCaption",void 0),k([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],N.prototype,"cancelCaption",void 0),k([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],N.prototype,"method",void 0),k([t.Watch({converter:t.PropertyConverters.Json})],N.prototype,"metadata",void 0),k([t.Watch({converter:t.PropertyConverters.String})],N.prototype,"action",void 0),k([t.Watch({converter:t.PropertyConverters.String})],N.prototype,"loaderType",void 0),k([t.Watch({converter:t.PropertyConverters.Boolean})],N.prototype,"success",void 0),k([t.Watch({converter:t.PropertyConverters.Boolean})],N.prototype,"fail",void 0),k([t.Watch({converter:t.PropertyConverters.Boolean})],N.prototype,"readonly",void 0),k([t.Watch({converter:t.PropertyConverters.Json})],N.prototype,"fetchHeaders",void 0),k([t.Watch({converter:t.PropertyConverters.String})],N.prototype,"fetchCredentials",void 0),k([t.ViewChild(t.P+"-lightbox")],N.prototype,"lightbox",void 0),k([t.ViewChild(t.P+"-form[entity]")],N.prototype,"_form",void 0),k([t.ViewChild(t.P+"-fetch")],N.prototype,"_fetcher",void 0),N=U=k([t.CustomElement({tagName:t.P+"-modal-form",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-lightbox modal="true" logger="{{ :host.logger }}">\n <${t.P}-form wrapper>\n <${t.P}-form logger="{{ :host.logger }}" on-submit=":host._onSubmit($event)" readonly="{{ :host.readonly }}" entity="{{ :host.state, twoway }}" on-success=":host._broadcast($event)"\n on-fail=":host._broadcast($event)" success="{{ :host.success, twoway }}" fail="{{ :host.fail, twoway }}" autogenerate="{{ !$pacem.isNull($this.entity) }}" metadata="{{ :host.metadata }}"\n fetch-headers="{{ :host.fetchHeaders }}" fetch-credentials="{{ :host.fetchCredentials }}" sudden-validation="{{ :host.suddenValidation }}"></${t.P}-form>\n </${t.P}-form>\n <${t.P}-fetch logger="{{ :host.logger }}" method="{{ :host.method }}" headers="{{ :host.fetchHeaders }}" credentials="{{ :host.fetchCredentials }}" autofetch="false" url="{{ :host.action }}"></${t.P}-fetch>\n <div class="${t.PCSS}-dialog-buttons ${t.PCSS}-buttonset buttons" slot="bottom">\n <div class="buttonset-left">\n <${t.P}-button on-click=":host._submit($event)" css-class="{{ {'buttonset-last': :host.readonly} }}" type="submit"\n class="button primary button-size size-small" disabled="{{ (:host.suddenValidation && !:host.readonly && !(::_form.valid && ::_form.dirty)) || ::_fetcher.fetching }}">\n <${t.P}-panel class="submit-spinner ${t.PCSS}-anim anim-pop" hide="{{ !::_form.fetching }}"><i class="${t.PCSS}-icon ${t.PCSS}-anim anim-rotate rotate-uniform display-block">refresh</i></${t.P}-panel>\n <${t.P}-text text="{{ :host.okCaption || 'OK' }}"></${t.P}-text>\n </${t.P}-button>\n <${t.P}-button on-click=":host._cancel($event)" hide="{{ :host.readonly }}" class="button button-size size-small" disabled="{{ ::_fetcher.fetching }}"><${t.P}-text text="{{ :host.cancelCaption || 'Cancel' }}"></${t.P}-text></${t.P}-button>\n </div></div>\n <div class="${t.PCSS}-dialog-heading" slot="top">\n <${t.P}-content></${t.P}-content>\n </div>\n <div class="pos-absolute absolute-top absolute-right absolute-left absolute-bottom overflow-hidden ${t.PCSS}-inert display-flex flex-center flex-middle">\n <${t.P}-loader type="{{ :host.loaderType }}" class="loader-primary loader-smaller ${t.PCSS}-anim anim-pop" active="{{ ::_fetcher.fetching }}"></${t.P}-loader>\n </div>\n</${t.P}-lightbox>`})],N);var R=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};let I=class PacemRouterHashStateElement extends t.PacemEventTarget{constructor(){super(...arguments),this.default={},this.state={},this.normalizedState={},this._routerNavigatingHandler=e=>{this.#o=!0},this._routerNavigateHandler=e=>{this.#o=!1,this._updateStateFromURI()}}#o;viewActivatedCallback(){super.viewActivatedCallback(),this._updateStateFromURI(),this._setupRouterHandlers(this.router)}propertyChangedCallback(e,t,a,s){switch(super.propertyChangedCallback(e,t,a,s),e){case"state":s||this.#o||(this._updateNormalizedState(),this._updateURIFromState());break;case"disabled":a&&this._updateStateFromURI();break;case"default":this._updateStateFromURI();break;case"router":s||(this._disposeRouterHandlers(t),this._setupRouterHandlers(a))}}disconnectedCallback(){this._disposeRouterHandlers(),super.disconnectedCallback()}_setupRouterHandlers(e=this.router){t.Utils.isNull(e)||(window.addEventListener("navigating",this._routerNavigatingHandler,!1),window.addEventListener("navigate",this._routerNavigateHandler,!1))}_disposeRouterHandlers(e=this.router){t.Utils.isNull(e)||(window.removeEventListener("navigating",this._routerNavigatingHandler,!1),window.removeEventListener("navigate",this._routerNavigateHandler,!1))}_currentBasePath(){const e=this.router;if(!t.Utils.isNull(e)){const t=e.state.$querystring;return this._normalizePath(document.location.pathname,t)}return null}_normalizePath(e,a){return t.Utils.isNullOrEmpty(e)?e:(e.endsWith("/")&&(e=e.substring(0,e.length-1)),a??="",e+(a.length>0?"?"+a:""))}_areStatesEquivalent(e,a){const s=t.Utils.extend({},e||{}),o=t.Utils.extend({},a||{});for(let e in s){if(!this._areSubstantiallyEquivalent(s[e],o[e]))return!1;delete s[e],delete o[e]}for(let e in o)if(!this._areSubstantiallyEquivalent(s[e],o[e]))return!1;return!0}_updateNormalizedState(e=this.state){if(this.disabled||this.#o)return;const t=this._normalizeState(e);this._areStatesEquivalent(t,this.normalizedState)||(this.normalizedState=t)}_updateStateFromURI(){if(this.disabled||this.#o)return;var e=t.Utils.extend({},this.default||{});const a=this.router;if(!t.Utils.isNull(a)){const s=this._denormalizeState(t.Utils.URIs.parseQuery(a.state&&a.state.$hash||"{}"));t.Utils.extend(e,s)}this._areStatesEquivalent(this.state,e)||(this.state=e)}_updateURIFromState(e=this.normalizedState){if(this.disabled||this.#o)return;const a=this.router;if(!t.Utils.isNull(a)){const o=this._currentBasePath(),n=t.Utils.URIs.parseQuery(a.state.$hash||"{}"),i=e||{};if(!this._areStatesEquivalent(n,i)){const e=this._cleanupStateForURI(i);var s=o;t.Utils.isNullOrEmpty(e)||(s=t.Utils.URIs.appendQuery(o,e,!1,!0)),a.path=s}}}_areSubstantiallyEquivalent(e,a){return e??="",a??="",e.toString()==a.toString()||t.Utils.areSemanticallyEqual(e,a)||JSON.stringify(e)===JSON.stringify(a)}_cleanupStateForURI(e=this.state){const a=t.Utils.clone(e||{}),s=this.default;for(let e in a)(t.Utils.isNullOrEmpty(a[e])&&(t.Utils.isNull(s)||!(e in s))||!t.Utils.isNull(s)&&e in s&&this._areSubstantiallyEquivalent(s[e],a[e]))&&delete a[e];return a}_normalizeState(e=this.state,a=this.default){var s={};const o=a;for(let a in e||{}){const n=e[a];if(t.Utils.isNullOrEmpty(n))t.Utils.isNull(o)||!(a in o)||t.Utils.isNullOrEmpty(o[a])||(s[a]="");else switch(typeof n){case"number":case"bigint":case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:n.toString()});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:n});break;default:if(t.Utils.Dates.isDate(n))Object.defineProperty(s,a,{enumerable:!0,value:n.toISOString()});else{if(!(n instanceof RegExp))throw new Error("Type not supported to be normalized into a URI hash.");Object.defineProperty(s,a,{enumerable:!0,value:n.source})}}}return s}_denormalizeState(e=this.normalizedState,a=this.default){const s={},o=a||{};for(let a in e){if(!(a in o)){s[a]=e[a];continue}const n=o[a],i=e[a];switch(typeof n){case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:t.PropertyConverters.Boolean.convert(i)});break;case"number":case"bigint":Object.defineProperty(s,a,{enumerable:!0,value:t.PropertyConverters.Number.convert(i)});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:t.PropertyConverters.String.convert(i)});break;default:n instanceof Date?Object.defineProperty(s,a,{enumerable:!0,value:t.PropertyConverters.Date.convert(i)}):n instanceof RegExp?Object.defineProperty(s,a,{enumerable:!0,value:new RegExp(i,n.flags)}):Object.defineProperty(s,a,{enumerable:!0,value:i})}}return s}set(e,a){var s={};"string"==typeof e?Object.defineProperty(s,e,{enumerable:!0,value:a}):s=e,this.state=t.Utils.extend({},this.state||{},s)}};R([t.Watch({emit:!1,converter:t.PropertyConverters.Element})],I.prototype,"router",void 0),R([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],I.prototype,"default",void 0),R([t.Watch()],I.prototype,"state",void 0),R([t.Watch()],I.prototype,"normalizedState",void 0),I=R([t.CustomElement({tagName:t.P+"-router-hash-state"})],I);var B=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};let H=class PacemRouterViewScrollElement extends t.PacemEventTarget{constructor(){super(...arguments),this._prerenderHandler=e=>{t.Utils.scrollTo(0,!1)},this._renderHandler=e=>{const a=this.router?.state;if(a.$scrollY>0){const e="instant"!=this.scrollBehavior;t.Utils.scrollTo(a.$scrollY,e)}}}viewActivatedCallback(){super.viewActivatedCallback(),this._setupRouter(),this._setupView()}propertyChangedCallback(e,a,s,o){if(super.propertyChangedCallback(e,a,s,o),!o)switch(e){case"router":t.Utils.isNull(a)||this._disposeRouter(a),t.Utils.isNull(s)||this._setupRouter(s);break;case"view":t.Utils.isNull(a)||this._disposeView(a),t.Utils.isNull(s)||this._setupView(s)}}disconnectedCallback(){this._disposeRouter(),this._disposeView(),super.disconnectedCallback()}_setupRouter(e=this.router){t.Utils.isNull(e)||(e.scrollRestoration=!0)}_disposeRouter(e=this.router){}_setupView(e=this.view){t.Utils.isNull(e)||(e.addEventListener("prerender",this._prerenderHandler,!1),e.addEventListener("render",this._renderHandler,!1))}_disposeView(e=this.view){t.Utils.isNull(e)||(e.removeEventListener("prerender",this._prerenderHandler),e.removeEventListener("render",this._renderHandler))}};B([t.Watch({converter:t.PropertyConverters.Element,emit:!1})],H.prototype,"router",void 0),B([t.Watch({converter:t.PropertyConverters.Element,emit:!1})],H.prototype,"view",void 0),B([t.Watch({converter:t.PropertyConverters.String,emit:!1})],H.prototype,"scrollBehavior",void 0),H=B([t.CustomElement({tagName:t.P+"-router-view-scroll"})],H);var O=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};let W=class PacemSearchElement extends t.Components.PacemElement{constructor(){super(...arguments),this.hintParameter="q"}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),"hint"===e){let e={};e[this.hintParameter]=a,this._fetcher.parameters=e}}};O([t.ViewChild(t.P+"-fetch")],W.prototype,"_fetcher",void 0),O([t.Watch()],W.prototype,"datasource",void 0),O([t.Watch({converter:t.PropertyConverters.String})],W.prototype,"hint",void 0),O([t.Watch({converter:t.PropertyConverters.String})],W.prototype,"url",void 0),O([t.Watch({converter:t.PropertyConverters.String})],W.prototype,"method",void 0),O([t.Watch({emit:!1,converter:t.PropertyConverters.String})],W.prototype,"hintParameter",void 0),W=O([t.CustomElement({tagName:t.P+"-search",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-fetch debounce="800" url="{{ :host.url }}" method="{{ :host.method }}">\n</${t.P}-fetch><${t.P}-input-search value="{{ :host.hint, twoway }}"></${t.P}-input-search>\n<${t.P}-repeater datasource="{{ ::_fetch.result }}">\n <${t.P}-content></${t.P}-content>\n</${t.P}-repeater>`})],W);var D=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const T="datarowselectchange";class DataRowSelectChangeEvent extends CustomEvent{constructor(e){super(T,{detail:e,bubbles:!1,cancelable:!0})}}const L={},M=[];let A=class PacemDataCellElement extends PacemBaseCellElement{updateLayout(e=this.metadata){this._setup(e)}connectedCallback(){super.connectedCallback(),t.Utils.addClass(this,t.PCSS+"-datacell")}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"_contentTooltip":this._updateTooltipJustInCase();break;case"gridState":case"rowindex":this._updateSelection()}}_updateTooltipJustInCase(){(this.metadata.dataCell?.autoTooltip??!0)&&!t.Utils.isNullOrEmpty(this._contentTooltip)?this.setAttribute("tooltip",this._contentTooltip):this.removeAttribute("tooltip")}_inflateContent(e=this.dataitem,a=this.rowindex,s=this.metadata){this._contentTooltip="";let o=s.dataCell?.format;const n=s.dataCell?.null??"";if("function"==typeof o){const i=o(this,s,e,a);return t.Utils.isNullOrEmpty(i)?n:i}const i=t.CustomElementUtils.resolvePath(s.prop,e)?.target,r=i?.value;if(t.Utils.isNullOrEmpty(r))return n;const l=t.Utils.lang(this);switch(s.dataType){case"boolean":return`<${t.P}-icon icon="${r?"check_circle_outline icon-fill":"radio_button_unchecked icon-outline"} icon-size icon-size-2"></${t.P}-icon>`;case"time":case"date":case"datetime":return this._contentTooltip=t.Utils.core.date(r,o,l);case"byte":case"int16":case"int32":case"int64":case"short":case"integer":case"int":case"long":case"double":case"decimal":case"float":case"single":case"number":return this._contentTooltip=t.Utils.core.number(r,o||"",l);case"currency":return o??="EUR",this._contentTooltip="string"==typeof o?t.Utils.core.currency(r,o,l):t.Utils.core.number(r,o,l);case"percent":case"percentage":return o??={style:"percent",maximumFractionDigits:2},this._contentTooltip="string"==typeof o?t.Utils.core.currency(r,o,l):t.Utils.core.number(r,o,l);default:return this._contentTooltip=r}}_inflateCssClass(e=this.dataitem,a=this.rowindex,s=this.metadata,o){if(t.Utils.isNull(e)||t.Utils.isNullOrEmpty(s))return M;const n=s.dataCell&&s.dataCell.cssClass||M,i=[];switch("function"==typeof n?Array.prototype.push.apply(i,n(this,s,e,a)||[]):Array.prototype.push.apply(i,n),s.dataCell?.verticalAlign?.toLowerCase()){case"top":i.push("datacell-top");break;case"bottom":i.push("datacell-bottom");break;case"middle":i.push("datacell-middle")}switch(s.dataCell?.horizontalAlign?.toLowerCase()){case"left":i.push("datacell-left");break;case"right":i.push("datacell-right");break;case"center":i.push("datacell-center")}return o?.length&&(0===a&&i.push("datacell-firstrow"),a===o.length-1&&i.push("datacell-lastrow")),i}_inflateCss(e=this.dataitem,a=this.rowindex,s=this.metadata){if(t.Utils.isNull(e)||t.Utils.isNullOrEmpty(s))return L;const o=s.dataCell&&s.dataCell.css||L;return"function"==typeof o?o(this,s,e,a):o}_setup(e=this.metadata){this.setAttribute("css-class","{{ this._inflateCssClass(^item, ^index, this.metadata, :host.datasource) }}"),this.setAttribute("css","{{ Pacem.Utils.extend({ 'grid-row': ^index+2 }, this._inflateCss(^item, ^index, this.metadata, :host.datasource)) }}");const a=!!e.dataCell?.textEllipsis?["text-truncate"]:[],s=e?.dataCell?.selectMode?.toLowerCase();switch(s){case"cell":case"row":a.push(t.PCSS+"-inert"),a.push(t.PCSS+"-unselect")}this._content.cssClass=a,this._updateSelection()}_updateSelection(){(this.gridState?.selectedRows??[]).indexOf(this.rowindex)>=0?t.Utils.addClass(this,"datarow-selected datacell-filled datacell-primary"):t.Utils.removeClass(this,"datarow-selected datacell-filled datacell-primary")}};D([t.Watch({emit:!1,converter:t.PropertyConverters.Eval})],A.prototype,"dataitem",void 0),D([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],A.prototype,"rowindex",void 0),D([t.Watch({emit:!1,converter:t.PropertyConverters.String,debounce:200})],A.prototype,"_contentTooltip",void 0),D([t.ViewChild(t.P+"-span")],A.prototype,"_content",void 0),A=D([t.CustomElement({tagName:t.P+"-datacell",shadow:!1,template:`<${t.P}-span content="{{ :host._inflateContent(^item, ^index, :host.metadata) }}"></${t.P}-span>`})],A);var j=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const z=a.Components.UI,V="datacolumnsort";class DataColumnSortEvent extends CustomEvent{constructor(e){super(V,{detail:e,bubbles:!1,cancelable:!0})}}const F="datacolumnrescale";class DataColumnRescaleEvent extends CustomEvent{constructor(e){super(F,{detail:e,bubbles:!1,cancelable:!0})}}let G=class PacemHeadCellElement extends PacemBaseCellElement{constructor(e=new z.MarkdownService){super(),this._md=e,this._sortButtonClickHandler=e=>{const t=this.metadata,a=this.gridState,s=t.prop,o=a.sort?.column===s?"desc"===a.sort.dir?"asc":"desc":t.defaultSort||"asc";this.dispatchEvent(new DataColumnSortEvent({column:s,dir:o}))},this._rescaleHandler=e=>{e.preventDefault();const t=e.detail,a=Math.max(this.metadata.minPixelWidth??24,t.currentPosition.x-this._columnBBox.x);this.dispatchEvent(new DataColumnRescaleEvent({width:a}))},this._rescaleStartHandler=e=>{this._columnBBox=t.Utils.offsetRect(this)},this._rescaleEndHandler=e=>{}}connectedCallback(){super.connectedCallback(),t.Utils.addClass(this,t.PCSS+"-headcell")}propertyChangedCallback(e,t,a,s){super.propertyChangedCallback(e,t,a,s),s||"gridState"!==e||this._updateSortButtonIconGlyph()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureBalloon()}disconnectedCallback(){this._disposeBalloon(),this._disposeRescaler(),super.disconnectedCallback()}updateLayout(e=this.metadata){this._setup(e)}_setupSortButton(){const e=new z.PacemButtonElement;return e.className=`button-flat headcell-sort ${t.PCSS}-inert`,this.addEventListener("click",this._sortButtonClickHandler,!1),t.Utils.addClass(this,t.PCSS+"-clickable"),e}_disposeSortButton(e=this._sortButton){t.Utils.isNull(e)||(t.Utils.removeClass(this,t.PCSS+"-clickable"),this.removeEventListener("click",this._sortButtonClickHandler,!1),e.remove(),this._sortButton=null)}_updateSortButtonIconGlyph(e=this._sortButton,a=this.gridState,s=this.metadata){t.Utils.isNull(e)||t.Utils.isNullOrEmpty(s)||(e.iconGlyph=a?.sort?.column===s.prop?"desc"===a.sort.dir?"arrow_drop_down":"arrow_drop_up":"")}_ensureRescaler(){if(t.Utils.isNull(this._rescaler)){const e=this._rescaler=this._rescaler||new t.Components.PacemRescaleElement;e.handles=[t.UI.RescaleHandle.Right],e.addEventListener(t.UI.RescaleEventType.Rescale,this._rescaleHandler,!1),e.addEventListener(t.UI.RescaleEventType.Start,this._rescaleStartHandler,!1),e.addEventListener(t.UI.RescaleEventType.End,this._rescaleEndHandler,!1),t.CustomElementUtils.findAncestorShell(this).appendChild(e)}}_setupRescaleContainer(){this._ensureRescaler();const e=new t.Components.PacemPanelElement;return e.className="headcell-rescale",e.behaviors=[this._rescaler],e}_disposeRescaleContainer(e=this._rescaleContainer){t.Utils.isNull(e)||(e.remove(),this._rescaleContainer=null)}_disposeRescaler(e=this._rescaler){t.Utils.isNull(e)||(e.removeEventListener(t.UI.RescaleEventType.Rescale,this._rescaleHandler,!1),e.removeEventListener(t.UI.RescaleEventType.Start,this._rescaleStartHandler,!1),e.removeEventListener(t.UI.RescaleEventType.End,this._rescaleEndHandler,!1),e.remove(),this._rescaler=null)}_setup(e=this.metadata){this.setAttribute("css-class","{{ this.metadata && this.metadata.headCell && this.metadata.headCell.cssClass || [] }}"),this.setAttribute("css","{{ this.metadata && this.metadata.headCell && this.metadata.headCell.css }}");const a=!!e.headCell?.textEllipsis?["text-truncate"]:[];switch(e.headCell?.verticalAlign?.toLowerCase()){case"top":t.Utils.addClass(this,"headcell-top");break;case"bottom":t.Utils.addClass(this,"headcell-bottom");break;case"middle":t.Utils.addClass(this,"headcell-middle")}switch(e.headCell?.horizontalAlign?.toLowerCase()){case"left":a.push("text-left");break;case"right":a.push("text-right");break;case"center":a.push("text-center")}this.removeAttribute("content");const s=t.Utils.isNullOrEmpty(a)?"":` class="${a.join(" ")}"`,o=e.headCell?.name??e.prop;if(this.innerHTML=`<div${s}>${o}</div>`,e.isSortable){this._disposeSortButton();const e=this._sortButton=this._setupSortButton();this._updateSortButtonIconGlyph(e),this.appendChild(e)}if(e.isRescalable){this._disposeRescaleContainer();const e=this._rescaleContainer=this._setupRescaleContainer();this.appendChild(e)}e.isTogglable}_normalizeTooltip(){const e=this.metadata.headCell?.tooltip||!1;return"object"==typeof e?e:{type:e}}_ensureBalloon(){var e,a;const s=!1===(a=this._normalizeTooltip()).type||t.Utils.isNullOrEmpty(e=this.metadata.headCell?.description);if(t.Utils.isNull(this._balloon)&&!s){let e=new z.PacemBalloonElement;e.options={behavior:z.BalloonBehavior.Tooltip,trigger:a.trigger||z.BalloonTrigger.Hover,position:a.position||z.BalloonPosition.Top,hoverDelay:200,hoverTimeout:50,align:a.align||z.BalloonAlignment.Auto},t.Utils.addClass(e,t.PCSS+"-headcell-tooltip"),t.CustomElementUtils.findAncestorShell(this).appendChild(this._balloon=e)}const o=this._balloon;if(!(t.Utils.isNull(o)||(o.target=this,o.disabled=s))){const t=e||"";switch(a.type){case"md":case"markdown":o.innerHTML=this._md.toHtml(t);break;case"html":o.innerHTML=t;break;default:o.innerText=t}}}_disposeBalloon(){t.Utils.isNull(this._balloon)||(this._balloon.remove(),this._balloon=null)}};G=j([t.CustomElement({tagName:t.P+"-headcell"})],G);var q=function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};const J="datacolumnchange",K="datacolumnstatechange",Q={selectCaption:"Details",editCaption:"Edit",editIcon:"edit",deleteCaption:"Delete",deleteIcon:"delete"};class DataGridBindEvent extends CustomEvent{constructor(e){super("databind",{cancelable:!1,bubbles:!1,detail:e})}}class DataCellUIEvent extends t.CustomUIEvent{constructor(e,t,a){super(e,t,{bubbles:!1,cancelable:!0},a)}}let Y=class PacemDataColumnElement extends t.Components.PacemItemElement{propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"field":case"headcellCss":case"headcellCssClass":case"datacellCss":case"datacellCssClass":case"resizable":case"togglable":case"sortable":case"label":this.dispatchEvent(new Event(J));break;case"order":case"hide":this.dispatchEvent(new Event(K))}}};function X(e){return`<${t.P}-headcell metadata="{{ :host._getColumnMetadata('${e.prop}') }}" state="{{ :host._columnState.${e.prop} }}" grid-state="{{ :host._gridState }}"\non-${V}=":host._broadcastSortCommand($event)"\non-${F}=":host._broadcastRescaleCommand($event)"></${t.P}-headcell>`}function Z(e,a){return`<${t.P}-datacell metadata="{{ :host._getColumnMetadata('${e.prop}') }}" state="{{ :host._columnState.${e.prop} }}" grid-state="{{ :host._gridState }}"\ndataitem="{{ ^item }}" rowindex="{{ ^index }}" ${a}></${t.P}-datacell>`}q([t.Watch({emit:!1,converter:t.PropertyConverters.String})],Y.prototype,"field",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.String})],Y.prototype,"label",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],Y.prototype,"resizable",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],Y.prototype,"togglable",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],Y.prototype,"sortable",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],Y.prototype,"order",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],Y.prototype,"format",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],Y.prototype,"headcellCss",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],Y.prototype,"headcellCssClass",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],Y.prototype,"datacellCss",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],Y.prototype,"datacellCssClass",void 0),Y=q([t.CustomElement({tagName:t.P+"-datacolumn"})],Y);let ee=class PacemDataGridElement extends t.Components.PacemItemsContainerElement{constructor(e=t.Utils.uniqueCode()){super(),this._key=e,this.state={},this._columnState={},this._gridState={sort:{},orderedColumns:[],selectedRows:[]},this._itemDataColumnRebuildHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._itemDataColumnChangeHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._memoizer={}}validate(e){return e instanceof Y}viewActivatedCallback(){super.viewActivatedCallback(),this.addEventListener(t.CommandEventName,this._onCommand,!1),this._adaptColumnMetadata();const e=this._adaptedColumnMetadata||[];this._buildUpGrid(e)}disconnectedCallback(){this.removeEventListener(t.CommandEventName,this._onCommand,!1),super.disconnectedCallback()}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"items":case"metadata":this._adaptColumnMetadata();break;case"_adaptedColumnMetadata":this._buildUpGrid(a);break;case"datasource":const e={keepRowSelection:!1,datasource:a},t=new DataGridBindEvent(e);this.dispatchEvent(t),e.keepRowSelection||this._setRowSelection();break;case"state":this._mergeState(a)}}register(e){return!!super.register(e)&&(e.addEventListener(J,this._itemDataColumnRebuildHandler,!1),e.addEventListener(K,this._itemDataColumnChangeHandler,!1),!0)}unregister(e){return!!super.unregister(e)&&(e.removeEventListener(J,this._itemDataColumnRebuildHandler,!1),e.removeEventListener(K,this._itemDataColumnChangeHandler,!1),!0)}setRowSelection(...e){const t=Array.from(e);this._setRowSelection(t)}_setRowSelection(e){const a=(e||[]).map(e=>({item:this.datasource[e],index:e})),s=new DataRowSelectChangeEvent({selectedRows:a});if(this.dispatchEvent(s),!s.defaultPrevented){let e=s.detail.selectedRows;t.Utils.isArray(e)||(e=[]),this._doSetRowSelection(e.map(e=>e?.index??-1).filter(e=>e>=0))}}_doSetRowSelection(e){const t={selectedRows:e};this._mergeState(t)}_mergeState(e=this.state){e??={};const a={selectedRows:(e.selectedRows||[]).map(e=>"number"==typeof e?e:e.index)},s=this._gridState=t.Utils.extend({},this._gridState,e,a);this.state=t.Utils.extend(this.state??{},s)}_adaptColumnMetadata(e=this.items,t=this.metadata){const a=Array.prototype.concat.apply((e||[]).map(e=>({prop:e.field,headCell:{name:e.label,cssClass:e.headcellCssClass||[],css:e.headcellCss||{}},dataCell:{format:e.format,cssClass:e.datacellCssClass||[],css:e.datacellCss||{}},hide:e.hide,isRescalable:e.resizable,isSortable:e.sortable,isTogglable:e.togglable,order:e.order,width:1})),t||[]);this._memoizer={},this._adaptedColumnMetadata=a}_getColumnMetadata(e){return this._memoizer[e]=this._memoizer[e]||this._adaptedColumnMetadata.find(t=>t.prop===e)}_buildUpGrid(e){const a=this._tableContainer;if(t.Utils.isNull(a))return;if(t.Utils.isNullOrEmpty(e))return void(a.innerHTML="");const s=this.options=t.Utils.extend({},Q,this.options||{}),o=s.allowDelete||s.allowEdit||s.allowSelect,n=s.allowMultiSelect&&o;let i=n?"auto ":"",r=n?`<div class="${t.PCSS}-headcell"></div>`:"",l=n?`<${t.P}-panel class="${t.PCSS}-datacell" style="grid-column: 1;" css="{{ {'grid-row': ^index+2} }}"></${t.P}-panel>`:"",c=n?`<div class="${t.PCSS}-footcell"></div>`:"";const d=n?e.length+2:o?e.length+1:e.length;this._gridState.orderedColumns=e.sort((e,t)=>(e.order??0)-(t.order??0)).map(e=>e.prop);let h="";for(let e of t.Components.PacemElement.emittedEventTypes)h+=` on-${e}=":host._broadcastUiEvent(^item, ^index, $event)"`;for(let t of e)this._columnState[t.prop]={hidden:t.hide},i+=this._getColumnSize(t).replaceAll(" ","")+" ",r+=X(t),l+=Z(t,h);l+=`<${t.P}-panel class="${t.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 ${d};" css="{{ {'grid-row': ^index+2} }}"></${t.P}-panel>`;const p=`<${t.P}-repeater datasource="{{ :host.datasource }}">\n<${t.P}-panel class="${t.PCSS}-datatable" css="{{ {'grid-template-columns': :host._getColumnSizes(:host._columnState, '${i.trimEnd()}', :host._gridState) } }}">\n ${r}\n <template>\n ${l}\n </template>\n ${c}\n</${t.P}-panel>`;a.innerHTML=p}_getColumnSizes(e=this._columnState,a,s=this._gridState){if(t.Utils.isNullOrEmpty(e))return a;const o=a.split(" ");for(let t in e){const a=e[t],n=s.orderedColumns.indexOf(t);a.hidden?o[n]="auto":a.pixelWidth>0&&(o[n]=a.pixelWidth+"px")}return o.join(" ")}_getColumnSize(e){if(e.hide)return"auto";const t=e.minPixelWidth,a=e.maxPixelWidth;if(a>0&&t>0)return`minmax(${t}px, ${a}px)`;{const s="number"==typeof e.width?e.width+"fr":"auto";return t>0?`minmax(${t}px, ${s})`:a>0?`minmax(${s}, ${a}px)`:s}}_onCommand(e){this.dispatchEvent(new t.Components.ItemCommandEvent(e)),this.dispatchEvent(new t.Components.CustomItemCommandEvent(e))}_broadcastUiEvent(e,t,a){const s=a.type.toLowerCase(),o="datacell"+s,n={dataitem:e,rowindex:t,datacell:a.srcElement},i=a instanceof MouseEvent||a instanceof TouchEvent||a instanceof KeyboardEvent?new DataCellUIEvent(o,n,a):new DataCellUIEvent(o,n);if(this.dispatchEvent(i),"click"===s&&!i.defaultPrevented){const e=i.detail.datacell,t=e.metadata?.dataCell?.selectMode?.toLowerCase();switch(t){case"cell":break;case"row":this._broadcastSelectCommand(i.detail.rowindex)}}}_broadcastSortCommand(e){const a=e.detail,s=new DataColumnSortEvent(a);if(this.dispatchEvent(s),!s.defaultPrevented){const e={column:""};"string"==typeof s.detail.column&&(e.column=s.detail.column),"string"==typeof s.detail.dir&&(e.dir="desc"===s.detail.dir?"desc":"asc"),this._gridState=t.Utils.extend({},this._gridState,{sort:e})}}_broadcastRescaleCommand(e){const a=e.detail,s=new DataColumnRescaleEvent(a);if(this.dispatchEvent(s),!s.defaultPrevented){let o=a.width;"number"==typeof s.detail.width&&s.detail.width>0&&(o=s.detail.width);const n={};n[e.srcElement.metadata.prop]={pixelWidth:o},this._columnState=t.Utils.extend({},this._columnState,n)}}_broadcastSelectCommand(e){let a=(this._gridState.selectedRows||[]).slice(0);const s=a.indexOf(e);let o=!0;if(s>=0)a.splice(s,1);else{const s=this.options;if(s.allowMultiSelect)a.push(e);else if(s.allowSelect)a=[e];else{o=!1;const a=`Cannot select the row at index ${e} since datagrid options do not allow any row selection.`;t.Utils.isNull(this.logger)?console.warn(a):this.log(t.Logging.LogLevel.Warn,a)}}o&&this._setRowSelection(a)}};q([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],ee.prototype,"metadata",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],ee.prototype,"options",void 0),q([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],ee.prototype,"state",void 0),q([t.Watch({emit:!0,converter:t.PropertyConverters.Json})],ee.prototype,"datasource",void 0),q([t.ViewChild("."+t.PCSS+"-datagrid")],ee.prototype,"_tableContainer",void 0),q([t.Watch()],ee.prototype,"_adaptedColumnMetadata",void 0),q([t.Watch()],ee.prototype,"_columnState",void 0),q([t.Watch()],ee.prototype,"_gridState",void 0),q([t.Debounce()],ee.prototype,"_adaptColumnMetadata",null),ee=q([t.CustomElement({tagName:t.P+"-datagrid",shadow:!1,template:`<div class="${t.PCSS}-datagrid"></div><${t.P}-content></${t.P}-content>`})],ee);var te=Object.freeze({__proto__:null,DataCellUIEvent:DataCellUIEvent,DataColumnRescaleEvent:DataColumnRescaleEvent,DataColumnRescaleEventName:F,DataColumnSortEvent:DataColumnSortEvent,DataColumnSortEventName:V,DataGridBindEvent:DataGridBindEvent,DataRowSelectChangeEvent:DataRowSelectChangeEvent,DataRowSelectChangeEventName:T,get EditMode(){return f},PacemBaseCellElement:PacemBaseCellElement,get PacemCarouselElement(){return h},get PacemContextMenuElement(){return C},get PacemContextMenuItemCommandElement(){return u},PacemContextMenuItemElement:PacemContextMenuItemElement,get PacemContextMenuItemSeparatorElement(){return v},get PacemDataCellElement(){return A},get PacemDataColumnElement(){return Y},get PacemDataGridElement(){return ee},get PacemEditElement(){return b},get PacemGalleryElement(){return x},get PacemHeadCellElement(){return G},get PacemModalFormElement(){return N},get PacemRouterHashStateElement(){return I},get PacemRouterViewScrollElement(){return H},get PacemSearchElement(){return W}}),ae=Object.freeze({__proto__:null,Plus:te}),se=Object.freeze({__proto__:null,Components:ae,Plus:l});e.DeepMerger.merge(se)}(Pacem,Pacem,Pacem,Pacem);
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pacem/pacem v1.0.4 (https://js.pacem.it)
2
+ * @pacem/pacem v1.0.5-bartels (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pacem/pacem v1.0.4 (https://js.pacem.it)
2
+ * @pacem/pacem v1.0.5-bartels (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @pacem/pacem v1.0.4 (https://js.pacem.it)
2
+ * @pacem/pacem v1.0.5-bartels (https://js.pacem.it)
3
3
  * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -2231,6 +2231,12 @@
2231
2231
  if (ev.type === 'click' && !pacemCore.Utils.isNullOrEmpty(this.commandName)) {
2232
2232
  this.dispatchEvent(new pacemCore.CommandEvent({ commandName: this.commandName, commandArgument: this.commandArgument }));
2233
2233
  }
2234
+ /*
2235
+ TODO: make this component shadowed and include a real <button> as the part holding the actual content (<slot>).
2236
+ When events like 'mousedown', 'mouseup', get fired => check for the <button> element.matchs(':active') and apply relevant css
2237
+
2238
+ Share the behavior with PacemAnchorElement.
2239
+ */
2234
2240
  switch (ev.type) {
2235
2241
  case 'mousedown':
2236
2242
  if (evt.button === 0) {