@pacem/pacem 1.0.0-babbage → 1.0.0-bernoulli
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/pacem-2d.js +1 -1
- package/dist/browser/pacem-2d.min.js +2 -2
- package/dist/browser/pacem-2d.min.js.map +1 -1
- package/dist/browser/pacem-3d.js +1 -1
- package/dist/browser/pacem-3d.min.js +2 -2
- package/dist/browser/pacem-3d.min.js.map +1 -1
- package/dist/browser/pacem-charts.js +1 -1
- package/dist/browser/pacem-charts.min.js +2 -2
- package/dist/browser/pacem-charts.min.js.map +1 -1
- package/dist/browser/pacem-cms.js +1 -1
- package/dist/browser/pacem-cms.min.js +2 -2
- package/dist/browser/pacem-cms.min.js.map +1 -1
- package/dist/browser/pacem-core.js +1 -1
- package/dist/browser/pacem-core.min.js +2 -2
- package/dist/browser/pacem-core.min.js.map +1 -1
- package/dist/browser/pacem-foundation.js +1 -1
- package/dist/browser/pacem-foundation.min.js +2 -2
- package/dist/browser/pacem-foundation.min.js.map +1 -1
- package/dist/browser/pacem-fx.js +1 -1
- package/dist/browser/pacem-fx.min.js +2 -2
- package/dist/browser/pacem-fx.min.js.map +1 -1
- package/dist/browser/pacem-logging.js +1 -1
- package/dist/browser/pacem-logging.min.js +2 -2
- package/dist/browser/pacem-logging.min.js.map +1 -1
- package/dist/browser/pacem-maps.js +1 -1
- package/dist/browser/pacem-maps.min.js +2 -2
- package/dist/browser/pacem-maps.min.js.map +1 -1
- package/dist/browser/pacem-media.js +1 -1
- package/dist/browser/pacem-media.min.js +2 -2
- package/dist/browser/pacem-media.min.js.map +1 -1
- package/dist/browser/pacem-networking.js +1 -1
- package/dist/browser/pacem-networking.min.js +2 -2
- package/dist/browser/pacem-networking.min.js.map +1 -1
- package/dist/browser/pacem-numerical.js +1 -1
- package/dist/browser/pacem-numerical.min.js +2 -2
- package/dist/browser/pacem-numerical.min.js.map +1 -1
- package/dist/browser/pacem-plus.js +1 -1
- package/dist/browser/pacem-plus.min.js +2 -2
- package/dist/browser/pacem-plus.min.js.map +1 -1
- package/dist/browser/pacem-scaffolding.js +1 -1
- package/dist/browser/pacem-scaffolding.min.js +2 -2
- package/dist/browser/pacem-scaffolding.min.js.map +1 -1
- package/dist/browser/pacem-ui.js +1 -1
- package/dist/browser/pacem-ui.min.js +2 -2
- package/dist/browser/pacem-ui.min.js.map +1 -1
- package/dist/bundle/pacem.min.mjs +1 -1
- package/dist/bundle/pacem.mjs +1 -1
- package/dist/typings/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @pacem/pacem v1.0.0-
|
|
2
|
+
* @pacem/pacem v1.0.0-bernoulli (https://js.pacem.it)
|
|
3
3
|
* Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
!function(e,t,r,s){"use strict";const a={dismiss:(...e)=>{for(let t of e||[])delete a[t]},handleExpressionValueChange:(e,r,s)=>{if("value"===e.detail.propertyName&&!t.Utils.isNull(s)){const a=e.detail.currentValue;if(s instanceof HTMLElement){let e=t.CustomElementUtils.camelToKebab(r);t.Utils.isNullOrEmpty(a)?s.removeAttribute(e):s.setAttribute(e,a.toString())}else s[r]=a}}},o=(e,r=":host",s=":host.entity")=>{const o={},i=e.metadata,n=a,l=[];o.value=`{{ ${s} instanceof HTMLElement && ${s}.getAttribute('${t.CustomElementUtils.camelToKebab(i.prop)}') }}`,o["on-"+t.PropertyChangeEventName]=`Pacem.Components.Cms.Functions.handleExpressionValueChange($event, '${i.prop}', ${s})`,o.converter=`{{ Pacem.CustomElementUtils.getWatchedProperty(${s}, '${i.prop}').config.converter }}`;const c=t.P+"-expression";let p=i.extra||{};if(t.Utils.isNullOrEmpty(p.selector)||(o.selector=p.selector),!t.Utils.isNullOrEmpty(p.filter))switch(typeof p.filter){case"string":o.filter=`{{ (e) => e.constructor.name === "${p.filter}" || e.localName === "${p.filter.toLowerCase()}" }}`;break;case"function":const e="fn"+t.Utils.uniqueCode();n[e]=p.filter,o.filter=`{{ Pacem.Components.Cms.Functions.${e}, once }}`,l.push(e)}if("function"==typeof p.labeler){const e="fn"+t.Utils.uniqueCode();n[e]=p.labeler,o.labeler=`{{ Pacem.Components.Cms.Functions.${e}, once }}`,l.push(e)}return l.length>0&&(o["on-unload"]=`{{ Pacem.Components.Cms.Functions.dismiss('${l.join("','")}') }}`),{tagName:c,attrs:o}};var i=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};class n extends r.Components.Scaffolding.PacemBaseElement{}i([t.Watch({converter:t.PropertyConverters.String})],n.prototype,"selector",void 0),i([t.Watch({converter:t.PropertyConverters.Eval})],n.prototype,"filter",void 0),i([t.Watch({converter:t.PropertyConverters.Eval})],n.prototype,"labeler",void 0);let l=class extends n{get inputFields(){return[this._select]}toggleReadonlyView(e){this._select.readonly=e}onChange(e){return t.Utils.fromResult(this.value=this._select.value)}acceptValue(e){this._select.value=e}getViewValue(e){return this._select.viewValue}convertValueAttributeToProperty(e){return t.PropertyConverters.Element.convert(e)}viewActivatedCallback(){super.viewActivatedCallback(),this._databind()}propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"selector":case"filter":case"labeler":this._databind()}}_databind(){const e=this.labeler||(e=>{let t=e.constructor.name;return e.id&&(t+="#"+e.id),t}),r=[];document.querySelectorAll(this.selector||"[pacem]").forEach((s,a,o)=>{!t.Utils.isNull(this.filter)&&!0!==this.filter(s)||t.Utils.isNullOrEmpty(s.id)||r.push({element:s,label:e(s)})}),this._select.valueProperty="element",this._select.textProperty="label",this._select.datasource=r}};i([t.ViewChild(t.P+"-select")],l.prototype,"_select",void 0),i([t.Debounce(50)],l.prototype,"_databind",null),l=i([t.CustomElement({tagName:t.P+"-element-picker",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-select></${t.P}-select>`})],l);var c,p=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};!function(e){e.Constant="const",e.PropertyReference="property",e.Expression="expr"}(c||(c={}));let d=class extends n{propertyChangedCallback(e,r,s,a){if(super.propertyChangedCallback(e,r,s,a),"converter"===e)this._setFeedbackText(this.value);else if(!a&&this._editing)switch(e){case"_source":if(s===c.PropertyReference)this._picker.focus();else this._editor.focus();break;case"_propRef":t.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(e){return t.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(e=this.value){const r=this.converter;t.CustomElementUtils.isBindingAttribute(e)||"function"!=typeof(r&&r.convert)?this._eval.setAttribute("text",e):this._eval.text=void 0===e?"<undefined>":r.convert(e)}getViewValue(e){return e}convertValueAttributeToProperty(e){return e}_reverseStructure(){let e=()=>{this._source=this._sourceRef=this._propRef=void 0},r=this.value;if(t.Utils.isNullOrEmpty(r))e();else if(t.CustomElementUtils.isBindingAttribute(r)){const e=t.CustomElementUtils.parseBindingAttribute(r,this).dependencies;if(t.Utils.isNullOrEmpty(e)||e.length>1||t.RepeaterItem.isRepeaterItem(e[0].element))this._source=c.Expression;else{const t=e[0];this._source=c.PropertyReference,this._sourceRef=document.querySelector("#"+t.element.id),this._propRef=t.path}}else this._source=c.Constant}};p([t.Watch({emit:!1})],d.prototype,"converter",void 0),p([t.Watch({converter:t.PropertyConverters.Boolean})],d.prototype,"_editing",void 0),p([t.Watch({converter:t.PropertyConverters.String})],d.prototype,"_source",void 0),p([t.Watch({converter:t.PropertyConverters.Element})],d.prototype,"_sourceRef",void 0),p([t.Watch({converter:t.PropertyConverters.String})],d.prototype,"_propRef",void 0),p([t.ViewChild(t.P+"-element-picker")],d.prototype,"_picker",void 0),p([t.ViewChild(t.P+"-textarea")],d.prototype,"_editor",void 0),p([t.ViewChild("span."+t.PCSS+"-viewfinder")],d.prototype,"_view",void 0),p([t.ViewChild(t.P+"-text")],d.prototype,"_eval",void 0),p([t.Debounce(50)],d.prototype,"_reverseStructure",null),d=p([t.CustomElement({tagName:t.P+"-expression",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-collapse class="${t.PCSS}-expression" collapse="{{ !:host._editing }}">\n <div class="expression-builder ${t.PCSS}-grid grid-tiny-rowgap grid-tiny-colgap ${t.PCSS}-pad pad-bottom-2">\n <div class="${t.PCSS}-cell">\n <${t.P}-select value="{{ :host._source, twoway }}" class="display-block">\n <${t.P}-data-item value="${c.Constant}" label="constant value"></${t.P}-data-item>\n <${t.P}-data-item value="${c.PropertyReference}" label="property reference"></${t.P}-data-item>\n <${t.P}-data-item value="${c.Expression}" label="complex expression"></${t.P}-data-item>\n </${t.P}-select>\n </div>\n\n <${t.P}-panel class="${t.PCSS}-cell cols-hd-6" hide="{{ :host._source !== '${c.PropertyReference}' }}">\n <${t.P}-element-picker value="{{ :host._sourceRef, twoway }}" selector="{{ :host.selector }}" filter="{{ :host.filter }}" labeler="{{ :host.labeler }}" class="display-block"></${t.P}-element-picker>\n </${t.P}-panel>\n <${t.P}-panel class="${t.PCSS}-cell cols-hd-6" hide="{{ :host._source !== '${c.PropertyReference}' }}">\n <${t.P}-property-picker value="{{ :host._propRef, twoway }}" disabled="{{ !:host._sourceRef }}" target="{{ :host._sourceRef }}" on-change="::_editor.focus()" class="display-block"></${t.P}-property-picker>\n </${t.P}-panel>\n\n <${t.P}-panel class="${t.PCSS}-cell">\n <${t.P}-textarea class="display-block" placeholder="{{ '{{ '+ (:host._source || '') +'... }}' }}" change-policy="${r.Components.Scaffolding.ChangePolicy.Blur}"></${t.P}-textarea>\n </${t.P}-panel>\n </div>\n</${t.P}-collapse>\n<div class="${t.PCSS}-fieldset">\n <div class="fieldset-left">\n <div class="${t.PCSS}-fieldgroup ${t.PCSS}-viewfinder">\n <div class="text-truncate ${t.PCSS}-pad pad-x-1"><span class="${t.PCSS}-viewfinder text-tech">{{ :host.value || '...' }}</span></div>\n <${t.P}-panel class="fieldgroup-prepend">\n <${t.P}-button class="flat edit ${t.PCSS}-pad pad-left-1" on-click=":host._editing = !:host._editing" hide="{{ :host.readonly }}"></${t.P}-button>\n </${t.P}-panel>\n <${t.P}-panel class="fieldgroup-append text-tech display-flex flex-middle flex-nowrap" hide="{{ $pacem.isNullOrEmpty(:host.value) }}">\n <i class="${t.PCSS}-icon text-primary">keyboard_arrow_right</i>\n <${t.P}-text text="?" class="bg-primary ${t.PCSS}-pad pad-left-1 pad-right-1 ${t.PCSS}-margin margin-right-1 text-truncate" eval></${t.P}-text>\n </${t.P}-panel>\n </div>\n </div>\n</div>`})],d);var h=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const m=s.Components.UI,u={props:[{prop:"permissions",type:"array",display:{name:"Permissions"},props:{display:{cssClass:[t.PCSS+"-cell",t.PCSS+"-grid","grid-novgap","grid-tiny-colgap","grid-nospace"],name:"Permission"},props:Array.prototype.concat.apply([{prop:"claimType",type:"string",display:{cssClass:[t.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:[t.PCSS+"-cell","cols-hd-4","cols-lg-6","field-stretch","field-minimal"],name:"Claim value"},validators:[{type:"required",errorMessage:"!"}]}],["read","update","create","delete"].map((e,r)=>({prop:e,type:"boolean",display:{cssClass:[t.PCSS+"-cell","cols-hd-1","cols-3","field-minimal",t.PCSS+"-pad pad-left-2"],name:e.charAt(0).toUpperCase()+e.substr(1)}})))}}]},f={display:{name:"Widget",cssClass:[t.PCSS+"-grid","grid-novgap","grid-tiny-colgap","grid-nospace"]},props:[{prop:"tag",type:"string",display:{name:"Tag",cssClass:[t.PCSS+"-cell"]}}]};function g(e){e.display=e.display||{name:e.prop,cssClass:[]};(e.display.cssClass=t.Utils.isArray(e.display.cssClass)&&e.display.cssClass||[]).push(t.PCSS+"-cell")}function v(e){var r=e&&e.props||[],s=e&&e.display||{name:"Element"};if(!t.Utils.isNull(s)){const e=s.cssClass=s.cssClass||[];Array.prototype.push.apply(e,f.display.cssClass)}return r.forEach(g),{display:s,props:r}}function y(e){var r=t.Utils.extend({},f.display,e&&e.display||{}),s=t.Utils.clone(f.props);return Array.prototype.push.apply(s,(e&&e.props||[]).filter(e=>"tag"!==e.prop&&(g(e),!0))),{display:r,props:s}}const C=t.PCSS+"-widget",P={selector:"."+C,labeler:e=>t.Utils.isNullOrEmpty(e.tag)?(e.metadata&&e.metadata.display&&e.metadata.display.name||"")+"#"+e.id:e.tag};let b=class extends t.Components.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 e=t.CustomElementUtils.findAncestorOfType(this,m.PacemBalloonElement);t.Utils.isNullOrEmpty(e)||e.popout()}};h([t.Watch({emit:!1,converter:t.PropertyConverters.Element})],b.prototype,"target",void 0),h([t.ViewChild(".buttons > div")],b.prototype,"_toolbar",void 0),h([t.ViewChild(t.P+"-button[edit]")],b.prototype,"_btnEdit",void 0),h([t.ViewChild(t.P+"-button[permissions]")],b.prototype,"_btnPerms",void 0),h([t.ViewChild(t.P+"-button[remove]")],b.prototype,"_btnRemove",void 0),h([t.ViewChild(t.P+"-shell-proxy")],b.prototype,"_proxy",void 0),b=h([t.CustomElement({tagName:t.P+"-widget-toolbar",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-span class="toolbar-text" content="{{ '<i class="${t.PCSS}-icon">'+ (::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) }}"></${t.P}-span>\n<div class="buttons ${t.PCSS}-buttonset ${t.PCSS}-pad ${t.PCSS}-margin pad-0 margin-left-2">\n <div class="buttonset-left">\n <${t.P}-button edit class="button edit" on-click=":host._edit($event)"></${t.P}-button>\n <${t.P}-button permissions class="button" on-click=":host._editPermissions($event)" css-class="{{ {'button-success': ::target.permissions.length > 0} }}" icon-glyph="verified_user"></${t.P}-button>\n <${t.P}-button remove class="button button-danger delete"></${t.P}-button>\n </div>\n<div>\n<${t.P}-shell-proxy>\n <${t.P}-modal-form core></${t.P}-modal-form>\n <${t.P}-modal-form permissions></${t.P}-modal-form>\n</${t.P}-shell-proxy>`})],b);class _ extends t.Components.PacemElement{constructor(e,t="widget"){super(t),this.permissionMetadata=u,this.metadata=e}connectedCallback(){super.connectedCallback(),t.Utils.isNullOrEmpty(this.id)&&(this.id="wdg"+t.Utils.uniqueCode()),t.Utils.addClass(this,C)}propertyChangedCallback(e,r,s,a){switch(super.propertyChangedCallback(e,r,s,a),e){case"editable":s?this.isReady&&this._ensureBalloon():this._disposeBalloon();break;case"editing":t.Utils.isNull(this._balloon)||(this._balloon.disabled=!s),(s?t.Utils.addClass:t.Utils.removeClass).apply(this,[this,"widget-"+e]);break;case"metadata":this._assignIcon(s)}}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(t.Utils.isNull(this._balloon)){const e=this._balloon=document.createElement(t.P+"-balloon");e.target=this,e.disabled=!this.editing,e.options={behavior:m.BalloonBehavior.Menu,trigger:m.BalloonTrigger.Hover},e.innerHTML=`<${t.P}-widget-toolbar target="{{ #${this.id} }}"><${t.P}-widget-toolbar>`,t.CustomElementUtils.findAncestorShell(this).appendChild(e)}}_disposeBalloon(){t.Utils.isNull(this._balloon)||(this._balloon.remove(),this._balloon=null)}}h([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],_.prototype,"editing",void 0),h([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],_.prototype,"editable",void 0),h([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.String})],_.prototype,"tag",void 0),h([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Json})],_.prototype,"permissions",void 0),h([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],_.prototype,"metadata",void 0),h([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],_.prototype,"permissionMetadata",void 0);var w=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const E={display:{icon:"storage",name:"Data",description:"Data object widget."},props:[{prop:"model",type:o,display:{name:"Model"},extra:{selector:"."+t.PCSS+"-widget"}}]};let $=class extends _{constructor(){super(y(E))}};w([t.Watch({reflectBack:!0,converter:t.PropertyConverters.Json})],$.prototype,"model",void 0),$=w([t.CustomElement({tagName:t.P+"-widget-data"})],$);var S=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const x={props:[{prop:"name",type:"string",isReadOnly:!0,display:{name:"Name",cssClass:["cols-md-4","cols-lg-3","cols-hd-2"]}},{prop:"value",type:o,display:{name:"Value",cssClass:["cols-md-8","cols-lg-9","cols-hd-10"]}}]},U={display:{icon:"wifi",name:"Api Fetcher",description:"Fetching widget that retrieves data from a REST endpoint."},props:[{prop:"manifest",type:o,isComplexType:!0,display:{name:"Api Manifest"},extra:{selector:t.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:e=>e.endpoints.map(e=>t.Utils.extend(e,{fullPath:`[${e.method.toUpperCase()}] ${e.path}`})).sort(),textProperty:"fullPath",valueProperty:"fullPath",dependsOn:[{prop:"manifest",hide:!0}]}},{prop:"parameters",type:"array",display:{name:"Parameters"},props:v(x),extra:{lockItems:!0,dependsOn:[{prop:"endpoint",hide:!0}]}},A]},k=t.P+"-widget-fetch-parameter";let D=class extends t.PacemEventTarget{propertyChangedCallback(e,r,s,a){super.propertyChangedCallback(e,r,s.first),"value"!==e||t.Utils.isNull(this._fetcher)||this._fetcher.fetch()}viewActivatedCallback(){super.viewActivatedCallback(),this._fetcher=t.CustomElementUtils.findAncestorOfType(this,O),t.Utils.isNull(this._fetcher)||t.Utils.isNull(this.value)||this._fetcher.fetch()}};S([t.Watch({reflectBack:!0,converter:t.PropertyConverters.Boolean})],D.prototype,"required",void 0),S([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],D.prototype,"name",void 0),S([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],D.prototype,"value",void 0),D=S([t.CustomElement({tagName:k})],D);let O=class extends T{constructor(){super(y(U)),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===k)}fetch(){const e=this._fetcher,r=this._parameters||[],s=this.endpoint;if(!t.Utils.isNull(s))for(let e of s.parameters)if(e.required&&t.Utils.isNull(r.find(t=>t.name===e.name)))return;const a={};for(let e of r)if(t.Utils.isNullOrEmpty(e.value)){if(e.required)return}else a[e.name]=e.value;return e.url=this.url,e.method=this.method,e.credentials=this.fetchCredentials,e.headers=this.fetchHeaders,e.parameters=a,e.fetch()}viewActivatedCallback(){super.viewActivatedCallback(),this.fetch()}propertyChangedCallback(e,r,s,a){if(super.propertyChangedCallback(e,r,s,a),"endpoint"!==e||t.Utils.isNullOrEmpty(s))switch(e){case"parameters":case"fetchHeaders":case"fetchCredentials":case"url":case"method":this.fetch()}else this._mergeEndpoint(s)}_mergeEndpoint(e=this.endpoint){this.url=this.manifest.baseUrl+e.path,this.method=e.method,this.fields=e.response.fields;const r=this._itemsElement,s=this._parameters;for(let r=s.length-1;r>=0;r--){let a=s[r],o=e.parameters.find(e=>e.name===a.name);t.Utils.isNull(o)&&a.remove()}for(let a of e.parameters){let e=s.find(e=>e.name===a.name);if(t.Utils.isNull(e)){let t=e=document.createElement(k);t.name=a.name,r.appendChild(t)}e.required=a.required}this.parameters=s}};S([t.Watch({reflectBack:!0,emit:!0,converter:t.PropertyConverters.Json})],O.prototype,"manifest",void 0),S([t.Watch({reflectBack:!0,emit:!0,converter:t.PropertyConverters.Json})],O.prototype,"endpoint",void 0),S([t.Watch({reflectBack:!0,emit:!1,converter:t.PropertyConverters.String})],O.prototype,"url",void 0),S([t.Watch({reflectBack:!0,emit:!1,converter:t.PropertyConverters.String})],O.prototype,"method",void 0),S([t.Watch({reflectBack:!0,emit:!1,converter:t.PropertyConverters.Json})],O.prototype,"fields",void 0),S([t.Watch()],O.prototype,"parameters",void 0),S([t.Watch()],O.prototype,"result",void 0),S([t.Watch({converter:t.PropertyConverters.Boolean})],O.prototype,"fetching",void 0),S([t.Watch({converter:t.PropertyConverters.Boolean})],O.prototype,"success",void 0),S([t.Watch({converter:t.PropertyConverters.Boolean})],O.prototype,"failure",void 0),S([t.ViewChild(t.P+"-fetch")],O.prototype,"_fetcher",void 0),S([t.ViewChild("div[hidden]")],O.prototype,"_itemsElement",void 0),O=S([t.CustomElement({tagName:t.P+"-widget-fetch",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-fetch autofetch="false" fetching="{{ :host.fetching, twoway }}" debounce="100"\non-${t.Net.FetchResultEventName}=":host._onresult($event)" on-${t.Net.FetchErrorEventName}=":host._onerror($event)" on-${t.Net.FetchSuccessEventName}=":host._onsuccess($event)"></${t.P}-fetch><div hidden><${t.P}-content></${t.P}-content></div>`})],O);var R=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const A={prop:"accessToken",type:o,display:{name:"Access Token"},extra:t.Utils.extend({},P,{filter:e=>e instanceof $||e instanceof O})};class T extends _{constructor(){super(...arguments),this.fetchCredentials="same-origin"}propertyChangedCallback(e,r,s,a){super.propertyChangedCallback(e,r,s,a),"accessToken"===e&&(t.Utils.isNullOrEmpty(s)?this.fetchHeaders={}:this.fetchHeaders={Authorization:"Bearer "+s})}}R([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],T.prototype,"fetchCredentials",void 0),R([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],T.prototype,"fetchHeaders",void 0),R([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],T.prototype,"accessToken",void 0),R([t.Watch({converter:t.PropertyConverters.Boolean})],T.prototype,"fetching",void 0);var N=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};let W=class extends _{};W=N([t.CustomElement({tagName:t.P+"-widget-translator"})],W);var B=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const M={display:{icon:"timer",name:"Clock",description:"Timer widget."},props:[{prop:"interval",type:o,display:{name:"Interval (msec)"},extra:{selector:"."+t.PCSS+"-widget",step:1e3},validators:[{type:"range",errorMessage:"Negative numbers not allowed",params:{min:0}}]}]};let j=class extends _{constructor(){super(y(M)),this.interval=0}};B([t.Watch({reflectBack:!0,converter:t.PropertyConverters.Number})],j.prototype,"interval",void 0),B([t.Watch({converter:t.PropertyConverters.Number})],j.prototype,"time",void 0),j=B([t.CustomElement({tagName:t.P+"-widget-clock",template:`<${t.P}-timer interval="{{ :host.interval }}" on-tick="{{ :host.time = Date.now() }}"></${t.P}-timer>`})],j);const I="pacem:metadatabag";class H{constructor(e=new r.Scaffolding.OpenApi.OpenApiParser){this._openApi=e,this._cachedMetadataUrls=[]}async load(e,t){let r=await this._openApi.load(e,t);if(null!=r){r[I]={};for(let e of r.endpoints)await this._enrichSchemas(r,e,t)}return r}async _enrichSchemas(e,t,r){const s=t.response;s&&s.meta&&(s.fields=await this._fetchMetadata(e,{name:s.fullType,schema:s.meta},r));const a=t.parameters;for(let t of a||[])if(t.meta&&t.fullType){let s=await this._fetchMetadata(e,{name:t.fullType,schema:t.meta},r);t.fields=s}}clearCache(){const e=this.cache,t=this._cachedMetadataUrls;if(e){for(let r of t)e.removeProperty(r);t.splice(0)}}async _fetchMetadata(e,t,s){let a=async t=>{let o=[];if(t&&t.name){if(e[I][t.name])return e[I][t.name];e[I][t.name]=o;let i,n={props:[]};if(!/^https?:\/\//.test(t.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(i=t.name,i){let e=async()=>{let e=await fetch(i,{credentials:"omit",mode:"cors",headers:s});if(e.ok)return await e.json()};this.cache?(n=this.cache.getPropertyValue(i),n||(n=await e(),this._cachedMetadataUrls.push(i),this.cache.setPropertyValue(i,n,!1))):n=await e()}let l=t.schema;for(let t in l.properties){let s=l.properties[t],i=n&&n.props.find(e=>e.prop===t),c=Object.assign({prop:t,type:s.type||"text",props:void 0},i||{isReadOnly:!0});if(i){let t=s.items&&s.items.$ref||s.$ref;if(t){let s=r.Scaffolding.OpenApi.getOpenApiDefinition(e,t),o=s.name;e[I][o]?c.props=e[I][o]:c.props=await a(s)}}o.push(c)}}return o};return await a(t)}}var V=Object.freeze({__proto__:null,SwaggerCmsParser:H}),L=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const F={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}},A]};let q=class extends T{constructor(e=new H,r=new t.Storage){super(y(F)),this._openapi=e,this._cache=r}propertyChangedCallback(e,t,r,s){switch(super.propertyChangedCallback(e,t,r,s),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&&!t.Utils.isNullOrEmpty(this.url)&&(this.fetching=!0,this._openapi.load(this.url).then(e=>{this.manifest=e,this.fetching=!1},e=>{this.fetching=!1}))}};L([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],q.prototype,"url",void 0),L([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Boolean})],q.prototype,"usecache",void 0),L([t.Watch({converter:t.PropertyConverters.Json})],q.prototype,"manifest",void 0),q=L([t.CustomElement({tagName:t.P+"-widget-apimanifest"})],q);var J=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};class z extends _{constructor(e,t=1,r){super(e,r),this.colspan=t,this.rowspan=1}connectedCallback(){super.connectedCallback(),t.Utils.addClass(this,"ui-widget "+t.PCSS+"-cell cols-xs-start-1 cols-xs-12 rows-xs-start-auto")}propertyChangedCallback(e,r,s,a){switch(super.propertyChangedCallback(e,r,s,a),e){case"row":t.Utils.removeClass(this,`rows-start-${r+1}`),t.Utils.addClass(this,`rows-start-${s+1}`);break;case"rowspan":t.Utils.removeClass(this,`rows-${r}`),t.Utils.addClass(this,`rows-${s}`);break;case"column":t.Utils.removeClass(this,`cols-start-${r+1}`),t.Utils.addClass(this,`cols-start-${s+1}`);break;case"colspan":t.Utils.removeClass(this,`cols-${r}`),t.Utils.addClass(this,`cols-${s}`);break;case"borders":(this.borders?t.Utils.addClass:t.Utils.removeClass).apply(this,[this,t.PCSS+"-border"]);break;case"corners":(this.borders?t.Utils.addClass:t.Utils.removeClass).apply(this,[this,t.PCSS+"-corners"])}}get container(){return this._container}findContainer(){return t.CustomElementUtils.findAncestor(this,e=>e instanceof Q)}viewActivatedCallback(){super.viewActivatedCallback();let e=this._container=this.findContainer();t.Utils.isNull(e)||e.register(this)}disconnectedCallback(){t.Utils.isNull(this._container)||this._container.unregister(this),super.disconnectedCallback()}}J([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.Number})],z.prototype,"column",void 0),J([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.Number})],z.prototype,"row",void 0),J([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.Number})],z.prototype,"colspan",void 0),J([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.Number})],z.prototype,"rowspan",void 0),J([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.Boolean})],z.prototype,"borders",void 0),J([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.Boolean})],z.prototype,"corners",void 0);const G="widgetregister",X="widgetunregister";class Y extends CustomEvent{constructor(e,r){super(G,t.Utils.extend(r||{},{detail:e}))}}class K extends CustomEvent{constructor(e,r){super(X,t.Utils.extend(r||{},{detail:e}))}}class Q extends z{get itemsElement(){return this}validate(e){return e instanceof z}viewActivatedCallback(){super.viewActivatedCallback(),t.Utils.addClass(this.itemsElement,t.PCSS+"-items-element")}appendItem(e){this.itemsElement.appendChild(e)}register(e){if(!this.validate(e))return this.log(t.Logging.LogLevel.Debug,`${e&&e.localName} element couldn't be registered in a ${this.localName} element.`),!1;let r=!1;const s=this.items=this.items||[];return t.Utils.isNullOrEmpty(s)?(this.items=[e],r=!0):-1===s.indexOf(e)&&(s.push(e),r=!0),r&&this.dispatchEvent(new Y(e)),r}unregister(e){const r=this.items,s=!t.Utils.isNullOrEmpty(r)&&r.indexOf(e);if(s>=0){let e=r.splice(s,1);return this.dispatchEvent(new K(e[0])),!0}return!1}}J([t.Watch()],Q.prototype,"items",void 0);var Z=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const ee=y({display:{icon:"font_download",name:"Text",description:"Plain text widget."},props:[{prop:"text",type:o,display:{name:"Text"},extra:P}]});let te=class extends z{constructor(){super(ee)}};Z([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],te.prototype,"text",void 0),te=Z([t.CustomElement({tagName:t.P+"-widget-text",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-text text="{{ :host.text }}"></${t.P}-text>`})],te);var re=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};let se=class extends Q{register(e){const t=super.register(e);return t&&(e.hide=!0),t}};re([t.ViewChild(t.P+"-drag-drop")],se.prototype,"_dragDrop",void 0),se=re([t.CustomElement({tagName:t.P+"-widget-picker",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-repeater datasource="{{ :host.items }}">\n <template>\n <${t.P}-panel behaviors="{{ [::_dragDrop] }}" class="${t.PCSS}-widget-itempicker display-flex flex-fill flex-middle flex-nowrap">\n <i class="${t.PCSS}-icon flex-auto" dragger>drag_indicator</i>\n <${t.P}-icon icon="{{ ^item.metadata.display.icon }}" class="flex-auto ${t.PCSS}-margin margin-x-1"></${t.P}-icon>\n <${t.P}-text text="{{ ^item.metadata.display.name }}"></${t.P}-text>\n </${t.P}-panel>\n </template>\n</${t.P}-repeater>\n<${t.P}-drag-drop handle-selector="i.${t.PCSS}-icon[dragger]"></${t.P}-drag-drop>\n<${t.P}-content></${t.P}-content>`})],se);var ae=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};function oe(){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}const ie={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 ne=class extends Q{constructor(){super(y(ie),12,"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=e=>{const r=e.detail,s=r.element;switch(e.type){case t.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 t.UI.DragDropEventType.End:this._gridBoxes.forEach(e=>{e.style.pointerEvents="none"});break;case t.UI.DragDropEventType.Over:var a=r.target,o=+a.style.gridColumnStart-1,i=+a.style.gridRowStart-1;const e=o+this._initState.colspan,n=i+this._initState.rowspan;if(!this._intersects(s,o,i,s.colspan,s.rowspan)){let t=!1;e<=(this.columns||12)&&(t=s.column!==o,s.column=o),n<=(this.rows||1)&&(t=t||s.row!==i,s.row=i)}}},this._resizeHandler=e=>{switch(e.type){case t.UI.RescaleEventType.Start:t.Utils.addClass(e.detail.element,t.PCSS+"-rescaling"),this._gridBoxes.forEach(e=>{e.style.pointerEvents="auto"});break;case t.UI.RescaleEventType.End:this._gridBoxes.forEach(e=>{e.style.pointerEvents="none"}),t.Utils.removeClass(e.detail.element,t.PCSS+"-rescaling");break;case t.UI.RescaleEventType.Rescale:e.preventDefault();const a={x:e.clientX,y:e.clientY},o=e.detail.handle,i=document.elementsFromPoint(a.x,a.y).find(e=>this._dragDrop.dropTargets.indexOf(e)>=0);if(i){var r=+i.style.gridColumnStart,s=+i.style.gridRowStart;const t=e.detail.element,a=t.column+1,n=t.row+1,l=1+r-a,c=1+s-n;if(!this._intersects(t,t.column,t.row,l,c)){let e=!1;r>=a&&o.endsWith("right")&&(e=t.colspan!==l,t.colspan=l),s>=n&&o.startsWith("bottom")&&(e=e||t.rowspan!==c,t.rowspan=c)}}}},this._gridBoxes=[]}register(e){let r=super.register(e);if(r){const r=e.row||0,s=e.column||0,a=e.colspan||2,o=e.rowspan||1;let i=!this._intersects(e,s,r,a,o);if(i)e.row=r,e.column=s,e.colspan=a,e.rowspan=o;else{if(!i){let t=(t=!1)=>{let r=this.columns-1;t||(r=r-a+1);for(let t=0;t<this.rows;t++){for(let s=0;s<=r;s++)if(!this._intersects(e,s,t,a,o)){e.column=s,e.row=t,e.colspan=Math.min(r+1-s,a),e.rowspan=o,i=!0;break}if(i)break}};t(),!i&&a>1&&t(!0)}i||(this.rows++,e.row=this.rows-1,e.column=0)}e.behaviors=[this._dragDrop,this._rescaler],e.addEventListener(t.PropertyChangeEventName,this._widgetPropertyChange,!1)}return r}unregister(e){let r=super.unregister(e);if(r){e.removeEventListener(t.PropertyChangeEventName,this._widgetPropertyChange,!1);const r=e.behaviors.indexOf(this._dragDrop);r>=0&&e.behaviors.splice(r,1);const s=e.behaviors.indexOf(this._rescaler);s>=0&&e.behaviors.splice(s,1)}return r}_intersects(e,t,r,s,a){for(let o of this.items){let i=o;if(i!==e&&(i.column<t+s&&i.column+i.colspan>t&&i.row<r+a&&i.row+i.rowspan>r))return!0}return!1}connectedCallback(){super.connectedCallback(),t.Utils.addClass(this,t.PCSS+"-grid");let e=this._dragDrop=document.createElement(t.P+"-drag-drop"),r=document.createElement("div");document.body.appendChild(r),e.floater=r,e.mode=t.UI.DragDataMode.Alias,e.dropBehavior=t.UI.DropBehavior.None,e.addEventListener(t.UI.DragDropEventType.Start,this._dragDropHandler,!1),e.addEventListener(t.UI.DragDropEventType.Over,this._dragDropHandler,!1),e.addEventListener(t.UI.DragDropEventType.End,this._dragDropHandler,!1),document.body.appendChild(e);let s=this._rescaler=document.createElement(t.P+"-rescale");s.handles=[t.UI.RescaleHandle.Right,t.UI.RescaleHandle.Bottom],s.addEventListener(t.UI.RescaleEventType.Start,this._resizeHandler,!1),s.addEventListener(t.UI.RescaleEventType.Rescale,this._resizeHandler,!1),s.addEventListener(t.UI.RescaleEventType.End,this._resizeHandler,!1),document.body.appendChild(s),t.Utils.isNullOrEmpty(this.columns)&&(this.columns=12),t.Utils.isNullOrEmpty(this.rows)&&(this.rows=1)}viewActivatedCallback(){super.viewActivatedCallback(),this.adapt()}propertyChangedCallback(e,t,r,s){super.propertyChangedCallback(e,t,r,s),this.adapt()}disconnectedCallback(){var e=this._dragDrop,r=this._rescaler;t.Utils.isNull(e)||(e.floater.remove(),e.removeEventListener(t.UI.DragDropEventType.Start,this._dragDropHandler,!1),e.removeEventListener(t.UI.DragDropEventType.Over,this._dragDropHandler,!1),e.removeEventListener(t.UI.DragDropEventType.End,this._dragDropHandler,!1),e.remove(),this._dragDrop=null),t.Utils.isNull(r)||(r.removeEventListener(t.UI.RescaleEventType.Start,this._resizeHandler,!1),r.removeEventListener(t.UI.RescaleEventType.Rescale,this._resizeHandler,!1),r.removeEventListener(t.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||12}, 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 e=0;const r=this.editing;if(r){const t=this.columns||12,r=t*(this.rows||1);e=r;for(let e=0;e<r;e++){for(;this._gridBoxes.length<=e;){let e=oe();this.appendChild(e),this._gridBoxes.push(e)}let r=this._gridBoxes[e];const s=e%t,a=Math.floor(e/t);r.style.gridColumn=(s+1).toString(),r.style.gridRow=(a+1).toString()}}for(let t of this._gridBoxes.splice(e))t.remove();t.Utils.isNull(this._dragDrop)||t.Utils.isNull(this._rescaler)||(this._dragDrop.disabled=this._rescaler.disabled=!r,this._dragDrop.dropTargets=this._gridBoxes)}};ae([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],ne.prototype,"unit",void 0),ae([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],ne.prototype,"marginTop",void 0),ae([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],ne.prototype,"marginBottom",void 0),ae([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],ne.prototype,"columns",void 0),ae([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],ne.prototype,"rows",void 0),ae([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],ne.prototype,"minRowheight",void 0),ae([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],ne.prototype,"rowheight",void 0),ae([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],ne.prototype,"rowGap",void 0),ae([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],ne.prototype,"columnGap",void 0),ae([t.Debounce(100)],ne.prototype,"adapt",null),ne=ae([t.CustomElement({tagName:t.P+"-widget-grid"})],ne);var le=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const ce=(e,r=":host",s=":host.entity")=>{const o={},i=e.metadata,n=a,l=[];o.properties=`{{ Pacem.CustomElementUtils.getWatchedProperty(${s}, '${i.prop}').config.converter }}`;const c=t.P+"-datacolumns";let p=i.extra||{};if(!t.Utils.isNullOrEmpty(p.properties))switch(typeof p.properties){case"string":o.properties=`{{ ${s}.${p.properties} }}`;break;case"function":const e="fn"+t.Utils.uniqueCode();n[e]=p.properties,o.properties=`{{ Pacem.Components.Cms.Functions.${e}(${r}), once }}`,l.push(e)}return l.length>0&&(o["on-unload"]=`{{ Pacem.Components.Cms.Functions.dismiss('${l.join("','")}') }}`),{tagName:c,attrs:o}},pe={display:{name:"Columns"},props:[{prop:"header",type:"string",display:{cssClass:["form-minimal"],name:"Header"}},{prop:"content",type:o,display:{name:"Content"},extra:P}]};let de=class extends t.Components.PacemElement{propertyChangedCallback(e,t,r,s){switch(super.propertyChangedCallback(e,t,r,s),e){case"content":this.contentExpression=r;break;case"contentExpression":this.setAttribute("content",r||"")}}viewActivatedCallback(){super.viewActivatedCallback(),this._form.entity=this,this._form.metadata=v(pe)}};le([t.Watch({converter:t.PropertyConverters.String})],de.prototype,"header",void 0),le([t.Watch({converter:t.PropertyConverters.String})],de.prototype,"content",void 0),le([t.Watch({converter:t.PropertyConverters.String})],de.prototype,"contentExpression",void 0),le([t.ViewChild(t.P+"-form")],de.prototype,"_form",void 0),de=le([t.CustomElement({tagName:t.P+"-widget-datacolumn",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-form class="panel-body" autogenerate="true"></${t.P}-form>`})],de);let he=class extends r.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(e){return t.Utils.fromResult(this.value=this._repeater.datasource)}acceptValue(e){t.Utils.isNull(this._repeater)||(this._repeater.datasource=t.Utils.clone(e||[]))}getViewValue(e){return"[DataColumns]"}convertValueAttributeToProperty(e){return t.PropertyConverters.Json.convert(e,this)}viewActivatedCallback(){super.viewActivatedCallback(),this._propDragger.addEventListener(t.UI.DragDropEventType.End,this._dropHandler,!1),this._colDragger.addEventListener(t.UI.DragDropEventType.End,this._dropHandler,!1)}disconnectedCallback(){t.Utils.isNull(this._propDragger)||this._propDragger.removeEventListener(t.UI.DragDropEventType.End,this._dropHandler,!1),t.Utils.isNull(this._colDragger)||this._colDragger.removeEventListener(t.UI.DragDropEventType.End,this._dropHandler,!1),super.disconnectedCallback()}};le([t.ViewChild(`${t.P}-repeater[columns]`)],he.prototype,"_repeater",void 0),le([t.ViewChild(`${t.P}-drag-drop[properties]`)],he.prototype,"_propDragger",void 0),le([t.ViewChild(`${t.P}-drag-drop[columns]`)],he.prototype,"_colDragger",void 0),le([t.ViewChild("div[drop-target]")],he.prototype,"_dropTarget",void 0),le([t.Watch({converter:t.PropertyConverters.Json})],he.prototype,"properties",void 0),he=le([t.CustomElement({tagName:t.P+"-widget-datacolumns",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<div class="${t.PCSS}-datacolumns">\n <div class="datacolumns-main display-flex flex-fill">\n\n <${t.P}-drag-drop mode="${t.UI.DragDataMode.Alias}" disabled="{{ :host.readonly }}" handle-selector="*[handle]"\n drop-behavior="${t.UI.DropBehavior.InsertChild}" drop-targets="{{ [::_dropTarget] }}" columns></${t.P}-drag-drop>\n <${t.P}-repeater class="display-flex flex-fill" columns>\n \x3c!-- columns --\x3e\n <div class="display-flex flex-nowrap" drop-target>\n <template>\n <${t.P}-panel behaviors="{{ [::_colDragger] }}">\n <div class="${t.PCSS}-panel panel-side-left side-auto">\n <div class="panel-side">\n <${t.P}-button class="display-block button-flat icon-glyph-small" icon-glyph="drag_indicator" handle></${t.P}-button>\n <${t.P}-button class="display-block button-flat icon-glyph-small" on-click=":host.value.splice(^index, 1)" icon-glyph="clear"></${t.P}-button>\n </div>\n <div class="panel-heading">\n <${t.P}-text text="{{ ^item.header }}"></${t.P}-text>\n </div>\n <${t.P}-widget-datacolumn class="panel-body" header="{{ ^item.header, twoway }}" content-expression="{{ ^item.content, twoway }}"></${t.P}-widget-datacolumn>\n </div>\n </${t.P}-panel>\n </template>\n </div>\n </${t.P}-repeater>\n\n </div>\n <${t.P}-panel class="datacolumns-props" hide="{{ :host.readonly }}">\n <${t.P}-drag-drop mode="${t.UI.DragDataMode.Copy}" disabled="{{ :host.readonly }}" handle-selector="*[handle]"\n drop-behavior="${t.UI.DropBehavior.InsertChild}" drop-targets="{{ [::_dropTarget] }}" properties></${t.P}-drag-drop>\n <${t.P}-repeater datasource="{{ :host._columnifyMetadata(:host.properties) }}">\n \x3c!-- properties --\x3e\n <template>\n <${t.P}-panel behaviors="{{ [::_propDragger] }}" class="${t.PCSS}-panel panel-side-left side-auto panel-primary panel-filled ${t.PCSS}-margin margin-bottom-1">\n <div class="panel-side">\n <${t.P}-button class="display-block button-flat icon-glyph-small" icon-glyph="drag_indicator" handle></${t.P}-button>\n </div>\n <div class="text-truncate panel-body">\n <${t.P}-span text="{{ ^item.header }}"></${t.P}-span>\n </div>\n </${t.P}-panel>\n </template>\n </${t.P}-repeater>\n </${t.P}-panel>\n</div>`})],he);var me=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const ue={display:{name:"DataColumn"},props:[{prop:"header",type:"string",display:{name:"Header"}},{prop:"content",type:o,display:{name:"Content"},extra:P}]},fe=y({display:{icon:"table_chart",name:"DataGrid",description:"DataGrid widget."},props:[{prop:"datasource",type:o,display:{name:"Datasource"},extra:t.Utils.extend({},P,{filter:e=>e instanceof $||e instanceof O})},{prop:"columns",type:ce,display:{name:"Columns"},extra:{properties:"datarowMetadata"},props:v(ue)}]});function ge(e,r=[]){const{head:s,body:a}=function(e=[]){const r=document.createDocumentFragment(),s=document.createDocumentFragment();let a=1;for(let o of e){const e=document.createElement("div");e.classList.add(t.PCSS+"-headcell"),e.textContent=o.header,r.appendChild(e);const i=new t.Components.PacemSpanElement;i.classList.add(t.PCSS+"-datacell","datacell-corners"),i.style.gridColumn=a.toString(),i.setAttribute("css","{{ {'grid-row': ^index+2} }}"),i.setAttribute("content",o.content),s.appendChild(i),a++}const o=new t.Components.PacemPanelElement;return o.classList.add(t.PCSS+"-datarow"),o.setAttribute("css","{{ {'grid-row': ^index+2} }}"),o.setAttribute("css-class","{{ {'datarow-alt': ^index % 2 === 1} }}"),o.style.gridColumn="1/"+(e.length+1),s.appendChild(o),{head:r,body:s}}(r),o=document.createElement("div");o.appendChild(s);const i=document.createElement("div");return i.appendChild(a),`<${t.P}-repeater datasource="{{ #${e}.datasource }}">\n <div class="${t.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></${t.P}-repeater>`}let ve=class extends z{constructor(){super(fe),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,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"columns":this.innerHTML=ge(this.id,r);break;case"datasource":this._extractMetadataJustInCase(r)}}viewActivatedCallback(){super.viewActivatedCallback(),this.innerHTML=ge(this.id,this.columns)}_seekArray(e){if(t.Utils.isArray(e))return e;if("object"==typeof e)for(let r in e){const s=this._seekArray(e[r]);if(!t.Utils.isNull(s))return s}return null}_extractMetadataJustInCase(e=this.datasource){if((t.Utils.isNullOrEmpty(this.datarowMetadata)||this._builtUponDatasource)&&!t.Utils.isNullOrEmpty(e)){const r=this._seekArray(e);if(!t.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}}}};me([t.Watch({reflectBack:!0,converter:t.PropertyConverters.Json})],ve.prototype,"columns",void 0),me([t.Watch({converter:t.PropertyConverters.Json})],ve.prototype,"datasource",void 0),me([t.Watch({converter:t.PropertyConverters.Json})],ve.prototype,"datarowMetadata",void 0),me([t.ViewChild(`.${t.PCSS}-datatable`)],ve.prototype,"_datatable",void 0),me([t.ViewChild("template")],ve.prototype,"_template",void 0),me([t.ViewChild(t.P+"-repeater")],ve.prototype,"_repeater",void 0),ve=me([t.CustomElement({tagName:t.P+"-widget-datagrid"})],ve);var ye=Object.freeze({__proto__:null,ACCESS_TOKEN_METADATA:A,DATACOLUMNS_METADATA_TYPE:ce,DEFAULT_METADATA:f,EXPRESSION_METADATA_TYPE:o,EXPRESSION_WIDGET_METADATA_EXTRA:P,get ExpressionSource(){return c},FETCH_CREDENTIALS_METADATA:{prop:"fetchCredentials",type:"string",dataType:"enumeration",display:{name:"Fetch Credentials"},extra:{enum:["same-origin","omit","include"]}},Functions:a,GRID_COLUMNS:12,LayoutChangeEventName:"layoutchange",PacemBearerWidgetElement:T,PacemCompositeWidgetElement:Q,get PacemDataColumnElement(){return de},get PacemDataColumnsElement(){return he},get PacemElementPickerElement(){return l},PacemElementPickerElementBase:n,get PacemExpressionElement(){return d},get PacemGridWidgetElement(){return ne},PacemUiWidgetElement:z,get PacemWidgetApiManifestElement(){return q},get PacemWidgetClockElement(){return j},get PacemWidgetDataElement(){return $},get PacemWidgetDataGridElement(){return ve},PacemWidgetElement:_,get PacemWidgetFetchElement(){return O},get PacemWidgetFetchParameterElement(){return D},get PacemWidgetPickerElement(){return se},get PacemWidgetTextElement(){return te},get PacemWidgetToolbarElement(){return b},get PacemWidgetTranslatorElement(){return W},Widget:class{static findAll(e){return t.CustomElementUtils.findAll("."+C,r=>r instanceof _&&!t.Utils.isNullOrEmpty(r.id)&&(t.Utils.isNull(e)||e(r)))}},WidgetRegisterEvent:Y,WidgetRegisterEventName:G,WidgetUnregisterEvent:K,WidgetUnregisterEventName:X,buildWidgetMetadata:y,gridifyMetadata:v});const Ce="permissionedit";class Pe extends CustomEvent{constructor(e){super(Ce,{detail:e,cancelable:!1,bubbles:!0})}}var be=Object.freeze({__proto__:null,DATACOLUMNS_METADATA_TYPE:ce,OpenApi:V,get PacemDataColumnElement(){return de},get PacemDataColumnsElement(){return he},Permissible:class{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(e,r,s){if(t.Utils.isNullOrEmpty(e)||t.Utils.isNull(r))return!1;var a=!0;if(r.permissions&&r.permissions.length>0){a=!1;for(let t of r.permissions)if(s(t)&&e[t.claimType]&&e[t.claimType].indexOf(t.claimValue)>=0)return!0}return a}},PermissionEditEvent:Pe,PermissionEditEventName:Ce}),_e=Object.freeze({__proto__:null,Cms:be,Components:ye});e.DeepMerger.merge(_e)}(Pacem,Pacem,Pacem,Pacem);
|
|
6
|
+
!function(e,t,r,s){"use strict";const a={dismiss:(...e)=>{for(let t of e||[])delete a[t]},handleExpressionValueChange:(e,r,s)=>{if("value"===e.detail.propertyName&&!t.Utils.isNull(s)){const a=e.detail.currentValue;if(s instanceof HTMLElement){let e=t.CustomElementUtils.camelToKebab(r);t.Utils.isNullOrEmpty(a)?s.removeAttribute(e):s.setAttribute(e,a.toString())}else s[r]=a}}},o=(e,r=":host",s=":host.entity")=>{const o={},i=e.metadata,n=a,l=[];o.value=`{{ ${s} instanceof HTMLElement && ${s}.getAttribute('${t.CustomElementUtils.camelToKebab(i.prop)}') }}`,o["on-"+t.PropertyChangeEventName]=`Pacem.Components.Cms.Functions.handleExpressionValueChange($event, '${i.prop}', ${s})`,o.converter=`{{ Pacem.CustomElementUtils.getWatchedProperty(${s}, '${i.prop}').config.converter }}`;const c=t.P+"-expression";let p=i.extra||{};if(t.Utils.isNullOrEmpty(p.selector)||(o.selector=p.selector),!t.Utils.isNullOrEmpty(p.filter))switch(typeof p.filter){case"string":o.filter=`{{ (e) => e.constructor.name === "${p.filter}" || e.localName === "${p.filter.toLowerCase()}" }}`;break;case"function":const e="fn"+t.Utils.uniqueCode();n[e]=p.filter,o.filter=`{{ Pacem.Components.Cms.Functions.${e}, once }}`,l.push(e)}if("function"==typeof p.labeler){const e="fn"+t.Utils.uniqueCode();n[e]=p.labeler,o.labeler=`{{ Pacem.Components.Cms.Functions.${e}, once }}`,l.push(e)}return l.length>0&&(o["on-unload"]=`{{ Pacem.Components.Cms.Functions.dismiss('${l.join("','")}') }}`),{tagName:c,attrs:o}};var i=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};class PacemElementPickerElementBase extends r.Components.Scaffolding.PacemBaseElement{}i([t.Watch({converter:t.PropertyConverters.String})],PacemElementPickerElementBase.prototype,"selector",void 0),i([t.Watch({converter:t.PropertyConverters.Eval})],PacemElementPickerElementBase.prototype,"filter",void 0),i([t.Watch({converter:t.PropertyConverters.Eval})],PacemElementPickerElementBase.prototype,"labeler",void 0);let n=class PacemElementPickerElement extends PacemElementPickerElementBase{get inputFields(){return[this._select]}toggleReadonlyView(e){this._select.readonly=e}onChange(e){return t.Utils.fromResult(this.value=this._select.value)}acceptValue(e){this._select.value=e}getViewValue(e){return this._select.viewValue}convertValueAttributeToProperty(e){return t.PropertyConverters.Element.convert(e)}viewActivatedCallback(){super.viewActivatedCallback(),this._databind()}propertyChangedCallback(e,t,r,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"selector":case"filter":case"labeler":this._databind()}}_databind(){const e=this.labeler||(e=>{let t=e.constructor.name;return e.id&&(t+="#"+e.id),t}),r=[];document.querySelectorAll(this.selector||"[pacem]").forEach((s,a,o)=>{!t.Utils.isNull(this.filter)&&!0!==this.filter(s)||t.Utils.isNullOrEmpty(s.id)||r.push({element:s,label:e(s)})}),this._select.valueProperty="element",this._select.textProperty="label",this._select.datasource=r}};i([t.ViewChild(t.P+"-select")],n.prototype,"_select",void 0),i([t.Debounce(50)],n.prototype,"_databind",null),n=i([t.CustomElement({tagName:t.P+"-element-picker",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-select></${t.P}-select>`})],n);var l,c=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};!function(e){e.Constant="const",e.PropertyReference="property",e.Expression="expr"}(l||(l={}));let p=class PacemExpressionElement extends PacemElementPickerElementBase{propertyChangedCallback(e,r,s,a){if(super.propertyChangedCallback(e,r,s,a),"converter"===e)this._setFeedbackText(this.value);else if(!a&&this._editing)switch(e){case"_source":if(s===l.PropertyReference)this._picker.focus();else this._editor.focus();break;case"_propRef":t.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(e){return t.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(e=this.value){const r=this.converter;t.CustomElementUtils.isBindingAttribute(e)||"function"!=typeof(r&&r.convert)?this._eval.setAttribute("text",e):this._eval.text=void 0===e?"<undefined>":r.convert(e)}getViewValue(e){return e}convertValueAttributeToProperty(e){return e}_reverseStructure(){let e=()=>{this._source=this._sourceRef=this._propRef=void 0},r=this.value;if(t.Utils.isNullOrEmpty(r))e();else if(t.CustomElementUtils.isBindingAttribute(r)){const e=t.CustomElementUtils.parseBindingAttribute(r,this).dependencies;if(t.Utils.isNullOrEmpty(e)||e.length>1||t.RepeaterItem.isRepeaterItem(e[0].element))this._source=l.Expression;else{const t=e[0];this._source=l.PropertyReference,this._sourceRef=document.querySelector("#"+t.element.id),this._propRef=t.path}}else this._source=l.Constant}};c([t.Watch({emit:!1})],p.prototype,"converter",void 0),c([t.Watch({converter:t.PropertyConverters.Boolean})],p.prototype,"_editing",void 0),c([t.Watch({converter:t.PropertyConverters.String})],p.prototype,"_source",void 0),c([t.Watch({converter:t.PropertyConverters.Element})],p.prototype,"_sourceRef",void 0),c([t.Watch({converter:t.PropertyConverters.String})],p.prototype,"_propRef",void 0),c([t.ViewChild(t.P+"-element-picker")],p.prototype,"_picker",void 0),c([t.ViewChild(t.P+"-textarea")],p.prototype,"_editor",void 0),c([t.ViewChild("span."+t.PCSS+"-viewfinder")],p.prototype,"_view",void 0),c([t.ViewChild(t.P+"-text")],p.prototype,"_eval",void 0),c([t.Debounce(50)],p.prototype,"_reverseStructure",null),p=c([t.CustomElement({tagName:t.P+"-expression",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-collapse class="${t.PCSS}-expression" collapse="{{ !:host._editing }}">\n <div class="expression-builder ${t.PCSS}-grid grid-tiny-rowgap grid-tiny-colgap ${t.PCSS}-pad pad-bottom-2">\n <div class="${t.PCSS}-cell">\n <${t.P}-select value="{{ :host._source, twoway }}" class="display-block">\n <${t.P}-data-item value="${l.Constant}" label="constant value"></${t.P}-data-item>\n <${t.P}-data-item value="${l.PropertyReference}" label="property reference"></${t.P}-data-item>\n <${t.P}-data-item value="${l.Expression}" label="complex expression"></${t.P}-data-item>\n </${t.P}-select>\n </div>\n\n <${t.P}-panel class="${t.PCSS}-cell cols-hd-6" hide="{{ :host._source !== '${l.PropertyReference}' }}">\n <${t.P}-element-picker value="{{ :host._sourceRef, twoway }}" selector="{{ :host.selector }}" filter="{{ :host.filter }}" labeler="{{ :host.labeler }}" class="display-block"></${t.P}-element-picker>\n </${t.P}-panel>\n <${t.P}-panel class="${t.PCSS}-cell cols-hd-6" hide="{{ :host._source !== '${l.PropertyReference}' }}">\n <${t.P}-property-picker value="{{ :host._propRef, twoway }}" disabled="{{ !:host._sourceRef }}" target="{{ :host._sourceRef }}" on-change="::_editor.focus()" class="display-block"></${t.P}-property-picker>\n </${t.P}-panel>\n\n <${t.P}-panel class="${t.PCSS}-cell">\n <${t.P}-textarea class="display-block" placeholder="{{ '{{ '+ (:host._source || '') +'... }}' }}" change-policy="${r.Components.Scaffolding.ChangePolicy.Blur}"></${t.P}-textarea>\n </${t.P}-panel>\n </div>\n</${t.P}-collapse>\n<div class="${t.PCSS}-fieldset">\n <div class="fieldset-left">\n <div class="${t.PCSS}-fieldgroup ${t.PCSS}-viewfinder">\n <div class="text-truncate ${t.PCSS}-pad pad-x-1"><span class="${t.PCSS}-viewfinder text-tech">{{ :host.value || '...' }}</span></div>\n <${t.P}-panel class="fieldgroup-prepend">\n <${t.P}-button class="flat edit ${t.PCSS}-pad pad-left-1" on-click=":host._editing = !:host._editing" hide="{{ :host.readonly }}"></${t.P}-button>\n </${t.P}-panel>\n <${t.P}-panel class="fieldgroup-append text-tech display-flex flex-middle flex-nowrap" hide="{{ $pacem.isNullOrEmpty(:host.value) }}">\n <i class="${t.PCSS}-icon text-primary">keyboard_arrow_right</i>\n <${t.P}-text text="?" class="bg-primary ${t.PCSS}-pad pad-left-1 pad-right-1 ${t.PCSS}-margin margin-right-1 text-truncate" eval></${t.P}-text>\n </${t.P}-panel>\n </div>\n </div>\n</div>`})],p);var d=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const m=s.Components.UI,h={props:[{prop:"permissions",type:"array",display:{name:"Permissions"},props:{display:{cssClass:[t.PCSS+"-cell",t.PCSS+"-grid","grid-novgap","grid-tiny-colgap","grid-nospace"],name:"Permission"},props:Array.prototype.concat.apply([{prop:"claimType",type:"string",display:{cssClass:[t.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:[t.PCSS+"-cell","cols-hd-4","cols-lg-6","field-stretch","field-minimal"],name:"Claim value"},validators:[{type:"required",errorMessage:"!"}]}],["read","update","create","delete"].map((e,r)=>({prop:e,type:"boolean",display:{cssClass:[t.PCSS+"-cell","cols-hd-1","cols-3","field-minimal",t.PCSS+"-pad pad-left-2"],name:e.charAt(0).toUpperCase()+e.substr(1)}})))}}]},u={display:{name:"Widget",cssClass:[t.PCSS+"-grid","grid-novgap","grid-tiny-colgap","grid-nospace"]},props:[{prop:"tag",type:"string",display:{name:"Tag",cssClass:[t.PCSS+"-cell"]}}]};function g(e){e.display=e.display||{name:e.prop,cssClass:[]};(e.display.cssClass=t.Utils.isArray(e.display.cssClass)&&e.display.cssClass||[]).push(t.PCSS+"-cell")}function f(e){var r=e&&e.props||[],s=e&&e.display||{name:"Element"};if(!t.Utils.isNull(s)){const e=s.cssClass=s.cssClass||[];Array.prototype.push.apply(e,u.display.cssClass)}return r.forEach(g),{display:s,props:r}}function v(e){var r=t.Utils.extend({},u.display,e&&e.display||{}),s=t.Utils.clone(u.props);return Array.prototype.push.apply(s,(e&&e.props||[]).filter(e=>"tag"!==e.prop&&(g(e),!0))),{display:r,props:s}}const y=t.PCSS+"-widget",P={selector:"."+y,labeler:e=>t.Utils.isNullOrEmpty(e.tag)?(e.metadata&&e.metadata.display&&e.metadata.display.name||"")+"#"+e.id:e.tag};let C=class PacemWidgetToolbarElement extends t.Components.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 e=t.CustomElementUtils.findAncestorOfType(this,m.PacemBalloonElement);t.Utils.isNullOrEmpty(e)||e.popout()}};d([t.Watch({emit:!1,converter:t.PropertyConverters.Element})],C.prototype,"target",void 0),d([t.ViewChild(".buttons > div")],C.prototype,"_toolbar",void 0),d([t.ViewChild(t.P+"-button[edit]")],C.prototype,"_btnEdit",void 0),d([t.ViewChild(t.P+"-button[permissions]")],C.prototype,"_btnPerms",void 0),d([t.ViewChild(t.P+"-button[remove]")],C.prototype,"_btnRemove",void 0),d([t.ViewChild(t.P+"-shell-proxy")],C.prototype,"_proxy",void 0),C=d([t.CustomElement({tagName:t.P+"-widget-toolbar",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-span class="toolbar-text" content="{{ '<i class="${t.PCSS}-icon">'+ (::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) }}"></${t.P}-span>\n<div class="buttons ${t.PCSS}-buttonset ${t.PCSS}-pad ${t.PCSS}-margin pad-0 margin-left-2">\n <div class="buttonset-left">\n <${t.P}-button edit class="button edit" on-click=":host._edit($event)"></${t.P}-button>\n <${t.P}-button permissions class="button" on-click=":host._editPermissions($event)" css-class="{{ {'button-success': ::target.permissions.length > 0} }}" icon-glyph="verified_user"></${t.P}-button>\n <${t.P}-button remove class="button button-danger delete"></${t.P}-button>\n </div>\n<div>\n<${t.P}-shell-proxy>\n <${t.P}-modal-form core></${t.P}-modal-form>\n <${t.P}-modal-form permissions></${t.P}-modal-form>\n</${t.P}-shell-proxy>`})],C);class PacemWidgetElement extends t.Components.PacemElement{constructor(e,t="widget"){super(t),this.permissionMetadata=h,this.metadata=e}connectedCallback(){super.connectedCallback(),t.Utils.isNullOrEmpty(this.id)&&(this.id="wdg"+t.Utils.uniqueCode()),t.Utils.addClass(this,y)}propertyChangedCallback(e,r,s,a){switch(super.propertyChangedCallback(e,r,s,a),e){case"editable":s?this.isReady&&this._ensureBalloon():this._disposeBalloon();break;case"editing":t.Utils.isNull(this._balloon)||(this._balloon.disabled=!s),(s?t.Utils.addClass:t.Utils.removeClass).apply(this,[this,"widget-"+e]);break;case"metadata":this._assignIcon(s)}}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(t.Utils.isNull(this._balloon)){const e=this._balloon=document.createElement(t.P+"-balloon");e.target=this,e.disabled=!this.editing,e.options={behavior:m.BalloonBehavior.Menu,trigger:m.BalloonTrigger.Hover},e.innerHTML=`<${t.P}-widget-toolbar target="{{ #${this.id} }}"><${t.P}-widget-toolbar>`,t.CustomElementUtils.findAncestorShell(this).appendChild(e)}}_disposeBalloon(){t.Utils.isNull(this._balloon)||(this._balloon.remove(),this._balloon=null)}}d([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],PacemWidgetElement.prototype,"editing",void 0),d([t.Watch({emit:!1,converter:t.PropertyConverters.Boolean})],PacemWidgetElement.prototype,"editable",void 0),d([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.String})],PacemWidgetElement.prototype,"tag",void 0),d([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Json})],PacemWidgetElement.prototype,"permissions",void 0),d([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemWidgetElement.prototype,"metadata",void 0),d([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemWidgetElement.prototype,"permissionMetadata",void 0);var E=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const b={display:{icon:"storage",name:"Data",description:"Data object widget."},props:[{prop:"model",type:o,display:{name:"Model"},extra:{selector:"."+t.PCSS+"-widget"}}]};let _=class PacemWidgetDataElement extends PacemWidgetElement{constructor(){super(v(b))}};E([t.Watch({reflectBack:!0,converter:t.PropertyConverters.Json})],_.prototype,"model",void 0),_=E([t.CustomElement({tagName:t.P+"-widget-data"})],_);var w=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const S={props:[{prop:"name",type:"string",isReadOnly:!0,display:{name:"Name",cssClass:["cols-md-4","cols-lg-3","cols-hd-2"]}},{prop:"value",type:o,display:{name:"Value",cssClass:["cols-md-8","cols-lg-9","cols-hd-10"]}}]},$={display:{icon:"wifi",name:"Api Fetcher",description:"Fetching widget that retrieves data from a REST endpoint."},props:[{prop:"manifest",type:o,isComplexType:!0,display:{name:"Api Manifest"},extra:{selector:t.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:e=>e.endpoints.map(e=>t.Utils.extend(e,{fullPath:`[${e.method.toUpperCase()}] ${e.path}`})).sort(),textProperty:"fullPath",valueProperty:"fullPath",dependsOn:[{prop:"manifest",hide:!0}]}},{prop:"parameters",type:"array",display:{name:"Parameters"},props:f(S),extra:{lockItems:!0,dependsOn:[{prop:"endpoint",hide:!0}]}},D]},x=t.P+"-widget-fetch-parameter";let U=class PacemWidgetFetchParameterElement extends t.PacemEventTarget{propertyChangedCallback(e,r,s,a){super.propertyChangedCallback(e,r,s.first),"value"!==e||t.Utils.isNull(this._fetcher)||this._fetcher.fetch()}viewActivatedCallback(){super.viewActivatedCallback(),this._fetcher=t.CustomElementUtils.findAncestorOfType(this,k),t.Utils.isNull(this._fetcher)||t.Utils.isNull(this.value)||this._fetcher.fetch()}};w([t.Watch({reflectBack:!0,converter:t.PropertyConverters.Boolean})],U.prototype,"required",void 0),w([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],U.prototype,"name",void 0),w([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],U.prototype,"value",void 0),U=w([t.CustomElement({tagName:x})],U);let k=class PacemWidgetFetchElement extends PacemBearerWidgetElement{constructor(){super(v($)),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===x)}fetch(){const e=this._fetcher,r=this._parameters||[],s=this.endpoint;if(!t.Utils.isNull(s))for(let e of s.parameters)if(e.required&&t.Utils.isNull(r.find(t=>t.name===e.name)))return;const a={};for(let e of r)if(t.Utils.isNullOrEmpty(e.value)){if(e.required)return}else a[e.name]=e.value;return e.url=this.url,e.method=this.method,e.credentials=this.fetchCredentials,e.headers=this.fetchHeaders,e.parameters=a,e.fetch()}viewActivatedCallback(){super.viewActivatedCallback(),this.fetch()}propertyChangedCallback(e,r,s,a){if(super.propertyChangedCallback(e,r,s,a),"endpoint"!==e||t.Utils.isNullOrEmpty(s))switch(e){case"parameters":case"fetchHeaders":case"fetchCredentials":case"url":case"method":this.fetch()}else this._mergeEndpoint(s)}_mergeEndpoint(e=this.endpoint){this.url=this.manifest.baseUrl+e.path,this.method=e.method,this.fields=e.response.fields;const r=this._itemsElement,s=this._parameters;for(let r=s.length-1;r>=0;r--){let a=s[r],o=e.parameters.find(e=>e.name===a.name);t.Utils.isNull(o)&&a.remove()}for(let a of e.parameters){let e=s.find(e=>e.name===a.name);if(t.Utils.isNull(e)){let t=e=document.createElement(x);t.name=a.name,r.appendChild(t)}e.required=a.required}this.parameters=s}};w([t.Watch({reflectBack:!0,emit:!0,converter:t.PropertyConverters.Json})],k.prototype,"manifest",void 0),w([t.Watch({reflectBack:!0,emit:!0,converter:t.PropertyConverters.Json})],k.prototype,"endpoint",void 0),w([t.Watch({reflectBack:!0,emit:!1,converter:t.PropertyConverters.String})],k.prototype,"url",void 0),w([t.Watch({reflectBack:!0,emit:!1,converter:t.PropertyConverters.String})],k.prototype,"method",void 0),w([t.Watch({reflectBack:!0,emit:!1,converter:t.PropertyConverters.Json})],k.prototype,"fields",void 0),w([t.Watch()],k.prototype,"parameters",void 0),w([t.Watch()],k.prototype,"result",void 0),w([t.Watch({converter:t.PropertyConverters.Boolean})],k.prototype,"fetching",void 0),w([t.Watch({converter:t.PropertyConverters.Boolean})],k.prototype,"success",void 0),w([t.Watch({converter:t.PropertyConverters.Boolean})],k.prototype,"failure",void 0),w([t.ViewChild(t.P+"-fetch")],k.prototype,"_fetcher",void 0),w([t.ViewChild("div[hidden]")],k.prototype,"_itemsElement",void 0),k=w([t.CustomElement({tagName:t.P+"-widget-fetch",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-fetch autofetch="false" fetching="{{ :host.fetching, twoway }}" debounce="100"\non-${t.Net.FetchResultEventName}=":host._onresult($event)" on-${t.Net.FetchErrorEventName}=":host._onerror($event)" on-${t.Net.FetchSuccessEventName}=":host._onsuccess($event)"></${t.P}-fetch><div hidden><${t.P}-content></${t.P}-content></div>`})],k);var W=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const D={prop:"accessToken",type:o,display:{name:"Access Token"},extra:t.Utils.extend({},P,{filter:e=>e instanceof _||e instanceof k})};class PacemBearerWidgetElement extends PacemWidgetElement{constructor(){super(...arguments),this.fetchCredentials="same-origin"}propertyChangedCallback(e,r,s,a){super.propertyChangedCallback(e,r,s,a),"accessToken"===e&&(t.Utils.isNullOrEmpty(s)?this.fetchHeaders={}:this.fetchHeaders={Authorization:"Bearer "+s})}}W([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],PacemBearerWidgetElement.prototype,"fetchCredentials",void 0),W([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemBearerWidgetElement.prototype,"fetchHeaders",void 0),W([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],PacemBearerWidgetElement.prototype,"accessToken",void 0),W([t.Watch({converter:t.PropertyConverters.Boolean})],PacemBearerWidgetElement.prototype,"fetching",void 0);var R=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};let O=class PacemWidgetTranslatorElement extends PacemWidgetElement{};O=R([t.CustomElement({tagName:t.P+"-widget-translator"})],O);var T=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const A={display:{icon:"timer",name:"Clock",description:"Timer widget."},props:[{prop:"interval",type:o,display:{name:"Interval (msec)"},extra:{selector:"."+t.PCSS+"-widget",step:1e3},validators:[{type:"range",errorMessage:"Negative numbers not allowed",params:{min:0}}]}]};let N=class PacemWidgetClockElement extends PacemWidgetElement{constructor(){super(v(A)),this.interval=0}};T([t.Watch({reflectBack:!0,converter:t.PropertyConverters.Number})],N.prototype,"interval",void 0),T([t.Watch({converter:t.PropertyConverters.Number})],N.prototype,"time",void 0),N=T([t.CustomElement({tagName:t.P+"-widget-clock",template:`<${t.P}-timer interval="{{ :host.interval }}" on-tick="{{ :host.time = Date.now() }}"></${t.P}-timer>`})],N);const B="pacem:metadatabag";class SwaggerCmsParser{constructor(e=new r.Scaffolding.OpenApi.OpenApiParser){this._openApi=e,this._cachedMetadataUrls=[]}async load(e,t){let r=await this._openApi.load(e,t);if(null!=r){r[B]={};for(let e of r.endpoints)await this._enrichSchemas(r,e,t)}return r}async _enrichSchemas(e,t,r){const s=t.response;s&&s.meta&&(s.fields=await this._fetchMetadata(e,{name:s.fullType,schema:s.meta},r));const a=t.parameters;for(let t of a||[])if(t.meta&&t.fullType){let s=await this._fetchMetadata(e,{name:t.fullType,schema:t.meta},r);t.fields=s}}clearCache(){const e=this.cache,t=this._cachedMetadataUrls;if(e){for(let r of t)e.removeProperty(r);t.splice(0)}}async _fetchMetadata(e,t,s){let a=async t=>{let o=[];if(t&&t.name){if(e[B][t.name])return e[B][t.name];e[B][t.name]=o;let i,n={props:[]};if(!/^https?:\/\//.test(t.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(i=t.name,i){let e=async()=>{let e=await fetch(i,{credentials:"omit",mode:"cors",headers:s});if(e.ok)return await e.json()};this.cache?(n=this.cache.getPropertyValue(i),n||(n=await e(),this._cachedMetadataUrls.push(i),this.cache.setPropertyValue(i,n,!1))):n=await e()}let l=t.schema;for(let t in l.properties){let s=l.properties[t],i=n&&n.props.find(e=>e.prop===t),c=Object.assign({prop:t,type:s.type||"text",props:void 0},i||{isReadOnly:!0});if(i){let t=s.items&&s.items.$ref||s.$ref;if(t){let s=r.Scaffolding.OpenApi.getOpenApiDefinition(e,t),o=s.name;e[B][o]?c.props=e[B][o]:c.props=await a(s)}}o.push(c)}}return o};return await a(t)}}var M=Object.freeze({__proto__:null,SwaggerCmsParser:SwaggerCmsParser}),j=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const I={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}},D]};let H=class PacemWidgetApiManifestElement extends PacemBearerWidgetElement{constructor(e=new SwaggerCmsParser,r=new t.Storage){super(v(I)),this._openapi=e,this._cache=r}propertyChangedCallback(e,t,r,s){switch(super.propertyChangedCallback(e,t,r,s),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&&!t.Utils.isNullOrEmpty(this.url)&&(this.fetching=!0,this._openapi.load(this.url).then(e=>{this.manifest=e,this.fetching=!1},e=>{this.fetching=!1}))}};j([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],H.prototype,"url",void 0),j([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Boolean})],H.prototype,"usecache",void 0),j([t.Watch({converter:t.PropertyConverters.Json})],H.prototype,"manifest",void 0),H=j([t.CustomElement({tagName:t.P+"-widget-apimanifest"})],H);var V=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};class PacemUiWidgetElement extends PacemWidgetElement{constructor(e,t=1,r){super(e,r),this.colspan=t,this.rowspan=1}connectedCallback(){super.connectedCallback(),t.Utils.addClass(this,"ui-widget "+t.PCSS+"-cell cols-xs-start-1 cols-xs-12 rows-xs-start-auto")}propertyChangedCallback(e,r,s,a){switch(super.propertyChangedCallback(e,r,s,a),e){case"row":t.Utils.removeClass(this,`rows-start-${r+1}`),t.Utils.addClass(this,`rows-start-${s+1}`);break;case"rowspan":t.Utils.removeClass(this,`rows-${r}`),t.Utils.addClass(this,`rows-${s}`);break;case"column":t.Utils.removeClass(this,`cols-start-${r+1}`),t.Utils.addClass(this,`cols-start-${s+1}`);break;case"colspan":t.Utils.removeClass(this,`cols-${r}`),t.Utils.addClass(this,`cols-${s}`);break;case"borders":(this.borders?t.Utils.addClass:t.Utils.removeClass).apply(this,[this,t.PCSS+"-border"]);break;case"corners":(this.borders?t.Utils.addClass:t.Utils.removeClass).apply(this,[this,t.PCSS+"-corners"])}}get container(){return this._container}findContainer(){return t.CustomElementUtils.findAncestor(this,e=>e instanceof PacemCompositeWidgetElement)}viewActivatedCallback(){super.viewActivatedCallback();let e=this._container=this.findContainer();t.Utils.isNull(e)||e.register(this)}disconnectedCallback(){t.Utils.isNull(this._container)||this._container.unregister(this),super.disconnectedCallback()}}V([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.Number})],PacemUiWidgetElement.prototype,"column",void 0),V([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.Number})],PacemUiWidgetElement.prototype,"row",void 0),V([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.Number})],PacemUiWidgetElement.prototype,"colspan",void 0),V([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.Number})],PacemUiWidgetElement.prototype,"rowspan",void 0),V([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.Boolean})],PacemUiWidgetElement.prototype,"borders",void 0),V([t.Watch({emit:!0,reflectBack:!0,converter:t.PropertyConverters.Boolean})],PacemUiWidgetElement.prototype,"corners",void 0);const L="widgetregister",F="widgetunregister";class WidgetRegisterEvent extends CustomEvent{constructor(e,r){super(L,t.Utils.extend(r||{},{detail:e}))}}class WidgetUnregisterEvent extends CustomEvent{constructor(e,r){super(F,t.Utils.extend(r||{},{detail:e}))}}class PacemCompositeWidgetElement extends PacemUiWidgetElement{get itemsElement(){return this}validate(e){return e instanceof PacemUiWidgetElement}viewActivatedCallback(){super.viewActivatedCallback(),t.Utils.addClass(this.itemsElement,t.PCSS+"-items-element")}appendItem(e){this.itemsElement.appendChild(e)}register(e){if(!this.validate(e))return this.log(t.Logging.LogLevel.Debug,`${e&&e.localName} element couldn't be registered in a ${this.localName} element.`),!1;let r=!1;const s=this.items=this.items||[];return t.Utils.isNullOrEmpty(s)?(this.items=[e],r=!0):-1===s.indexOf(e)&&(s.push(e),r=!0),r&&this.dispatchEvent(new WidgetRegisterEvent(e)),r}unregister(e){const r=this.items,s=!t.Utils.isNullOrEmpty(r)&&r.indexOf(e);if(s>=0){let e=r.splice(s,1);return this.dispatchEvent(new WidgetUnregisterEvent(e[0])),!0}return!1}}V([t.Watch()],PacemCompositeWidgetElement.prototype,"items",void 0);var q=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const G=v({display:{icon:"font_download",name:"Text",description:"Plain text widget."},props:[{prop:"text",type:o,display:{name:"Text"},extra:P}]});let J=class PacemWidgetTextElement extends PacemUiWidgetElement{constructor(){super(G)}};q([t.Watch({reflectBack:!0,converter:t.PropertyConverters.String})],J.prototype,"text",void 0),J=q([t.CustomElement({tagName:t.P+"-widget-text",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-text text="{{ :host.text }}"></${t.P}-text>`})],J);var z=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};let X=class PacemWidgetPickerElement extends PacemCompositeWidgetElement{register(e){const t=super.register(e);return t&&(e.hide=!0),t}};z([t.ViewChild(t.P+"-drag-drop")],X.prototype,"_dragDrop",void 0),X=z([t.CustomElement({tagName:t.P+"-widget-picker",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-repeater datasource="{{ :host.items }}">\n <template>\n <${t.P}-panel behaviors="{{ [::_dragDrop] }}" class="${t.PCSS}-widget-itempicker display-flex flex-fill flex-middle flex-nowrap">\n <i class="${t.PCSS}-icon flex-auto" dragger>drag_indicator</i>\n <${t.P}-icon icon="{{ ^item.metadata.display.icon }}" class="flex-auto ${t.PCSS}-margin margin-x-1"></${t.P}-icon>\n <${t.P}-text text="{{ ^item.metadata.display.name }}"></${t.P}-text>\n </${t.P}-panel>\n </template>\n</${t.P}-repeater>\n<${t.P}-drag-drop handle-selector="i.${t.PCSS}-icon[dragger]"></${t.P}-drag-drop>\n<${t.P}-content></${t.P}-content>`})],X);var Y=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};function K(){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}const Q={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 Z=class PacemGridWidgetElement extends PacemCompositeWidgetElement{constructor(){super(v(Q),12,"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=e=>{const r=e.detail,s=r.element;switch(e.type){case t.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 t.UI.DragDropEventType.End:this._gridBoxes.forEach(e=>{e.style.pointerEvents="none"});break;case t.UI.DragDropEventType.Over:var a=r.target,o=+a.style.gridColumnStart-1,i=+a.style.gridRowStart-1;const e=o+this._initState.colspan,n=i+this._initState.rowspan;if(!this._intersects(s,o,i,s.colspan,s.rowspan)){let t=!1;e<=(this.columns||12)&&(t=s.column!==o,s.column=o),n<=(this.rows||1)&&(t=t||s.row!==i,s.row=i)}}},this._resizeHandler=e=>{switch(e.type){case t.UI.RescaleEventType.Start:t.Utils.addClass(e.detail.element,t.PCSS+"-rescaling"),this._gridBoxes.forEach(e=>{e.style.pointerEvents="auto"});break;case t.UI.RescaleEventType.End:this._gridBoxes.forEach(e=>{e.style.pointerEvents="none"}),t.Utils.removeClass(e.detail.element,t.PCSS+"-rescaling");break;case t.UI.RescaleEventType.Rescale:e.preventDefault();const a={x:e.clientX,y:e.clientY},o=e.detail.handle,i=document.elementsFromPoint(a.x,a.y).find(e=>this._dragDrop.dropTargets.indexOf(e)>=0);if(i){var r=+i.style.gridColumnStart,s=+i.style.gridRowStart;const t=e.detail.element,a=t.column+1,n=t.row+1,l=1+r-a,c=1+s-n;if(!this._intersects(t,t.column,t.row,l,c)){let e=!1;r>=a&&o.endsWith("right")&&(e=t.colspan!==l,t.colspan=l),s>=n&&o.startsWith("bottom")&&(e=e||t.rowspan!==c,t.rowspan=c)}}}},this._gridBoxes=[]}register(e){let r=super.register(e);if(r){const r=e.row||0,s=e.column||0,a=e.colspan||2,o=e.rowspan||1;let i=!this._intersects(e,s,r,a,o);if(i)e.row=r,e.column=s,e.colspan=a,e.rowspan=o;else{if(!i){let t=(t=!1)=>{let r=this.columns-1;t||(r=r-a+1);for(let t=0;t<this.rows;t++){for(let s=0;s<=r;s++)if(!this._intersects(e,s,t,a,o)){e.column=s,e.row=t,e.colspan=Math.min(r+1-s,a),e.rowspan=o,i=!0;break}if(i)break}};t(),!i&&a>1&&t(!0)}i||(this.rows++,e.row=this.rows-1,e.column=0)}e.behaviors=[this._dragDrop,this._rescaler],e.addEventListener(t.PropertyChangeEventName,this._widgetPropertyChange,!1)}return r}unregister(e){let r=super.unregister(e);if(r){e.removeEventListener(t.PropertyChangeEventName,this._widgetPropertyChange,!1);const r=e.behaviors.indexOf(this._dragDrop);r>=0&&e.behaviors.splice(r,1);const s=e.behaviors.indexOf(this._rescaler);s>=0&&e.behaviors.splice(s,1)}return r}_intersects(e,t,r,s,a){for(let o of this.items){let i=o;if(i!==e&&(i.column<t+s&&i.column+i.colspan>t&&i.row<r+a&&i.row+i.rowspan>r))return!0}return!1}connectedCallback(){super.connectedCallback(),t.Utils.addClass(this,t.PCSS+"-grid");let e=this._dragDrop=document.createElement(t.P+"-drag-drop"),r=document.createElement("div");document.body.appendChild(r),e.floater=r,e.mode=t.UI.DragDataMode.Alias,e.dropBehavior=t.UI.DropBehavior.None,e.addEventListener(t.UI.DragDropEventType.Start,this._dragDropHandler,!1),e.addEventListener(t.UI.DragDropEventType.Over,this._dragDropHandler,!1),e.addEventListener(t.UI.DragDropEventType.End,this._dragDropHandler,!1),document.body.appendChild(e);let s=this._rescaler=document.createElement(t.P+"-rescale");s.handles=[t.UI.RescaleHandle.Right,t.UI.RescaleHandle.Bottom],s.addEventListener(t.UI.RescaleEventType.Start,this._resizeHandler,!1),s.addEventListener(t.UI.RescaleEventType.Rescale,this._resizeHandler,!1),s.addEventListener(t.UI.RescaleEventType.End,this._resizeHandler,!1),document.body.appendChild(s),t.Utils.isNullOrEmpty(this.columns)&&(this.columns=12),t.Utils.isNullOrEmpty(this.rows)&&(this.rows=1)}viewActivatedCallback(){super.viewActivatedCallback(),this.adapt()}propertyChangedCallback(e,t,r,s){super.propertyChangedCallback(e,t,r,s),this.adapt()}disconnectedCallback(){var e=this._dragDrop,r=this._rescaler;t.Utils.isNull(e)||(e.floater.remove(),e.removeEventListener(t.UI.DragDropEventType.Start,this._dragDropHandler,!1),e.removeEventListener(t.UI.DragDropEventType.Over,this._dragDropHandler,!1),e.removeEventListener(t.UI.DragDropEventType.End,this._dragDropHandler,!1),e.remove(),this._dragDrop=null),t.Utils.isNull(r)||(r.removeEventListener(t.UI.RescaleEventType.Start,this._resizeHandler,!1),r.removeEventListener(t.UI.RescaleEventType.Rescale,this._resizeHandler,!1),r.removeEventListener(t.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||12}, 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 e=0;const r=this.editing;if(r){const t=this.columns||12,r=t*(this.rows||1);e=r;for(let e=0;e<r;e++){for(;this._gridBoxes.length<=e;){let e=K();this.appendChild(e),this._gridBoxes.push(e)}let r=this._gridBoxes[e];const s=e%t,a=Math.floor(e/t);r.style.gridColumn=(s+1).toString(),r.style.gridRow=(a+1).toString()}}for(let t of this._gridBoxes.splice(e))t.remove();t.Utils.isNull(this._dragDrop)||t.Utils.isNull(this._rescaler)||(this._dragDrop.disabled=this._rescaler.disabled=!r,this._dragDrop.dropTargets=this._gridBoxes)}};Y([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],Z.prototype,"unit",void 0),Y([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],Z.prototype,"marginTop",void 0),Y([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],Z.prototype,"marginBottom",void 0),Y([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],Z.prototype,"columns",void 0),Y([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],Z.prototype,"rows",void 0),Y([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],Z.prototype,"minRowheight",void 0),Y([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.String})],Z.prototype,"rowheight",void 0),Y([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],Z.prototype,"rowGap",void 0),Y([t.Watch({emit:!1,reflectBack:!0,converter:t.PropertyConverters.Number})],Z.prototype,"columnGap",void 0),Y([t.Debounce(100)],Z.prototype,"adapt",null),Z=Y([t.CustomElement({tagName:t.P+"-widget-grid"})],Z);var ee=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const te=(e,r=":host",s=":host.entity")=>{const o={},i=e.metadata,n=a,l=[];o.properties=`{{ Pacem.CustomElementUtils.getWatchedProperty(${s}, '${i.prop}').config.converter }}`;const c=t.P+"-datacolumns";let p=i.extra||{};if(!t.Utils.isNullOrEmpty(p.properties))switch(typeof p.properties){case"string":o.properties=`{{ ${s}.${p.properties} }}`;break;case"function":const e="fn"+t.Utils.uniqueCode();n[e]=p.properties,o.properties=`{{ Pacem.Components.Cms.Functions.${e}(${r}), once }}`,l.push(e)}return l.length>0&&(o["on-unload"]=`{{ Pacem.Components.Cms.Functions.dismiss('${l.join("','")}') }}`),{tagName:c,attrs:o}},re={display:{name:"Columns"},props:[{prop:"header",type:"string",display:{cssClass:["form-minimal"],name:"Header"}},{prop:"content",type:o,display:{name:"Content"},extra:P}]};let se=class PacemDataColumnElement extends t.Components.PacemElement{propertyChangedCallback(e,t,r,s){switch(super.propertyChangedCallback(e,t,r,s),e){case"content":this.contentExpression=r;break;case"contentExpression":this.setAttribute("content",r||"")}}viewActivatedCallback(){super.viewActivatedCallback(),this._form.entity=this,this._form.metadata=f(re)}};ee([t.Watch({converter:t.PropertyConverters.String})],se.prototype,"header",void 0),ee([t.Watch({converter:t.PropertyConverters.String})],se.prototype,"content",void 0),ee([t.Watch({converter:t.PropertyConverters.String})],se.prototype,"contentExpression",void 0),ee([t.ViewChild(t.P+"-form")],se.prototype,"_form",void 0),se=ee([t.CustomElement({tagName:t.P+"-widget-datacolumn",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<${t.P}-form class="panel-body" autogenerate="true"></${t.P}-form>`})],se);let ae=class PacemDataColumnsElement extends r.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(e){return t.Utils.fromResult(this.value=this._repeater.datasource)}acceptValue(e){t.Utils.isNull(this._repeater)||(this._repeater.datasource=t.Utils.clone(e||[]))}getViewValue(e){return"[DataColumns]"}convertValueAttributeToProperty(e){return t.PropertyConverters.Json.convert(e,this)}viewActivatedCallback(){super.viewActivatedCallback(),this._propDragger.addEventListener(t.UI.DragDropEventType.End,this._dropHandler,!1),this._colDragger.addEventListener(t.UI.DragDropEventType.End,this._dropHandler,!1)}disconnectedCallback(){t.Utils.isNull(this._propDragger)||this._propDragger.removeEventListener(t.UI.DragDropEventType.End,this._dropHandler,!1),t.Utils.isNull(this._colDragger)||this._colDragger.removeEventListener(t.UI.DragDropEventType.End,this._dropHandler,!1),super.disconnectedCallback()}};ee([t.ViewChild(`${t.P}-repeater[columns]`)],ae.prototype,"_repeater",void 0),ee([t.ViewChild(`${t.P}-drag-drop[properties]`)],ae.prototype,"_propDragger",void 0),ee([t.ViewChild(`${t.P}-drag-drop[columns]`)],ae.prototype,"_colDragger",void 0),ee([t.ViewChild("div[drop-target]")],ae.prototype,"_dropTarget",void 0),ee([t.Watch({converter:t.PropertyConverters.Json})],ae.prototype,"properties",void 0),ae=ee([t.CustomElement({tagName:t.P+"-widget-datacolumns",shadow:t.Defaults.USE_SHADOW_ROOT,template:`<div class="${t.PCSS}-datacolumns">\n <div class="datacolumns-main display-flex flex-fill">\n\n <${t.P}-drag-drop mode="${t.UI.DragDataMode.Alias}" disabled="{{ :host.readonly }}" handle-selector="*[handle]"\n drop-behavior="${t.UI.DropBehavior.InsertChild}" drop-targets="{{ [::_dropTarget] }}" columns></${t.P}-drag-drop>\n <${t.P}-repeater class="display-flex flex-fill" columns>\n \x3c!-- columns --\x3e\n <div class="display-flex flex-nowrap" drop-target>\n <template>\n <${t.P}-panel behaviors="{{ [::_colDragger] }}">\n <div class="${t.PCSS}-panel panel-side-left side-auto">\n <div class="panel-side">\n <${t.P}-button class="display-block button-flat icon-glyph-small" icon-glyph="drag_indicator" handle></${t.P}-button>\n <${t.P}-button class="display-block button-flat icon-glyph-small" on-click=":host.value.splice(^index, 1)" icon-glyph="clear"></${t.P}-button>\n </div>\n <div class="panel-heading">\n <${t.P}-text text="{{ ^item.header }}"></${t.P}-text>\n </div>\n <${t.P}-widget-datacolumn class="panel-body" header="{{ ^item.header, twoway }}" content-expression="{{ ^item.content, twoway }}"></${t.P}-widget-datacolumn>\n </div>\n </${t.P}-panel>\n </template>\n </div>\n </${t.P}-repeater>\n\n </div>\n <${t.P}-panel class="datacolumns-props" hide="{{ :host.readonly }}">\n <${t.P}-drag-drop mode="${t.UI.DragDataMode.Copy}" disabled="{{ :host.readonly }}" handle-selector="*[handle]"\n drop-behavior="${t.UI.DropBehavior.InsertChild}" drop-targets="{{ [::_dropTarget] }}" properties></${t.P}-drag-drop>\n <${t.P}-repeater datasource="{{ :host._columnifyMetadata(:host.properties) }}">\n \x3c!-- properties --\x3e\n <template>\n <${t.P}-panel behaviors="{{ [::_propDragger] }}" class="${t.PCSS}-panel panel-side-left side-auto panel-primary panel-filled ${t.PCSS}-margin margin-bottom-1">\n <div class="panel-side">\n <${t.P}-button class="display-block button-flat icon-glyph-small" icon-glyph="drag_indicator" handle></${t.P}-button>\n </div>\n <div class="text-truncate panel-body">\n <${t.P}-span text="{{ ^item.header }}"></${t.P}-span>\n </div>\n </${t.P}-panel>\n </template>\n </${t.P}-repeater>\n </${t.P}-panel>\n</div>`})],ae);var oe=function(e,t,r,s){var a,o=arguments.length,i=o<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,r):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,s);else for(var n=e.length-1;n>=0;n--)(a=e[n])&&(i=(o<3?a(i):o>3?a(t,r,i):a(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i};const ie={display:{name:"DataColumn"},props:[{prop:"header",type:"string",display:{name:"Header"}},{prop:"content",type:o,display:{name:"Content"},extra:P}]},ne=v({display:{icon:"table_chart",name:"DataGrid",description:"DataGrid widget."},props:[{prop:"datasource",type:o,display:{name:"Datasource"},extra:t.Utils.extend({},P,{filter:e=>e instanceof _||e instanceof k})},{prop:"columns",type:te,display:{name:"Columns"},extra:{properties:"datarowMetadata"},props:f(ie)}]});function le(e,r=[]){const{head:s,body:a}=function(e=[]){const r=document.createDocumentFragment(),s=document.createDocumentFragment();let a=1;for(let o of e){const e=document.createElement("div");e.classList.add(t.PCSS+"-headcell"),e.textContent=o.header,r.appendChild(e);const i=new t.Components.PacemSpanElement;i.classList.add(t.PCSS+"-datacell","datacell-corners"),i.style.gridColumn=a.toString(),i.setAttribute("css","{{ {'grid-row': ^index+2} }}"),i.setAttribute("content",o.content),s.appendChild(i),a++}const o=new t.Components.PacemPanelElement;return o.classList.add(t.PCSS+"-datarow"),o.setAttribute("css","{{ {'grid-row': ^index+2} }}"),o.setAttribute("css-class","{{ {'datarow-alt': ^index % 2 === 1} }}"),o.style.gridColumn="1/"+(e.length+1),s.appendChild(o),{head:r,body:s}}(r),o=document.createElement("div");o.appendChild(s);const i=document.createElement("div");return i.appendChild(a),`<${t.P}-repeater datasource="{{ #${e}.datasource }}">\n <div class="${t.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></${t.P}-repeater>`}let ce=class PacemWidgetDataGridElement extends PacemUiWidgetElement{constructor(){super(ne),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,s){if(super.propertyChangedCallback(e,t,r,s),!s)switch(e){case"columns":this.innerHTML=le(this.id,r);break;case"datasource":this._extractMetadataJustInCase(r)}}viewActivatedCallback(){super.viewActivatedCallback(),this.innerHTML=le(this.id,this.columns)}_seekArray(e){if(t.Utils.isArray(e))return e;if("object"==typeof e)for(let r in e){const s=this._seekArray(e[r]);if(!t.Utils.isNull(s))return s}return null}_extractMetadataJustInCase(e=this.datasource){if((t.Utils.isNullOrEmpty(this.datarowMetadata)||this._builtUponDatasource)&&!t.Utils.isNullOrEmpty(e)){const r=this._seekArray(e);if(!t.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}}}};oe([t.Watch({reflectBack:!0,converter:t.PropertyConverters.Json})],ce.prototype,"columns",void 0),oe([t.Watch({converter:t.PropertyConverters.Json})],ce.prototype,"datasource",void 0),oe([t.Watch({converter:t.PropertyConverters.Json})],ce.prototype,"datarowMetadata",void 0),oe([t.ViewChild(`.${t.PCSS}-datatable`)],ce.prototype,"_datatable",void 0),oe([t.ViewChild("template")],ce.prototype,"_template",void 0),oe([t.ViewChild(t.P+"-repeater")],ce.prototype,"_repeater",void 0),ce=oe([t.CustomElement({tagName:t.P+"-widget-datagrid"})],ce);var pe=Object.freeze({__proto__:null,ACCESS_TOKEN_METADATA:D,DATACOLUMNS_METADATA_TYPE:te,DEFAULT_METADATA:u,EXPRESSION_METADATA_TYPE:o,EXPRESSION_WIDGET_METADATA_EXTRA:P,get ExpressionSource(){return l},FETCH_CREDENTIALS_METADATA:{prop:"fetchCredentials",type:"string",dataType:"enumeration",display:{name:"Fetch Credentials"},extra:{enum:["same-origin","omit","include"]}},Functions:a,GRID_COLUMNS:12,LayoutChangeEventName:"layoutchange",PacemBearerWidgetElement:PacemBearerWidgetElement,PacemCompositeWidgetElement:PacemCompositeWidgetElement,get PacemDataColumnElement(){return se},get PacemDataColumnsElement(){return ae},get PacemElementPickerElement(){return n},PacemElementPickerElementBase:PacemElementPickerElementBase,get PacemExpressionElement(){return p},get PacemGridWidgetElement(){return Z},PacemUiWidgetElement:PacemUiWidgetElement,get PacemWidgetApiManifestElement(){return H},get PacemWidgetClockElement(){return N},get PacemWidgetDataElement(){return _},get PacemWidgetDataGridElement(){return ce},PacemWidgetElement:PacemWidgetElement,get PacemWidgetFetchElement(){return k},get PacemWidgetFetchParameterElement(){return U},get PacemWidgetPickerElement(){return X},get PacemWidgetTextElement(){return J},get PacemWidgetToolbarElement(){return C},get PacemWidgetTranslatorElement(){return O},Widget:class Widget{static findAll(e){return t.CustomElementUtils.findAll("."+y,r=>r instanceof PacemWidgetElement&&!t.Utils.isNullOrEmpty(r.id)&&(t.Utils.isNull(e)||e(r)))}},WidgetRegisterEvent:WidgetRegisterEvent,WidgetRegisterEventName:L,WidgetUnregisterEvent:WidgetUnregisterEvent,WidgetUnregisterEventName:F,buildWidgetMetadata:v,gridifyMetadata:f});const de="permissionedit";class PermissionEditEvent extends CustomEvent{constructor(e){super(de,{detail:e,cancelable:!1,bubbles:!0})}}var me=Object.freeze({__proto__:null,DATACOLUMNS_METADATA_TYPE:te,OpenApi:M,get PacemDataColumnElement(){return se},get PacemDataColumnsElement(){return ae},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(e,r,s){if(t.Utils.isNullOrEmpty(e)||t.Utils.isNull(r))return!1;var a=!0;if(r.permissions&&r.permissions.length>0){a=!1;for(let t of r.permissions)if(s(t)&&e[t.claimType]&&e[t.claimType].indexOf(t.claimValue)>=0)return!0}return a}},PermissionEditEvent:PermissionEditEvent,PermissionEditEventName:de}),he=Object.freeze({__proto__:null,Cms:me,Components:pe});e.DeepMerger.merge(he)}(Pacem,Pacem,Pacem,Pacem);
|
|
7
7
|
//# sourceMappingURL=pacem-cms.min.js.map
|