@pacem/pacem 1.0.0-abel → 1.0.0-amaldi

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 (66) hide show
  1. package/dist/browser/pacem-2d.js +3 -3
  2. package/dist/browser/pacem-2d.js.map +0 -5
  3. package/dist/browser/pacem-2d.min.js +3 -3
  4. package/dist/browser/pacem-2d.min.js.map +0 -5
  5. package/dist/browser/pacem-3d.js +341 -341
  6. package/dist/browser/pacem-3d.js.map +1 -6
  7. package/dist/browser/pacem-3d.min.js +3 -3
  8. package/dist/browser/pacem-3d.min.js.map +1 -6
  9. package/dist/browser/pacem-charts.js +3 -3
  10. package/dist/browser/pacem-charts.js.map +0 -5
  11. package/dist/browser/pacem-charts.min.js +3 -3
  12. package/dist/browser/pacem-charts.min.js.map +0 -5
  13. package/dist/browser/pacem-cms.js +107 -107
  14. package/dist/browser/pacem-cms.js.map +1 -6
  15. package/dist/browser/pacem-cms.min.js +3 -3
  16. package/dist/browser/pacem-cms.min.js.map +1 -6
  17. package/dist/browser/pacem-core.js +21 -7
  18. package/dist/browser/pacem-core.js.map +1 -6
  19. package/dist/browser/pacem-core.min.js +4 -4
  20. package/dist/browser/pacem-core.min.js.map +1 -6
  21. package/dist/browser/pacem-foundation.js +3 -3
  22. package/dist/browser/pacem-foundation.js.map +0 -5
  23. package/dist/browser/pacem-foundation.min.js +3 -3
  24. package/dist/browser/pacem-foundation.min.js.map +0 -5
  25. package/dist/browser/pacem-fx.js +19 -19
  26. package/dist/browser/pacem-fx.js.map +1 -6
  27. package/dist/browser/pacem-fx.min.js +3 -3
  28. package/dist/browser/pacem-fx.min.js.map +1 -6
  29. package/dist/browser/pacem-logging.js +3 -3
  30. package/dist/browser/pacem-logging.js.map +0 -5
  31. package/dist/browser/pacem-logging.min.js +3 -3
  32. package/dist/browser/pacem-logging.min.js.map +0 -5
  33. package/dist/browser/pacem-maps.js +3 -3
  34. package/dist/browser/pacem-maps.js.map +0 -5
  35. package/dist/browser/pacem-maps.min.js +3 -3
  36. package/dist/browser/pacem-maps.min.js.map +0 -5
  37. package/dist/browser/pacem-media.js +3 -3
  38. package/dist/browser/pacem-media.js.map +0 -5
  39. package/dist/browser/pacem-media.min.js +3 -3
  40. package/dist/browser/pacem-media.min.js.map +0 -5
  41. package/dist/browser/pacem-networking.js +3 -3
  42. package/dist/browser/pacem-networking.js.map +0 -5
  43. package/dist/browser/pacem-networking.min.js +3 -3
  44. package/dist/browser/pacem-networking.min.js.map +0 -5
  45. package/dist/browser/pacem-numerical.js +3 -3
  46. package/dist/browser/pacem-numerical.js.map +0 -5
  47. package/dist/browser/pacem-numerical.min.js +3 -3
  48. package/dist/browser/pacem-numerical.min.js.map +0 -5
  49. package/dist/browser/pacem-plus.js +77 -77
  50. package/dist/browser/pacem-plus.js.map +1 -6
  51. package/dist/browser/pacem-plus.min.js +3 -3
  52. package/dist/browser/pacem-plus.min.js.map +1 -6
  53. package/dist/browser/pacem-scaffolding.js +11 -8
  54. package/dist/browser/pacem-scaffolding.js.map +1 -6
  55. package/dist/browser/pacem-scaffolding.min.js +4 -4
  56. package/dist/browser/pacem-scaffolding.min.js.map +1 -6
  57. package/dist/browser/pacem-ui.js +37 -26
  58. package/dist/browser/pacem-ui.js.map +1 -6
  59. package/dist/browser/pacem-ui.min.js +4 -4
  60. package/dist/browser/pacem-ui.min.js.map +1 -6
  61. package/dist/bundle/pacem.min.mjs +40 -38
  62. package/dist/bundle/pacem.mjs +58 -32
  63. package/dist/bundle/pacem.mjs.map +2 -7
  64. package/dist/typings/index.d.ts +5 -3
  65. package/dist/vscode.html-custom.json +4834 -0
  66. package/package.json +9 -8
