@pacem/pacem-cms 1.0.0-abel

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.
@@ -0,0 +1,106 @@
1
+ var Ut=Object.defineProperty;var Ve=(s,e)=>{for(var t in e)Ut(s,t,{get:e[t],enumerable:!0})};var jt={};Ve(jt,{ACCESS_TOKEN_METADATA:()=>ge,DATACOLUMNS_METADATA_TYPE:()=>Ue,DEFAULT_METADATA:()=>$e,EXPRESSION_METADATA_TYPE:()=>y,EXPRESSION_WIDGET_METADATA_EXTRA:()=>j,ExpressionSource:()=>S,FETCH_CREDENTIALS_METADATA:()=>gr,Functions:()=>me,GRID_COLUMNS:()=>dt,LayoutChangeEventName:()=>Rr,PacemBearerWidgetElement:()=>M,PacemCompositeWidgetElement:()=>U,PacemDataColumnElement:()=>Y,PacemDataColumnsElement:()=>q,PacemElementPickerElement:()=>ue,PacemElementPickerElementBase:()=>I,PacemExpressionElement:()=>$,PacemGridWidgetElement:()=>O,PacemUiWidgetElement:()=>x,PacemWidgetApiManifestElement:()=>ce,PacemWidgetClockElement:()=>ve,PacemWidgetDataElement:()=>J,PacemWidgetDataGridElement:()=>X,PacemWidgetElement:()=>f,PacemWidgetFetchElement:()=>h,PacemWidgetFetchParameterElement:()=>ne,PacemWidgetPickerElement:()=>je,PacemWidgetTextElement:()=>Be,PacemWidgetToolbarElement:()=>L,PacemWidgetTranslatorElement:()=>tt,Widget:()=>Ke,WidgetRegisterEvent:()=>ke,WidgetRegisterEventName:()=>Dt,WidgetUnregisterEvent:()=>Me,WidgetUnregisterEventName:()=>Rt,buildWidgetMetadata:()=>w,gridifyMetadata:()=>ee});import{PropertyChangeEventName as Ft,Utils as se,CustomElementUtils as _t,P as Gt}from"@pacem/pacem-core";var me={dismiss:(...s)=>{for(let e of s||[])delete me[e]},handleExpressionValueChange:(s,e,t)=>{if(s.detail.propertyName==="value"&&!se.isNull(t)){let r=s.detail.currentValue;if(t instanceof HTMLElement){let a=_t.camelToKebab(e);se.isNullOrEmpty(r)?t.removeAttribute(a):t.setAttribute(a,r.toString())}else t[e]=r}}},y=(s,e=":host",t=":host.entity")=>{let r={},a=s.metadata,o=me,i=[];r.value=`{{ ${t} instanceof HTMLElement && ${t}.getAttribute('${_t.camelToKebab(a.prop)}') }}`,r["on-"+Ft]=`Pacem.Components.Cms.Functions.handleExpressionValueChange($event, '${a.prop}', ${t})`,r.converter=`{{ Pacem.CustomElementUtils.getWatchedProperty(${t}, '${a.prop}').config.converter }}`;let n=Gt+"-expression",p=a.extra||{};if(se.isNullOrEmpty(p.selector)||(r.selector=p.selector),!se.isNullOrEmpty(p.filter))switch(typeof p.filter){case"string":r.filter=`{{ (e) => e.constructor.name === "${p.filter}" || e.localName === "${p.filter.toLowerCase()}" }}`;break;case"function":let d="fn"+se.uniqueCode();o[d]=p.filter,r.filter=`{{ Pacem.Components.Cms.Functions.${d}, once }}`,i.push(d);break}if(typeof p.labeler=="function"){let d="fn"+se.uniqueCode();o[d]=p.labeler,r.labeler=`{{ Pacem.Components.Cms.Functions.${d}, once }}`,i.push(d)}return i.length>0&&(r["on-unload"]=`{{ Pacem.Components.Cms.Functions.dismiss('${i.join("','")}') }}`),{tagName:n,attrs:r}};import{CustomElement as Vt,P as we,Defaults as qt,Watch as Xe,PropertyConverters as xe,ViewChild as Xt,Debounce as Jt,Utils as qe}from"@pacem/pacem-core";import{Components as zt}from"@pacem/pacem-scaffolding";var ie=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},I=class extends zt.Scaffolding.PacemBaseElement{};ie([Xe({converter:xe.String})],I.prototype,"selector",void 0);ie([Xe({converter:xe.Eval})],I.prototype,"filter",void 0);ie([Xe({converter:xe.Eval})],I.prototype,"labeler",void 0);var ue=class extends I{get inputFields(){return[this._select]}toggleReadonlyView(e){this._select.readonly=e}onChange(e){return qe.fromResult(this.value=this._select.value)}acceptValue(e){this._select.value=e}getViewValue(e){return this._select.viewValue}convertValueAttributeToProperty(e){return xe.Element.convert(e)}viewActivatedCallback(){super.viewActivatedCallback(),this._databind()}propertyChangedCallback(e,t,r,a){if(super.propertyChangedCallback(e,t,r,a),!a)switch(e){case"selector":case"filter":case"labeler":this._databind();break}}_databind(){let e=this.labeler||(r=>{let a=r.constructor.name;return r.id&&(a+="#"+r.id),a}),t=[];document.querySelectorAll(this.selector||"[pacem]").forEach((r,a,o)=>{(qe.isNull(this.filter)||this.filter(r)===!0)&&!qe.isNullOrEmpty(r.id)&&t.push({element:r,label:e(r)})}),this._select.valueProperty="element",this._select.textProperty="label",this._select.datasource=t}};ie([Xt(we+"-select")],ue.prototype,"_select",void 0);ie([Jt(50)],ue.prototype,"_databind",null);ue=ie([Vt({tagName:we+"-element-picker",shadow:qt.USE_SHADOW_ROOT,template:`<${we}-select></${we}-select>`})],ue);import{CustomElement as Kt,P as c,PCSS as _,Defaults as Yt,Watch as fe,PropertyConverters as Te,ViewChild as Pe,Debounce as Qt,Utils as Ae,CustomElementUtils as Je,RepeaterItem as Zt}from"@pacem/pacem-core";import{Components as er}from"@pacem/pacem-scaffolding";var N=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},S;(function(s){s.Constant="const",s.PropertyReference="property",s.Expression="expr"})(S||(S={}));var $=class extends I{propertyChangedCallback(e,t,r,a){if(super.propertyChangedCallback(e,t,r,a),e==="converter")this._setFeedbackText(this.value);else if(!a&&this._editing)switch(e){case"_source":r===S.PropertyReference?this._picker.focus():this._editor.focus();break;case"_propRef":Ae.isNullOrEmpty(r)||(this._editor.focus(),this._editor.value="{{ #"+this._sourceRef.id+"."+r+" }}"),this.changeHandler(new Event("change"));break}}get inputFields(){return[this._editor]}toggleReadonlyView(e){e&&(this._editing=!1)}setPristine(){super.setPristine(),this._editing=!1}onChange(e){return Ae.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){let t=this.converter;Je.isBindingAttribute(e)||typeof(t&&t.convert)!="function"?this._eval.setAttribute("text",e):e===void 0?this._eval.text="<undefined>":this._eval.text=t.convert(e)}getViewValue(e){return e}convertValueAttributeToProperty(e){return e}_reverseStructure(){let e=()=>{this._source=this._sourceRef=this._propRef=void 0},t=this.value;if(Ae.isNullOrEmpty(t))e();else if(Je.isBindingAttribute(t)){let r=Je.parseBindingAttribute(t,this),a=r.dependencies;if(Ae.isNullOrEmpty(a)||a.length>1||Zt.isRepeaterItem(a[0].element))this._source=S.Expression;else{let o=a[0];this._source=S.PropertyReference,this._sourceRef=document.querySelector("#"+o.element.id),this._propRef=o.path}}else this._source=S.Constant}};N([fe({emit:!1})],$.prototype,"converter",void 0);N([fe({converter:Te.Boolean})],$.prototype,"_editing",void 0);N([fe({converter:Te.String})],$.prototype,"_source",void 0);N([fe({converter:Te.Element})],$.prototype,"_sourceRef",void 0);N([fe({converter:Te.String})],$.prototype,"_propRef",void 0);N([Pe(c+"-element-picker")],$.prototype,"_picker",void 0);N([Pe(c+"-textarea")],$.prototype,"_editor",void 0);N([Pe("span."+_+"-viewfinder")],$.prototype,"_view",void 0);N([Pe(c+"-text")],$.prototype,"_eval",void 0);N([Qt(50)],$.prototype,"_reverseStructure",null);$=N([Kt({tagName:c+"-expression",shadow:Yt.USE_SHADOW_ROOT,template:`<${c}-collapse class="${_}-expression" collapse="{{ !:host._editing }}">
2
+ <div class="expression-builder ${_}-grid grid-tiny-rowgap grid-tiny-colgap ${_}-pad pad-bottom-2">
3
+ <div class="${_}-cell">
4
+ <${c}-select value="{{ :host._source, twoway }}" class="display-block">
5
+ <${c}-data-item value="${S.Constant}" label="constant value"></${c}-data-item>
6
+ <${c}-data-item value="${S.PropertyReference}" label="property reference"></${c}-data-item>
7
+ <${c}-data-item value="${S.Expression}" label="complex expression"></${c}-data-item>
8
+ </${c}-select>
9
+ </div>
10
+
11
+ <${c}-panel class="${_}-cell cols-hd-6" hide="{{ :host._source !== '${S.PropertyReference}' }}">
12
+ <${c}-element-picker value="{{ :host._sourceRef, twoway }}" selector="{{ :host.selector }}" filter="{{ :host.filter }}" labeler="{{ :host.labeler }}" class="display-block"></${c}-element-picker>
13
+ </${c}-panel>
14
+ <${c}-panel class="${_}-cell cols-hd-6" hide="{{ :host._source !== '${S.PropertyReference}' }}">
15
+ <${c}-property-picker value="{{ :host._propRef, twoway }}" disabled="{{ !:host._sourceRef }}" target="{{ :host._sourceRef }}" on-change="::_editor.focus()" class="display-block"></${c}-property-picker>
16
+ </${c}-panel>
17
+
18
+ <${c}-panel class="${_}-cell">
19
+ <${c}-textarea class="display-block" placeholder="{{ '{{ '+ (:host._source || '') +'... }}' }}" change-policy="${er.Scaffolding.ChangePolicy.Blur}"></${c}-textarea>
20
+ </${c}-panel>
21
+ </div>
22
+ </${c}-collapse>
23
+ <div class="${_}-fieldset">
24
+ <div class="fieldset-left">
25
+ <div class="${_}-fieldgroup ${_}-viewfinder">
26
+ <div class="text-truncate ${_}-pad pad-x-1"><span class="${_}-viewfinder text-tech">{{ :host.value || '...' }}</span></div>
27
+ <${c}-panel class="fieldgroup-prepend">
28
+ <${c}-button class="flat edit ${_}-pad pad-left-1" on-click=":host._editing = !:host._editing" hide="{{ :host.readonly }}"></${c}-button>
29
+ </${c}-panel>
30
+ <${c}-panel class="fieldgroup-append text-tech display-flex flex-middle flex-nowrap" hide="{{ $pacem.isNullOrEmpty(:host.value) }}">
31
+ <i class="${_}-icon text-primary">keyboard_arrow_right</i>
32
+ <${c}-text text="?" class="bg-primary ${_}-pad pad-left-1 pad-right-1 ${_}-margin margin-right-1 text-truncate" eval></${c}-text>
33
+ </${c}-panel>
34
+ </div>
35
+ </div>
36
+ </div>`})],$);import{CustomElement as tr,P as m,PCSS as A,Defaults as rr,Watch as Q,PropertyConverters as Z,ViewChild as he,Utils as C,CustomElementUtils as Ye,Components as bt}from"@pacem/pacem-core";import{Components as or}from"@pacem/pacem-ui";var D=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},ze=or.UI,ar={props:[{prop:"permissions",type:"array",display:{name:"Permissions"},props:{display:{cssClass:[A+"-cell",A+"-grid","grid-novgap","grid-tiny-colgap","grid-nospace"],name:"Permission"},props:Array.prototype.concat.apply([{prop:"claimType",type:"string",display:{cssClass:[A+"-cell","cols-hd-4","cols-lg-6","field-stretch","field-minimal"],name:"Claim type"},validators:[{type:"required",errorMessage:"!"}]},{prop:"claimValue",type:"string",display:{cssClass:[A+"-cell","cols-hd-4","cols-lg-6","field-stretch","field-minimal"],name:"Claim value"},validators:[{type:"required",errorMessage:"!"}]}],["read","update","create","delete"].map((s,e)=>({prop:s,type:"boolean",display:{cssClass:[A+"-cell","cols-hd-1","cols-3","field-minimal",A+"-pad pad-left-2"],name:s.charAt(0).toUpperCase()+s.substr(1)}})))}}]},$e={display:{name:"Widget",cssClass:[A+"-grid","grid-novgap","grid-tiny-colgap","grid-nospace"]},props:[{prop:"tag",type:"string",display:{name:"Tag",cssClass:[A+"-cell"]}}]};function Et(s){s.display=s.display||{name:s.prop,cssClass:[]},(s.display.cssClass=C.isArray(s.display.cssClass)&&s.display.cssClass||[]).push(A+"-cell")}function ee(s){var e=s&&s.props||[],t=s&&s.display||{name:"Element"};if(!C.isNull(t)){let r=t.cssClass=t.cssClass||[];Array.prototype.push.apply(r,$e.display.cssClass)}return e.forEach(Et),{display:t,props:e}}function w(s){var e=C.extend({},$e.display,s&&s.display||{}),t=C.clone($e.props);return Array.prototype.push.apply(t,(s&&s.props||[]).filter(r=>r.prop==="tag"?!1:(Et(r),!0))),{display:e,props:t}}var Qe=A+"-widget",j={selector:"."+Qe,labeler:s=>C.isNullOrEmpty(s.tag)?(s.metadata&&s.metadata.display&&s.metadata.display.name||"")+"#"+s.id:s.tag},Ke=class{static findAll(e){return Ye.findAll("."+Qe,t=>t instanceof f&&!C.isNullOrEmpty(t.id)&&(C.isNull(e)||e(t)))}},L=class extends bt.PacemElement{get editButton(){return this._btnEdit}get permissionsButton(){return this._btnPerms}get removeButton(){return this._btnRemove}_edit(e){let t=this._proxy.dom.find(r=>"core"in r.attributes);t.open(this.target,!0),t.metadata=this.target.metadata,this._popoutJustInCase()}_editPermissions(e){let t=this._proxy.dom.find(r=>"permissions"in r.attributes);t.open(this.target),t.metadata=this.target.permissionMetadata,this._popoutJustInCase()}_popoutJustInCase(){let e=Ye.findAncestorOfType(this,ze.PacemBalloonElement);C.isNullOrEmpty(e)||e.popout()}};D([Q({emit:!1,converter:Z.Element})],L.prototype,"target",void 0);D([he(".buttons > div")],L.prototype,"_toolbar",void 0);D([he(m+"-button[edit]")],L.prototype,"_btnEdit",void 0);D([he(m+"-button[permissions]")],L.prototype,"_btnPerms",void 0);D([he(m+"-button[remove]")],L.prototype,"_btnRemove",void 0);D([he(m+"-shell-proxy")],L.prototype,"_proxy",void 0);L=D([tr({tagName:m+"-widget-toolbar",shadow:rr.USE_SHADOW_ROOT,template:`<${m}-span class="toolbar-text" content="{{ '<i class=&quot;${A}-icon&quot;>'+ (::target.metadata && ::target.metadata.display && ::target.metadata.display.icon || 'widgets') +'</i> '+ (::target.tag || (::target.metadata && ::target.metadata.display && ::target.metadata.display.name || ::target.localName) +'#'+ ::target.id) }}"></${m}-span>
37
+ <div class="buttons ${A}-buttonset ${A}-pad ${A}-margin pad-0 margin-left-2">
38
+ <div class="buttonset-left">
39
+ <${m}-button edit class="button edit" on-click=":host._edit($event)"></${m}-button>
40
+ <${m}-button permissions class="button" on-click=":host._editPermissions($event)" css-class="{{ {'button-success': ::target.permissions.length > 0} }}" icon-glyph="verified_user"></${m}-button>
41
+ <${m}-button remove class="button button-danger delete"></${m}-button>
42
+ </div>
43
+ <div>
44
+ <${m}-shell-proxy>
45
+ <${m}-modal-form core></${m}-modal-form>
46
+ <${m}-modal-form permissions></${m}-modal-form>
47
+ </${m}-shell-proxy>`})],L);var f=class extends bt.PacemElement{constructor(e,t="widget"){super(t),this.permissionMetadata=ar,this.metadata=e}connectedCallback(){super.connectedCallback(),C.isNullOrEmpty(this.id)&&(this.id="wdg"+C.uniqueCode()),C.addClass(this,Qe)}propertyChangedCallback(e,t,r,a){switch(super.propertyChangedCallback(e,t,r,a),e){case"editable":r?this.isReady&&this._ensureBalloon():this._disposeBalloon();break;case"editing":C.isNull(this._balloon)||(this._balloon.disabled=!r),(r?C.addClass:C.removeClass).apply(this,[this,"widget-"+e]);break;case"metadata":this._assignIcon(r);break}}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(C.isNull(this._balloon)){let e=this._balloon=document.createElement(m+"-balloon");e.target=this,e.disabled=!this.editing,e.options={behavior:ze.BalloonBehavior.Menu,trigger:ze.BalloonTrigger.Hover},e.innerHTML=`<${m}-widget-toolbar target="{{ #${this.id} }}"><${m}-widget-toolbar>`,Ye.findAncestorShell(this).appendChild(e)}}_disposeBalloon(){C.isNull(this._balloon)||(this._balloon.remove(),this._balloon=null)}};D([Q({emit:!1,converter:Z.Boolean})],f.prototype,"editing",void 0);D([Q({emit:!1,converter:Z.Boolean})],f.prototype,"editable",void 0);D([Q({emit:!0,reflectBack:!0,converter:Z.String})],f.prototype,"tag",void 0);D([Q({emit:!1,reflectBack:!0,converter:Z.Json})],f.prototype,"permissions",void 0);D([Q({emit:!1,converter:Z.Json})],f.prototype,"metadata",void 0);D([Q({emit:!1,converter:Z.Json})],f.prototype,"permissionMetadata",void 0);import{Watch as Re,PropertyConverters as Oe,Utils as At}from"@pacem/pacem-core";import{CustomElement as sr,P as ir,PCSS as nr,Watch as lr,PropertyConverters as cr}from"@pacem/pacem-core";var Ct=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},pr={display:{icon:"storage",name:"Data",description:"Data object widget."},props:[{prop:"model",type:y,display:{name:"Model"},extra:{selector:"."+nr+"-widget"}}]},J=class extends f{constructor(){super(w(pr))}};Ct([lr({reflectBack:!0,converter:cr.Json})],J.prototype,"model",void 0);J=Ct([sr({tagName:ir+"-widget-data"})],J);import{CustomElement as wt,P as z,Defaults as dr,Watch as R,PropertyConverters as k,ViewChild as xt,Utils as H,CustomElementUtils as mr,PacemEventTarget as ur,Net as Ze}from"@pacem/pacem-core";var b=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},fr={props:[{prop:"name",type:"string",isReadOnly:!0,display:{name:"Name",cssClass:["cols-md-4","cols-lg-3","cols-hd-2"]}},{prop:"value",type:y,display:{name:"Value",cssClass:["cols-md-8","cols-lg-9","cols-hd-10"]}}]},hr={display:{icon:"wifi",name:"Api Fetcher",description:"Fetching widget that retrieves data from a REST endpoint."},props:[{prop:"manifest",type:y,isComplexType:!0,display:{name:"Api Manifest"},extra:{selector:z+"-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:s=>s.endpoints.map(e=>H.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:ee(fr),extra:{lockItems:!0,dependsOn:[{prop:"endpoint",hide:!0}]}},ge]},et=z+"-widget-fetch-parameter",ne=class extends ur{propertyChangedCallback(e,t,r,a){super.propertyChangedCallback(e,t,r.first),e==="value"&&!H.isNull(this._fetcher)&&this._fetcher.fetch()}viewActivatedCallback(){super.viewActivatedCallback();let e=this._fetcher=mr.findAncestorOfType(this,h);!H.isNull(this._fetcher)&&!H.isNull(this.value)&&this._fetcher.fetch()}};b([R({reflectBack:!0,converter:k.Boolean})],ne.prototype,"required",void 0);b([R({reflectBack:!0,converter:k.String})],ne.prototype,"name",void 0);b([R({reflectBack:!0,converter:k.String})],ne.prototype,"value",void 0);ne=b([wt({tagName:et})],ne);var h=class extends M{constructor(){super(w(hr)),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===et)}fetch(){let e=this._fetcher,t=this._parameters||[],r=this.endpoint;if(!H.isNull(r)){for(let o of r.parameters)if(o.required&&H.isNull(t.find(i=>i.name===o.name)))return}let a={};for(let o of t)if(!H.isNullOrEmpty(o.value))a[o.name]=o.value;else if(o.required)return;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,t,r,a){if(super.propertyChangedCallback(e,t,r,a),e==="endpoint"&&!H.isNullOrEmpty(r))this._mergeEndpoint(r);else switch(e){case"parameters":case"fetchHeaders":case"fetchCredentials":case"url":case"method":this.fetch();break}}_mergeEndpoint(e=this.endpoint){this.url=this.manifest.baseUrl+e.path,this.method=e.method,this.fields=e.response.fields;let t=this._itemsElement,r=this._parameters;for(let a=r.length-1;a>=0;a--){let o=r[a],i=e.parameters.find(n=>n.name===o.name);H.isNull(i)&&o.remove()}for(let a of e.parameters){let o=r.find(i=>i.name===a.name);if(H.isNull(o)){let i=o=document.createElement(et);i.name=a.name,t.appendChild(i)}o.required=a.required}this.parameters=r}};b([R({reflectBack:!0,emit:!0,converter:k.Json})],h.prototype,"manifest",void 0);b([R({reflectBack:!0,emit:!0,converter:k.Json})],h.prototype,"endpoint",void 0);b([R({reflectBack:!0,emit:!1,converter:k.String})],h.prototype,"url",void 0);b([R({reflectBack:!0,emit:!1,converter:k.String})],h.prototype,"method",void 0);b([R({reflectBack:!0,emit:!1,converter:k.Json})],h.prototype,"fields",void 0);b([R()],h.prototype,"parameters",void 0);b([R()],h.prototype,"result",void 0);b([R({converter:k.Boolean})],h.prototype,"fetching",void 0);b([R({converter:k.Boolean})],h.prototype,"success",void 0);b([R({converter:k.Boolean})],h.prototype,"failure",void 0);b([xt(z+"-fetch")],h.prototype,"_fetcher",void 0);b([xt("div[hidden]")],h.prototype,"_itemsElement",void 0);h=b([wt({tagName:z+"-widget-fetch",shadow:dr.USE_SHADOW_ROOT,template:`<${z}-fetch autofetch="false" fetching="{{ :host.fetching, twoway }}" debounce="100"
48
+ on-${Ze.FetchResultEventName}=":host._onresult($event)" on-${Ze.FetchErrorEventName}=":host._onerror($event)" on-${Ze.FetchSuccessEventName}=":host._onsuccess($event)"></${z}-fetch><div hidden><${z}-content></${z}-content></div>`})],h);var De=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},gr={prop:"fetchCredentials",type:"string",dataType:"enumeration",display:{name:"Fetch Credentials"},extra:{enum:["same-origin","omit","include"]}},ge={prop:"accessToken",type:y,display:{name:"Access Token"},extra:At.extend({},j,{filter:s=>s instanceof J||s instanceof h})},M=class extends f{constructor(){super(...arguments),this.fetchCredentials="same-origin"}propertyChangedCallback(e,t,r,a){super.propertyChangedCallback(e,t,r,a),e==="accessToken"&&(At.isNullOrEmpty(r)?this.fetchHeaders={}:this.fetchHeaders={Authorization:"Bearer "+r})}};De([Re({emit:!1,reflectBack:!0,converter:Oe.String})],M.prototype,"fetchCredentials",void 0);De([Re({emit:!1,converter:Oe.Json})],M.prototype,"fetchHeaders",void 0);De([Re({emit:!1,reflectBack:!0,converter:Oe.String})],M.prototype,"accessToken",void 0);De([Re({converter:Oe.Boolean})],M.prototype,"fetching",void 0);import{CustomElement as yr,P as _r}from"@pacem/pacem-core";var vr=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},tt=class extends f{};tt=vr([yr({tagName:_r+"-widget-translator"})],tt);import{CustomElement as br,P as rt,PCSS as Er,Watch as Tt,PropertyConverters as Pt}from"@pacem/pacem-core";var ot=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},Cr={display:{icon:"timer",name:"Clock",description:"Timer widget."},props:[{prop:"interval",type:y,display:{name:"Interval (msec)"},extra:{selector:"."+Er+"-widget",step:1e3},validators:[{type:"range",errorMessage:"Negative numbers not allowed",params:{min:0}}]}]},ve=class extends f{constructor(){super(w(Cr)),this.interval=0}};ot([Tt({reflectBack:!0,converter:Pt.Number})],ve.prototype,"interval",void 0);ot([Tt({converter:Pt.Number})],ve.prototype,"time",void 0);ve=ot([br({tagName:rt+"-widget-clock",template:`<${rt}-timer interval="{{ :host.interval }}" on-tick="{{ :host.time = Date.now() }}"></${rt}-timer>`})],ve);import{CustomElement as wr,P as xr,Watch as st,PropertyConverters as it,Utils as Ar,Storage as Tr}from"@pacem/pacem-core";var at={};Ve(at,{SwaggerCmsParser:()=>ye});import{Scaffolding as $t}from"@pacem/pacem-scaffolding";var le="pacem:metadatabag",ye=class{constructor(e=new $t.OpenApi.OpenApiParser){this._openApi=e,this._cachedMetadataUrls=[]}async load(e,t){let r=await this._openApi.load(e,t);if(r!=null){r[le]={};for(let a of r.endpoints)await this._enrichSchemas(r,a,t)}return r}async _enrichSchemas(e,t,r){let a=t.response;a&&a.meta&&(a.fields=await this._fetchMetadata(e,{name:a.fullType,schema:a.meta},r));let o=t.parameters;for(let i of o||[])if(i.meta&&i.fullType){let n=await this._fetchMetadata(e,{name:i.fullType,schema:i.meta},r);i.fields=n}}clearCache(){let e=this.cache,t=this._cachedMetadataUrls;if(e){for(let r of t)e.removeProperty(r);t.splice(0)}}async _fetchMetadata(e,t,r){let a=async o=>{let i=[];if(o&&o.name){if(e[le][o.name])return e[le][o.name];e[le][o.name]=i;let n={props:[]},p;if(/^https?:\/\//.test(o.name))p=o.name;else{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.
49
+ No other options are currently supported.`);return}if(p){let v=async()=>{let E=await fetch(p,{credentials:"omit",mode:"cors",headers:r});if(E.ok)return await E.json()};this.cache?(n=this.cache.getPropertyValue(p),n||(n=await v(),this._cachedMetadataUrls.push(p),this.cache.setPropertyValue(p,n,!1))):n=await v()}let d=o.schema;for(let v in d.properties){let E=d.properties[v],P=n&&n.props.find(Ce=>Ce.prop===v),Ge=Object.assign({prop:v,type:E.type||"text",props:void 0},P||{isReadOnly:!0});if(P){let Ce=E.items&&E.items.$ref||E.$ref;if(Ce){let vt=$t.OpenApi.getOpenApiDefinition(e,Ce),yt=vt.name;e[le][yt]?Ge.props=e[le][yt]:Ge.props=await a(vt)}}i.push(Ge)}}return i};return await a(t)}};var Se=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},Pr={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}},ge]},ce=class extends M{constructor(e=new ye,t=new Tr){super(w(Pr)),this._openapi=e,this._cache=t}propertyChangedCallback(e,t,r,a){switch(super.propertyChangedCallback(e,t,r,a),e){case"url":case"editing":case"editable":this._scaffold();break;case"usecache":this._openapi.cache=r?this._cache:null;break}}viewActivatedCallback(){super.viewActivatedCallback(),this.usecache&&(this._openapi.cache=this._cache),this._scaffold()}_scaffold(){this.editing&&this.editable&&!Ar.isNullOrEmpty(this.url)&&(this.fetching=!0,this._openapi.load(this.url).then(e=>{this.manifest=e,this.fetching=!1},e=>{this.fetching=!1}))}};Se([st({emit:!1,reflectBack:!0,converter:it.String})],ce.prototype,"url",void 0);Se([st({emit:!1,reflectBack:!0,converter:it.Boolean})],ce.prototype,"usecache",void 0);Se([st({converter:it.Json})],ce.prototype,"manifest",void 0);ce=Se([wr({tagName:xr+"-widget-apimanifest"})],ce);import{Watch as re,PropertyConverters as pe,Utils as g,CustomElementUtils as $r,Logging as Dr,PCSS as Ne}from"@pacem/pacem-core";var te=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},x=class extends f{constructor(e,t=1,r){super(e,r),this.colspan=t,this.rowspan=1}connectedCallback(){super.connectedCallback(),g.addClass(this,"ui-widget "+Ne+"-cell cols-xs-start-1 cols-xs-12 rows-xs-start-auto")}propertyChangedCallback(e,t,r,a){switch(super.propertyChangedCallback(e,t,r,a),e){case"row":g.removeClass(this,`rows-start-${t+1}`),g.addClass(this,`rows-start-${r+1}`);break;case"rowspan":g.removeClass(this,`rows-${t}`),g.addClass(this,`rows-${r}`);break;case"column":g.removeClass(this,`cols-start-${t+1}`),g.addClass(this,`cols-start-${r+1}`);break;case"colspan":g.removeClass(this,`cols-${t}`),g.addClass(this,`cols-${r}`);break;case"borders":(this.borders?g.addClass:g.removeClass).apply(this,[this,Ne+"-border"]);break;case"corners":(this.borders?g.addClass:g.removeClass).apply(this,[this,Ne+"-corners"]);break}}get container(){return this._container}findContainer(){return $r.findAncestor(this,e=>e instanceof U)}viewActivatedCallback(){super.viewActivatedCallback();let e=this._container=this.findContainer();g.isNull(e)||e.register(this)}disconnectedCallback(){g.isNull(this._container)||this._container.unregister(this),super.disconnectedCallback()}};te([re({emit:!0,reflectBack:!0,converter:pe.Number})],x.prototype,"column",void 0);te([re({emit:!0,reflectBack:!0,converter:pe.Number})],x.prototype,"row",void 0);te([re({emit:!0,reflectBack:!0,converter:pe.Number})],x.prototype,"colspan",void 0);te([re({emit:!0,reflectBack:!0,converter:pe.Number})],x.prototype,"rowspan",void 0);te([re({emit:!0,reflectBack:!0,converter:pe.Boolean})],x.prototype,"borders",void 0);te([re({emit:!0,reflectBack:!0,converter:pe.Boolean})],x.prototype,"corners",void 0);var Dt="widgetregister",Rt="widgetunregister",Rr="layoutchange",ke=class extends CustomEvent{constructor(e,t){super(Dt,g.extend(t||{},{detail:e}))}},Me=class extends CustomEvent{constructor(e,t){super(Rt,g.extend(t||{},{detail:e}))}},U=class extends x{get itemsElement(){return this}validate(e){return e instanceof x}viewActivatedCallback(){super.viewActivatedCallback(),g.addClass(this.itemsElement,Ne+"-items-element")}appendItem(e){this.itemsElement.appendChild(e)}register(e){if(!this.validate(e))return this.log(Dr.LogLevel.Debug,`${e&&e.localName} element couldn't be registered in a ${this.localName} element.`),!1;let t=!1,r=this.items=this.items||[];return g.isNullOrEmpty(r)?(this.items=[e],t=!0):r.indexOf(e)===-1&&(r.push(e),t=!0),t&&this.dispatchEvent(new ke(e)),t}unregister(e){let t=this.items,r=!g.isNullOrEmpty(t)&&t.indexOf(e);if(r>=0){let a=t.splice(r,1);return this.dispatchEvent(new Me(a[0])),!0}return!1}};te([re()],U.prototype,"items",void 0);import{CustomElement as Or,P as nt,Defaults as Sr,Watch as Nr,PropertyConverters as kr}from"@pacem/pacem-core";var Ot=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},Mr=w({display:{icon:"font_download",name:"Text",description:"Plain text widget."},props:[{prop:"text",type:y,display:{name:"Text"},extra:j}]}),Be=class extends x{constructor(){super(Mr)}};Ot([Nr({reflectBack:!0,converter:kr.String})],Be.prototype,"text",void 0);Be=Ot([Or({tagName:nt+"-widget-text",shadow:Sr.USE_SHADOW_ROOT,template:`<${nt}-text text="{{ :host.text }}"></${nt}-text>`})],Be);import{CustomElement as Br,P as T,PCSS as We,Defaults as Wr,ViewChild as jr}from"@pacem/pacem-core";var St=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},je=class extends U{register(e){let t=super.register(e);return t&&(e.hide=!0),t}};St([jr(T+"-drag-drop")],je.prototype,"_dragDrop",void 0);je=St([Br({tagName:T+"-widget-picker",shadow:Wr.USE_SHADOW_ROOT,template:`<${T}-repeater datasource="{{ :host.items }}">
50
+ <template>
51
+ <${T}-panel behaviors="{{ [::_dragDrop] }}" class="${We}-widget-itempicker display-flex flex-fill flex-middle flex-nowrap">
52
+ <i class="${We}-icon flex-auto" dragger>drag_indicator</i>
53
+ <${T}-icon icon="{{ ^item.metadata.display.icon }}" class="flex-auto ${We}-margin margin-x-1"></${T}-icon>
54
+ <${T}-text text="{{ ^item.metadata.display.name }}"></${T}-text>
55
+ </${T}-panel>
56
+ </template>
57
+ </${T}-repeater>
58
+ <${T}-drag-drop handle-selector="i.${We}-icon[dragger]"></${T}-drag-drop>
59
+ <${T}-content></${T}-content>`})],je);import{CustomElement as Hr,P as pt,PCSS as lt,Watch as G,PropertyConverters as V,Debounce as Ir,Utils as F,UI as u,PropertyChangeEventName as Nt}from"@pacem/pacem-core";var B=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o};function Lr(){let s=document.createElementNS("http://www.w3.org/2000/svg","svg");return s.style.pointerEvents="none",s.style.zIndex="1000",s.setAttribute("height","100%"),s.setAttribute("width","100%"),s.setAttribute("preserveAspectRatio","none"),s.setAttribute("class","grid-cell-wrapper"),s.innerHTML='<rect class="grid-cell" width="100%" height="100%"></rect>',s}var dt=12,He=dt,ct=1,Ur={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}}]}]},O=class extends U{constructor(){super(w(Ur),He,"grid"),this._widgetPropertyChange=e=>{if(e.detail.propertyName==="row"||e.detail.propertyName==="rowspan"){let t=e.target;this.rows=Math.max(this.rows,t.row+t.rowspan)}},this._dragDropHandler=e=>{let t=e.detail,r=t.element;switch(e.type){case u.DragDropEventType.Start:this._gridBoxes.forEach(d=>{d.style.pointerEvents="auto"}),this._initState={colspan:r.colspan,rowspan:r.rowspan,col:r.column,row:r.row};break;case u.DragDropEventType.End:this._gridBoxes.forEach(d=>{d.style.pointerEvents="none"});break;case u.DragDropEventType.Over:var a=t.target,o=+a.style.gridColumnStart-1,i=+a.style.gridRowStart-1;let n=o+this._initState.colspan,p=i+this._initState.rowspan;if(!this._intersects(r,o,i,r.colspan,r.rowspan)){let d=!1;n<=(this.columns||He)&&(d=r.column!==o,r.column=o),p<=(this.rows||ct)&&(d=d||r.row!==i,r.row=i)}break}},this._resizeHandler=e=>{switch(e.type){case u.RescaleEventType.Start:F.addClass(e.detail.element,lt+"-rescaling"),this._gridBoxes.forEach(n=>{n.style.pointerEvents="auto"});break;case u.RescaleEventType.End:this._gridBoxes.forEach(n=>{n.style.pointerEvents="none"}),F.removeClass(e.detail.element,lt+"-rescaling");break;case u.RescaleEventType.Rescale:e.preventDefault();let a={x:e.clientX,y:e.clientY},o=e.detail.handle,i=document.elementsFromPoint(a.x,a.y).find(n=>this._dragDrop.dropTargets.indexOf(n)>=0);if(i){var t=+i.style.gridColumnStart,r=+i.style.gridRowStart;let n=e.detail.element,p=n.column+1,d=n.row+1,v=1+t-p,E=1+r-d;if(!this._intersects(n,n.column,n.row,v,E)){let P=!1;t>=p&&o.endsWith("right")&&(P=n.colspan!==v,n.colspan=v),r>=d&&o.startsWith("bottom")&&(P=P||n.rowspan!==E,n.rowspan=E)}}break}},this._gridBoxes=[]}register(e){let t=super.register(e);if(t){let r=e.row||0,a=e.column||0,o=e.colspan||2,i=e.rowspan||1,n=!this._intersects(e,a,r,o,i);if(n)e.row=r,e.column=a,e.colspan=o,e.rowspan=i;else{if(!n){let p=(d=!1)=>{let v=this.columns-1;d||(v=v-o+1);for(let E=0;E<this.rows;E++){for(let P=0;P<=v;P++)if(!this._intersects(e,P,E,o,i)){e.column=P,e.row=E,e.colspan=Math.min(v+1-P,o),e.rowspan=i,n=!0;break}if(n)break}};p(),!n&&o>1&&p(!0)}n||(this.rows++,e.row=this.rows-1,e.column=0)}e.behaviors=[this._dragDrop,this._rescaler],e.addEventListener(Nt,this._widgetPropertyChange,!1)}return t}unregister(e){let t=super.unregister(e);if(t){e.removeEventListener(Nt,this._widgetPropertyChange,!1);let r=e.behaviors.indexOf(this._dragDrop);r>=0&&e.behaviors.splice(r,1);let a=e.behaviors.indexOf(this._rescaler);a>=0&&e.behaviors.splice(a,1)}return t}_intersects(e,t,r,a,o){for(let i of this.items){let n=i;if(n!==e&&n.column<t+a&&n.column+n.colspan>t&&n.row<r+o&&n.row+n.rowspan>r)return!0}return!1}connectedCallback(){super.connectedCallback(),F.addClass(this,lt+"-grid");let e=this._dragDrop=document.createElement(pt+"-drag-drop"),t=document.createElement("div");document.body.appendChild(t),e.floater=t,e.mode=u.DragDataMode.Alias,e.dropBehavior=u.DropBehavior.None,e.addEventListener(u.DragDropEventType.Start,this._dragDropHandler,!1),e.addEventListener(u.DragDropEventType.Over,this._dragDropHandler,!1),e.addEventListener(u.DragDropEventType.End,this._dragDropHandler,!1),document.body.appendChild(e);let r=this._rescaler=document.createElement(pt+"-rescale");r.handles=[u.RescaleHandle.Right,u.RescaleHandle.Bottom],r.addEventListener(u.RescaleEventType.Start,this._resizeHandler,!1),r.addEventListener(u.RescaleEventType.Rescale,this._resizeHandler,!1),r.addEventListener(u.RescaleEventType.End,this._resizeHandler,!1),document.body.appendChild(r),F.isNullOrEmpty(this.columns)&&(this.columns=dt),F.isNullOrEmpty(this.rows)&&(this.rows=1)}viewActivatedCallback(){super.viewActivatedCallback(),this.adapt()}propertyChangedCallback(e,t,r,a){super.propertyChangedCallback(e,t,r,a),this.adapt()}disconnectedCallback(){var e=this._dragDrop,t=this._rescaler;F.isNull(e)||(e.floater.remove(),e.removeEventListener(u.DragDropEventType.Start,this._dragDropHandler,!1),e.removeEventListener(u.DragDropEventType.Over,this._dragDropHandler,!1),e.removeEventListener(u.DragDropEventType.End,this._dragDropHandler,!1),e.remove(),this._dragDrop=null),F.isNull(t)||(t.removeEventListener(u.RescaleEventType.Start,this._resizeHandler,!1),t.removeEventListener(u.RescaleEventType.Rescale,this._resizeHandler,!1),t.removeEventListener(u.RescaleEventType.End,this._resizeHandler,!1),t.remove(),this._rescaler=null),super.disconnectedCallback()}_normalize(e,t=1){return typeof e=="string"?e:(e==null&&(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||He}, 1fr)`;let e=this._normalize(this.minRowheight,3),t=this._normalize(this.rowheight||"auto");this.style.gridTemplateRows=`repeat(${this.rows||ct}, 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;let t=this.editing;if(t){let r=this.columns||He,a=this.rows||ct,o=r*a;e=o;for(let i=0;i<o;i++){for(;this._gridBoxes.length<=i;){let v=Lr();this.appendChild(v),this._gridBoxes.push(v)}let n=this._gridBoxes[i],p=i%r,d=Math.floor(i/r);n.style.gridColumn=(p+1).toString(),n.style.gridRow=(d+1).toString()}}for(let r of this._gridBoxes.splice(e))r.remove();!F.isNull(this._dragDrop)&&!F.isNull(this._rescaler)&&(this._dragDrop.disabled=this._rescaler.disabled=!t,this._dragDrop.dropTargets=this._gridBoxes)}};B([G({emit:!1,reflectBack:!0,converter:V.Number})],O.prototype,"unit",void 0);B([G({emit:!1,reflectBack:!0,converter:V.Number})],O.prototype,"marginTop",void 0);B([G({emit:!1,reflectBack:!0,converter:V.Number})],O.prototype,"marginBottom",void 0);B([G({emit:!1,reflectBack:!0,converter:V.Number})],O.prototype,"columns",void 0);B([G({emit:!1,reflectBack:!0,converter:V.Number})],O.prototype,"rows",void 0);B([G({emit:!1,reflectBack:!0,converter:V.String})],O.prototype,"minRowheight",void 0);B([G({emit:!1,reflectBack:!0,converter:V.String})],O.prototype,"rowheight",void 0);B([G({emit:!1,reflectBack:!0,converter:V.Number})],O.prototype,"rowGap",void 0);B([G({emit:!1,reflectBack:!0,converter:V.Number})],O.prototype,"columnGap",void 0);B([Ir(100)],O.prototype,"adapt",null);O=B([Hr({tagName:pt+"-widget-grid"})],O);import{CustomElement as qr,P as Fe,PCSS as Ee,Watch as mt,PropertyConverters as ut,ViewChild as ft,Utils as de,Components as Bt}from"@pacem/pacem-core";import{CustomElement as kt,P as l,PCSS as Ie,Defaults as Mt,Watch as Le,PropertyConverters as _e,ViewChild as be,Utils as oe,Components as Fr,UI as K}from"@pacem/pacem-core";import{Components as Gr}from"@pacem/pacem-scaffolding";var W=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},Ue=(s,e=":host",t=":host.entity")=>{let r={},a=s.metadata,o=me,i=[];r.properties=`{{ Pacem.CustomElementUtils.getWatchedProperty(${t}, '${a.prop}').config.converter }}`;let n=l+"-datacolumns",p=a.extra||{};if(!oe.isNullOrEmpty(p.properties))switch(typeof p.properties){case"string":r.properties=`{{ ${t}.${p.properties} }}`;break;case"function":let d="fn"+oe.uniqueCode();o[d]=p.properties,r.properties=`{{ Pacem.Components.Cms.Functions.${d}(${e}), once }}`,i.push(d);break}return i.length>0&&(r["on-unload"]=`{{ Pacem.Components.Cms.Functions.dismiss('${i.join("','")}') }}`),{tagName:n,attrs:r}},Vr={display:{name:"Columns"},props:[{prop:"header",type:"string",display:{cssClass:["form-minimal"],name:"Header"}},{prop:"content",type:y,display:{name:"Content"},extra:j}]},Y=class extends Fr.PacemElement{propertyChangedCallback(e,t,r,a){switch(super.propertyChangedCallback(e,t,r,a),e){case"content":this.contentExpression=r;break;case"contentExpression":this.setAttribute("content",r||"");break}}viewActivatedCallback(){super.viewActivatedCallback(),this._form.entity=this,this._form.metadata=ee(Vr)}};W([Le({converter:_e.String})],Y.prototype,"header",void 0);W([Le({converter:_e.String})],Y.prototype,"content",void 0);W([Le({converter:_e.String})],Y.prototype,"contentExpression",void 0);W([be(l+"-form")],Y.prototype,"_form",void 0);Y=W([kt({tagName:l+"-widget-datacolumn",shadow:Mt.USE_SHADOW_ROOT,template:`<${l}-form class="panel-body" autogenerate="true"></${l}-form>`})],Y);var q=class extends Gr.Scaffolding.PacemBaseElement{constructor(){super(...arguments),this._dropHandler=e=>{this.changeHandler(e)},this._columnifyMetadata=(e=this.properties)=>(e||[]).map(t=>({header:typeof t.display?.name=="function"?t.prop:t.display?.name||t.prop,content:`{{ ^item.${t.prop} }}`})).sort((t,r)=>t.header>r.header?1:-1)}get inputFields(){return[]}toggleReadonlyView(e){}onChange(e){return oe.fromResult(this.value=this._repeater.datasource)}acceptValue(e){oe.isNull(this._repeater)||(this._repeater.datasource=oe.clone(e||[]))}getViewValue(e){return"[DataColumns]"}convertValueAttributeToProperty(e){return _e.Json.convert(e,this)}viewActivatedCallback(){super.viewActivatedCallback(),this._propDragger.addEventListener(K.DragDropEventType.End,this._dropHandler,!1),this._colDragger.addEventListener(K.DragDropEventType.End,this._dropHandler,!1)}disconnectedCallback(){oe.isNull(this._propDragger)||this._propDragger.removeEventListener(K.DragDropEventType.End,this._dropHandler,!1),oe.isNull(this._colDragger)||this._colDragger.removeEventListener(K.DragDropEventType.End,this._dropHandler,!1),super.disconnectedCallback()}};W([be(`${l}-repeater[columns]`)],q.prototype,"_repeater",void 0);W([be(`${l}-drag-drop[properties]`)],q.prototype,"_propDragger",void 0);W([be(`${l}-drag-drop[columns]`)],q.prototype,"_colDragger",void 0);W([be("div[drop-target]")],q.prototype,"_dropTarget",void 0);W([Le({converter:_e.Json})],q.prototype,"properties",void 0);q=W([kt({tagName:l+"-widget-datacolumns",shadow:Mt.USE_SHADOW_ROOT,template:`<div class="${Ie}-datacolumns">
60
+ <div class="datacolumns-main display-flex flex-fill">
61
+
62
+ <${l}-drag-drop mode="${K.DragDataMode.Alias}" disabled="{{ :host.readonly }}" handle-selector="*[handle]"
63
+ drop-behavior="${K.DropBehavior.InsertChild}" drop-targets="{{ [::_dropTarget] }}" columns></${l}-drag-drop>
64
+ <${l}-repeater class="display-flex flex-fill" columns>
65
+ <!-- columns -->
66
+ <div class="display-flex flex-nowrap" drop-target>
67
+ <template>
68
+ <${l}-panel behaviors="{{ [::_colDragger] }}">
69
+ <div class="${Ie}-panel panel-side-left side-auto">
70
+ <div class="panel-side">
71
+ <${l}-button class="display-block button-flat icon-glyph-small" icon-glyph="drag_indicator" handle></${l}-button>
72
+ <${l}-button class="display-block button-flat icon-glyph-small" on-click=":host.value.splice(^index, 1)" icon-glyph="clear"></${l}-button>
73
+ </div>
74
+ <div class="panel-heading">
75
+ <${l}-text text="{{ ^item.header }}"></${l}-text>
76
+ </div>
77
+ <${l}-widget-datacolumn class="panel-body" header="{{ ^item.header, twoway }}" content-expression="{{ ^item.content, twoway }}"></${l}-widget-datacolumn>
78
+ </div>
79
+ </${l}-panel>
80
+ </template>
81
+ </div>
82
+ </${l}-repeater>
83
+
84
+ </div>
85
+ <${l}-panel class="datacolumns-props" hide="{{ :host.readonly }}">
86
+ <${l}-drag-drop mode="${K.DragDataMode.Copy}" disabled="{{ :host.readonly }}" handle-selector="*[handle]"
87
+ drop-behavior="${K.DropBehavior.InsertChild}" drop-targets="{{ [::_dropTarget] }}" properties></${l}-drag-drop>
88
+ <${l}-repeater datasource="{{ :host._columnifyMetadata(:host.properties) }}">
89
+ <!-- properties -->
90
+ <template>
91
+ <${l}-panel behaviors="{{ [::_propDragger] }}" class="${Ie}-panel panel-side-left side-auto panel-primary panel-filled ${Ie}-margin margin-bottom-1">
92
+ <div class="panel-side">
93
+ <${l}-button class="display-block button-flat icon-glyph-small" icon-glyph="drag_indicator" handle></${l}-button>
94
+ </div>
95
+ <div class="text-truncate panel-body">
96
+ <${l}-span text="{{ ^item.header }}"></${l}-span>
97
+ </div>
98
+ </${l}-panel>
99
+ </template>
100
+ </${l}-repeater>
101
+ </${l}-panel>
102
+ </div>`})],q);var ae=function(s,e,t,r){var a=arguments.length,o=a<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,t):r,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(s,e,t,r);else for(var n=s.length-1;n>=0;n--)(i=s[n])&&(o=(a<3?i(o):a>3?i(e,t,o):i(e,t))||o);return a>3&&o&&Object.defineProperty(e,t,o),o},Xr={display:{name:"DataColumn"},props:[{prop:"header",type:"string",display:{name:"Header"}},{prop:"content",type:y,display:{name:"Content"},extra:j}]},Jr=w({display:{icon:"table_chart",name:"DataGrid",description:"DataGrid widget."},props:[{prop:"datasource",type:y,display:{name:"Datasource"},extra:de.extend({},j,{filter:s=>s instanceof J||s instanceof h})},{prop:"columns",type:Ue,display:{name:"Columns"},extra:{properties:"datarowMetadata"},props:ee(Xr)}]});function zr(s=[]){var e="";for(let t of s||[]){let r=t.width||1;typeof r=="number"?e+=r+"fr ":e+="auto "}return e}function Kr(s=[]){let e=document.createDocumentFragment(),t=document.createDocumentFragment(),r=1;for(let o of s){let i=document.createElement("div");i.classList.add(Ee+"-headcell"),i.textContent=o.header,e.appendChild(i);let n=new Bt.PacemSpanElement;n.classList.add(Ee+"-datacell","datacell-corners"),n.style.gridColumn=r.toString(),n.setAttribute("css","{{ {'grid-row': ^index+2} }}"),n.setAttribute("content",o.content),t.appendChild(n),r++}let a=new Bt.PacemPanelElement;return a.classList.add(Ee+"-datarow"),a.setAttribute("css","{{ {'grid-row': ^index+2} }}"),a.setAttribute("css-class","{{ {'datarow-alt': ^index % 2 === 1} }}"),a.style.gridColumn="1/"+(s.length+1),t.appendChild(a),{head:e,body:t}}function Wt(s,e=[]){let{head:t,body:r}=Kr(e),a=document.createElement("div");a.appendChild(t);let o=document.createElement("div");return o.appendChild(r),`<${Fe}-repeater datasource="{{ #${s}.datasource }}">
103
+ <div class="${Ee}-datatable" style="grid-template-columns: ${zr(e)}">
104
+ ${a.innerHTML}
105
+ <template>${o.innerHTML}</template>
106
+ </div></${Fe}-repeater>`}var X=class extends x{constructor(){super(Jr),this.columns=[],this.datasource=[],this.datarowMetadata=[],this._builtUponDatasource=!1}_gridify(e=this.columns){var t="";for(let r of e||[]){let a=r.width||1;typeof a=="number"?t+=a+"fr ":t+="auto "}return t}propertyChangedCallback(e,t,r,a){if(super.propertyChangedCallback(e,t,r,a),!a)switch(e){case"columns":this.innerHTML=Wt(this.id,r);break;case"datasource":this._extractMetadataJustInCase(r);break}}viewActivatedCallback(){super.viewActivatedCallback(),this.innerHTML=Wt(this.id,this.columns)}_seekArray(e){if(de.isArray(e))return e;if(typeof e=="object")for(let t in e){let r=this._seekArray(e[t]);if(!de.isNull(r))return r}return null}_extractMetadataJustInCase(e=this.datasource){if((de.isNullOrEmpty(this.datarowMetadata)||this._builtUponDatasource)&&!de.isNullOrEmpty(e)){let t=this._seekArray(e);if(!de.isNullOrEmpty(t)){let r=[],a=t[0];for(let o in a)r.push({prop:o,type:typeof a[o]});this.datarowMetadata=r,this._builtUponDatasource=!0}}}};ae([mt({reflectBack:!0,converter:ut.Json})],X.prototype,"columns",void 0);ae([mt({converter:ut.Json})],X.prototype,"datasource",void 0);ae([mt({converter:ut.Json})],X.prototype,"datarowMetadata",void 0);ae([ft(`.${Ee}-datatable`)],X.prototype,"_datatable",void 0);ae([ft("template")],X.prototype,"_template",void 0);ae([ft(Fe+"-repeater")],X.prototype,"_repeater",void 0);X=ae([qr({tagName:Fe+"-widget-datagrid"})],X);var Lt={};Ve(Lt,{DATACOLUMNS_METADATA_TYPE:()=>Ue,OpenApi:()=>at,PacemDataColumnElement:()=>Y,PacemDataColumnsElement:()=>q,Permissible:()=>gt,PermissionEditEvent:()=>ht,PermissionEditEventName:()=>It});import{Utils as Ht}from"@pacem/pacem-core";var It="permissionedit",ht=class extends CustomEvent{constructor(e){super(It,{detail:e,cancelable:!1,bubbles:!0})}},gt=class{static canEdit(e,t){return this._canDoSomethingToResource(e,t,r=>r.update)}static canRead(e,t){return this._canDoSomethingToResource(e,t,r=>r.read)}static canAdd(e,t){return this._canDoSomethingToResource(e,t,r=>r.create)}static canDelete(e,t){return this._canDoSomethingToResource(e,t,r=>r.delete)}static canTranslate(e,t){return this._canDoSomethingToResource(e,t,r=>r.translate)}static _canDoSomethingToResource(e,t,r){if(Ht.isNullOrEmpty(e)||Ht.isNull(t))return!1;var a=!0;if(t.permissions&&t.permissions.length>0){a=!1;for(let o of t.permissions)if(r(o)&&e[o.claimType]&&e[o.claimType].indexOf(o.claimValue)>=0)return!0}return a}};export{Lt as Cms,jt as Components};