pacem 0.52.3-cardano → 0.52.3-dirichlet

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 (57) hide show
  1. package/dist/css/pacem-dark-content.min.css +1 -1
  2. package/dist/css/pacem-dark-shell.min.css +1 -1
  3. package/dist/css/pacem-dark.min.css +1 -1
  4. package/dist/css/pacem-light-content.min.css +1 -1
  5. package/dist/css/pacem-light-shell.min.css +1 -1
  6. package/dist/css/pacem-light.min.css +1 -1
  7. package/dist/css/pacem-phousys-content.min.css +1 -1
  8. package/dist/css/pacem-phousys-shell.min.css +1 -1
  9. package/dist/css/pacem-phousys.min.css +1 -1
  10. package/dist/js/azure-maps.d.ts +1 -1
  11. package/dist/js/pacem-2d.d.ts +1 -1
  12. package/dist/js/pacem-2d.js +1 -1
  13. package/dist/js/pacem-2d.min.js +1 -1
  14. package/dist/js/pacem-3d.d.ts +1 -1
  15. package/dist/js/pacem-3d.js +1 -1
  16. package/dist/js/pacem-3d.min.js +1 -1
  17. package/dist/js/pacem-charts.d.ts +1 -1
  18. package/dist/js/pacem-charts.js +1 -1
  19. package/dist/js/pacem-charts.min.js +1 -1
  20. package/dist/js/pacem-cms.d.ts +1 -1
  21. package/dist/js/pacem-cms.js +2 -2
  22. package/dist/js/pacem-cms.min.js +2 -2
  23. package/dist/js/pacem-core.d.ts +1 -1
  24. package/dist/js/pacem-core.js +1 -1
  25. package/dist/js/pacem-core.min.js +1 -1
  26. package/dist/js/pacem-foundation.d.ts +1 -1
  27. package/dist/js/pacem-foundation.js +1 -1
  28. package/dist/js/pacem-foundation.min.js +1 -1
  29. package/dist/js/pacem-fx.d.ts +1 -1
  30. package/dist/js/pacem-fx.js +1 -1
  31. package/dist/js/pacem-fx.min.js +1 -1
  32. package/dist/js/pacem-logging.d.ts +1 -1
  33. package/dist/js/pacem-logging.js +1 -1
  34. package/dist/js/pacem-logging.min.js +1 -1
  35. package/dist/js/pacem-maps.d.ts +1 -1
  36. package/dist/js/pacem-maps.js +1 -1
  37. package/dist/js/pacem-maps.min.js +1 -1
  38. package/dist/js/pacem-media.d.ts +1 -1
  39. package/dist/js/pacem-media.js +1 -1
  40. package/dist/js/pacem-media.min.js +1 -1
  41. package/dist/js/pacem-networking.d.ts +1 -1
  42. package/dist/js/pacem-networking.js +1 -1
  43. package/dist/js/pacem-networking.min.js +1 -1
  44. package/dist/js/pacem-numerical.d.ts +1 -1
  45. package/dist/js/pacem-numerical.js +1 -1
  46. package/dist/js/pacem-numerical.min.js +1 -1
  47. package/dist/js/pacem-plus.d.ts +1 -1
  48. package/dist/js/pacem-plus.js +1 -1
  49. package/dist/js/pacem-plus.min.js +1 -1
  50. package/dist/js/pacem-scaffolding.d.ts +12 -3
  51. package/dist/js/pacem-scaffolding.js +25 -7
  52. package/dist/js/pacem-scaffolding.min.js +2 -2
  53. package/dist/js/pacem-ui.d.ts +1 -1
  54. package/dist/js/pacem-ui.js +1 -1
  55. package/dist/js/pacem-ui.min.js +1 -1
  56. package/dist/js/swagger-types.d.ts +1 -1
  57. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -575,7 +575,7 @@ var Pacem;
575
575
  function cellifyMetadata(p) {
576
576
  // ensure pacem-cell cssClass
577
577
  p.display = p.display || { name: p.prop, cssClass: [] };
578
- const css = p.display.cssClass = p.display.cssClass || [];
578
+ const css = p.display.cssClass = Pacem.Utils.isArray(p.display.cssClass) && p.display.cssClass || [];
579
579
  css.push(Pacem.PCSS + '-cell');
580
580
  }