@@ -1,6 +1,6 @@
1
- /**
2
- * @pacem/pacem v1.0.0-abel (https://js.pacem.it)
3
- * Copyright 2026 Pacem (https://pacem.it)
1
+ /*!
2
+ * @pacem/pacem v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
6
  !function(e,t,a,s){"use strict";var o=function(e,t,a,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(n=(i<3?o(n):i>3?o(t,a,n):o(t,a))||n);return i>3&&n&&Object.defineProperty(t,a,n),n};class i 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})],i.prototype,"metadata",void 0),o([t.Watch({converter:t.PropertyConverters.Json})],i.prototype,"state",void 0),o([t.Watch({converter:t.PropertyConverters.Json})],i.prototype,"gridState",void 0);var n=function(e,t,a,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(n=(i<3?o(n):i>3?o(t,a,n):o(t,a))||n);return i>3&&n&&Object.defineProperty(t,a,n),n};const r={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 l{static localizeMetadata(e,a,s){s=t.Utils.extend({},r,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")],l,"localizeMetadata",null);var c=Object.freeze({__proto__:null,DataGrids:l}),d=Object.freeze({__proto__:null,L10n:c,PacemBaseCellElement:i}),h=function(e,t,a,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(n=(i<3?o(n):i>3?o(t,a,n):o(t,a))||n);return i>3&&n&&Object.defineProperty(t,a,n),n};const p=a.Components.UI;let m=class extends p.PacemAdaptedIterativeElement{constructor(){super(...arguments),this.interval=4e3}};h([t.ViewChild(t.P+"-adapter")],m.prototype,"adapter",void 0),h([t.ViewChild(t.P+"-slideshow")],m.prototype,"slideshow",void 0),h([t.Watch({converter:t.PropertyConverters.Number})],m.prototype,"interval",void 0),h([t.Watch({converter:t.PropertyConverters.Boolean})],m.prototype,"pausable",void 0),m=h([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>`})],m);var u=function(e,t,a,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(n=(i<3?o(n):i>3?o(t,a,n):o(t,a))||n);return i>3&&n&&Object.defineProperty(t,a,n),n};const v=a.Components.UI;class C 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 y&&o.refresh()}}let g=class extends C{createMenuItemElement(){const e=new v.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}};u([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],g.prototype,"commandName",void 0),u([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],g.prototype,"caption",void 0),u([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],g.prototype,"tooltip",void 0),u([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],g.prototype,"iconGlyph",void 0),u([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.StringArray})],g.prototype,"buttonCssClass",void 0),u([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],g.prototype,"confirmationMessage",void 0),u([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Element})],g.prototype,"confirmationDialog",void 0),u([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Json})],g.prototype,"commandArgument",void 0),g=u([t.CustomElement({tagName:t.P+"-context-menuitem-command"})],g);let _=class extends C{createMenuItemElement(){const e=document.createElement("hr");return e.style.pointerEvents="none",e}};_=u([t.CustomElement({tagName:t.P+"-context-menuitem-separator"})],_);let y=class 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 C}#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 v.PacemButtonElement;s.setAttribute("slot","button"),s.className=`${t.PCSS}-margin margin-0 button-flat`;const o=this.#t=new v.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 v.PacemBalloonElement,e.options={trigger:v.BalloonTrigger.Click,position:v.BalloonPosition.HorizontalAuto,align:v.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)}};u([t.ViewChild("slot[name=button]")],y.prototype,"_slot",void 0),u([t.Watch({converter:t.PropertyConverters.Json})],y.prototype,"commandArgument",void 0),u([t.Watch({converter:t.PropertyConverters.String})],y.prototype,"icon",void 0),u([t.Debounce(!0)],y.prototype,"_refreshMenuItems",null),y=u([t.CustomElement({tagName:t.P+"-context-menu",shadow:!0,template:'<slot name="button"></slot><slot></slot>'})],y);var b=function(e,t,a,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(n=(i<3?o(n):i>3?o(t,a,n):o(t,a))||n);return i>3&&n&&Object.defineProperty(t,a,n),n};const f=a.Components.UI,P=s.Components.Scaffolding;var S;!function(e){e.Text="text",e.Html="html",e.Image="image",e.Markdown="markdown"}(S||(S={}));let E=class extends t.Components.PacemElement{constructor(e=new f.MarkdownService){super(),this._markdown=e,this._dialogPropertyChangedHandler=e=>{this._dialogPropertyChangedCallback(e)},this._broadcastFetchRequestEventName=e=>{this.dispatchEvent(new P.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=f.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||S.Text;return e.hide=a!==S.Text&&a!==S.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||S.Text;return e.hide=a!==S.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(P.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1);const a=this.type||S.Text;return e.hide=a!==S.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(P.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1))}_update(e){var a=this._content;switch(this.type){case S.Html:a.innerHTML=e;break;case S.Markdown:if(a.localName===t.P+"-markdown")a.value=e;else a.innerHTML=this._markdown.toHtml(e);break;case S.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 S.Html:return e.innerHTML;case S.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 S.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!==S.Text&&e!==S.Markdown),t.Utils.isNull(this._contenteditable)||(this._contenteditable.hide=e!==S.Html),t.Utils.isNull(this._editImage)||(this._editImage.hide=e!==S.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 f.DialogButton.Cancel:this._update(this._state);break;case f.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()})}}};b([t.Watch({emit:!1,converter:t.PropertyConverters.String})],E.prototype,"key",void 0),b([t.Watch({converter:t.PropertyConverters.String})],E.prototype,"type",void 0),b([t.Watch({converter:t.PropertyConverters.Element})],E.prototype,"target",void 0),b([t.Watch({emit:!1,converter:t.PropertyConverters.String})],E.prototype,"imageUploadUrl",void 0),b([t.Watch({emit:!1})],E.prototype,"imageSet",void 0),b([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],E.prototype,"maxImageWidth",void 0),b([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],E.prototype,"maxImageHeight",void 0),b([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],E.prototype,"allowSnapshot",void 0),E=b([t.CustomElement({tagName:t.P+"-edit"})],E);var w=function(e,t,a,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(n=(i<3?o(n):i>3?o(t,a,n):o(t,a))||n);return i>3&&n&&Object.defineProperty(t,a,n),n};const x=a.Components.UI;function U(e=k(),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 k(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 $=class extends x.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=U(e.innerHTML,this.imageProperty),this._setupTemplate(o)}_setupTemplate(e){this._templateProxy.target=e}_setupDefaultTemplate(){const e=document.createElement("template");e.innerHTML=U(k(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 x.PacemImageElement,o=this._heroPlaceholderProxy.dom[0];const i=300;s.src=a||e.src,s.adapt="contain";let n=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=n.top+"px",l.left=n.left+"px";const d=e.clientWidth/o.clientWidth,h=e.clientHeight/o.clientHeight,p=r.left-n.left+"px",m=r.top-n.top+"px";l.transformOrigin="0 0",l.transition=`transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${i}ms, opacity ${i}ms`,l.transform=`translate(${p}, ${m}) scale(${d}, ${h})`,document.body.appendChild(s),requestAnimationFrame(()=>{s.style.transform=""}),await t.Utils.waitForAnimationEnd(s,i),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()})}};w([t.ViewChild(t.P+"-adapter")],$.prototype,"_adapter",void 0),w([t.ViewChild(t.P+"-lightbox")],$.prototype,"_lightbox",void 0),w([t.ViewChild(t.P+"-slideshow")],$.prototype,"_slideshow",void 0),w([t.ViewChild(t.P+"-repeater")],$.prototype,"_repeater",void 0),w([t.ViewChild(t.P+"-template-proxy")],$.prototype,"_templateProxy",void 0),w([t.ViewChild(t.P+"-shell-proxy")],$.prototype,"_heroPlaceholderProxy",void 0),w([t.Watch()],$.prototype,"_poppingUp",void 0),w([t.Watch({emit:!1,converter:t.PropertyConverters.Element})],$.prototype,"captionTemplate",void 0),w([t.Watch({emit:!1,converter:t.PropertyConverters.String})],$.prototype,"captionProperty",void 0),w([t.Watch({emit:!1,converter:t.PropertyConverters.String})],$.prototype,"imageProperty",void 0),$=w([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>`})],$);var N,R=function(e,t,a,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(n=(i<3?o(n):i>3?o(t,a,n):o(t,a))||n);return i>3&&n&&Object.defineProperty(t,a,n),n};const I=a.Components.UI;let H=N=class extends I.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(I.DialogButton.Ok,e):(t.avoidHandler(e),this._form.validate().then(a=>{a&&(t.Utils.isNullOrEmpty(this.action)?this.commit(I.DialogButton.Ok,e):this._form.submit(this._fetcher).then(t=>{this.commit(I.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 ${N} 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(I.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}}};R([t.Watch({converter:t.PropertyConverters.Boolean})],H.prototype,"suddenValidation",void 0),R([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],H.prototype,"okCaption",void 0),R([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],H.prototype,"cancelCaption",void 0),R([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],H.prototype,"method",void 0),R([t.Watch({converter:t.PropertyConverters.Json})],H.prototype,"metadata",void 0),R([t.Watch({converter:t.PropertyConverters.String})],H.prototype,"action",void 0),R([t.Watch({converter:t.PropertyConverters.String})],H.prototype,"loaderType",void 0),R([t.Watch({converter:t.PropertyConverters.Boolean})],H.prototype,"success",void 0),R([t.Watch({converter:t.PropertyConverters.Boolean})],H.prototype,"fail",void 0),R([t.Watch({converter:t.PropertyConverters.Boolean})],H.prototype,"readonly",void 0),R([t.Watch({converter:t.PropertyConverters.Json})],H.prototype,"fetchHeaders",void 0),R([t.Watch({converter:t.PropertyConverters.String})],H.prototype,"fetchCredentials",void 0),R([t.ViewChild(t.P+"-lightbox")],H.prototype,"lightbox",void 0),R([t.ViewChild(t.P+"-form[entity]")],H.prototype,"_form",void 0),R([t.ViewChild(t.P+"-fetch")],H.prototype,"_fetcher",void 0),H=N=R([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>`})],H);var O=function(e,t,a,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(n=(i<3?o(n):i>3?o(t,a,n):o(t,a))||n);return i>3&&n&&Object.defineProperty(t,a,n),n};let B=class 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(),i=t.Utils.URIs.parseQuery(a.state.$hash||"{}"),n=e||{};if(!this._areStatesEquivalent(i,n)){const e=this._cleanupStateForURI(n);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 i=e[a];if(t.Utils.isNullOrEmpty(i))t.Utils.isNull(o)||!(a in o)||t.Utils.isNullOrEmpty(o[a])||(s[a]="");else switch(typeof i){case"number":case"bigint":case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:i.toString()});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:i});break;default:if(t.Utils.Dates.isDate(i))Object.defineProperty(s,a,{enumerable:!0,value:i.toISOString()});else{if(!(i instanceof RegExp))throw new Error("Type not supported to be normalized into a URI hash.");Object.defineProperty(s,a,{enumerable:!0,value:i.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 i=o[a],n=e[a];switch(typeof i){case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:t.PropertyConverters.Boolean.convert(n)});break;case"number":case"bigint":Object.defineProperty(s,a,{enumerable:!0,value:t.PropertyConverters.Number.convert(n)});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:t.PropertyConverters.String.convert(n)});break;default:i instanceof Date?Object.defineProperty(s,a,{enumerable:!0,value:t.PropertyConverters.Date.convert(n)}):i instanceof RegExp?Object.defineProperty(s,a,{enumerable:!0,value:new RegExp(n,i.flags)}):Object.defineProperty(s,a,{enumerable:!0,value:n})}}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)}};O([t.Watch({emit:!1,converter:t.PropertyConverters.Element})],B.prototype,"router",void 0),O([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],B.prototype,"default",void 0),O([t.Watch()],B.prototype,"state",void 0),O([t.Watch()],B.prototype,"normalizedState",void 0),B=O([t.CustomElement({tagName:t.P+"-router-hash-state"})],B);var W=function(e,t,a,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(n=(i<3?o(n):i>3?o(t,a,n):o(t,a))||n);return i>3&&n&&Object.defineProperty(t,a,n),n};let T=class 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}}};W([t.ViewChild(t.P+"-fetch")],T.prototype,"_fetcher",void 0),W([t.Watch()],T.prototype,"datasource",void 0),W([t.Watch({converter:t.PropertyConverters.String})],T.prototype,"hint",void 0),W([t.Watch({converter:t.PropertyConverters.String})],T.prototype,"url",void 0),W([t.Watch({converter:t.PropertyConverters.String})],T.prototype,"method",void 0),W([t.Watch({emit:!1,converter:t.PropertyConverters.String})],T.prototype,"hintParameter",void 0),T=W([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>`})],T);var L=function(e,t,a,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(n=(i<3?o(n):i>3?o(t,a,n):o(t,a))||n);return i>3&&n&&Object.defineProperty(t,a,n),n};const D="datarowselectchange";class A extends CustomEvent{constructor(e){super(D,{detail:e,bubbles:!1,cancelable:!0})}}const M={},j=[];let z=class extends i{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 i=s.dataCell?.null??"";if("function"==typeof o){const n=o(this,s,e,a);return t.Utils.isNullOrEmpty(n)?i:n}const n=t.CustomElementUtils.resolvePath(s.prop,e)?.target,r=n?.value;if(t.Utils.isNullOrEmpty(r))return i;const l=t.Utils.lang(this);switch(s.dataType){case"boolean":return`<${t.P}-icon icon="material ${r?"check_circle_outline":"radio_button_unchecked"} text-big-steady"></${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 j;const i=s.dataCell&&s.dataCell.cssClass||j,n=[];switch("function"==typeof i?Array.prototype.push.apply(n,i(this,s,e,a)||[]):Array.prototype.push.apply(n,i),s.dataCell?.verticalAlign?.toLowerCase()){case"top":n.push("datacell-top");break;case"bottom":n.push("datacell-bottom");break;case"middle":n.push("datacell-middle")}switch(s.dataCell?.horizontalAlign?.toLowerCase()){case"left":n.push("datacell-left");break;case"right":n.push("datacell-right");break;case"center":n.push("datacell-center")}return o?.length&&(0===a&&n.push("datacell-firstrow"),a===o.length-1&&n.push("datacell-lastrow")),n}_inflateCss(e=this.dataitem,a=this.rowindex,s=this.metadata){if(t.Utils.isNull(e)||t.Utils.isNullOrEmpty(s))return M;const o=s.dataCell&&s.dataCell.css||M;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")}};L([t.Watch({emit:!1,converter:t.PropertyConverters.Eval})],z.prototype,"dataitem",void 0),L([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],z.prototype,"rowindex",void 0),L([t.Watch({emit:!1,converter:t.PropertyConverters.String,debounce:200})],z.prototype,"_contentTooltip",void 0),L([t.ViewChild(t.P+"-span")],z.prototype,"_content",void 0),z=L([t.CustomElement({tagName:t.P+"-datacell",shadow:!1,template:`<${t.P}-span content="{{ :host._inflateContent(^item, ^index, :host.metadata) }}"></${t.P}-span>`})],z);var V=function(e,t,a,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(n=(i<3?o(n):i>3?o(t,a,n):o(t,a))||n);return i>3&&n&&Object.defineProperty(t,a,n),n};const F=a.Components.UI,q="datacolumnsort";class J extends CustomEvent{constructor(e){super(q,{detail:e,bubbles:!1,cancelable:!0})}}const G="datacolumnrescale";class K extends CustomEvent{constructor(e){super(G,{detail:e,bubbles:!1,cancelable:!0})}}let Q=class extends i{constructor(e=new F.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 J({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 K({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 F.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 F.PacemBalloonElement;e.options={behavior:F.BalloonBehavior.Tooltip,trigger:a.trigger||F.BalloonTrigger.Hover,position:a.position||F.BalloonPosition.Top,hoverDelay:200,hoverTimeout:50,align:a.align||F.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)}};Q=V([t.CustomElement({tagName:t.P+"-headcell"})],Q);var X=function(e,t,a,s){var o,i=arguments.length,n=i<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(n=(i<3?o(n):i>3?o(t,a,n):o(t,a))||n);return i>3&&n&&Object.defineProperty(t,a,n),n};const Y="datacolumnchange",Z="datacolumnstatechange",ee={selectCaption:"Details",editCaption:"Edit",editIcon:"edit",deleteCaption:"Delete",deleteIcon:"delete"};class te extends CustomEvent{constructor(e){super("databind",{cancelable:!1,bubbles:!1,detail:e})}}class ae extends t.CustomUIEvent{constructor(e,t,a){super(e,t,{bubbles:!1,cancelable:!0},a)}}let se=class 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(Y));break;case"order":case"hide":this.dispatchEvent(new Event(Z))}}};function oe(e){return`<${t.P}-headcell metadata="{{ :host._getColumnMetadata('${e.prop}') }}" state="{{ :host._columnState.${e.prop} }}" grid-state="{{ :host._gridState }}"\non-${q}=":host._broadcastSortCommand($event)"\non-${G}=":host._broadcastRescaleCommand($event)"></${t.P}-headcell>`}function ie(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>`}X([t.Watch({emit:!1,converter:t.PropertyConverters.String})],se.prototype,"field",void 0),X([t.Watch({emit:!1,converter:t.PropertyConverters.String})],se.prototype,"label",void 0),X([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],se.prototype,"resizable",void 0),X([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],se.prototype,"togglable",void 0),X([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],se.prototype,"sortable",void 0),X([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],se.prototype,"order",void 0),X([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],se.prototype,"format",void 0),X([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],se.prototype,"headcellCss",void 0),X([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],se.prototype,"headcellCssClass",void 0),X([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],se.prototype,"datacellCss",void 0),X([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],se.prototype,"datacellCssClass",void 0),se=X([t.CustomElement({tagName:t.P+"-datacolumn"})],se);let ne=class 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 se}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 te(e);this.dispatchEvent(t),e.keepRowSelection||this._setRowSelection();break;case"state":this._mergeState(a)}}register(e){return!!super.register(e)&&(e.addEventListener(Y,this._itemDataColumnRebuildHandler,!1),e.addEventListener(Z,this._itemDataColumnChangeHandler,!1),!0)}unregister(e){return!!super.unregister(e)&&(e.removeEventListener(Y,this._itemDataColumnRebuildHandler,!1),e.removeEventListener(Z,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 A({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({},ee,this.options||{}),o=s.allowDelete||s.allowEdit||s.allowSelect,i=s.allowMultiSelect&&o;let n=i?"auto ":"",r=i?`<div class="${t.PCSS}-headcell"></div>`:"",l=i?`<${t.P}-panel class="${t.PCSS}-datacell" style="grid-column: 1;" css="{{ {'grid-row': ^index+2} }}"></${t.P}-panel>`:"",c=i?`<div class="${t.PCSS}-footcell"></div>`:"";const d=i?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},n+=this._getColumnSize(t).replaceAll(" ","")+" ",r+=oe(t),l+=ie(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, '${n.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],i=s.orderedColumns.indexOf(t);a.hidden?o[i]="auto":a.pixelWidth>0&&(o[i]=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,i={dataitem:e,rowindex:t,datacell:a.srcElement},n=a instanceof MouseEvent||a instanceof TouchEvent||a instanceof KeyboardEvent?new ae(o,i,a):new ae(o,i);if(this.dispatchEvent(n),"click"===s&&!n.defaultPrevented){const e=n.detail.datacell,t=e.metadata?.dataCell?.selectMode?.toLowerCase();switch(t){case"cell":break;case"row":this._broadcastSelectCommand(n.detail.rowindex)}}}_broadcastSortCommand(e){const a=e.detail,s=new J(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 K(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 i={};i[e.srcElement.metadata.prop]={pixelWidth:o},this._columnState=t.Utils.extend({},this._columnState,i)}}_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)}};X([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],ne.prototype,"metadata",void 0),X([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],ne.prototype,"options",void 0),X([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],ne.prototype,"state",void 0),X([t.Watch({emit:!0,converter:t.PropertyConverters.Json})],ne.prototype,"datasource",void 0),X([t.ViewChild("."+t.PCSS+"-datagrid")],ne.prototype,"_tableContainer",void 0),X([t.Watch()],ne.prototype,"_adaptedColumnMetadata",void 0),X([t.Watch()],ne.prototype,"_columnState",void 0),X([t.Watch()],ne.prototype,"_gridState",void 0),X([t.Debounce()],ne.prototype,"_adaptColumnMetadata",null),ne=X([t.CustomElement({tagName:t.P+"-datagrid",shadow:!1,template:`<div class="${t.PCSS}-datagrid"></div><${t.P}-content></${t.P}-content>`})],ne);var re=Object.freeze({__proto__:null,DataCellUIEvent:ae,DataColumnRescaleEvent:K,DataColumnRescaleEventName:G,DataColumnSortEvent:J,DataColumnSortEventName:q,DataGridBindEvent:te,DataRowSelectChangeEvent:A,DataRowSelectChangeEventName:D,get EditMode(){return S},PacemBaseCellElement:i,get PacemCarouselElement(){return m},get PacemContextMenuElement(){return y},get PacemContextMenuItemCommandElement(){return g},PacemContextMenuItemElement:C,get PacemContextMenuItemSeparatorElement(){return _},get PacemDataCellElement(){return z},get PacemDataColumnElement(){return se},get PacemDataGridElement(){return ne},get PacemEditElement(){return E},get PacemGalleryElement(){return $},get PacemHeadCellElement(){return Q},get PacemModalFormElement(){return H},get PacemRouterHashStateElement(){return B},get PacemSearchElement(){return T}}),le=Object.freeze({__proto__:null,Components:re,Plus:d});e.DeepMerger.merge(le)}(Pacem,Pacem,Pacem,Pacem);