581
581
  function gridifyMetadata(metadata) {
@@ -1,6 +1,6 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
- var Pacem,__decorate=this&&this.__decorate||function(e,t,r,a){var s,o=arguments.length,i=o<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,r):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,a);else for(var n=e.length-1;n>=0;n--)(s=e[n])&&(i=(o<3?s(i):o>3?s(t,r,i):s(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};!function(e){!function(t){t.PermissionEditEventName="permissionedit";class PermissionEditEvent extends CustomEvent{constructor(e){super(t.PermissionEditEventName,{detail:e,cancelable:!1,bubbles:!0})}}t.PermissionEditEvent=PermissionEditEvent;t.Permissible=class Permissible{static canEdit(e,t){return this._canDoSomethingToResource(e,t,e=>e.update)}static canRead(e,t){return this._canDoSomethingToResource(e,t,e=>e.read)}static canAdd(e,t){return this._canDoSomethingToResource(e,t,e=>e.create)}static canDelete(e,t){return this._canDoSomethingToResource(e,t,e=>e.delete)}static canTranslate(e,t){return this._canDoSomethingToResource(e,t,e=>e.translate)}static _canDoSomethingToResource(t,r,a){if(e.Utils.isNullOrEmpty(t)||e.Utils.isNull(r))return!1;var s=!0;if(r.permissions&&r.permissions.length>0){s=!1;for(let e of r.permissions)if(a(e)&&t[e.claimType]&&t[e.claimType].indexOf(e.claimValue)>=0)return!0}return s}}}(e.Cms||(e.Cms={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const r="pacem:metadatabag";t.SwaggerCmsParser=class SwaggerCmsParser{constructor(t=new e.Scaffolding.OpenApi.OpenApiParser){this._openApi=t,this._cachedMetadataUrls=[]}async load(e,t){let a=await this._openApi.load(e,t);if(null!=a){a[r]={};for(let e of a.endpoints)await this._enrichSchemas(a,e,t)}return a}async _enrichSchemas(e,t,r){const a=t.response;a&&a.meta&&(a.fields=await this._fetchMetadata(e,{name:a.fullType,schema:a.meta},r));const s=t.parameters;for(let t of s||[])if(t.meta&&t.fullType){let a=await this._fetchMetadata(e,{name:t.fullType,schema:t.meta},r);t.fields=a}}clearCache(){const e=this.cache,t=this._cachedMetadataUrls;if(e){for(let r of t)e.removeProperty(r);t.splice(0)}}async _fetchMetadata(t,a,s){let o=async a=>{let i=[];if(a&&a.name){if(t[r][a.name])return t[r][a.name];t[r][a.name]=i;let n,l={props:[]};if(!/^https?:\/\//.test(a.name))return void console.warn("Swagger entity definition keys must appear in form of absolute url. Their response to a GET request needs to be the entity metadata itself.\nNo other options are currently supported.");if(n=a.name,n){let e=async()=>{let e=await fetch(n,{credentials:"omit",mode:"cors",headers:s});if(e.ok)return await e.json()};this.cache?(l=this.cache.getPropertyValue(n),l||(l=await e(),this._cachedMetadataUrls.push(n),this.cache.setPropertyValue(n,l,!1))):l=await e()}let c=a.schema;for(let a in c.properties){let s=c.properties[a],n=l&&l.props.find(e=>e.prop===a),d=Object.assign({prop:a,type:s.type||"text",props:void 0},n||{isReadOnly:!0});if(n){let a=s.items&&s.items.$ref||s.$ref;if(a){let s=e.Scaffolding.OpenApi.getOpenApiDefinition(t,a),i=s.name;t[r][i]?d.props=t[r][i]:d.props=await o(s)}}i.push(d)}}return i};return await o(a)}}}(t.OpenApi||(t.OpenApi={}))}(e.Cms||(e.Cms={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){t.Functions={dismiss:(...e)=>{for(let r of e||[])delete t.Functions[r]},handleExpressionValueChange:(t,r,a)=>{if("value"===t.detail.propertyName&&!e.Utils.isNull(a)){const s=t.detail.currentValue;if(a instanceof HTMLElement){let t=e.CustomElementUtils.camelToKebab(r);e.Utils.isNullOrEmpty(s)?a.removeAttribute(t):a.setAttribute(t,s.toString())}else a[r]=s}}},t.EXPRESSION_METADATA_TYPE=(t,r=":host",a=":host.entity")=>{const s={},o=t.metadata,i=e.Components.Cms.Functions,n=[];s.value=`{{ ${a} instanceof HTMLElement && ${a}.getAttribute('${e.CustomElementUtils.camelToKebab(o.prop)}') }}`,s["on-"+e.PropertyChangeEventName]=`Pacem.Components.Cms.Functions.handleExpressionValueChange($event, '${o.prop}', ${a})`,s.converter=`{{ Pacem.CustomElementUtils.getWatchedProperty(${a}, '${o.prop}').config.converter }}`;const l=e.P+"-expression";let c=o.extra||{};if(e.Utils.isNullOrEmpty(c.selector)||(s.selector=c.selector),!e.Utils.isNullOrEmpty(c.filter))switch(typeof c.filter){case"string":s.filter=`{{ (e) => e.constructor.name === "${c.filter}" || e.localName === "${c.filter.toLowerCase()}" }}`;break;case"function":const t="fn"+e.Utils.uniqueCode();i[t]=c.filter,s.filter=`{{ Pacem.Components.Cms.Functions.${t}, once }}`,n.push(t)}if("function"==typeof c.labeler){const t="fn"+e.Utils.uniqueCode();i[t]=c.labeler,s.labeler=`{{ Pacem.Components.Cms.Functions.${t}, once }}`,n.push(t)}return n.length>0&&(s["on-unload"]=`{{ Pacem.Components.Cms.Functions.dismiss('${n.join("','")}') }}`),{tagName:l,attrs:s}}}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){class PacemElementPickerElementBase extends e.Components.Scaffolding.PacemBaseElement{}__decorate([e.Watch({converter:e.PropertyConverters.String})],PacemElementPickerElementBase.prototype,"selector",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Eval})],PacemElementPickerElementBase.prototype,"filter",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Eval})],PacemElementPickerElementBase.prototype,"labeler",void 0),t.PacemElementPickerElementBase=PacemElementPickerElementBase;let r=class PacemElementPickerElement extends PacemElementPickerElementBase{get inputFields(){return[this._select]}toggleReadonlyView(e){this._select.readonly=e}onChange(t){return e.Utils.fromResult(this.value=this._select.value)}acceptValue(e){this._select.value=e}getViewValue(e){return this._select.viewValue}convertValueAttributeToProperty(t){return e.PropertyConverters.Element.convert(t)}viewActivatedCallback(){super.viewActivatedCallback(),this._databind()}propertyChangedCallback(e,t,r,a){if(super.propertyChangedCallback(e,t,r,a),!a)switch(e){case"selector":case"filter":case"labeler":this._databind()}}_databind(){const t=this.labeler||(e=>{let t=e.constructor.name;return e.id&&(t+="#"+e.id),t}),r=[];document.querySelectorAll(this.selector||"[pacem]").forEach((a,s,o)=>{!e.Utils.isNull(this.filter)&&!0!==this.filter(a)||e.Utils.isNullOrEmpty(a.id)||r.push({element:a,label:t(a)})}),this._select.valueProperty="element",this._select.textProperty="label",this._select.datasource=r}};__decorate([e.ViewChild(e.P+"-select")],r.prototype,"_select",void 0),__decorate([e.Debounce(50)],r.prototype,"_databind",null),r=__decorate([e.CustomElement({tagName:e.P+"-element-picker",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-select></${e.P}-select>`})],r),t.PacemElementPickerElement=r}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(r){let a;!function(e){e.Constant="const",e.PropertyReference="property",e.Expression="expr"}(a=r.ExpressionSource||(r.ExpressionSource={}));let s=class PacemExpressionElement extends r.PacemElementPickerElementBase{propertyChangedCallback(t,r,s,o){if(super.propertyChangedCallback(t,r,s,o),"converter"===t)this._setFeedbackText(this.value);else if(!o&&this._editing)switch(t){case"_source":if(s===a.PropertyReference)this._picker.focus();else this._editor.focus();break;case"_propRef":e.Utils.isNullOrEmpty(s)||(this._editor.focus(),this._editor.value="{{ #"+this._sourceRef.id+"."+s+" }}"),this.changeHandler(new Event("change"))}}get inputFields(){return[this._editor]}toggleReadonlyView(e){e&&(this._editing=!1)}setPristine(){super.setPristine(),this._editing=!1}onChange(t){return e.Utils.fromResult(this.value=this._editor.value)}acceptValue(e){this._view.textContent=e||"...",this._setFeedbackText(e),this._reverseStructure(),e!==this._editor.value&&(this._editor.value=e)}_setFeedbackText(t=this.value){const r=this.converter;e.CustomElementUtils.isBindingAttribute(t)||"function"!=typeof(r&&r.convert)?this._eval.setAttribute("text",t):this._eval.text=void 0===t?"<undefined>":r.convert(t)}getViewValue(e){return e}convertValueAttributeToProperty(e){return e}_reverseStructure(){let r=()=>{this._source=this._sourceRef=this._propRef=void 0},s=this.value;if(e.Utils.isNullOrEmpty(s))r();else if(e.CustomElementUtils.isBindingAttribute(s)){const r=e.CustomElementUtils.parseBindingAttribute(s,this).dependencies;if(e.Utils.isNullOrEmpty(r)||r.length>1||t.RepeaterItem.isRepeaterItem(r[0].element))this._source=a.Expression;else{const e=r[0];this._source=a.PropertyReference,this._sourceRef=document.querySelector("#"+e.element.id),this._propRef=e.path}}else this._source=a.Constant}};__decorate([e.Watch({emit:!1})],s.prototype,"converter",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],s.prototype,"_editing",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"_source",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Element})],s.prototype,"_sourceRef",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"_propRef",void 0),__decorate([e.ViewChild(e.P+"-element-picker")],s.prototype,"_picker",void 0),__decorate([e.ViewChild(e.P+"-textarea")],s.prototype,"_editor",void 0),__decorate([e.ViewChild("span."+e.PCSS+"-viewfinder")],s.prototype,"_view",void 0),__decorate([e.ViewChild(e.P+"-text")],s.prototype,"_eval",void 0),__decorate([e.Debounce(50)],s.prototype,"_reverseStructure",null),s=__decorate([e.CustomElement({tagName:e.P+"-expression",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-collapse class="${e.PCSS}-expression" collapse="{{ !:host._editing }}">\n <div class="expression-builder ${e.PCSS}-grid grid-tiny-rowgap grid-tiny-colgap ${e.PCSS}-pad pad-bottom-2">\n <div class="${e.PCSS}-cell">\n <${e.P}-select value="{{ :host._source, twoway }}" class="display-block">\n <${e.P}-data-item value="${a.Constant}" label="constant value"></${e.P}-data-item>\n <${e.P}-data-item value="${a.PropertyReference}" label="property reference"></${e.P}-data-item>\n <${e.P}-data-item value="${a.Expression}" label="complex expression"></${e.P}-data-item>\n </${e.P}-select>\n </div>\n\n <${e.P}-panel class="${e.PCSS}-cell cols-hd-6" hide="{{ :host._source !== '${a.PropertyReference}' }}">\n <${e.P}-element-picker value="{{ :host._sourceRef, twoway }}" selector="{{ :host.selector }}" filter="{{ :host.filter }}" labeler="{{ :host.labeler }}" class="display-block"></${e.P}-element-picker>\n </${e.P}-panel>\n <${e.P}-panel class="${e.PCSS}-cell cols-hd-6" hide="{{ :host._source !== '${a.PropertyReference}' }}">\n <${e.P}-property-picker value="{{ :host._propRef, twoway }}" disabled="{{ !:host._sourceRef }}" target="{{ :host._sourceRef }}" on-change="::_editor.focus()" class="display-block"></${e.P}-property-picker>\n </${e.P}-panel>\n\n <${e.P}-panel class="${e.PCSS}-cell">\n <${e.P}-textarea class="display-block" placeholder="{{ '{{ '+ (:host._source || '') +'... }}' }}" change-policy="${e.Components.Scaffolding.ChangePolicy.Blur}"></${e.P}-textarea>\n </${e.P}-panel>\n </div>\n</${e.P}-collapse>\n<div class="${e.PCSS}-fieldset">\n <div class="fieldset-left">\n <div class="${e.PCSS}-fieldgroup ${e.PCSS}-viewfinder">\n <div class="text-truncate ${e.PCSS}-pad pad-x-1"><span class="${e.PCSS}-viewfinder text-tech">{{ :host.value || '...' }}</span></div>\n <${e.P}-panel class="fieldgroup-prepend">\n <${e.P}-button class="flat edit ${e.PCSS}-pad pad-left-1" on-click=":host._editing = !:host._editing" hide="{{ :host.readonly }}"></${e.P}-button>\n </${e.P}-panel>\n <${e.P}-panel class="fieldgroup-append text-tech display-flex flex-middle flex-nowrap" hide="{{ $pacem.isNullOrEmpty(:host.value) }}">\n <i class="${e.PCSS}-icon text-primary">keyboard_arrow_right</i>\n <${e.P}-text text="?" class="bg-primary ${e.PCSS}-pad pad-left-1 pad-right-1 ${e.PCSS}-margin margin-right-1 text-truncate" eval></${e.P}-text>\n </${e.P}-panel>\n </div>\n </div>\n</div>`})],s),r.PacemExpressionElement=s}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(r){const a={props:[{prop:"permissions",type:"array",display:{name:"Permissions"},props:{display:{cssClass:[e.PCSS+"-cell",e.PCSS+"-grid","grid-novgap","grid-tiny-colgap","grid-nospace"],name:"Permission"},props:Array.prototype.concat.apply([{prop:"claimType",type:"string",display:{cssClass:[e.PCSS+"-cell","cols-hd-4","cols-lg-6","field-stretch","field-minimal"],name:"Claim type"},validators:[{type:"required",errorMessage:"!"}]},{prop:"claimValue",type:"string",display:{cssClass:[e.PCSS+"-cell","cols-hd-4","cols-lg-6","field-stretch","field-minimal"],name:"Claim value"},validators:[{type:"required",errorMessage:"!"}]}],["read","update","create","delete"].map((t,r)=>({prop:t,type:"boolean",display:{cssClass:[e.PCSS+"-cell","cols-hd-1","cols-3","field-minimal",e.PCSS+"-pad pad-left-2"],name:t.charAt(0).toUpperCase()+t.substr(1)}})))}}]};function s(t){t.display=t.display||{name:t.prop,cssClass:[]};(t.display.cssClass=t.display.cssClass||[]).push(e.PCSS+"-cell")}r.DEFAULT_METADATA={display:{name:"Widget",cssClass:[e.PCSS+"-grid","grid-novgap","grid-tiny-colgap","grid-nospace"]},props:[{prop:"tag",type:"string",display:{name:"Tag",cssClass:[e.PCSS+"-cell"]}}]},r.gridifyMetadata=function(t){var a=t&&t.props||[],o=t&&t.display||{name:"Element"};if(!e.Utils.isNull(o)){const e=o.cssClass=o.cssClass||[];Array.prototype.push.apply(e,r.DEFAULT_METADATA.display.cssClass)}return a.forEach(s),{display:o,props:a}},r.buildWidgetMetadata=function(t){var a=e.Utils.extend({},r.DEFAULT_METADATA.display,t&&t.display||{}),o=e.Utils.clone(r.DEFAULT_METADATA.props);return Array.prototype.push.apply(o,(t&&t.props||[]).filter(e=>"tag"!==e.prop&&(s(e),!0))),{display:a,props:o}};const o=e.PCSS+"-widget";r.EXPRESSION_WIDGET_METADATA_EXTRA={selector:"."+o,labeler:t=>e.Utils.isNullOrEmpty(t.tag)?(t.metadata&&t.metadata.display&&t.metadata.display.name||"")+"#"+t.id:t.tag};r.Widget=class Widget{static findAll(t){return e.CustomElementUtils.findAll("."+o,r=>r instanceof PacemWidgetElement&&!e.Utils.isNullOrEmpty(r.id)&&(e.Utils.isNull(t)||t(r)))}};let i=class PacemWidgetToolbarElement extends t.PacemElement{get editButton(){return this._btnEdit}get permissionsButton(){return this._btnPerms}get removeButton(){return this._btnRemove}_edit(e){const t=this._proxy.dom.find(e=>"core"in e.attributes);t.open(this.target,!0),t.metadata=this.target.metadata,this._popoutJustInCase()}_editPermissions(e){const t=this._proxy.dom.find(e=>"permissions"in e.attributes);t.open(this.target),t.metadata=this.target.permissionMetadata,this._popoutJustInCase()}_popoutJustInCase(){const t=e.CustomElementUtils.findAncestorOfType(this,e.Components.UI.PacemBalloonElement);e.Utils.isNullOrEmpty(t)||t.popout()}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],i.prototype,"target",void 0),__decorate([e.ViewChild(".buttons > div")],i.prototype,"_toolbar",void 0),__decorate([e.ViewChild(e.P+"-button[edit]")],i.prototype,"_btnEdit",void 0),__decorate([e.ViewChild(e.P+"-button[permissions]")],i.prototype,"_btnPerms",void 0),__decorate([e.ViewChild(e.P+"-button[remove]")],i.prototype,"_btnRemove",void 0),__decorate([e.ViewChild(e.P+"-shell-proxy")],i.prototype,"_proxy",void 0),i=__decorate([e.CustomElement({tagName:e.P+"-widget-toolbar",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-span class="toolbar-text" content="{{ '<i class=&quot;${e.PCSS}-icon&quot;>'+ (::target.metadata && ::target.metadata.display && ::target.metadata.display.icon || 'widgets') +'</i> '+ (::target.tag || (::target.metadata && ::target.metadata.display && ::target.metadata.display.name || ::target.localName) +'#'+ ::target.id) }}"></${e.P}-span>\n<div class="buttons ${e.PCSS}-buttonset ${e.PCSS}-pad ${e.PCSS}-margin pad-0 margin-left-2">\n <div class="buttonset-left">\n <${e.P}-button edit class="button edit" on-click=":host._edit($event)"></${e.P}-button>\n <${e.P}-button permissions class="button" on-click=":host._editPermissions($event)" css-class="{{ {'button-success': ::target.permissions.length > 0} }}" icon-glyph="verified_user"></${e.P}-button>\n <${e.P}-button remove class="button button-danger delete"></${e.P}-button>\n </div>\n<div>\n<${e.P}-shell-proxy>\n <${e.P}-modal-form core></${e.P}-modal-form>\n <${e.P}-modal-form permissions></${e.P}-modal-form>\n</${e.P}-shell-proxy>`})],i),r.PacemWidgetToolbarElement=i;class PacemWidgetElement extends t.PacemElement{constructor(e,t="widget"){super(t),this.permissionMetadata=a,this.metadata=e}connectedCallback(){super.connectedCallback(),e.Utils.isNullOrEmpty(this.id)&&(this.id="wdg"+e.Utils.uniqueCode()),e.Utils.addClass(this,o)}propertyChangedCallback(t,r,a,s){switch(super.propertyChangedCallback(t,r,a,s),t){case"editable":a?this.isReady&&this._ensureBalloon():this._disposeBalloon();break;case"editing":e.Utils.isNull(this._balloon)||(this._balloon.disabled=!a),(a?e.Utils.addClass:e.Utils.removeClass).apply(this,[this,"widget-"+t]);break;case"metadata":this._assignIcon(a)}}viewActivatedCallback(){super.viewActivatedCallback(),this._assignIcon(),this._ensureBalloon()}disconnectedCallback(){super.disconnectedCallback()}_assignIcon(e=this.metadata){this.dataset.icon=e&&e.display&&e.display.icon||"widgets"}_ensureBalloon(){if(e.Utils.isNull(this._balloon)){const r=this._balloon=document.createElement(e.P+"-balloon");r.target=this,r.disabled=!this.editing,r.options={behavior:t.UI.BalloonBehavior.Menu,trigger:t.UI.BalloonTrigger.Hover},r.innerHTML=`<${e.P}-widget-toolbar target="{{ #${this.id} }}"><${e.P}-widget-toolbar>`,e.CustomElementUtils.findAncestorShell(this).appendChild(r)}}_disposeBalloon(){e.Utils.isNull(this._balloon)||(this._balloon.remove(),this._balloon=null)}}__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],PacemWidgetElement.prototype,"editing",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],PacemWidgetElement.prototype,"editable",void 0),__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.String})],PacemWidgetElement.prototype,"tag",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Json})],PacemWidgetElement.prototype,"permissions",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],PacemWidgetElement.prototype,"metadata",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],PacemWidgetElement.prototype,"permissionMetadata",void 0),r.PacemWidgetElement=PacemWidgetElement}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){t.FETCH_CREDENTIALS_METADATA={prop:"fetchCredentials",type:"string",dataType:"enumeration",display:{name:"Fetch Credentials"},extra:{enum:["same-origin","omit","include"]}},t.ACCESS_TOKEN_METADATA={prop:"accessToken",type:t.EXPRESSION_METADATA_TYPE,display:{name:"Access Token"},extra:e.Utils.extend({},t.EXPRESSION_WIDGET_METADATA_EXTRA,{filter:e=>e instanceof t.PacemWidgetDataElement||e instanceof t.PacemWidgetFetchElement})};class PacemBearerWidgetElement extends t.PacemWidgetElement{constructor(){super(...arguments),this.fetchCredentials="same-origin"}propertyChangedCallback(t,r,a,s){super.propertyChangedCallback(t,r,a,s),"accessToken"===t&&(e.Utils.isNullOrEmpty(a)?this.fetchHeaders={}:this.fetchHeaders={Authorization:"Bearer "+a})}}__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],PacemBearerWidgetElement.prototype,"fetchCredentials",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],PacemBearerWidgetElement.prototype,"fetchHeaders",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],PacemBearerWidgetElement.prototype,"accessToken",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],PacemBearerWidgetElement.prototype,"fetching",void 0),t.PacemBearerWidgetElement=PacemBearerWidgetElement}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const r={display:{icon:"cloud_circle",name:"Api Manifest",description:"OpenApi parser for WebApi scaffolding."},props:[{prop:"url",type:"text",display:{name:"Url",description:"Insert the url of the OpenApi json configuration.",cssClass:["cols-lg-8"],watermark:"https://domain.com/swagger/v1/swagger.json"},extra:{tooltip:!0},validators:[{type:"required",errorMessage:"Url field is required."}]},{prop:"usecache",type:"boolean",display:{name:"Cache results",description:"Whether to cache the manifest per-url.",cssClass:["cols-lg-4"],ui:"switcher"},extra:{tooltip:!0}},t.ACCESS_TOKEN_METADATA]};let a=class PacemWidgetApiManifestElement extends t.PacemBearerWidgetElement{constructor(a=new e.Cms.OpenApi.SwaggerCmsParser,s=new e.Storage){super(t.buildWidgetMetadata(r)),this._openapi=a,this._cache=s}propertyChangedCallback(e,t,r,a){switch(super.propertyChangedCallback(e,t,r,a),e){case"url":case"editing":case"editable":this._scaffold();break;case"usecache":this._openapi.cache=r?this._cache:null}}viewActivatedCallback(){super.viewActivatedCallback(),this.usecache&&(this._openapi.cache=this._cache),this._scaffold()}_scaffold(){this.editing&&this.editable&&!e.Utils.isNullOrEmpty(this.url)&&(this.fetching=!0,this._openapi.load(this.url).then(e=>{this.manifest=e,this.fetching=!1},e=>{this.fetching=!1}))}};__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],a.prototype,"url",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Boolean})],a.prototype,"usecache",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],a.prototype,"manifest",void 0),a=__decorate([e.CustomElement({tagName:e.P+"-widget-apimanifest"})],a),t.PacemWidgetApiManifestElement=a}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const r={display:{icon:"timer",name:"Clock",description:"Timer widget."},props:[{prop:"interval",type:t.EXPRESSION_METADATA_TYPE,display:{name:"Interval (msec)"},extra:{selector:"."+e.PCSS+"-widget",step:1e3},validators:[{type:"range",errorMessage:"Negative numbers not allowed",params:{min:0}}]}]};let a=class PacemWidgetClockElement extends t.PacemWidgetElement{constructor(){super(t.buildWidgetMetadata(r)),this.interval=0}};__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.Number})],a.prototype,"interval",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Number})],a.prototype,"time",void 0),a=__decorate([e.CustomElement({tagName:e.P+"-widget-clock",template:`<${e.P}-timer interval="{{ :host.interval }}" on-tick="{{ :host.time = Date.now() }}"></${e.P}-timer>`})],a),t.PacemWidgetClockElement=a}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const r={display:{icon:"storage",name:"Data",description:"Data object widget."},props:[{prop:"model",type:t.EXPRESSION_METADATA_TYPE,display:{name:"Model"},extra:{selector:"."+e.PCSS+"-widget"}}]};let a=class PacemWidgetDataElement extends t.PacemWidgetElement{constructor(){super(t.buildWidgetMetadata(r))}};__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.Json})],a.prototype,"model",void 0),a=__decorate([e.CustomElement({tagName:e.P+"-widget-data"})],a),t.PacemWidgetDataElement=a}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(r){const a={props:[{prop:"name",type:"string",isReadOnly:!0,display:{name:"Name",cssClass:["cols-md-4","cols-lg-3","cols-hd-2"]}},{prop:"value",type:r.EXPRESSION_METADATA_TYPE,display:{name:"Value",cssClass:["cols-md-8","cols-lg-9","cols-hd-10"]}}]},s={display:{icon:"wifi",name:"Api Fetcher",description:"Fetching widget that retrieves data from a REST endpoint."},props:[{prop:"manifest",type:r.EXPRESSION_METADATA_TYPE,isComplexType:!0,display:{name:"Api Manifest"},extra:{selector:e.P+"-widget-apimanifest"},validators:[{type:"required",errorMessage:"Api Manifest is a required field."}]},{prop:"endpoint",type:"object",isComplexType:!0,display:{name:"Endpoint",ui:"oneToMany"},validators:[{type:"required",errorMessage:"Api Manifest is a required field."}],extra:{source:t=>t.endpoints.map(t=>e.Utils.extend(t,{fullPath:`[${t.method.toUpperCase()}] ${t.path}`})).sort(),textProperty:"fullPath",valueProperty:"fullPath",dependsOn:[{prop:"manifest",hide:!0}]}},{prop:"parameters",type:"array",display:{name:"Parameters"},props:r.gridifyMetadata(a),extra:{lockItems:!0,dependsOn:[{prop:"endpoint",hide:!0}]}},r.ACCESS_TOKEN_METADATA]},o=e.P+"-widget-fetch-parameter";let i=class PacemWidgetFetchParameterElement extends t.PacemEventTarget{propertyChangedCallback(t,r,a,s){super.propertyChangedCallback(t,r,a.first),"value"!==t||e.Utils.isNull(this._fetcher)||this._fetcher.fetch()}viewActivatedCallback(){super.viewActivatedCallback();this._fetcher=e.CustomElementUtils.findAncestorOfType(this,n);e.Utils.isNull(this._fetcher)||e.Utils.isNull(this.value)||this._fetcher.fetch()}};__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.Boolean})],i.prototype,"required",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],i.prototype,"name",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],i.prototype,"value",void 0),i=__decorate([e.CustomElement({tagName:o})],i),r.PacemWidgetFetchParameterElement=i;let n=class PacemWidgetFetchElement extends r.PacemBearerWidgetElement{constructor(){super(r.buildWidgetMetadata(s)),this._onerror=e=>{this.failure=!(this.success=!1)},this._onsuccess=e=>{this.failure=!(this.success=!0)},this._onresult=e=>{this.result=e.detail}}get _parameters(){return Array.from(this._itemsElement.children).filter(e=>e.localName===o)}fetch(){const t=this._fetcher,r=this._parameters||[],a=this.endpoint;if(!e.Utils.isNull(a))for(let t of a.parameters)if(t.required&&e.Utils.isNull(r.find(e=>e.name===t.name)))return;const s={};for(let t of r)if(e.Utils.isNullOrEmpty(t.value)){if(t.required)return}else s[t.name]=t.value;return t.url=this.url,t.method=this.method,t.credentials=this.fetchCredentials,t.headers=this.fetchHeaders,t.parameters=s,t.fetch()}viewActivatedCallback(){super.viewActivatedCallback(),this.fetch()}propertyChangedCallback(t,r,a,s){if(super.propertyChangedCallback(t,r,a,s),"endpoint"!==t||e.Utils.isNullOrEmpty(a))switch(t){case"parameters":case"fetchHeaders":case"fetchCredentials":case"url":case"method":this.fetch()}else this._mergeEndpoint(a)}_mergeEndpoint(t=this.endpoint){this.url=this.manifest.baseUrl+t.path,this.method=t.method,this.fields=t.response.fields;const r=this._itemsElement,a=this._parameters;for(let r=a.length-1;r>=0;r--){let s=a[r],o=t.parameters.find(e=>e.name===s.name);e.Utils.isNull(o)&&s.remove()}for(let s of t.parameters){let t=a.find(e=>e.name===s.name);if(e.Utils.isNull(t)){let e=t=document.createElement(o);e.name=s.name,r.appendChild(e)}t.required=s.required}this.parameters=a}};__decorate([e.Watch({reflectBack:!0,emit:!0,converter:e.PropertyConverters.Json})],n.prototype,"manifest",void 0),__decorate([e.Watch({reflectBack:!0,emit:!0,converter:e.PropertyConverters.Json})],n.prototype,"endpoint",void 0),__decorate([e.Watch({reflectBack:!0,emit:!1,converter:e.PropertyConverters.String})],n.prototype,"url",void 0),__decorate([e.Watch({reflectBack:!0,emit:!1,converter:e.PropertyConverters.String})],n.prototype,"method",void 0),__decorate([e.Watch({reflectBack:!0,emit:!1,converter:e.PropertyConverters.Json})],n.prototype,"fields",void 0),__decorate([e.Watch()],n.prototype,"parameters",void 0),__decorate([e.Watch()],n.prototype,"result",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],n.prototype,"fetching",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],n.prototype,"success",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],n.prototype,"failure",void 0),__decorate([e.ViewChild(e.P+"-fetch")],n.prototype,"_fetcher",void 0),__decorate([e.ViewChild("div[hidden]")],n.prototype,"_itemsElement",void 0),n=__decorate([e.CustomElement({tagName:e.P+"-widget-fetch",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-fetch autofetch="false" fetching="{{ :host.fetching, twoway }}" debounce="100"\non-${e.Net.FetchResultEventName}=":host._onresult($event)" on-${e.Net.FetchErrorEventName}=":host._onerror($event)" on-${e.Net.FetchSuccessEventName}=":host._onsuccess($event)"></${e.P}-fetch><div hidden><${e.P}-content></${e.P}-content></div>`})],n),r.PacemWidgetFetchElement=n}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){let r=class PacemWidgetTranslatorElement extends t.PacemWidgetElement{};r=__decorate([e.CustomElement({tagName:e.P+"-widget-translator"})],r),t.PacemWidgetTranslatorElement=r}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(r){r.DATACOLUMNS_METADATA_TYPE=(t,r=":host",a=":host.entity")=>{const s={},o=t.metadata,i=e.Components.Cms.Functions,n=[];s.properties=`{{ Pacem.CustomElementUtils.getWatchedProperty(${a}, '${o.prop}').config.converter }}`;const l=e.P+"-datacolumns";let c=o.extra||{};if(!e.Utils.isNullOrEmpty(c.properties))switch(typeof c.properties){case"string":s.properties=`{{ ${a}.${c.properties} }}`;break;case"function":const t="fn"+e.Utils.uniqueCode();i[t]=c.properties,s.properties=`{{ Pacem.Components.Cms.Functions.${t}(${r}), once }}`,n.push(t)}return n.length>0&&(s["on-unload"]=`{{ Pacem.Components.Cms.Functions.dismiss('${n.join("','")}') }}`),{tagName:l,attrs:s}};const a={display:{name:"Columns"},props:[{prop:"header",type:"string",display:{cssClass:["form-minimal"],name:"Header"}},{prop:"content",type:r.EXPRESSION_METADATA_TYPE,display:{name:"Content"},extra:r.EXPRESSION_WIDGET_METADATA_EXTRA}]};let s=class PacemDataColumnElement extends t.PacemElement{propertyChangedCallback(e,t,r,a){switch(super.propertyChangedCallback(e,t,r,a),e){case"content":this.contentExpression=r;break;case"contentExpression":this.setAttribute("content",r||"")}}viewActivatedCallback(){super.viewActivatedCallback(),this._form.entity=this,this._form.metadata=r.gridifyMetadata(a)}};__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"header",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"content",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"contentExpression",void 0),__decorate([e.ViewChild(e.P+"-form")],s.prototype,"_form",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-widget-datacolumn",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-form class="panel-body" autogenerate="true"></${e.P}-form>`})],s),r.PacemDataColumnElement=s;let o=class PacemDataColumnsElement extends e.Components.Scaffolding.PacemBaseElement{constructor(){super(...arguments),this._dropHandler=e=>{this.changeHandler(e)},this._columnifyMetadata=(e=this.properties)=>(e||[]).map(e=>({header:"function"==typeof e.display?.name?e.prop:e.display?.name||e.prop,content:`{{ ^item.${e.prop} }}`})).sort((e,t)=>e.header>t.header?1:-1)}get inputFields(){return[]}toggleReadonlyView(e){}onChange(t){return e.Utils.fromResult(this.value=this._repeater.datasource)}acceptValue(t){e.Utils.isNull(this._repeater)||(this._repeater.datasource=e.Utils.clone(t||[]))}getViewValue(e){return"[DataColumns]"}convertValueAttributeToProperty(t){return e.PropertyConverters.Json.convert(t,this)}viewActivatedCallback(){super.viewActivatedCallback(),this._propDragger.addEventListener(e.UI.DragDropEventType.End,this._dropHandler,!1),this._colDragger.addEventListener(e.UI.DragDropEventType.End,this._dropHandler,!1)}disconnectedCallback(){e.Utils.isNull(this._propDragger)||this._propDragger.removeEventListener(e.UI.DragDropEventType.End,this._dropHandler,!1),e.Utils.isNull(this._colDragger)||this._colDragger.removeEventListener(e.UI.DragDropEventType.End,this._dropHandler,!1),super.disconnectedCallback()}};__decorate([e.ViewChild(`${e.P}-repeater[columns]`)],o.prototype,"_repeater",void 0),__decorate([e.ViewChild(`${e.P}-drag-drop[properties]`)],o.prototype,"_propDragger",void 0),__decorate([e.ViewChild(`${e.P}-drag-drop[columns]`)],o.prototype,"_colDragger",void 0),__decorate([e.ViewChild("div[drop-target]")],o.prototype,"_dropTarget",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"properties",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-widget-datacolumns",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<div class="${e.PCSS}-datacolumns">\n <div class="datacolumns-main display-flex flex-fill">\n\n <${e.P}-drag-drop mode="${e.UI.DragDataMode.Alias}" disabled="{{ :host.readonly }}" handle-selector="*[handle]"\n drop-behavior="${e.UI.DropBehavior.InsertChild}" drop-targets="{{ [::_dropTarget] }}" columns></${e.P}-drag-drop> \n <${e.P}-repeater class="display-flex flex-fill" columns> \n \x3c!-- columns --\x3e\n <div class="display-flex flex-nowrap" drop-target>\n <template>\n <${e.P}-panel behaviors="{{ [::_colDragger] }}">\n <div class="${e.PCSS}-panel panel-side-left side-auto">\n <div class="panel-side">\n <${e.P}-button class="display-block button-flat icon-glyph-small" icon-glyph="drag_indicator" handle></${e.P}-button>\n <${e.P}-button class="display-block button-flat icon-glyph-small" on-click=":host.value.splice(^index, 1)" icon-glyph="clear"></${e.P}-button>\n </div>\n <div class="panel-heading">\n <${e.P}-text text="{{ ^item.header }}"></${e.P}-text>\n </div>\n <${e.P}-widget-datacolumn class="panel-body" header="{{ ^item.header, twoway }}" content-expression="{{ ^item.content, twoway }}"></${e.P}-widget-datacolumn>\n </div>\n </${e.P}-panel>\n </template>\n </div>\n </${e.P}-repeater>\n\n </div>\n <${e.P}-panel class="datacolumns-props" hide="{{ :host.readonly }}">\n <${e.P}-drag-drop mode="${e.UI.DragDataMode.Copy}" disabled="{{ :host.readonly }}" handle-selector="*[handle]"\n drop-behavior="${e.UI.DropBehavior.InsertChild}" drop-targets="{{ [::_dropTarget] }}" properties></${e.P}-drag-drop>\n <${e.P}-repeater datasource="{{ :host._columnifyMetadata(:host.properties) }}">\n \x3c!-- properties --\x3e\n <template>\n <${e.P}-panel behaviors="{{ [::_propDragger] }}" class="${e.PCSS}-panel panel-side-left side-auto panel-primary panel-filled ${e.PCSS}-margin margin-bottom-1">\n <div class="panel-side">\n <${e.P}-button class="display-block button-flat icon-glyph-small" icon-glyph="drag_indicator" handle></${e.P}-button>\n </div>\n <div class="text-truncate panel-body">\n <${e.P}-span text="{{ ^item.header }}"></${e.P}-span>\n </div>\n </${e.P}-panel>\n </template>\n </${e.P}-repeater>\n </${e.P}-panel>\n</div>`})],o),r.PacemDataColumnsElement=o}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){class PacemUiWidgetElement extends t.PacemWidgetElement{constructor(e,t=1,r){super(e,r),this.colspan=t,this.rowspan=1}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,"ui-widget "+e.PCSS+"-cell cols-xs-start-1 cols-xs-12 rows-xs-start-auto")}propertyChangedCallback(t,r,a,s){switch(super.propertyChangedCallback(t,r,a,s),t){case"row":e.Utils.removeClass(this,`rows-start-${r+1}`),e.Utils.addClass(this,`rows-start-${a+1}`);break;case"rowspan":e.Utils.removeClass(this,`rows-${r}`),e.Utils.addClass(this,`rows-${a}`);break;case"column":e.Utils.removeClass(this,`cols-start-${r+1}`),e.Utils.addClass(this,`cols-start-${a+1}`);break;case"colspan":e.Utils.removeClass(this,`cols-${r}`),e.Utils.addClass(this,`cols-${a}`);break;case"borders":(this.borders?e.Utils.addClass:e.Utils.removeClass).apply(this,[this,e.PCSS+"-border"]);break;case"corners":(this.borders?e.Utils.addClass:e.Utils.removeClass).apply(this,[this,e.PCSS+"-corners"])}}get container(){return this._container}findContainer(){return e.CustomElementUtils.findAncestor(this,e=>e instanceof PacemCompositeWidgetElement)}viewActivatedCallback(){super.viewActivatedCallback();let t=this._container=this.findContainer();e.Utils.isNull(t)||t.register(this)}disconnectedCallback(){e.Utils.isNull(this._container)||this._container.unregister(this),super.disconnectedCallback()}}__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.Number})],PacemUiWidgetElement.prototype,"column",void 0),__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.Number})],PacemUiWidgetElement.prototype,"row",void 0),__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.Number})],PacemUiWidgetElement.prototype,"colspan",void 0),__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.Number})],PacemUiWidgetElement.prototype,"rowspan",void 0),__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.Boolean})],PacemUiWidgetElement.prototype,"borders",void 0),__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.Boolean})],PacemUiWidgetElement.prototype,"corners",void 0),t.PacemUiWidgetElement=PacemUiWidgetElement,t.WidgetRegisterEventName="widgetregister",t.WidgetUnregisterEventName="widgetunregister",t.LayoutChangeEventName="layoutchange";class WidgetRegisterEvent extends CustomEvent{constructor(r,a){super(t.WidgetRegisterEventName,e.Utils.extend(a||{},{detail:r}))}}t.WidgetRegisterEvent=WidgetRegisterEvent;class WidgetUnregisterEvent extends CustomEvent{constructor(r,a){super(t.WidgetUnregisterEventName,e.Utils.extend(a||{},{detail:r}))}}t.WidgetUnregisterEvent=WidgetUnregisterEvent;class PacemCompositeWidgetElement extends PacemUiWidgetElement{get itemsElement(){return this}validate(e){return e instanceof PacemUiWidgetElement}viewActivatedCallback(){super.viewActivatedCallback(),e.Utils.addClass(this.itemsElement,e.PCSS+"-items-element")}appendItem(e){this.itemsElement.appendChild(e)}register(t){if(!this.validate(t))return this.log(e.Logging.LogLevel.Debug,`${t&&t.localName} element couldn't be registered in a ${this.localName} element.`),!1;let r=!1;const a=this.items=this.items||[];return e.Utils.isNullOrEmpty(a)?(this.items=[t],r=!0):-1===a.indexOf(t)&&(a.push(t),r=!0),r&&this.dispatchEvent(new WidgetRegisterEvent(t)),r}unregister(t){const r=this.items,a=!e.Utils.isNullOrEmpty(r)&&r.indexOf(t);if(a>=0){let e=r.splice(a,1);return this.dispatchEvent(new WidgetUnregisterEvent(e[0])),!0}return!1}}__decorate([e.Watch()],PacemCompositeWidgetElement.prototype,"items",void 0),t.PacemCompositeWidgetElement=PacemCompositeWidgetElement}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const r=t.buildWidgetMetadata({display:{icon:"font_download",name:"Text",description:"Plain text widget."},props:[{prop:"text",type:t.EXPRESSION_METADATA_TYPE,display:{name:"Text"},extra:t.EXPRESSION_WIDGET_METADATA_EXTRA}]});let a=class PacemWidgetTextElement extends t.PacemUiWidgetElement{constructor(){super(r)}};__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],a.prototype,"text",void 0),a=__decorate([e.CustomElement({tagName:e.P+"-widget-text",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-text text="{{ :host.text }}"></${e.P}-text>`})],a),t.PacemWidgetTextElement=a}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){function r(){const e=document.createElementNS("http://www.w3.org/2000/svg","svg");return e.style.pointerEvents="none",e.style.zIndex="1000",e.setAttribute("height","100%"),e.setAttribute("width","100%"),e.setAttribute("preserveAspectRatio","none"),e.setAttribute("class","grid-cell-wrapper"),e.innerHTML='<rect class="grid-cell" width="100%" height="100%"></rect>',e}t.GRID_COLUMNS=12;const a=t.GRID_COLUMNS,s={display:{icon:"grid_on",name:"Grid",description:"Composition Widget that lays out child-widgets in a grid container."},props:[{prop:"rows",type:"int",display:{name:"Rows",cssClass:["cols-lg-4"]},validators:[{type:"required",errorMessage:""},{type:"range",errorMessage:"",params:{min:1,max:24}}]},{prop:"rowGap",type:"int",display:{name:"Row gap",cssClass:["cols-lg-4"]},validators:[{type:"range",errorMessage:"",params:{min:0,max:3,step:.25}}]},{prop:"columnGap",type:"int",display:{name:"Column gap",cssClass:["cols-lg-4"]},validators:[{type:"range",errorMessage:"",params:{min:0,max:3,step:.25}}]}]};let o=class PacemGridWidgetElement extends t.PacemCompositeWidgetElement{constructor(){super(t.buildWidgetMetadata(s),a,"grid"),this._widgetPropertyChange=e=>{if("row"===e.detail.propertyName||"rowspan"===e.detail.propertyName){const t=e.target;this.rows=Math.max(this.rows,t.row+t.rowspan)}},this._dragDropHandler=t=>{const r=t.detail,s=r.element;switch(t.type){case e.UI.DragDropEventType.Start:this._gridBoxes.forEach(e=>{e.style.pointerEvents="auto"}),this._initState={colspan:s.colspan,rowspan:s.rowspan,col:s.column,row:s.row};break;case e.UI.DragDropEventType.End:this._gridBoxes.forEach(e=>{e.style.pointerEvents="none"});break;case e.UI.DragDropEventType.Over:var o=r.target,i=+o.style.gridColumnStart-1,n=+o.style.gridRowStart-1;const t=i+this._initState.colspan,l=n+this._initState.rowspan;if(!this._intersects(s,i,n,s.colspan,s.rowspan)){let e=!1;t<=(this.columns||a)&&(e=s.column!==i,s.column=i),l<=(this.rows||1)&&(e=e||s.row!==n,s.row=n)}}},this._resizeHandler=t=>{switch(t.type){case e.UI.RescaleEventType.Start:e.Utils.addClass(t.detail.element,e.PCSS+"-rescaling"),this._gridBoxes.forEach(e=>{e.style.pointerEvents="auto"});break;case e.UI.RescaleEventType.End:this._gridBoxes.forEach(e=>{e.style.pointerEvents="none"}),e.Utils.removeClass(t.detail.element,e.PCSS+"-rescaling");break;case e.UI.RescaleEventType.Rescale:t.preventDefault();const s={x:t.clientX,y:t.clientY},o=t.detail.handle,i=document.elementsFromPoint(s.x,s.y).find(e=>this._dragDrop.dropTargets.indexOf(e)>=0);if(i){var r=+i.style.gridColumnStart,a=+i.style.gridRowStart;const e=t.detail.element,s=e.column+1,n=e.row+1,l=1+r-s,c=1+a-n;if(!this._intersects(e,e.column,e.row,l,c)){let t=!1;r>=s&&o.endsWith("right")&&(t=e.colspan!==l,e.colspan=l),a>=n&&o.startsWith("bottom")&&(t=t||e.rowspan!==c,e.rowspan=c)}}}},this._gridBoxes=[]}register(t){let r=super.register(t);if(r){const r=t.row||0,a=t.column||0,s=t.colspan||2,o=t.rowspan||1;let i=!this._intersects(t,a,r,s,o);if(i)t.row=r,t.column=a,t.colspan=s,t.rowspan=o;else{if(!i){let e=(e=!1)=>{let r=this.columns-1;e||(r=r-s+1);for(let e=0;e<this.rows;e++){for(let a=0;a<=r;a++)if(!this._intersects(t,a,e,s,o)){t.column=a,t.row=e,t.colspan=Math.min(r+1-a,s),t.rowspan=o,i=!0;break}if(i)break}};e(),!i&&s>1&&e(!0)}i||(this.rows++,t.row=this.rows-1,t.column=0)}t.behaviors=[this._dragDrop,this._rescaler],t.addEventListener(e.PropertyChangeEventName,this._widgetPropertyChange,!1)}return r}unregister(t){let r=super.unregister(t);if(r){t.removeEventListener(e.PropertyChangeEventName,this._widgetPropertyChange,!1);const r=t.behaviors.indexOf(this._dragDrop);r>=0&&t.behaviors.splice(r,1);const a=t.behaviors.indexOf(this._rescaler);a>=0&&t.behaviors.splice(a,1)}return r}_intersects(e,t,r,a,s){for(let o of this.items){let i=o;if(i!==e&&(i.column<t+a&&i.column+i.colspan>t&&i.row<r+s&&i.row+i.rowspan>r))return!0}return!1}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-grid");let r=this._dragDrop=document.createElement(e.P+"-drag-drop"),a=document.createElement("div");document.body.appendChild(a),r.floater=a,r.mode=e.UI.DragDataMode.Alias,r.dropBehavior=e.UI.DropBehavior.None,r.addEventListener(e.UI.DragDropEventType.Start,this._dragDropHandler,!1),r.addEventListener(e.UI.DragDropEventType.Over,this._dragDropHandler,!1),r.addEventListener(e.UI.DragDropEventType.End,this._dragDropHandler,!1),document.body.appendChild(r);let s=this._rescaler=document.createElement(e.P+"-rescale");s.handles=[e.UI.RescaleHandle.Right,e.UI.RescaleHandle.Bottom],s.addEventListener(e.UI.RescaleEventType.Start,this._resizeHandler,!1),s.addEventListener(e.UI.RescaleEventType.Rescale,this._resizeHandler,!1),s.addEventListener(e.UI.RescaleEventType.End,this._resizeHandler,!1),document.body.appendChild(s),e.Utils.isNullOrEmpty(this.columns)&&(this.columns=t.GRID_COLUMNS),e.Utils.isNullOrEmpty(this.rows)&&(this.rows=1)}viewActivatedCallback(){super.viewActivatedCallback(),this.adapt()}propertyChangedCallback(e,t,r,a){super.propertyChangedCallback(e,t,r,a),this.adapt()}disconnectedCallback(){var t=this._dragDrop,r=this._rescaler;e.Utils.isNull(t)||(t.floater.remove(),t.removeEventListener(e.UI.DragDropEventType.Start,this._dragDropHandler,!1),t.removeEventListener(e.UI.DragDropEventType.Over,this._dragDropHandler,!1),t.removeEventListener(e.UI.DragDropEventType.End,this._dragDropHandler,!1),t.remove(),this._dragDrop=null),e.Utils.isNull(r)||(r.removeEventListener(e.UI.RescaleEventType.Start,this._resizeHandler,!1),r.removeEventListener(e.UI.RescaleEventType.Rescale,this._resizeHandler,!1),r.removeEventListener(e.UI.RescaleEventType.End,this._resizeHandler,!1),r.remove(),this._rescaler=null),super.disconnectedCallback()}_normalize(e,t=1){return"string"==typeof e?e:(null==e&&(e=t),this.unitPixels(e)+"px")}unitPixels(e){return e*(this.unit||8)}adapt(){this.style.marginTop=this.unitPixels(this.marginTop||0)+"px",this.style.marginBottom=this.unitPixels(this.marginBottom||0)+"px",this.style.gridTemplateColumns=`repeat(${this.columns||a}, 1fr)`;let e=this._normalize(this.minRowheight,3),t=this._normalize(this.rowheight||"auto");this.style.gridTemplateRows=`repeat(${this.rows||1}, minmax(${e}, ${t}))`,this.style.gridRowGap=this._normalize(this.rowGap,1),this.style.gridColumnGap=this._normalize(this.columnGap,1),this._setGridLines()}_setGridLines(){var t=0;const s=this.editing;if(s){const e=this.columns||a,s=e*(this.rows||1);t=s;for(let t=0;t<s;t++){for(;this._gridBoxes.length<=t;){let e=r();this.appendChild(e),this._gridBoxes.push(e)}let a=this._gridBoxes[t];const s=t%e,o=Math.floor(t/e);a.style.gridColumn=(s+1).toString(),a.style.gridRow=(o+1).toString()}}for(let e of this._gridBoxes.splice(t))e.remove();e.Utils.isNull(this._dragDrop)||e.Utils.isNull(this._rescaler)||(this._dragDrop.disabled=this._rescaler.disabled=!s,this._dragDrop.dropTargets=this._gridBoxes)}};__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"unit",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"marginTop",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"marginBottom",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"columns",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"rows",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"minRowheight",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"rowheight",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"rowGap",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"columnGap",void 0),__decorate([e.Debounce(100)],o.prototype,"adapt",null),o=__decorate([e.CustomElement({tagName:e.P+"-widget-grid"})],o),t.PacemGridWidgetElement=o}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){let r=class PacemWidgetPickerElement extends t.PacemCompositeWidgetElement{register(e){const t=super.register(e);return t&&(e.hide=!0),t}};__decorate([e.ViewChild(e.P+"-drag-drop")],r.prototype,"_dragDrop",void 0),r=__decorate([e.CustomElement({tagName:e.P+"-widget-picker",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-repeater datasource="{{ :host.items }}">\n <template>\n <${e.P}-panel behaviors="{{ [::_dragDrop] }}" class="${e.PCSS}-widget-itempicker display-flex flex-fill flex-middle flex-nowrap">\n <i class="${e.PCSS}-icon flex-auto" dragger>drag_indicator</i>\n <${e.P}-icon icon="{{ ^item.metadata.display.icon }}" class="flex-auto ${e.PCSS}-margin margin-x-1"></${e.P}-icon>\n <${e.P}-text text="{{ ^item.metadata.display.name }}"></${e.P}-text>\n </${e.P}-panel>\n </template>\n</${e.P}-repeater>\n<${e.P}-drag-drop handle-selector="i.${e.PCSS}-icon[dragger]"></${e.P}-drag-drop>\n<${e.P}-content></${e.P}-content>`})],r),t.PacemWidgetPickerElement=r}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const r={display:{name:"DataColumn"},props:[{prop:"header",type:"string",display:{name:"Header"}},{prop:"content",type:t.EXPRESSION_METADATA_TYPE,display:{name:"Content"},extra:t.EXPRESSION_WIDGET_METADATA_EXTRA}]},a=t.buildWidgetMetadata({display:{icon:"table_chart",name:"DataGrid",description:"DataGrid widget."},props:[{prop:"datasource",type:t.EXPRESSION_METADATA_TYPE,display:{name:"Datasource"},extra:e.Utils.extend({},t.EXPRESSION_WIDGET_METADATA_EXTRA,{filter:e=>e instanceof t.PacemWidgetDataElement||e instanceof t.PacemWidgetFetchElement})},{prop:"columns",type:t.DATACOLUMNS_METADATA_TYPE,display:{name:"Columns"},extra:{properties:"datarowMetadata"},props:t.gridifyMetadata(r)}]});function s(t,r=[]){const{head:a,body:s}=function(t=[]){const r=document.createDocumentFragment(),a=document.createDocumentFragment();let s=1;for(let o of t){const t=document.createElement("div");t.classList.add(e.PCSS+"-headcell"),t.textContent=o.header,r.appendChild(t);const i=new e.Components.PacemSpanElement;i.classList.add(e.PCSS+"-datacell","datacell-corners"),i.style.gridColumn=s.toString(),i.setAttribute("css","{{ {'grid-row': ^index+2} }}"),i.setAttribute("content",o.content),a.appendChild(i),s++}const o=new e.Components.PacemPanelElement;return o.classList.add(e.PCSS+"-datarow"),o.setAttribute("css","{{ {'grid-row': ^index+2} }}"),o.setAttribute("css-class","{{ {'datarow-alt': ^index % 2 === 1} }}"),o.style.gridColumn="1/"+(t.length+1),a.appendChild(o),{head:r,body:a}}(r),o=document.createElement("div");o.appendChild(a);const i=document.createElement("div");return i.appendChild(s),`<${e.P}-repeater datasource="{{ #${t}.datasource }}">\n <div class="${e.PCSS}-datatable" style="grid-template-columns: ${function(e=[]){var t="";for(let r of e||[]){const e=r.width||1;t+="number"==typeof e?e+"fr ":"auto "}return t}(r)}">\n ${o.innerHTML}\n <template>${i.innerHTML}</template>\n</div></${e.P}-repeater>`}let o=class PacemWidgetDataGridElement extends t.PacemUiWidgetElement{constructor(){super(a),this.columns=[],this.datasource=[],this.datarowMetadata=[],this._builtUponDatasource=!1}_gridify(e=this.columns){var t="";for(let r of e||[]){const e=r.width||1;t+="number"==typeof e?e+"fr ":"auto "}return t}propertyChangedCallback(e,t,r,a){if(super.propertyChangedCallback(e,t,r,a),!a)switch(e){case"columns":this.innerHTML=s(this.id,r);break;case"datasource":this._extractMetadataJustInCase(r)}}viewActivatedCallback(){super.viewActivatedCallback(),this.innerHTML=s(this.id,this.columns)}_seekArray(t){if(e.Utils.isArray(t))return t;if("object"==typeof t)for(let r in t){const a=this._seekArray(t[r]);if(!e.Utils.isNull(a))return a}return null}_extractMetadataJustInCase(t=this.datasource){if((e.Utils.isNullOrEmpty(this.datarowMetadata)||this._builtUponDatasource)&&!e.Utils.isNullOrEmpty(t)){const r=this._seekArray(t);if(!e.Utils.isNullOrEmpty(r)){const e=[],t=r[0];for(let r in t)e.push({prop:r,type:typeof t[r]});this.datarowMetadata=e,this._builtUponDatasource=!0}}}};__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.Json})],o.prototype,"columns",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"datasource",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"datarowMetadata",void 0),__decorate([e.ViewChild(`.${e.PCSS}-datatable`)],o.prototype,"_datatable",void 0),__decorate([e.ViewChild("template")],o.prototype,"_template",void 0),__decorate([e.ViewChild(e.P+"-repeater")],o.prototype,"_repeater",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-widget-datagrid"})],o),t.PacemWidgetDataGridElement=o}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={}));
6
+ var Pacem,__decorate=this&&this.__decorate||function(e,t,r,a){var s,o=arguments.length,i=o<3?t:null===a?a=Object.getOwnPropertyDescriptor(t,r):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,a);else for(var n=e.length-1;n>=0;n--)(s=e[n])&&(i=(o<3?s(i):o>3?s(t,r,i):s(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};!function(e){!function(t){t.PermissionEditEventName="permissionedit";class PermissionEditEvent extends CustomEvent{constructor(e){super(t.PermissionEditEventName,{detail:e,cancelable:!1,bubbles:!0})}}t.PermissionEditEvent=PermissionEditEvent;t.Permissible=class Permissible{static canEdit(e,t){return this._canDoSomethingToResource(e,t,e=>e.update)}static canRead(e,t){return this._canDoSomethingToResource(e,t,e=>e.read)}static canAdd(e,t){return this._canDoSomethingToResource(e,t,e=>e.create)}static canDelete(e,t){return this._canDoSomethingToResource(e,t,e=>e.delete)}static canTranslate(e,t){return this._canDoSomethingToResource(e,t,e=>e.translate)}static _canDoSomethingToResource(t,r,a){if(e.Utils.isNullOrEmpty(t)||e.Utils.isNull(r))return!1;var s=!0;if(r.permissions&&r.permissions.length>0){s=!1;for(let e of r.permissions)if(a(e)&&t[e.claimType]&&t[e.claimType].indexOf(e.claimValue)>=0)return!0}return s}}}(e.Cms||(e.Cms={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const r="pacem:metadatabag";t.SwaggerCmsParser=class SwaggerCmsParser{constructor(t=new e.Scaffolding.OpenApi.OpenApiParser){this._openApi=t,this._cachedMetadataUrls=[]}async load(e,t){let a=await this._openApi.load(e,t);if(null!=a){a[r]={};for(let e of a.endpoints)await this._enrichSchemas(a,e,t)}return a}async _enrichSchemas(e,t,r){const a=t.response;a&&a.meta&&(a.fields=await this._fetchMetadata(e,{name:a.fullType,schema:a.meta},r));const s=t.parameters;for(let t of s||[])if(t.meta&&t.fullType){let a=await this._fetchMetadata(e,{name:t.fullType,schema:t.meta},r);t.fields=a}}clearCache(){const e=this.cache,t=this._cachedMetadataUrls;if(e){for(let r of t)e.removeProperty(r);t.splice(0)}}async _fetchMetadata(t,a,s){let o=async a=>{let i=[];if(a&&a.name){if(t[r][a.name])return t[r][a.name];t[r][a.name]=i;let n,l={props:[]};if(!/^https?:\/\//.test(a.name))return void console.warn("Swagger entity definition keys must appear in form of absolute url. Their response to a GET request needs to be the entity metadata itself.\nNo other options are currently supported.");if(n=a.name,n){let e=async()=>{let e=await fetch(n,{credentials:"omit",mode:"cors",headers:s});if(e.ok)return await e.json()};this.cache?(l=this.cache.getPropertyValue(n),l||(l=await e(),this._cachedMetadataUrls.push(n),this.cache.setPropertyValue(n,l,!1))):l=await e()}let c=a.schema;for(let a in c.properties){let s=c.properties[a],n=l&&l.props.find(e=>e.prop===a),d=Object.assign({prop:a,type:s.type||"text",props:void 0},n||{isReadOnly:!0});if(n){let a=s.items&&s.items.$ref||s.$ref;if(a){let s=e.Scaffolding.OpenApi.getOpenApiDefinition(t,a),i=s.name;t[r][i]?d.props=t[r][i]:d.props=await o(s)}}i.push(d)}}return i};return await o(a)}}}(t.OpenApi||(t.OpenApi={}))}(e.Cms||(e.Cms={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){t.Functions={dismiss:(...e)=>{for(let r of e||[])delete t.Functions[r]},handleExpressionValueChange:(t,r,a)=>{if("value"===t.detail.propertyName&&!e.Utils.isNull(a)){const s=t.detail.currentValue;if(a instanceof HTMLElement){let t=e.CustomElementUtils.camelToKebab(r);e.Utils.isNullOrEmpty(s)?a.removeAttribute(t):a.setAttribute(t,s.toString())}else a[r]=s}}},t.EXPRESSION_METADATA_TYPE=(t,r=":host",a=":host.entity")=>{const s={},o=t.metadata,i=e.Components.Cms.Functions,n=[];s.value=`{{ ${a} instanceof HTMLElement && ${a}.getAttribute('${e.CustomElementUtils.camelToKebab(o.prop)}') }}`,s["on-"+e.PropertyChangeEventName]=`Pacem.Components.Cms.Functions.handleExpressionValueChange($event, '${o.prop}', ${a})`,s.converter=`{{ Pacem.CustomElementUtils.getWatchedProperty(${a}, '${o.prop}').config.converter }}`;const l=e.P+"-expression";let c=o.extra||{};if(e.Utils.isNullOrEmpty(c.selector)||(s.selector=c.selector),!e.Utils.isNullOrEmpty(c.filter))switch(typeof c.filter){case"string":s.filter=`{{ (e) => e.constructor.name === "${c.filter}" || e.localName === "${c.filter.toLowerCase()}" }}`;break;case"function":const t="fn"+e.Utils.uniqueCode();i[t]=c.filter,s.filter=`{{ Pacem.Components.Cms.Functions.${t}, once }}`,n.push(t)}if("function"==typeof c.labeler){const t="fn"+e.Utils.uniqueCode();i[t]=c.labeler,s.labeler=`{{ Pacem.Components.Cms.Functions.${t}, once }}`,n.push(t)}return n.length>0&&(s["on-unload"]=`{{ Pacem.Components.Cms.Functions.dismiss('${n.join("','")}') }}`),{tagName:l,attrs:s}}}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){class PacemElementPickerElementBase extends e.Components.Scaffolding.PacemBaseElement{}__decorate([e.Watch({converter:e.PropertyConverters.String})],PacemElementPickerElementBase.prototype,"selector",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Eval})],PacemElementPickerElementBase.prototype,"filter",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Eval})],PacemElementPickerElementBase.prototype,"labeler",void 0),t.PacemElementPickerElementBase=PacemElementPickerElementBase;let r=class PacemElementPickerElement extends PacemElementPickerElementBase{get inputFields(){return[this._select]}toggleReadonlyView(e){this._select.readonly=e}onChange(t){return e.Utils.fromResult(this.value=this._select.value)}acceptValue(e){this._select.value=e}getViewValue(e){return this._select.viewValue}convertValueAttributeToProperty(t){return e.PropertyConverters.Element.convert(t)}viewActivatedCallback(){super.viewActivatedCallback(),this._databind()}propertyChangedCallback(e,t,r,a){if(super.propertyChangedCallback(e,t,r,a),!a)switch(e){case"selector":case"filter":case"labeler":this._databind()}}_databind(){const t=this.labeler||(e=>{let t=e.constructor.name;return e.id&&(t+="#"+e.id),t}),r=[];document.querySelectorAll(this.selector||"[pacem]").forEach((a,s,o)=>{!e.Utils.isNull(this.filter)&&!0!==this.filter(a)||e.Utils.isNullOrEmpty(a.id)||r.push({element:a,label:t(a)})}),this._select.valueProperty="element",this._select.textProperty="label",this._select.datasource=r}};__decorate([e.ViewChild(e.P+"-select")],r.prototype,"_select",void 0),__decorate([e.Debounce(50)],r.prototype,"_databind",null),r=__decorate([e.CustomElement({tagName:e.P+"-element-picker",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-select></${e.P}-select>`})],r),t.PacemElementPickerElement=r}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(r){let a;!function(e){e.Constant="const",e.PropertyReference="property",e.Expression="expr"}(a=r.ExpressionSource||(r.ExpressionSource={}));let s=class PacemExpressionElement extends r.PacemElementPickerElementBase{propertyChangedCallback(t,r,s,o){if(super.propertyChangedCallback(t,r,s,o),"converter"===t)this._setFeedbackText(this.value);else if(!o&&this._editing)switch(t){case"_source":if(s===a.PropertyReference)this._picker.focus();else this._editor.focus();break;case"_propRef":e.Utils.isNullOrEmpty(s)||(this._editor.focus(),this._editor.value="{{ #"+this._sourceRef.id+"."+s+" }}"),this.changeHandler(new Event("change"))}}get inputFields(){return[this._editor]}toggleReadonlyView(e){e&&(this._editing=!1)}setPristine(){super.setPristine(),this._editing=!1}onChange(t){return e.Utils.fromResult(this.value=this._editor.value)}acceptValue(e){this._view.textContent=e||"...",this._setFeedbackText(e),this._reverseStructure(),e!==this._editor.value&&(this._editor.value=e)}_setFeedbackText(t=this.value){const r=this.converter;e.CustomElementUtils.isBindingAttribute(t)||"function"!=typeof(r&&r.convert)?this._eval.setAttribute("text",t):this._eval.text=void 0===t?"<undefined>":r.convert(t)}getViewValue(e){return e}convertValueAttributeToProperty(e){return e}_reverseStructure(){let r=()=>{this._source=this._sourceRef=this._propRef=void 0},s=this.value;if(e.Utils.isNullOrEmpty(s))r();else if(e.CustomElementUtils.isBindingAttribute(s)){const r=e.CustomElementUtils.parseBindingAttribute(s,this).dependencies;if(e.Utils.isNullOrEmpty(r)||r.length>1||t.RepeaterItem.isRepeaterItem(r[0].element))this._source=a.Expression;else{const e=r[0];this._source=a.PropertyReference,this._sourceRef=document.querySelector("#"+e.element.id),this._propRef=e.path}}else this._source=a.Constant}};__decorate([e.Watch({emit:!1})],s.prototype,"converter",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],s.prototype,"_editing",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"_source",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Element})],s.prototype,"_sourceRef",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"_propRef",void 0),__decorate([e.ViewChild(e.P+"-element-picker")],s.prototype,"_picker",void 0),__decorate([e.ViewChild(e.P+"-textarea")],s.prototype,"_editor",void 0),__decorate([e.ViewChild("span."+e.PCSS+"-viewfinder")],s.prototype,"_view",void 0),__decorate([e.ViewChild(e.P+"-text")],s.prototype,"_eval",void 0),__decorate([e.Debounce(50)],s.prototype,"_reverseStructure",null),s=__decorate([e.CustomElement({tagName:e.P+"-expression",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-collapse class="${e.PCSS}-expression" collapse="{{ !:host._editing }}">\n <div class="expression-builder ${e.PCSS}-grid grid-tiny-rowgap grid-tiny-colgap ${e.PCSS}-pad pad-bottom-2">\n <div class="${e.PCSS}-cell">\n <${e.P}-select value="{{ :host._source, twoway }}" class="display-block">\n <${e.P}-data-item value="${a.Constant}" label="constant value"></${e.P}-data-item>\n <${e.P}-data-item value="${a.PropertyReference}" label="property reference"></${e.P}-data-item>\n <${e.P}-data-item value="${a.Expression}" label="complex expression"></${e.P}-data-item>\n </${e.P}-select>\n </div>\n\n <${e.P}-panel class="${e.PCSS}-cell cols-hd-6" hide="{{ :host._source !== '${a.PropertyReference}' }}">\n <${e.P}-element-picker value="{{ :host._sourceRef, twoway }}" selector="{{ :host.selector }}" filter="{{ :host.filter }}" labeler="{{ :host.labeler }}" class="display-block"></${e.P}-element-picker>\n </${e.P}-panel>\n <${e.P}-panel class="${e.PCSS}-cell cols-hd-6" hide="{{ :host._source !== '${a.PropertyReference}' }}">\n <${e.P}-property-picker value="{{ :host._propRef, twoway }}" disabled="{{ !:host._sourceRef }}" target="{{ :host._sourceRef }}" on-change="::_editor.focus()" class="display-block"></${e.P}-property-picker>\n </${e.P}-panel>\n\n <${e.P}-panel class="${e.PCSS}-cell">\n <${e.P}-textarea class="display-block" placeholder="{{ '{{ '+ (:host._source || '') +'... }}' }}" change-policy="${e.Components.Scaffolding.ChangePolicy.Blur}"></${e.P}-textarea>\n </${e.P}-panel>\n </div>\n</${e.P}-collapse>\n<div class="${e.PCSS}-fieldset">\n <div class="fieldset-left">\n <div class="${e.PCSS}-fieldgroup ${e.PCSS}-viewfinder">\n <div class="text-truncate ${e.PCSS}-pad pad-x-1"><span class="${e.PCSS}-viewfinder text-tech">{{ :host.value || '...' }}</span></div>\n <${e.P}-panel class="fieldgroup-prepend">\n <${e.P}-button class="flat edit ${e.PCSS}-pad pad-left-1" on-click=":host._editing = !:host._editing" hide="{{ :host.readonly }}"></${e.P}-button>\n </${e.P}-panel>\n <${e.P}-panel class="fieldgroup-append text-tech display-flex flex-middle flex-nowrap" hide="{{ $pacem.isNullOrEmpty(:host.value) }}">\n <i class="${e.PCSS}-icon text-primary">keyboard_arrow_right</i>\n <${e.P}-text text="?" class="bg-primary ${e.PCSS}-pad pad-left-1 pad-right-1 ${e.PCSS}-margin margin-right-1 text-truncate" eval></${e.P}-text>\n </${e.P}-panel>\n </div>\n </div>\n</div>`})],s),r.PacemExpressionElement=s}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(r){const a={props:[{prop:"permissions",type:"array",display:{name:"Permissions"},props:{display:{cssClass:[e.PCSS+"-cell",e.PCSS+"-grid","grid-novgap","grid-tiny-colgap","grid-nospace"],name:"Permission"},props:Array.prototype.concat.apply([{prop:"claimType",type:"string",display:{cssClass:[e.PCSS+"-cell","cols-hd-4","cols-lg-6","field-stretch","field-minimal"],name:"Claim type"},validators:[{type:"required",errorMessage:"!"}]},{prop:"claimValue",type:"string",display:{cssClass:[e.PCSS+"-cell","cols-hd-4","cols-lg-6","field-stretch","field-minimal"],name:"Claim value"},validators:[{type:"required",errorMessage:"!"}]}],["read","update","create","delete"].map((t,r)=>({prop:t,type:"boolean",display:{cssClass:[e.PCSS+"-cell","cols-hd-1","cols-3","field-minimal",e.PCSS+"-pad pad-left-2"],name:t.charAt(0).toUpperCase()+t.substr(1)}})))}}]};function s(t){t.display=t.display||{name:t.prop,cssClass:[]};(t.display.cssClass=e.Utils.isArray(t.display.cssClass)&&t.display.cssClass||[]).push(e.PCSS+"-cell")}r.DEFAULT_METADATA={display:{name:"Widget",cssClass:[e.PCSS+"-grid","grid-novgap","grid-tiny-colgap","grid-nospace"]},props:[{prop:"tag",type:"string",display:{name:"Tag",cssClass:[e.PCSS+"-cell"]}}]},r.gridifyMetadata=function(t){var a=t&&t.props||[],o=t&&t.display||{name:"Element"};if(!e.Utils.isNull(o)){const e=o.cssClass=o.cssClass||[];Array.prototype.push.apply(e,r.DEFAULT_METADATA.display.cssClass)}return a.forEach(s),{display:o,props:a}},r.buildWidgetMetadata=function(t){var a=e.Utils.extend({},r.DEFAULT_METADATA.display,t&&t.display||{}),o=e.Utils.clone(r.DEFAULT_METADATA.props);return Array.prototype.push.apply(o,(t&&t.props||[]).filter(e=>"tag"!==e.prop&&(s(e),!0))),{display:a,props:o}};const o=e.PCSS+"-widget";r.EXPRESSION_WIDGET_METADATA_EXTRA={selector:"."+o,labeler:t=>e.Utils.isNullOrEmpty(t.tag)?(t.metadata&&t.metadata.display&&t.metadata.display.name||"")+"#"+t.id:t.tag};r.Widget=class Widget{static findAll(t){return e.CustomElementUtils.findAll("."+o,r=>r instanceof PacemWidgetElement&&!e.Utils.isNullOrEmpty(r.id)&&(e.Utils.isNull(t)||t(r)))}};let i=class PacemWidgetToolbarElement extends t.PacemElement{get editButton(){return this._btnEdit}get permissionsButton(){return this._btnPerms}get removeButton(){return this._btnRemove}_edit(e){const t=this._proxy.dom.find(e=>"core"in e.attributes);t.open(this.target,!0),t.metadata=this.target.metadata,this._popoutJustInCase()}_editPermissions(e){const t=this._proxy.dom.find(e=>"permissions"in e.attributes);t.open(this.target),t.metadata=this.target.permissionMetadata,this._popoutJustInCase()}_popoutJustInCase(){const t=e.CustomElementUtils.findAncestorOfType(this,e.Components.UI.PacemBalloonElement);e.Utils.isNullOrEmpty(t)||t.popout()}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],i.prototype,"target",void 0),__decorate([e.ViewChild(".buttons > div")],i.prototype,"_toolbar",void 0),__decorate([e.ViewChild(e.P+"-button[edit]")],i.prototype,"_btnEdit",void 0),__decorate([e.ViewChild(e.P+"-button[permissions]")],i.prototype,"_btnPerms",void 0),__decorate([e.ViewChild(e.P+"-button[remove]")],i.prototype,"_btnRemove",void 0),__decorate([e.ViewChild(e.P+"-shell-proxy")],i.prototype,"_proxy",void 0),i=__decorate([e.CustomElement({tagName:e.P+"-widget-toolbar",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-span class="toolbar-text" content="{{ '<i class=&quot;${e.PCSS}-icon&quot;>'+ (::target.metadata && ::target.metadata.display && ::target.metadata.display.icon || 'widgets') +'</i> '+ (::target.tag || (::target.metadata && ::target.metadata.display && ::target.metadata.display.name || ::target.localName) +'#'+ ::target.id) }}"></${e.P}-span>\n<div class="buttons ${e.PCSS}-buttonset ${e.PCSS}-pad ${e.PCSS}-margin pad-0 margin-left-2">\n <div class="buttonset-left">\n <${e.P}-button edit class="button edit" on-click=":host._edit($event)"></${e.P}-button>\n <${e.P}-button permissions class="button" on-click=":host._editPermissions($event)" css-class="{{ {'button-success': ::target.permissions.length > 0} }}" icon-glyph="verified_user"></${e.P}-button>\n <${e.P}-button remove class="button button-danger delete"></${e.P}-button>\n </div>\n<div>\n<${e.P}-shell-proxy>\n <${e.P}-modal-form core></${e.P}-modal-form>\n <${e.P}-modal-form permissions></${e.P}-modal-form>\n</${e.P}-shell-proxy>`})],i),r.PacemWidgetToolbarElement=i;class PacemWidgetElement extends t.PacemElement{constructor(e,t="widget"){super(t),this.permissionMetadata=a,this.metadata=e}connectedCallback(){super.connectedCallback(),e.Utils.isNullOrEmpty(this.id)&&(this.id="wdg"+e.Utils.uniqueCode()),e.Utils.addClass(this,o)}propertyChangedCallback(t,r,a,s){switch(super.propertyChangedCallback(t,r,a,s),t){case"editable":a?this.isReady&&this._ensureBalloon():this._disposeBalloon();break;case"editing":e.Utils.isNull(this._balloon)||(this._balloon.disabled=!a),(a?e.Utils.addClass:e.Utils.removeClass).apply(this,[this,"widget-"+t]);break;case"metadata":this._assignIcon(a)}}viewActivatedCallback(){super.viewActivatedCallback(),this._assignIcon(),this._ensureBalloon()}disconnectedCallback(){super.disconnectedCallback()}_assignIcon(e=this.metadata){this.dataset.icon=e&&e.display&&e.display.icon||"widgets"}_ensureBalloon(){if(e.Utils.isNull(this._balloon)){const r=this._balloon=document.createElement(e.P+"-balloon");r.target=this,r.disabled=!this.editing,r.options={behavior:t.UI.BalloonBehavior.Menu,trigger:t.UI.BalloonTrigger.Hover},r.innerHTML=`<${e.P}-widget-toolbar target="{{ #${this.id} }}"><${e.P}-widget-toolbar>`,e.CustomElementUtils.findAncestorShell(this).appendChild(r)}}_disposeBalloon(){e.Utils.isNull(this._balloon)||(this._balloon.remove(),this._balloon=null)}}__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],PacemWidgetElement.prototype,"editing",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],PacemWidgetElement.prototype,"editable",void 0),__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.String})],PacemWidgetElement.prototype,"tag",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Json})],PacemWidgetElement.prototype,"permissions",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],PacemWidgetElement.prototype,"metadata",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],PacemWidgetElement.prototype,"permissionMetadata",void 0),r.PacemWidgetElement=PacemWidgetElement}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){t.FETCH_CREDENTIALS_METADATA={prop:"fetchCredentials",type:"string",dataType:"enumeration",display:{name:"Fetch Credentials"},extra:{enum:["same-origin","omit","include"]}},t.ACCESS_TOKEN_METADATA={prop:"accessToken",type:t.EXPRESSION_METADATA_TYPE,display:{name:"Access Token"},extra:e.Utils.extend({},t.EXPRESSION_WIDGET_METADATA_EXTRA,{filter:e=>e instanceof t.PacemWidgetDataElement||e instanceof t.PacemWidgetFetchElement})};class PacemBearerWidgetElement extends t.PacemWidgetElement{constructor(){super(...arguments),this.fetchCredentials="same-origin"}propertyChangedCallback(t,r,a,s){super.propertyChangedCallback(t,r,a,s),"accessToken"===t&&(e.Utils.isNullOrEmpty(a)?this.fetchHeaders={}:this.fetchHeaders={Authorization:"Bearer "+a})}}__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],PacemBearerWidgetElement.prototype,"fetchCredentials",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],PacemBearerWidgetElement.prototype,"fetchHeaders",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],PacemBearerWidgetElement.prototype,"accessToken",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],PacemBearerWidgetElement.prototype,"fetching",void 0),t.PacemBearerWidgetElement=PacemBearerWidgetElement}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const r={display:{icon:"cloud_circle",name:"Api Manifest",description:"OpenApi parser for WebApi scaffolding."},props:[{prop:"url",type:"text",display:{name:"Url",description:"Insert the url of the OpenApi json configuration.",cssClass:["cols-lg-8"],watermark:"https://domain.com/swagger/v1/swagger.json"},extra:{tooltip:!0},validators:[{type:"required",errorMessage:"Url field is required."}]},{prop:"usecache",type:"boolean",display:{name:"Cache results",description:"Whether to cache the manifest per-url.",cssClass:["cols-lg-4"],ui:"switcher"},extra:{tooltip:!0}},t.ACCESS_TOKEN_METADATA]};let a=class PacemWidgetApiManifestElement extends t.PacemBearerWidgetElement{constructor(a=new e.Cms.OpenApi.SwaggerCmsParser,s=new e.Storage){super(t.buildWidgetMetadata(r)),this._openapi=a,this._cache=s}propertyChangedCallback(e,t,r,a){switch(super.propertyChangedCallback(e,t,r,a),e){case"url":case"editing":case"editable":this._scaffold();break;case"usecache":this._openapi.cache=r?this._cache:null}}viewActivatedCallback(){super.viewActivatedCallback(),this.usecache&&(this._openapi.cache=this._cache),this._scaffold()}_scaffold(){this.editing&&this.editable&&!e.Utils.isNullOrEmpty(this.url)&&(this.fetching=!0,this._openapi.load(this.url).then(e=>{this.manifest=e,this.fetching=!1},e=>{this.fetching=!1}))}};__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],a.prototype,"url",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Boolean})],a.prototype,"usecache",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],a.prototype,"manifest",void 0),a=__decorate([e.CustomElement({tagName:e.P+"-widget-apimanifest"})],a),t.PacemWidgetApiManifestElement=a}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const r={display:{icon:"timer",name:"Clock",description:"Timer widget."},props:[{prop:"interval",type:t.EXPRESSION_METADATA_TYPE,display:{name:"Interval (msec)"},extra:{selector:"."+e.PCSS+"-widget",step:1e3},validators:[{type:"range",errorMessage:"Negative numbers not allowed",params:{min:0}}]}]};let a=class PacemWidgetClockElement extends t.PacemWidgetElement{constructor(){super(t.buildWidgetMetadata(r)),this.interval=0}};__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.Number})],a.prototype,"interval",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Number})],a.prototype,"time",void 0),a=__decorate([e.CustomElement({tagName:e.P+"-widget-clock",template:`<${e.P}-timer interval="{{ :host.interval }}" on-tick="{{ :host.time = Date.now() }}"></${e.P}-timer>`})],a),t.PacemWidgetClockElement=a}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const r={display:{icon:"storage",name:"Data",description:"Data object widget."},props:[{prop:"model",type:t.EXPRESSION_METADATA_TYPE,display:{name:"Model"},extra:{selector:"."+e.PCSS+"-widget"}}]};let a=class PacemWidgetDataElement extends t.PacemWidgetElement{constructor(){super(t.buildWidgetMetadata(r))}};__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.Json})],a.prototype,"model",void 0),a=__decorate([e.CustomElement({tagName:e.P+"-widget-data"})],a),t.PacemWidgetDataElement=a}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(r){const a={props:[{prop:"name",type:"string",isReadOnly:!0,display:{name:"Name",cssClass:["cols-md-4","cols-lg-3","cols-hd-2"]}},{prop:"value",type:r.EXPRESSION_METADATA_TYPE,display:{name:"Value",cssClass:["cols-md-8","cols-lg-9","cols-hd-10"]}}]},s={display:{icon:"wifi",name:"Api Fetcher",description:"Fetching widget that retrieves data from a REST endpoint."},props:[{prop:"manifest",type:r.EXPRESSION_METADATA_TYPE,isComplexType:!0,display:{name:"Api Manifest"},extra:{selector:e.P+"-widget-apimanifest"},validators:[{type:"required",errorMessage:"Api Manifest is a required field."}]},{prop:"endpoint",type:"object",isComplexType:!0,display:{name:"Endpoint",ui:"oneToMany"},validators:[{type:"required",errorMessage:"Api Manifest is a required field."}],extra:{source:t=>t.endpoints.map(t=>e.Utils.extend(t,{fullPath:`[${t.method.toUpperCase()}] ${t.path}`})).sort(),textProperty:"fullPath",valueProperty:"fullPath",dependsOn:[{prop:"manifest",hide:!0}]}},{prop:"parameters",type:"array",display:{name:"Parameters"},props:r.gridifyMetadata(a),extra:{lockItems:!0,dependsOn:[{prop:"endpoint",hide:!0}]}},r.ACCESS_TOKEN_METADATA]},o=e.P+"-widget-fetch-parameter";let i=class PacemWidgetFetchParameterElement extends t.PacemEventTarget{propertyChangedCallback(t,r,a,s){super.propertyChangedCallback(t,r,a.first),"value"!==t||e.Utils.isNull(this._fetcher)||this._fetcher.fetch()}viewActivatedCallback(){super.viewActivatedCallback();this._fetcher=e.CustomElementUtils.findAncestorOfType(this,n);e.Utils.isNull(this._fetcher)||e.Utils.isNull(this.value)||this._fetcher.fetch()}};__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.Boolean})],i.prototype,"required",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],i.prototype,"name",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],i.prototype,"value",void 0),i=__decorate([e.CustomElement({tagName:o})],i),r.PacemWidgetFetchParameterElement=i;let n=class PacemWidgetFetchElement extends r.PacemBearerWidgetElement{constructor(){super(r.buildWidgetMetadata(s)),this._onerror=e=>{this.failure=!(this.success=!1)},this._onsuccess=e=>{this.failure=!(this.success=!0)},this._onresult=e=>{this.result=e.detail}}get _parameters(){return Array.from(this._itemsElement.children).filter(e=>e.localName===o)}fetch(){const t=this._fetcher,r=this._parameters||[],a=this.endpoint;if(!e.Utils.isNull(a))for(let t of a.parameters)if(t.required&&e.Utils.isNull(r.find(e=>e.name===t.name)))return;const s={};for(let t of r)if(e.Utils.isNullOrEmpty(t.value)){if(t.required)return}else s[t.name]=t.value;return t.url=this.url,t.method=this.method,t.credentials=this.fetchCredentials,t.headers=this.fetchHeaders,t.parameters=s,t.fetch()}viewActivatedCallback(){super.viewActivatedCallback(),this.fetch()}propertyChangedCallback(t,r,a,s){if(super.propertyChangedCallback(t,r,a,s),"endpoint"!==t||e.Utils.isNullOrEmpty(a))switch(t){case"parameters":case"fetchHeaders":case"fetchCredentials":case"url":case"method":this.fetch()}else this._mergeEndpoint(a)}_mergeEndpoint(t=this.endpoint){this.url=this.manifest.baseUrl+t.path,this.method=t.method,this.fields=t.response.fields;const r=this._itemsElement,a=this._parameters;for(let r=a.length-1;r>=0;r--){let s=a[r],o=t.parameters.find(e=>e.name===s.name);e.Utils.isNull(o)&&s.remove()}for(let s of t.parameters){let t=a.find(e=>e.name===s.name);if(e.Utils.isNull(t)){let e=t=document.createElement(o);e.name=s.name,r.appendChild(e)}t.required=s.required}this.parameters=a}};__decorate([e.Watch({reflectBack:!0,emit:!0,converter:e.PropertyConverters.Json})],n.prototype,"manifest",void 0),__decorate([e.Watch({reflectBack:!0,emit:!0,converter:e.PropertyConverters.Json})],n.prototype,"endpoint",void 0),__decorate([e.Watch({reflectBack:!0,emit:!1,converter:e.PropertyConverters.String})],n.prototype,"url",void 0),__decorate([e.Watch({reflectBack:!0,emit:!1,converter:e.PropertyConverters.String})],n.prototype,"method",void 0),__decorate([e.Watch({reflectBack:!0,emit:!1,converter:e.PropertyConverters.Json})],n.prototype,"fields",void 0),__decorate([e.Watch()],n.prototype,"parameters",void 0),__decorate([e.Watch()],n.prototype,"result",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],n.prototype,"fetching",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],n.prototype,"success",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],n.prototype,"failure",void 0),__decorate([e.ViewChild(e.P+"-fetch")],n.prototype,"_fetcher",void 0),__decorate([e.ViewChild("div[hidden]")],n.prototype,"_itemsElement",void 0),n=__decorate([e.CustomElement({tagName:e.P+"-widget-fetch",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-fetch autofetch="false" fetching="{{ :host.fetching, twoway }}" debounce="100"\non-${e.Net.FetchResultEventName}=":host._onresult($event)" on-${e.Net.FetchErrorEventName}=":host._onerror($event)" on-${e.Net.FetchSuccessEventName}=":host._onsuccess($event)"></${e.P}-fetch><div hidden><${e.P}-content></${e.P}-content></div>`})],n),r.PacemWidgetFetchElement=n}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){let r=class PacemWidgetTranslatorElement extends t.PacemWidgetElement{};r=__decorate([e.CustomElement({tagName:e.P+"-widget-translator"})],r),t.PacemWidgetTranslatorElement=r}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(r){r.DATACOLUMNS_METADATA_TYPE=(t,r=":host",a=":host.entity")=>{const s={},o=t.metadata,i=e.Components.Cms.Functions,n=[];s.properties=`{{ Pacem.CustomElementUtils.getWatchedProperty(${a}, '${o.prop}').config.converter }}`;const l=e.P+"-datacolumns";let c=o.extra||{};if(!e.Utils.isNullOrEmpty(c.properties))switch(typeof c.properties){case"string":s.properties=`{{ ${a}.${c.properties} }}`;break;case"function":const t="fn"+e.Utils.uniqueCode();i[t]=c.properties,s.properties=`{{ Pacem.Components.Cms.Functions.${t}(${r}), once }}`,n.push(t)}return n.length>0&&(s["on-unload"]=`{{ Pacem.Components.Cms.Functions.dismiss('${n.join("','")}') }}`),{tagName:l,attrs:s}};const a={display:{name:"Columns"},props:[{prop:"header",type:"string",display:{cssClass:["form-minimal"],name:"Header"}},{prop:"content",type:r.EXPRESSION_METADATA_TYPE,display:{name:"Content"},extra:r.EXPRESSION_WIDGET_METADATA_EXTRA}]};let s=class PacemDataColumnElement extends t.PacemElement{propertyChangedCallback(e,t,r,a){switch(super.propertyChangedCallback(e,t,r,a),e){case"content":this.contentExpression=r;break;case"contentExpression":this.setAttribute("content",r||"")}}viewActivatedCallback(){super.viewActivatedCallback(),this._form.entity=this,this._form.metadata=r.gridifyMetadata(a)}};__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"header",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"content",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"contentExpression",void 0),__decorate([e.ViewChild(e.P+"-form")],s.prototype,"_form",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-widget-datacolumn",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-form class="panel-body" autogenerate="true"></${e.P}-form>`})],s),r.PacemDataColumnElement=s;let o=class PacemDataColumnsElement extends e.Components.Scaffolding.PacemBaseElement{constructor(){super(...arguments),this._dropHandler=e=>{this.changeHandler(e)},this._columnifyMetadata=(e=this.properties)=>(e||[]).map(e=>({header:"function"==typeof e.display?.name?e.prop:e.display?.name||e.prop,content:`{{ ^item.${e.prop} }}`})).sort((e,t)=>e.header>t.header?1:-1)}get inputFields(){return[]}toggleReadonlyView(e){}onChange(t){return e.Utils.fromResult(this.value=this._repeater.datasource)}acceptValue(t){e.Utils.isNull(this._repeater)||(this._repeater.datasource=e.Utils.clone(t||[]))}getViewValue(e){return"[DataColumns]"}convertValueAttributeToProperty(t){return e.PropertyConverters.Json.convert(t,this)}viewActivatedCallback(){super.viewActivatedCallback(),this._propDragger.addEventListener(e.UI.DragDropEventType.End,this._dropHandler,!1),this._colDragger.addEventListener(e.UI.DragDropEventType.End,this._dropHandler,!1)}disconnectedCallback(){e.Utils.isNull(this._propDragger)||this._propDragger.removeEventListener(e.UI.DragDropEventType.End,this._dropHandler,!1),e.Utils.isNull(this._colDragger)||this._colDragger.removeEventListener(e.UI.DragDropEventType.End,this._dropHandler,!1),super.disconnectedCallback()}};__decorate([e.ViewChild(`${e.P}-repeater[columns]`)],o.prototype,"_repeater",void 0),__decorate([e.ViewChild(`${e.P}-drag-drop[properties]`)],o.prototype,"_propDragger",void 0),__decorate([e.ViewChild(`${e.P}-drag-drop[columns]`)],o.prototype,"_colDragger",void 0),__decorate([e.ViewChild("div[drop-target]")],o.prototype,"_dropTarget",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"properties",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-widget-datacolumns",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<div class="${e.PCSS}-datacolumns">\n <div class="datacolumns-main display-flex flex-fill">\n\n <${e.P}-drag-drop mode="${e.UI.DragDataMode.Alias}" disabled="{{ :host.readonly }}" handle-selector="*[handle]"\n drop-behavior="${e.UI.DropBehavior.InsertChild}" drop-targets="{{ [::_dropTarget] }}" columns></${e.P}-drag-drop> \n <${e.P}-repeater class="display-flex flex-fill" columns> \n \x3c!-- columns --\x3e\n <div class="display-flex flex-nowrap" drop-target>\n <template>\n <${e.P}-panel behaviors="{{ [::_colDragger] }}">\n <div class="${e.PCSS}-panel panel-side-left side-auto">\n <div class="panel-side">\n <${e.P}-button class="display-block button-flat icon-glyph-small" icon-glyph="drag_indicator" handle></${e.P}-button>\n <${e.P}-button class="display-block button-flat icon-glyph-small" on-click=":host.value.splice(^index, 1)" icon-glyph="clear"></${e.P}-button>\n </div>\n <div class="panel-heading">\n <${e.P}-text text="{{ ^item.header }}"></${e.P}-text>\n </div>\n <${e.P}-widget-datacolumn class="panel-body" header="{{ ^item.header, twoway }}" content-expression="{{ ^item.content, twoway }}"></${e.P}-widget-datacolumn>\n </div>\n </${e.P}-panel>\n </template>\n </div>\n </${e.P}-repeater>\n\n </div>\n <${e.P}-panel class="datacolumns-props" hide="{{ :host.readonly }}">\n <${e.P}-drag-drop mode="${e.UI.DragDataMode.Copy}" disabled="{{ :host.readonly }}" handle-selector="*[handle]"\n drop-behavior="${e.UI.DropBehavior.InsertChild}" drop-targets="{{ [::_dropTarget] }}" properties></${e.P}-drag-drop>\n <${e.P}-repeater datasource="{{ :host._columnifyMetadata(:host.properties) }}">\n \x3c!-- properties --\x3e\n <template>\n <${e.P}-panel behaviors="{{ [::_propDragger] }}" class="${e.PCSS}-panel panel-side-left side-auto panel-primary panel-filled ${e.PCSS}-margin margin-bottom-1">\n <div class="panel-side">\n <${e.P}-button class="display-block button-flat icon-glyph-small" icon-glyph="drag_indicator" handle></${e.P}-button>\n </div>\n <div class="text-truncate panel-body">\n <${e.P}-span text="{{ ^item.header }}"></${e.P}-span>\n </div>\n </${e.P}-panel>\n </template>\n </${e.P}-repeater>\n </${e.P}-panel>\n</div>`})],o),r.PacemDataColumnsElement=o}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){class PacemUiWidgetElement extends t.PacemWidgetElement{constructor(e,t=1,r){super(e,r),this.colspan=t,this.rowspan=1}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,"ui-widget "+e.PCSS+"-cell cols-xs-start-1 cols-xs-12 rows-xs-start-auto")}propertyChangedCallback(t,r,a,s){switch(super.propertyChangedCallback(t,r,a,s),t){case"row":e.Utils.removeClass(this,`rows-start-${r+1}`),e.Utils.addClass(this,`rows-start-${a+1}`);break;case"rowspan":e.Utils.removeClass(this,`rows-${r}`),e.Utils.addClass(this,`rows-${a}`);break;case"column":e.Utils.removeClass(this,`cols-start-${r+1}`),e.Utils.addClass(this,`cols-start-${a+1}`);break;case"colspan":e.Utils.removeClass(this,`cols-${r}`),e.Utils.addClass(this,`cols-${a}`);break;case"borders":(this.borders?e.Utils.addClass:e.Utils.removeClass).apply(this,[this,e.PCSS+"-border"]);break;case"corners":(this.borders?e.Utils.addClass:e.Utils.removeClass).apply(this,[this,e.PCSS+"-corners"])}}get container(){return this._container}findContainer(){return e.CustomElementUtils.findAncestor(this,e=>e instanceof PacemCompositeWidgetElement)}viewActivatedCallback(){super.viewActivatedCallback();let t=this._container=this.findContainer();e.Utils.isNull(t)||t.register(this)}disconnectedCallback(){e.Utils.isNull(this._container)||this._container.unregister(this),super.disconnectedCallback()}}__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.Number})],PacemUiWidgetElement.prototype,"column",void 0),__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.Number})],PacemUiWidgetElement.prototype,"row",void 0),__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.Number})],PacemUiWidgetElement.prototype,"colspan",void 0),__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.Number})],PacemUiWidgetElement.prototype,"rowspan",void 0),__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.Boolean})],PacemUiWidgetElement.prototype,"borders",void 0),__decorate([e.Watch({emit:!0,reflectBack:!0,converter:e.PropertyConverters.Boolean})],PacemUiWidgetElement.prototype,"corners",void 0),t.PacemUiWidgetElement=PacemUiWidgetElement,t.WidgetRegisterEventName="widgetregister",t.WidgetUnregisterEventName="widgetunregister",t.LayoutChangeEventName="layoutchange";class WidgetRegisterEvent extends CustomEvent{constructor(r,a){super(t.WidgetRegisterEventName,e.Utils.extend(a||{},{detail:r}))}}t.WidgetRegisterEvent=WidgetRegisterEvent;class WidgetUnregisterEvent extends CustomEvent{constructor(r,a){super(t.WidgetUnregisterEventName,e.Utils.extend(a||{},{detail:r}))}}t.WidgetUnregisterEvent=WidgetUnregisterEvent;class PacemCompositeWidgetElement extends PacemUiWidgetElement{get itemsElement(){return this}validate(e){return e instanceof PacemUiWidgetElement}viewActivatedCallback(){super.viewActivatedCallback(),e.Utils.addClass(this.itemsElement,e.PCSS+"-items-element")}appendItem(e){this.itemsElement.appendChild(e)}register(t){if(!this.validate(t))return this.log(e.Logging.LogLevel.Debug,`${t&&t.localName} element couldn't be registered in a ${this.localName} element.`),!1;let r=!1;const a=this.items=this.items||[];return e.Utils.isNullOrEmpty(a)?(this.items=[t],r=!0):-1===a.indexOf(t)&&(a.push(t),r=!0),r&&this.dispatchEvent(new WidgetRegisterEvent(t)),r}unregister(t){const r=this.items,a=!e.Utils.isNullOrEmpty(r)&&r.indexOf(t);if(a>=0){let e=r.splice(a,1);return this.dispatchEvent(new WidgetUnregisterEvent(e[0])),!0}return!1}}__decorate([e.Watch()],PacemCompositeWidgetElement.prototype,"items",void 0),t.PacemCompositeWidgetElement=PacemCompositeWidgetElement}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const r=t.buildWidgetMetadata({display:{icon:"font_download",name:"Text",description:"Plain text widget."},props:[{prop:"text",type:t.EXPRESSION_METADATA_TYPE,display:{name:"Text"},extra:t.EXPRESSION_WIDGET_METADATA_EXTRA}]});let a=class PacemWidgetTextElement extends t.PacemUiWidgetElement{constructor(){super(r)}};__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],a.prototype,"text",void 0),a=__decorate([e.CustomElement({tagName:e.P+"-widget-text",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-text text="{{ :host.text }}"></${e.P}-text>`})],a),t.PacemWidgetTextElement=a}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){function r(){const e=document.createElementNS("http://www.w3.org/2000/svg","svg");return e.style.pointerEvents="none",e.style.zIndex="1000",e.setAttribute("height","100%"),e.setAttribute("width","100%"),e.setAttribute("preserveAspectRatio","none"),e.setAttribute("class","grid-cell-wrapper"),e.innerHTML='<rect class="grid-cell" width="100%" height="100%"></rect>',e}t.GRID_COLUMNS=12;const a=t.GRID_COLUMNS,s={display:{icon:"grid_on",name:"Grid",description:"Composition Widget that lays out child-widgets in a grid container."},props:[{prop:"rows",type:"int",display:{name:"Rows",cssClass:["cols-lg-4"]},validators:[{type:"required",errorMessage:""},{type:"range",errorMessage:"",params:{min:1,max:24}}]},{prop:"rowGap",type:"int",display:{name:"Row gap",cssClass:["cols-lg-4"]},validators:[{type:"range",errorMessage:"",params:{min:0,max:3,step:.25}}]},{prop:"columnGap",type:"int",display:{name:"Column gap",cssClass:["cols-lg-4"]},validators:[{type:"range",errorMessage:"",params:{min:0,max:3,step:.25}}]}]};let o=class PacemGridWidgetElement extends t.PacemCompositeWidgetElement{constructor(){super(t.buildWidgetMetadata(s),a,"grid"),this._widgetPropertyChange=e=>{if("row"===e.detail.propertyName||"rowspan"===e.detail.propertyName){const t=e.target;this.rows=Math.max(this.rows,t.row+t.rowspan)}},this._dragDropHandler=t=>{const r=t.detail,s=r.element;switch(t.type){case e.UI.DragDropEventType.Start:this._gridBoxes.forEach(e=>{e.style.pointerEvents="auto"}),this._initState={colspan:s.colspan,rowspan:s.rowspan,col:s.column,row:s.row};break;case e.UI.DragDropEventType.End:this._gridBoxes.forEach(e=>{e.style.pointerEvents="none"});break;case e.UI.DragDropEventType.Over:var o=r.target,i=+o.style.gridColumnStart-1,n=+o.style.gridRowStart-1;const t=i+this._initState.colspan,l=n+this._initState.rowspan;if(!this._intersects(s,i,n,s.colspan,s.rowspan)){let e=!1;t<=(this.columns||a)&&(e=s.column!==i,s.column=i),l<=(this.rows||1)&&(e=e||s.row!==n,s.row=n)}}},this._resizeHandler=t=>{switch(t.type){case e.UI.RescaleEventType.Start:e.Utils.addClass(t.detail.element,e.PCSS+"-rescaling"),this._gridBoxes.forEach(e=>{e.style.pointerEvents="auto"});break;case e.UI.RescaleEventType.End:this._gridBoxes.forEach(e=>{e.style.pointerEvents="none"}),e.Utils.removeClass(t.detail.element,e.PCSS+"-rescaling");break;case e.UI.RescaleEventType.Rescale:t.preventDefault();const s={x:t.clientX,y:t.clientY},o=t.detail.handle,i=document.elementsFromPoint(s.x,s.y).find(e=>this._dragDrop.dropTargets.indexOf(e)>=0);if(i){var r=+i.style.gridColumnStart,a=+i.style.gridRowStart;const e=t.detail.element,s=e.column+1,n=e.row+1,l=1+r-s,c=1+a-n;if(!this._intersects(e,e.column,e.row,l,c)){let t=!1;r>=s&&o.endsWith("right")&&(t=e.colspan!==l,e.colspan=l),a>=n&&o.startsWith("bottom")&&(t=t||e.rowspan!==c,e.rowspan=c)}}}},this._gridBoxes=[]}register(t){let r=super.register(t);if(r){const r=t.row||0,a=t.column||0,s=t.colspan||2,o=t.rowspan||1;let i=!this._intersects(t,a,r,s,o);if(i)t.row=r,t.column=a,t.colspan=s,t.rowspan=o;else{if(!i){let e=(e=!1)=>{let r=this.columns-1;e||(r=r-s+1);for(let e=0;e<this.rows;e++){for(let a=0;a<=r;a++)if(!this._intersects(t,a,e,s,o)){t.column=a,t.row=e,t.colspan=Math.min(r+1-a,s),t.rowspan=o,i=!0;break}if(i)break}};e(),!i&&s>1&&e(!0)}i||(this.rows++,t.row=this.rows-1,t.column=0)}t.behaviors=[this._dragDrop,this._rescaler],t.addEventListener(e.PropertyChangeEventName,this._widgetPropertyChange,!1)}return r}unregister(t){let r=super.unregister(t);if(r){t.removeEventListener(e.PropertyChangeEventName,this._widgetPropertyChange,!1);const r=t.behaviors.indexOf(this._dragDrop);r>=0&&t.behaviors.splice(r,1);const a=t.behaviors.indexOf(this._rescaler);a>=0&&t.behaviors.splice(a,1)}return r}_intersects(e,t,r,a,s){for(let o of this.items){let i=o;if(i!==e&&(i.column<t+a&&i.column+i.colspan>t&&i.row<r+s&&i.row+i.rowspan>r))return!0}return!1}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-grid");let r=this._dragDrop=document.createElement(e.P+"-drag-drop"),a=document.createElement("div");document.body.appendChild(a),r.floater=a,r.mode=e.UI.DragDataMode.Alias,r.dropBehavior=e.UI.DropBehavior.None,r.addEventListener(e.UI.DragDropEventType.Start,this._dragDropHandler,!1),r.addEventListener(e.UI.DragDropEventType.Over,this._dragDropHandler,!1),r.addEventListener(e.UI.DragDropEventType.End,this._dragDropHandler,!1),document.body.appendChild(r);let s=this._rescaler=document.createElement(e.P+"-rescale");s.handles=[e.UI.RescaleHandle.Right,e.UI.RescaleHandle.Bottom],s.addEventListener(e.UI.RescaleEventType.Start,this._resizeHandler,!1),s.addEventListener(e.UI.RescaleEventType.Rescale,this._resizeHandler,!1),s.addEventListener(e.UI.RescaleEventType.End,this._resizeHandler,!1),document.body.appendChild(s),e.Utils.isNullOrEmpty(this.columns)&&(this.columns=t.GRID_COLUMNS),e.Utils.isNullOrEmpty(this.rows)&&(this.rows=1)}viewActivatedCallback(){super.viewActivatedCallback(),this.adapt()}propertyChangedCallback(e,t,r,a){super.propertyChangedCallback(e,t,r,a),this.adapt()}disconnectedCallback(){var t=this._dragDrop,r=this._rescaler;e.Utils.isNull(t)||(t.floater.remove(),t.removeEventListener(e.UI.DragDropEventType.Start,this._dragDropHandler,!1),t.removeEventListener(e.UI.DragDropEventType.Over,this._dragDropHandler,!1),t.removeEventListener(e.UI.DragDropEventType.End,this._dragDropHandler,!1),t.remove(),this._dragDrop=null),e.Utils.isNull(r)||(r.removeEventListener(e.UI.RescaleEventType.Start,this._resizeHandler,!1),r.removeEventListener(e.UI.RescaleEventType.Rescale,this._resizeHandler,!1),r.removeEventListener(e.UI.RescaleEventType.End,this._resizeHandler,!1),r.remove(),this._rescaler=null),super.disconnectedCallback()}_normalize(e,t=1){return"string"==typeof e?e:(null==e&&(e=t),this.unitPixels(e)+"px")}unitPixels(e){return e*(this.unit||8)}adapt(){this.style.marginTop=this.unitPixels(this.marginTop||0)+"px",this.style.marginBottom=this.unitPixels(this.marginBottom||0)+"px",this.style.gridTemplateColumns=`repeat(${this.columns||a}, 1fr)`;let e=this._normalize(this.minRowheight,3),t=this._normalize(this.rowheight||"auto");this.style.gridTemplateRows=`repeat(${this.rows||1}, minmax(${e}, ${t}))`,this.style.gridRowGap=this._normalize(this.rowGap,1),this.style.gridColumnGap=this._normalize(this.columnGap,1),this._setGridLines()}_setGridLines(){var t=0;const s=this.editing;if(s){const e=this.columns||a,s=e*(this.rows||1);t=s;for(let t=0;t<s;t++){for(;this._gridBoxes.length<=t;){let e=r();this.appendChild(e),this._gridBoxes.push(e)}let a=this._gridBoxes[t];const s=t%e,o=Math.floor(t/e);a.style.gridColumn=(s+1).toString(),a.style.gridRow=(o+1).toString()}}for(let e of this._gridBoxes.splice(t))e.remove();e.Utils.isNull(this._dragDrop)||e.Utils.isNull(this._rescaler)||(this._dragDrop.disabled=this._rescaler.disabled=!s,this._dragDrop.dropTargets=this._gridBoxes)}};__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"unit",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"marginTop",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"marginBottom",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"columns",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"rows",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"minRowheight",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"rowheight",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"rowGap",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Number})],o.prototype,"columnGap",void 0),__decorate([e.Debounce(100)],o.prototype,"adapt",null),o=__decorate([e.CustomElement({tagName:e.P+"-widget-grid"})],o),t.PacemGridWidgetElement=o}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){let r=class PacemWidgetPickerElement extends t.PacemCompositeWidgetElement{register(e){const t=super.register(e);return t&&(e.hide=!0),t}};__decorate([e.ViewChild(e.P+"-drag-drop")],r.prototype,"_dragDrop",void 0),r=__decorate([e.CustomElement({tagName:e.P+"-widget-picker",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-repeater datasource="{{ :host.items }}">\n <template>\n <${e.P}-panel behaviors="{{ [::_dragDrop] }}" class="${e.PCSS}-widget-itempicker display-flex flex-fill flex-middle flex-nowrap">\n <i class="${e.PCSS}-icon flex-auto" dragger>drag_indicator</i>\n <${e.P}-icon icon="{{ ^item.metadata.display.icon }}" class="flex-auto ${e.PCSS}-margin margin-x-1"></${e.P}-icon>\n <${e.P}-text text="{{ ^item.metadata.display.name }}"></${e.P}-text>\n </${e.P}-panel>\n </template>\n</${e.P}-repeater>\n<${e.P}-drag-drop handle-selector="i.${e.PCSS}-icon[dragger]"></${e.P}-drag-drop>\n<${e.P}-content></${e.P}-content>`})],r),t.PacemWidgetPickerElement=r}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){const r={display:{name:"DataColumn"},props:[{prop:"header",type:"string",display:{name:"Header"}},{prop:"content",type:t.EXPRESSION_METADATA_TYPE,display:{name:"Content"},extra:t.EXPRESSION_WIDGET_METADATA_EXTRA}]},a=t.buildWidgetMetadata({display:{icon:"table_chart",name:"DataGrid",description:"DataGrid widget."},props:[{prop:"datasource",type:t.EXPRESSION_METADATA_TYPE,display:{name:"Datasource"},extra:e.Utils.extend({},t.EXPRESSION_WIDGET_METADATA_EXTRA,{filter:e=>e instanceof t.PacemWidgetDataElement||e instanceof t.PacemWidgetFetchElement})},{prop:"columns",type:t.DATACOLUMNS_METADATA_TYPE,display:{name:"Columns"},extra:{properties:"datarowMetadata"},props:t.gridifyMetadata(r)}]});function s(t,r=[]){const{head:a,body:s}=function(t=[]){const r=document.createDocumentFragment(),a=document.createDocumentFragment();let s=1;for(let o of t){const t=document.createElement("div");t.classList.add(e.PCSS+"-headcell"),t.textContent=o.header,r.appendChild(t);const i=new e.Components.PacemSpanElement;i.classList.add(e.PCSS+"-datacell","datacell-corners"),i.style.gridColumn=s.toString(),i.setAttribute("css","{{ {'grid-row': ^index+2} }}"),i.setAttribute("content",o.content),a.appendChild(i),s++}const o=new e.Components.PacemPanelElement;return o.classList.add(e.PCSS+"-datarow"),o.setAttribute("css","{{ {'grid-row': ^index+2} }}"),o.setAttribute("css-class","{{ {'datarow-alt': ^index % 2 === 1} }}"),o.style.gridColumn="1/"+(t.length+1),a.appendChild(o),{head:r,body:a}}(r),o=document.createElement("div");o.appendChild(a);const i=document.createElement("div");return i.appendChild(s),`<${e.P}-repeater datasource="{{ #${t}.datasource }}">\n <div class="${e.PCSS}-datatable" style="grid-template-columns: ${function(e=[]){var t="";for(let r of e||[]){const e=r.width||1;t+="number"==typeof e?e+"fr ":"auto "}return t}(r)}">\n ${o.innerHTML}\n <template>${i.innerHTML}</template>\n</div></${e.P}-repeater>`}let o=class PacemWidgetDataGridElement extends t.PacemUiWidgetElement{constructor(){super(a),this.columns=[],this.datasource=[],this.datarowMetadata=[],this._builtUponDatasource=!1}_gridify(e=this.columns){var t="";for(let r of e||[]){const e=r.width||1;t+="number"==typeof e?e+"fr ":"auto "}return t}propertyChangedCallback(e,t,r,a){if(super.propertyChangedCallback(e,t,r,a),!a)switch(e){case"columns":this.innerHTML=s(this.id,r);break;case"datasource":this._extractMetadataJustInCase(r)}}viewActivatedCallback(){super.viewActivatedCallback(),this.innerHTML=s(this.id,this.columns)}_seekArray(t){if(e.Utils.isArray(t))return t;if("object"==typeof t)for(let r in t){const a=this._seekArray(t[r]);if(!e.Utils.isNull(a))return a}return null}_extractMetadataJustInCase(t=this.datasource){if((e.Utils.isNullOrEmpty(this.datarowMetadata)||this._builtUponDatasource)&&!e.Utils.isNullOrEmpty(t)){const r=this._seekArray(t);if(!e.Utils.isNullOrEmpty(r)){const e=[],t=r[0];for(let r in t)e.push({prop:r,type:typeof t[r]});this.datarowMetadata=e,this._builtUponDatasource=!0}}}};__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.Json})],o.prototype,"columns",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"datasource",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"datarowMetadata",void 0),__decorate([e.ViewChild(`.${e.PCSS}-datatable`)],o.prototype,"_datatable",void 0),__decorate([e.ViewChild("template")],o.prototype,"_template",void 0),__decorate([e.ViewChild(e.P+"-repeater")],o.prototype,"_repeater",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-widget-datagrid"})],o),t.PacemWidgetDataGridElement=o}(t.Cms||(t.Cms={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={}));
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.52.3-cardano (https://js.pacem.it)
2
+ * pacem v0.52.3-dirichlet (https://js.pacem.it)
3
3
  * Copyright 2026 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */