pacem 0.51.5-abel → 0.51.5-binet
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/css/pacem-dark-content.min.css +1 -1
- package/dist/css/pacem-dark-shell.min.css +1 -1
- package/dist/css/pacem-dark.min.css +1 -1
- package/dist/css/pacem-light-content.min.css +1 -1
- package/dist/css/pacem-light-shell.min.css +1 -1
- package/dist/css/pacem-light.min.css +1 -1
- package/dist/css/pacem-phousys-content.min.css +1 -1
- package/dist/css/pacem-phousys-shell.min.css +1 -1
- package/dist/css/pacem-phousys.min.css +1 -1
- package/dist/js/azure-maps.d.ts +1 -1
- package/dist/js/pacem-2d.d.ts +1 -1
- package/dist/js/pacem-2d.js +1 -1
- package/dist/js/pacem-2d.min.js +1 -1
- package/dist/js/pacem-3d.d.ts +1 -1
- package/dist/js/pacem-3d.js +1 -1
- package/dist/js/pacem-3d.min.js +1 -1
- package/dist/js/pacem-charts.d.ts +1 -1
- package/dist/js/pacem-charts.js +7 -5
- package/dist/js/pacem-charts.min.js +2 -2
- package/dist/js/pacem-cms.d.ts +1 -1
- package/dist/js/pacem-cms.js +1 -1
- package/dist/js/pacem-cms.min.js +1 -1
- package/dist/js/pacem-core.d.ts +1 -1
- package/dist/js/pacem-core.js +1 -1
- package/dist/js/pacem-core.min.js +1 -1
- package/dist/js/pacem-foundation.d.ts +1 -1
- package/dist/js/pacem-foundation.js +1 -1
- package/dist/js/pacem-foundation.min.js +1 -1
- package/dist/js/pacem-fx.d.ts +1 -1
- package/dist/js/pacem-fx.js +1 -1
- package/dist/js/pacem-fx.min.js +1 -1
- package/dist/js/pacem-logging.d.ts +1 -1
- package/dist/js/pacem-logging.js +1 -1
- package/dist/js/pacem-logging.min.js +1 -1
- package/dist/js/pacem-maps.d.ts +1 -1
- package/dist/js/pacem-maps.js +1 -1
- package/dist/js/pacem-maps.min.js +1 -1
- package/dist/js/pacem-media.d.ts +1 -1
- package/dist/js/pacem-media.js +1 -1
- package/dist/js/pacem-media.min.js +1 -1
- package/dist/js/pacem-networking.d.ts +1 -1
- package/dist/js/pacem-networking.js +1 -1
- package/dist/js/pacem-networking.min.js +1 -1
- package/dist/js/pacem-numerical.d.ts +1 -1
- package/dist/js/pacem-numerical.js +1 -1
- package/dist/js/pacem-numerical.min.js +1 -1
- package/dist/js/pacem-plus.d.ts +3 -1
- package/dist/js/pacem-plus.js +24 -4
- package/dist/js/pacem-plus.min.js +2 -2
- package/dist/js/pacem-scaffolding.d.ts +1 -1
- package/dist/js/pacem-scaffolding.js +1 -1
- package/dist/js/pacem-scaffolding.min.js +1 -1
- package/dist/js/pacem-ui.d.ts +1 -1
- package/dist/js/pacem-ui.js +1 -1
- package/dist/js/pacem-ui.min.js +1 -1
- package/dist/js/swagger-types.d.ts +1 -1
- package/package.json +1 -1
package/dist/js/azure-maps.d.ts
CHANGED
package/dist/js/pacem-2d.d.ts
CHANGED
package/dist/js/pacem-2d.js
CHANGED
package/dist/js/pacem-2d.min.js
CHANGED
package/dist/js/pacem-3d.d.ts
CHANGED
package/dist/js/pacem-3d.js
CHANGED
package/dist/js/pacem-3d.min.js
CHANGED
package/dist/js/pacem-charts.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.51.5-
|
|
2
|
+
* pacem v0.51.5-binet (https://js.pacem.it)
|
|
3
3
|
* Copyright 2025 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
@@ -22,7 +22,7 @@ var Pacem;
|
|
|
22
22
|
//}
|
|
23
23
|
const MSECS_PER_DAY = 1000 * 60 * 60 * 24;
|
|
24
24
|
const MAX_X_LABELS = 10;
|
|
25
|
-
|
|
25
|
+
const MAX_Y_LABELS = 10;
|
|
26
26
|
const SERIES_DATAITEM = 'pacem:chart-series:dataitem';
|
|
27
27
|
const SERIES_SERIES = 'pacem:chart-series:series';
|
|
28
28
|
function getEvenlySpaced(items, type, min, max, formatOrLang, labels = MAX_X_LABELS) {
|
|
@@ -66,7 +66,8 @@ var Pacem;
|
|
|
66
66
|
}
|
|
67
67
|
return retval;
|
|
68
68
|
}
|
|
69
|
-
function getRoundedBoundaries(min, max, desiredSteps
|
|
69
|
+
function getRoundedBoundaries(min, max, desiredSteps) {
|
|
70
|
+
desiredSteps ??= Math.min(bestGuessedDensity(min, max), MAX_Y_LABELS);
|
|
70
71
|
const roughStep = (max - min) / desiredSteps;
|
|
71
72
|
const magnitude = Math.pow(10, Math.floor(Math.log10(roughStep)));
|
|
72
73
|
const step = [1, 2, 5, 10].map(n => n * magnitude).filter(s => s >= roughStep).reduce((min, s) => Math.min(min, s), Number.POSITIVE_INFINITY);
|
|
@@ -1024,9 +1025,10 @@ var Pacem;
|
|
|
1024
1025
|
if (topGrid === bottomGrid)
|
|
1025
1026
|
return;
|
|
1026
1027
|
// estimate y-axis max width
|
|
1027
|
-
const
|
|
1028
|
+
const halfPad = padding * .5;
|
|
1029
|
+
const maxYLabelLength = grid.y.reduce((max, i) => Math.max(max, this.estimateYAxisLabelWidth(i) + halfPad), padding);
|
|
1028
1030
|
const maxXLabelHalfLength = grid.x.reduce((max, i) => Math.max(max, this.estimateXAxisLabelWidth(i)), padding) * .5;
|
|
1029
|
-
const paddingYAxis = Math.max(maxXLabelHalfLength, maxYLabelLength), paddingYAxisEnd =
|
|
1031
|
+
const paddingYAxis = Math.max(maxXLabelHalfLength, maxYLabelLength), paddingYAxisEnd = maxXLabelHalfLength; // Math.max(padding, this.estimateXAxisLabelWidth(minX) * .5 + PADDING_PIXELS);
|
|
1030
1032
|
/** width of the WHOLE series dedicated area */
|
|
1031
1033
|
const seriesWidth = size.width - paddingYAxis - paddingYAxisEnd;
|
|
1032
1034
|
/** height of the WHOLE series dedicated area */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.51.5-
|
|
2
|
+
* pacem v0.51.5-binet (https://js.pacem.it)
|
|
3
3
|
* Copyright 2025 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
var Pacem,__decorate=this&&this.__decorate||function(t,e,i,r){var s,a=arguments.length,n=a<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(n=(a<3?s(n):a>3?s(e,i,n):s(e,i))||n);return a>3&&n&&Object.defineProperty(e,i,n),n};!function(t){!function(e){!function(i){i.MANAGED_EVENTS=["keydown","keyup","click","dblclick","mouseover","mouseout","mouseenter","mouseleave","mousedown","mouseup","mousemove","contextmenu"];const r=864e5,s="pacem:chart-series:dataitem",a="pacem:chart-series:series";function n(t,e,i=o(t,e)){const r=(e-t)/i,s=Math.pow(10,Math.floor(Math.log10(r))),a=[1,2,5,10].map((t=>t*s)).filter((t=>t>=r)).reduce(((t,e)=>Math.min(t,e)),Number.POSITIVE_INFINITY);return{min:Math.floor(t/a)*a,max:Math.ceil(e/a)*a,round:a}}function o(t,e){const i=e-t;if(!(i>0))return 2;const r=Math.floor(Math.log10(i)),s=Math.pow(10,-r);if(0!=r)return o(t*s,e*s);const a=t=>{const e=Math.floor(10*Math.abs(t));return(e+10-e%10).roundoff()},n=a(i);let h=10;0!==t&&(h=a(Math.abs(e)));const c=l(h,n);return 1===c?n:Math.max(c,10-c)}function l(t,e){return t<=0?e:l(e%t,t)}class ChartEvent extends t.CustomUIEvent{constructor(t,e,i){super(t,e,i)}}i.ChartEvent=ChartEvent;let h=class PacemChartSeriesElement extends e.PacemItemElement{get values(){return this.datasource}};__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.Json})],h.prototype,"datasource",void 0),__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.String})],h.prototype,"label",void 0),__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.String})],h.prototype,"color",void 0),__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.Boolean})],h.prototype,"datapoints",void 0),__decorate([t.Watch()],h.prototype,"_uiElements",void 0),h=__decorate([t.CustomElement({tagName:t.P+"-chart-series"})],h),i.PacemChartSeriesElement=h;const c="http://www.w3.org/2000/svg";class PacemSeriesChartElement extends e.PacemItemsContainerElement{constructor(){super(),this._itemPropertyChangedCallback=t=>{const e=t.detail.propertyName;"datasource"!==e&&"label"!==e&&"datapoints"!==e&&"cssClass"!==e&&"color"!==e||this.draw()},this._series=[],this._resizeHandler=t=>{this._size=t.detail,this.draw()},this._broadcastHandler=e=>{const i=e.currentTarget,r=t.CustomElementUtils.getAttachedPropertyValue(i,s);if(t.Utils.isNull(r))return;const n=this.getAnchorPoint(i),o=new ChartEvent("item"+e.type,{detail:{dataItem:r,anchorPoint:n}},e),l=t.CustomElementUtils.getAttachedPropertyValue(i,a);l instanceof h&&l.dispatchEvent(o),this.dispatchEvent(o)},this._key=t.Utils.uniqueCode()}validate(t){return t instanceof h}register(e){return!!super.register(e)&&(e.addEventListener(t.PropertyChangeEventName,this._itemPropertyChangedCallback,!1),!0)}unregister(e){return!!super.unregister(e)&&(e.removeEventListener(t.PropertyChangeEventName,this._itemPropertyChangedCallback,!1),!0)}propertyChangedCallback(e,i,r,s){if(super.propertyChangedCallback(e,i,r,s),"target"===e){this._div!=i&&this._div&&this._div.remove(),this._div=null,this._body=null;const e=i;e&&(e.classList.remove(t.PCSS+"-chart-area"),e.innerHTML=""),this._ensureResizer(),this.draw()}else if(!s)switch(e){case"items":this._databindAndDrawDebounced();break;case"datasource":this._databind();case"yAxisDensity":case"xAxisDensity":case"xAxisType":case"yAxisMax":case"xAxisPosition":case"yAxisFormat":this.draw()}}_databindAndDrawDebounced(){cancelAnimationFrame(this._handle),this._handle=requestAnimationFrame((()=>{this._databind(),this.draw()}))}_databind(){this._datasource=t.Utils.isNullOrEmpty(this.datasource)?this.items:this.datasource}disconnectedCallback(){this._div&&this._div.remove();const e=this._resizer;t.Utils.isNull(e)||(e.removeEventListener(t.Components.ResizeEventName,this._resizeHandler,!1),e.remove(),this._resizer=null),super.disconnectedCallback()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureResizer(),this._databind(),this.draw()}_ensureResizer(i=this.target||this._div){if(t.Utils.isNull(this._resizer)){const i=t.CustomElementUtils.findAncestorShell(this);(this._resizer=i.appendChild(new e.PacemResizeElement)).addEventListener(t.Components.ResizeEventName,this._resizeHandler,!1)}this._resizer.target=i}get chartSize(){return this._size}get chartSeries(){return this._series}get chartBody(){return this._body}get chartGrid(){return this._grid}get chartMask(){return this._mask}get chartKey(){return this._key}get chartContainer(){return this._div}assignUiBehaviors(e,r,n,o){const l=!t.Utils.isNull(t.CustomElementUtils.getAttachedPropertyValue(e,s)),h=t.Utils.extend({series:r.label,color:o||r.color},n);t.CustomElementUtils.setAttachedPropertyValue(e,s,h),t.CustomElementUtils.setAttachedPropertyValue(e,a,r),l||i.MANAGED_EVENTS.forEach((t=>{e.addEventListener(t,this._broadcastHandler)}))}disposeUiBehaviors(e){t.CustomElementUtils.deleteAttachedPropertyValue(e,s),t.CustomElementUtils.deleteAttachedPropertyValue(e,a),i.MANAGED_EVENTS.forEach((t=>{e.removeEventListener(t,this._broadcastHandler)}))}ensureChartContainer(){if(t.Utils.isNull(this._div)){let e=this._div=this.target||document.createElement("div");e.classList.add(t.PCSS+"-chart-area"),e!=this.target&&this.parentElement.insertBefore(e,this)}return this._div}ensureChartBody(e,i,r){if(t.Utils.isNull(this._body)){let i=this._body=document.createElementNS(c,"svg");i.setAttribute("pacem",""),i.setAttribute("class",t.PCSS+"-"+e+"-chart"),i.setAttribute("preserveAspectRatio","xMinYMax slice");const r=this._grid=document.createElementNS(c,"svg");r.setAttribute("pacem",""),r.setAttribute("class","chart-grid");let s=document.createElementNS(c,"defs"),a=this._mask=document.createElementNS(c,"mask"),n=document.createElementNS(c,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","100%"),n.setAttribute("height","100%");let o=document.createElementNS(c,"rect");o.setAttribute("y","0"),o.setAttribute("width","100%"),o.setAttribute("fill","#fff"),a.id="gnrc_mask_"+this._key,a.appendChild(n),a.appendChild(o),s.appendChild(a),i.appendChild(s),i.appendChild(r),this._div.appendChild(i)}return this._body}chartDataItemToPoint(e,i){switch(this.xAxisType||"string"){case"number":return{x:parseFloat(e.label),y:e.value};case"date":return{x:t.Utils.parseDate(e.label).valueOf(),y:e.value};case"string":return{x:i.findIndex((t=>t.label==e.label)),y:e.value};default:throw"Not supported."}}getVirtualGrid(e,i,s,a,o,l=this.xAxisType,h,c){const d=n(a,o,h),u=d.round;var m=[];for(let t=d.min;t<=d.max;t+=u)m.push(t.roundoff());let p=t.Utils.lang(this),v=null;const g=this.xAxisFormat;if(!t.Utils.isNullOrEmpty(g))switch(l){case"number":v=t=>Intl.NumberFormat(p,g).format(t);break;case"date":v=e=>Intl.DateTimeFormat(p,g).format(t.Utils.parseDate(e))}const y=function(e,i,s,a,n,o=10){const l="number"===i||"date"===i?a-s:Math.max(1,e.length-1);for(var h=[],c=1,d=o-1;d>1;d--)if(l%d==0){c=l/d;break}1===c&&l>o&&(c=l);const u="function"==typeof n?n:c>=r?t=>t.toLocaleDateString(n):t=>t.toLocaleTimeString(n),m="function"==typeof n?n:c<r?t=>t.toLocaleString(n):u,p="function"==typeof n?n:t=>t.toLocaleString(n);for(var v=0;v<=l;v+=c){let r;switch(i){case"string":if(v>=e.length)continue;r=e[v].label;break;case"number":r=p(s+v);break;case"date":r=(0==v?m:u)(t.Utils.parseDate(s+v));break;default:throw"Not supported."}h.push(r)}return h}(e,l,i,s,v??p,c);return{x:y,y:m}}wipeOut(t=this._series,e=0){for(var i=t.length-1;i>=e;i--)t[i].remove();t.splice(e)}buildLinearGradient(e,i=!1){const r=document.createElementNS(c,"linearGradient");r.id=this.chartKey+"_grad"+e+(i?"_inverted":""),i&&t.Utils.addClass(r,"bottom-up"),r.setAttribute("x1","0%"),r.setAttribute("x2","0%"),r.setAttribute("y1","0%"),r.setAttribute("y2","100%"),r.setAttribute("spreadMethod","pad");const s=document.createElementNS(c,"stop");s.setAttribute("offset","0%");const a=document.createElementNS(c,"stop");return a.setAttribute("offset","100%"),r.appendChild(s),r.appendChild(a),r}setGradientColor(t,e){for(let i=0;i<t.children.length;i++){const r=t.children.item(i);r instanceof SVGStopElement&&(r.style.stopColor=e)}}estimateYAxisLabelWidth(t){const e=this.formatYAxisLabel(t);return this.estimateLabelWidth(e)}estimateLabelWidth(e){const i=this._grid;if(t.Utils.isNull(i))throw new Error("Unable to estimate label without an underlying grid available.");const r=document.createElementNS(c,"text");r.textContent=e,i.appendChild(r);const s=t.Utils.offset(r);return r.remove(),s.width}formatYAxisLabel(e){const i=this.yAxisFormat;return t.Utils.isNullOrEmpty(i)?e.toString():Intl.NumberFormat(t.Utils.lang(this),i).format(e)}estimateXAxisLabelWidth(t){const e=this.formatXAxisLabel(t);return this.estimateLabelWidth(e)}formatXAxisLabel(e){const i=this.xAxisFormat,r=t.Utils.lang(this);switch(this.xAxisType){case"date":const s=t.Utils.Dates.parse(e);return t.Utils.isNullOrEmpty(i)?s.toLocaleString(r):Intl.DateTimeFormat(r,i).format(s);case"number":const a=e;return t.Utils.isNullOrEmpty(i)?a.toLocaleString(r):Intl.NumberFormat(r,i).format(a);default:return e}}draw(){this.drawSeries(this._datasource)}getAnchorPoint(e){const i=t.Utils.offset(e);return{x:i.left+.5*i.width,y:i.top+.5*i.height}}}__decorate([t.Watch({converter:t.PropertyConverters.Element})],PacemSeriesChartElement.prototype,"target",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PacemSeriesChartElement.prototype,"xAxisType",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PacemSeriesChartElement.prototype,"xAxisPosition",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"datasource",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"yAxisDensity",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"xAxisDensity",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"yAxisMin",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"yAxisMax",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"yAxisFormat",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"xAxisFormat",void 0),__decorate([t.Throttle(!0)],PacemSeriesChartElement.prototype,"draw",null),i.PacemSeriesChartElement=PacemSeriesChartElement}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){const i="http://www.w3.org/2000/svg";let r=class PacemColumnChartElement extends e.PacemSeriesChartElement{constructor(){super(...arguments),this.groupWidth=0}propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),"type"!==t&&"groupWidth"!==t||this.draw()}_safen(t=this.groupWidth){return Math.min(1,Math.max(t||.75,0))}drawSeries(e){if(!this.isReady||t.Utils.isNull(this.chartSize))return;this.ensureChartContainer();const r=this.type||"cluster",s=24;var a=this.chartSize;if(a.height<=s||a.width<=s)return;if(t.Utils.isNullOrEmpty(e)||e.every((e=>t.Utils.isNullOrEmpty(e.values))))return void this.wipeOut();const n=this.ensureChartBody("column",a.width,a.height);this.log(t.Logging.LogLevel.Debug,`Drawing ${r} chart.`);const o=this.xAxisType||"string";let l=this.yAxisMin??0,h=this.yAxisMax??0,c=0,d=0,u=0,m=1;const p={negative:[],positive:[]};for(let i of e){let e=i.values;if(!t.Utils.isNullOrEmpty(e)){let i=0;for(let r of e){p.positive[i]=p.positive[i]||0,p.negative[i]=p.negative[i]||0;let s=this.chartDataItemToPoint(r,e);t.Utils.isNull(this.yAxisMin)&&(l=Math.min(l,s.y)),t.Utils.isNull(this.yAxisMax)&&(h=Math.max(h,s.y)),c=Math.min(c,s.x),d=Math.max(d,s.x),s.y>0?p.positive[i]+=s.y:s.y<0&&(p.negative[i]+=s.y),i++}u=Math.max(u,e.length)}}const v="stack"===r;v&&(t.Utils.isNull(this.yAxisMin)&&(l=Math.min.apply(null,p.negative)),t.Utils.isNull(this.yAxisMax)&&(h=Math.max.apply(null,p.positive))),0===d&&d===c&&(d=1);const g=(d-c)/u,y=.5*g,_=g*this._safen(this.groupWidth),C=.5*_,f=e.find((e=>!t.Utils.isNullOrEmpty(e.values))),b=this.getVirtualGrid(f.values,c-y,d+y,l,h,o,this.yAxisDensity,this.xAxisDensity),x=b.y[b.y.length-1],A=b.y[0];if(x===A)return;const E=b.y.reduce(((t,e)=>Math.max(t,this.estimateYAxisLabelWidth(e)+12)),s),w=a.width-E-s,N=a.height-48,S=N*(1-(x-A-(h-l))/(x-A)),P=N*(x-h)/(x-A);m=w/S,n.setAttribute("height",a.height.toString()),n.setAttribute("width",a.width.toString()),n.setAttribute("viewBox",`0 0 ${a.width} ${a.height}`);let M=0;const U=100*m/(d-c),k=100/(h-l),$=2400/S,L=this.chartSeries,W=this.chartGrid,D=(y-c)*U,O=(t,e)=>{const i=this.chartDataItemToPoint(t,e);return{x:D+2*i.x*D,y:i.y*k}};var T=new Array(u);for(let r of e){let s,a,n,o;if(L.length>M)s=L[M],a=s.firstElementChild.firstElementChild,n=s.firstElementChild.lastElementChild,o=s.lastElementChild;else{s=document.createElementNS(i,"svg"),s.setAttribute("pacem",""),W.insertAdjacentElement("afterend",s);const t=document.createElementNS(i,"defs");t.appendChild(a=this.buildLinearGradient(M)),t.appendChild(n=this.buildLinearGradient(M,!0)),s.appendChild(t),s.appendChild(o=document.createElementNS(i,"g")),L.push(s)}var B="chart-series series-fill";t.Utils.isNullOrEmpty(r.className)||(B+=" "+r.className),s.setAttribute("class",B),s.setAttribute("x",E.toString()),s.setAttribute("y",P.toString()),s.setAttribute("width",w.toString()),s.setAttribute("height",(S+48).toString());const l=r.values,h=t=>{for(;t>=o.children.length;)o.appendChild(document.createElementNS(i,"rect"));const e=o.children.item(t);e.style.stroke=r.color;const s=l[t].value<0?n:a;return this.setGradientColor(s,r.color),e.style.fill=`url(#${s.id})`,e},c=10,d=(t,e,i,r=e)=>{const s=-Math.max(e.y,i.y),a=Math.abs(i.y-e.y),n=()=>{t.setAttribute("y",s.toFixed(c)),t.setAttribute("height",a.toFixed(c))};t.hasAttribute("y")?n():(t.setAttribute("y","-"+r.y.toFixed(c)),t.setAttribute("height","0"),requestAnimationFrame(n))};if(!t.Utils.isNullOrEmpty(l)){const i=O({value:0,label:l[0].label},l);if(v){const e=C*U,s=(_*U).toFixed(c);for(let a=0;a<l.length;a++){const n=l[a];t.Utils.isNullOrEmpty(T[a])&&(T[a]={positive:0,negative:0});const o=T[a];let u=o.positive,m=o.negative;const p=n.value<0,v=p?m:u+n.value,g=p?m+n.value:u,y=O({label:n.label,value:v},l),_=O({label:n.label,value:g},l),C=y.x-e,f=h(a);this.assignUiBehaviors(f,r,n),f.setAttribute("x",C.toFixed(c)),f.setAttribute("width",s),d(f,_,y,i),p?o.negative=g:o.positive=v}}else{const t=C*U,s=2*t/e.length,a=s.toFixed(c);for(let e=0;e<l.length;e++){const n=l[e],o=O(n,l),u=o.x-t+s*M,m=h(e);this.assignUiBehaviors(m,r,n),m.setAttribute("x",u.toFixed(c)),m.setAttribute("width",a),d(m,i,o)}}}for(let t=o.children.length-1;t>=l?.length;t--){const e=o.children.item(t);this.disposeUiBehaviors(e),e.remove()}M++}this.wipeOut(L,M);const H=`0 ${-(h*k+$)} ${100*m} ${100+2*$}`;for(var I of L)I.setAttribute("viewBox",H);let V,G=this.chartMask.children.item(1);if(G.setAttribute("x",(0).toString()),G.setAttribute("height",(a.height-s).toString()),W.setAttribute("viewBox",`0 0 ${a.width} ${a.height}`),b.x.length<1||b.y.length<=1){for(let t=W.children.length-1;t>=0;t--)W.children.item(t).remove();return}W.children.length>0?V=W.children.item(0):(V=document.createElementNS(i,"path"),W.appendChild(V));let z=0,F=(t,e,r,s)=>{const a=t+1;let n;return W.children.length<=a?(n=document.createElementNS(i,"text"),W.appendChild(n)):n=W.children.item(a),n.textContent=s,n.setAttribute("x",e.toString()),n.setAttribute("y",r.toString()),n},R=`M${E},24 v${N}`,Y=0;const q=w/b.x.length,J=N/(b.y.length-1);if("none"!==this.xAxisPosition){const t=.5*q+E;for(var j of b.x){let e=t+Y*q;if("top"===this.xAxisPosition){R+=` M${e},24 v-6`;let t=F(z++,e,0,j);t.setAttribute("text-anchor","middle"),t.setAttribute("alignment-baseline","hanging")}else{let t=N+s;R+=` M${e},${t} v6`,F(z++,e,t+s,j).setAttribute("text-anchor","middle")}Y++}}for(var X of(Y=0,b.y)){const t=N+s-Y*J,e=E-6;R+=` M${e},${t} H${w+E}`,F(z++,e-6,t,this.formatYAxisLabel(X)).setAttribute("text-anchor","end"),Y++}V.setAttribute("d",R);for(let t=W.children.length-1;t>z;t--)W.children.item(t).remove()}};__decorate([t.Watch({converter:t.PropertyConverters.String})],r.prototype,"type",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Number})],r.prototype,"groupWidth",void 0),r=__decorate([t.CustomElement({tagName:t.P+"-column-chart"})],r),e.PacemColumnChartElement=r}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){function i(e,i,r){let s=e,a=e;const n=t.Utils.isNull(i),o=t.Utils.isNull(r);if(!n||!o){const t=3;let l,h;n||(l=(e.y-i.y)/(e.x-i.x)),o||(h=(r.y-e.y)/(r.x-e.x));const c=((h||l||0)+(l||h||0))/2,d=n?0:(e.x-i.x)/t,u=o?0:(r.x-e.x)/t;s={x:e.x-d,y:e.y-d*c},a={x:e.x+u,y:e.y+u*c}}return{c0:s,c1:a}}const r=t.CustomElementUtils.getAttachedPropertyValue,s=t.CustomElementUtils.setAttachedPropertyValue,a=(t.CustomElementUtils.deleteAttachedPropertyValue,"pacem:chart-series:area"),n="http://www.w3.org/2000/svg";let o=class PacemChartElement extends e.PacemSeriesChartElement{constructor(){super(...arguments),this.#t=!1,this._enterHandler=t=>{this.#t=!0},this._leaveHandler=t=>{this.#t=!1},this._moveHandler=t=>{this.#t},this._chartFillSeries=[]}_getVirtualGrid(t,e,i,r,s,a=this.xAxisType,n,o){return super.getVirtualGrid(t,e,i,r,s,a,n,o)}_wipe(t=this.chartSeries,e=0){super.wipeOut(t,e)}viewActivatedCallback(){super.viewActivatedCallback(),this._setupBehavior()}disconnectedCallback(){this._dismantleBehavior(),super.disconnectedCallback()}propertyChangedCallback(t,e,i,r){switch(super.propertyChangedCallback(t,e,i,r),t){case"type":case"aspectRatio":this.draw()}}_setupBehavior(){this.addEventListener("mouseenter",this._enterHandler,!1),this.addEventListener("mouseleave",this._enterHandler,!1),this.addEventListener("mousemove",this._moveHandler,!1)}_dismantleBehavior(){this.removeEventListener("mouseenter",this._enterHandler,!1),this.removeEventListener("mouseleave",this._leaveHandler,!1),this.removeEventListener("mousemove",this._moveHandler,!1)}#t;_buildLinearGradient(t){return super.buildLinearGradient(t)}_setGradientColor(t,e){super.setGradientColor(t,e)}drawSeries(e){if(!this.isReady||t.Utils.isNull(this.chartSize))return;this.ensureChartContainer();const o=this.type||"line",l=24;var h=this.chartSize;if(h.height<=l||h.width<=l)return;if(t.Utils.isNullOrEmpty(e)||e.every((e=>t.Utils.isNullOrEmpty(e.values))))return void this._wipe();const c=this.ensureChartBody("line",h.width,h.height);this.log(t.Logging.LogLevel.Debug,`Drawing ${o} chart.`);const d=this.xAxisType||"string";let u=this.yAxisMin??Number.NaN,m=this.yAxisMax??Number.NaN,p=Number.NaN,v=Number.NaN,g=1;for(let i of e){let e=i.values;if(e&&e.length){let i=0;for(let r of e){let s=this.chartDataItemToPoint(r,e);t.Utils.isNull(this.yAxisMin)&&(u=isNaN(u)?s.y:Math.min(u,s.y)),t.Utils.isNull(this.yAxisMax)&&(m=isNaN(m)?s.y:Math.max(m,s.y)),0===i?p=isNaN(p)?s.x:Math.min(p,s.x):i===e.length-1&&(v=isNaN(v)?s.x:Math.max(v,s.x)),i++}}}const y=e.find((e=>!t.Utils.isNullOrEmpty(e.values))),_=this._getVirtualGrid(y.values,p,v,u,m,d,this.yAxisDensity,this.xAxisDensity),C=_.y[_.y.length-1],f=_.y[0];if(C===f)return;const b=_.y.reduce(((t,e)=>Math.max(t,this.estimateYAxisLabelWidth(e))),l),x=.5*_.x.reduce(((t,e)=>Math.max(t,this.estimateXAxisLabelWidth(e))),l),A=Math.max(x,b),E=A,w=h.width-A-E,N=h.height-48,S=N*(1-(C-f-(m-u))/(C-f)),P=N*(C-m)/(C-f);("number"!==d||"monometric"!==this.aspectRatio&&"logaritmic"!==this.aspectRatio)&&(g=w/S,c.setAttribute("height",h.height.toString()),c.setAttribute("width",h.width.toString())),c.setAttribute("viewBox",`0 0 ${h.width} ${h.height}`);let M=0;const U=100*g/(v-p),k=100/(m-u),$=2400/S,L=(t,e)=>{let i=this.chartDataItemToPoint(t,e);return i.y*=k,i.x=(i.x-p)*U,i},W=this.chartSeries,D=this._chartFillSeries,O=this.chartGrid,T="spline"===o||"splinearea"===o;for(let l of e){let e,h,d;if(W.length>M)e=W[M],h=D[M],d=h.firstElementChild.firstElementChild;else{e=document.createElementNS(n,"svg"),e.setAttribute("pacem",""),c.appendChild(e),h=document.createElementNS(n,"svg"),h.setAttribute("pacem",""),c.insertBefore(h,c.children.item(M+2));const t=document.createElementNS(n,"defs");t.appendChild(d=this._buildLinearGradient(M)),h.appendChild(t),h.appendChild(document.createElementNS(n,"path")),D.push(h),e.appendChild(document.createElementNS(n,"path")),W.push(e)}let m="chart-series";const p="area"===o||"splinearea"===o;t.Utils.isNullOrEmpty(l.className)||(m+=" "+l.className),[e,h].forEach((t=>{t.setAttribute("class",m),t.setAttribute("x",A.toString()),t.setAttribute("y",P.toString()),t.setAttribute("width",w.toString()),t.setAttribute("height",(S+48).toString())})),t.Utils.addClass(h,t.PCSS+"-inert");let v=h.children.item(1),g=e.firstElementChild;g.style.stroke=l.color,v.style.stroke=g.style.fill="none",this._setGradientColor(d,l.color),v.style.fill=`url(#${d.id})`,v.style.display=p?"":"none";let y="",_=l.values;if(_&&_.length){const o=(t,i,r,s,a)=>{const o=i+1;let l;e.children.length>o?l=e.children.item(o):(l=document.createElementNS(n,"line"),l.setAttribute("class","circle"),e.appendChild(l));const h=t.x.toString(),c=(-t.y).toString();l.setAttribute("x1",h),l.setAttribute("y1",c),l.setAttribute("x2",h),l.setAttribute("y2",c),l.style.stroke=a,this.assignUiBehaviors(l,r,s,a)},h=()=>{const t=l.datapoints?_.length+1:1;for(let r=e.children.length-1;r>=t;r--){var i=e.children.item(r);this.disposeUiBehaviors(i),i.remove()}};if(T){let e,n,h;for(let c=0;c<_.length;c++){const d=_[c];if(isNaN(d.value))continue;let u;n||(n=L(d,_)),T&&c<_.length-1&&(u=L(_[c+1],_));let m=r(l,a,0);m+=d.value,s(l,a,m);var B=i(n,e,u);y+=t.Utils.isNullOrEmpty(y)?`M${n.x},${-n.y} `:`C${h.x},${-h.y} ${B.c0.x},${-B.c0.y} ${n.x},${-n.y} `,l.datapoints&&o(n,c,l,d,l.color),e=n,n=u,h=B.c1}}else{let e=0;for(let i of _){if(isNaN(i.value))continue;const n=L(i,_);let h=r(l,a,0);h+=i.value,s(l,a,h),y+=t.Utils.isNullOrEmpty(y)?`M${n.x},${-n.y} `:`L${n.x},${-n.y} `,l.datapoints&&o(n,e,l,i,l.color),e++}}h()}g.setAttribute("d",y),v.setAttribute("d",y+`V${-u*k} H0 Z`),M++}this._wipe(D,M),this._wipe(W,M);const H=`0 ${-(m*k+$)} ${100*g} ${100+2*$}`;for(var I of W.concat(D))I.setAttribute("viewBox",H);let V,G=this.chartMask.children.item(1);if(G.setAttribute("x",(0).toString()),G.setAttribute("height",(h.height-l).toString()),O.setAttribute("viewBox",`0 0 ${h.width} ${h.height}`),_.x.length<=1||_.y.length<=1){for(let t=O.children.length-1;t>=0;t--)O.children.item(t).remove();return}O.children.length>0?V=O.children.item(0):(V=document.createElementNS(n,"path"),O.appendChild(V));let z=0,F=(t,e,i,r)=>{const s=t+1;let a;return O.children.length<=s?(a=document.createElementNS(n,"text"),O.appendChild(a)):a=O.children.item(s),a.textContent=r,a.setAttribute("x",e.toString()),a.setAttribute("y",i.toString()),a},R=`M${A},24 v${N}`,Y=0;const q=w/(_.x.length-1),J=N/(_.y.length-1);if("none"!==this.xAxisPosition)for(var j of _.x){const t=A+Y*q;if("top"===this.xAxisPosition){R+=` M${t},24 v-6`;let e=F(z++,t,0,j);e.setAttribute("text-anchor","middle"),e.setAttribute("alignment-baseline","hanging")}else{let e=N+l;R+=` M${t},${e} v6`,F(z++,t,e+l,j).setAttribute("text-anchor","middle")}Y++}for(var X of(Y=0,_.y)){const t=N+l-Y*J,e=A-6;R+=` M${e},${t} H${w+A}`,F(z++,e-6,t,this.formatYAxisLabel(X)).setAttribute("text-anchor","end"),Y++}V.setAttribute("d",R);for(let t=O.children.length-1;t>z;t--)O.children.item(t).remove()}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],o.prototype,"type",void 0),__decorate([t.Watch({converter:t.PropertyConverters.String})],o.prototype,"aspectRatio",void 0),o=__decorate([t.CustomElement({tagName:t.P+"-chart"})],o),e.PacemChartElement=o}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(i){let r=class PacemPieSliceElement extends e.PacemItemElement{constructor(){super(...arguments),this._broadcastHandler=t=>{this.emit(t)}}findContainer(){return t.CustomElementUtils.findAncestorOfType(this,n)}get chart(){return this.container}getCenterOfMass(){const e=this.chart&&this.chart.area;if(t.Utils.isNull(e))return null;const i=t.Utils.offset(e),r=i.width/2+i.left,s=i.top+i.height/2,n=.5*Math.min(i.width,i.height),o=this.normalizedPolarCoords,l=a-o.angle;return{y:s-n*o.radius*Math.sin(l),x:r+n*o.radius*Math.cos(l)}}propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),!r&&this.chart&&"normalizedPolarCoords"!=t&&this.chart.draw()}_assignUi(t){const e=this._ui=t;i.MANAGED_EVENTS.forEach((t=>{e.addEventListener(t,this._broadcastHandler)}))}_disposeUi(){t.Utils.isNull(this._ui)||i.MANAGED_EVENTS.forEach((t=>{this._ui.removeEventListener(t,this._broadcastHandler)}))}};__decorate([t.Watch({converter:t.PropertyConverters.Number})],r.prototype,"value",void 0),__decorate([t.Watch({converter:t.PropertyConverters.String})],r.prototype,"label",void 0),__decorate([t.Watch({converter:t.PropertyConverters.String})],r.prototype,"color",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Json})],r.prototype,"normalizedPolarCoords",void 0),r=__decorate([t.CustomElement({tagName:t.P+"-pie-slice"})],r),i.PacemPieSliceElement=r;const s=2*Math.PI,a=.5*Math.PI;let n=class PacemPieChartElement extends e.PacemItemsContainerElement{constructor(){super(),this.cutout=0,this.slicePadding=0,this._slices=new WeakMap,this._key=t.Utils.uniqueCode()}validate(t){return t instanceof r}viewActivatedCallback(){super.viewActivatedCallback(),this.draw()}propertyChangedCallback(e,i,r,s){if(super.propertyChangedCallback(e,i,r,s),"target"===e){this._g=null,this._div&&this._div.remove();const e=i;e&&(e.classList.remove(t.PCSS+"-chart-area"),e.innerHTML=""),this.draw()}else s||"cutout"!==e&&"items"!==e&&"slicePadding"!==e||this.draw()}get area(){return this._svg}disconnectedCallback(){this._div&&this._div.remove(),super.disconnectedCallback()}_ensureArea(){if(t.Utils.isNull(this._g)){let e=this.target||(this._div=document.createElement("div"));e.classList.add(t.PCSS+"-chart-area");let i=this._svg=document.createElementNS("http://www.w3.org/2000/svg","svg");i.setAttribute("pacem",""),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.setAttribute("viewBox","0 0 100 100"),i.classList.add(t.PCSS+"-pie-chart");let r=document.createElementNS("http://www.w3.org/2000/svg","defs"),s=this._g=document.createElementNS("http://www.w3.org/2000/svg","g");i.appendChild(r),i.appendChild(s),e.appendChild(i),this._div&&this.parentElement.insertBefore(e,this)}if(this.maskBasedRendering){if(t.Utils.isNull(this._mask)){let t=document.createElementNS("http://www.w3.org/2000/svg","mask");t.id="pie_mask_"+this._key;let e=document.createElementNS("http://www.w3.org/2000/svg","rect");e.setAttribute("x","0"),e.setAttribute("y","0"),e.setAttribute("width","100"),e.setAttribute("height","100"),e.setAttribute("fill","#fff");let i=this._mask=document.createElementNS("http://www.w3.org/2000/svg","circle");i.setAttribute("cx","50"),i.setAttribute("cy","50");const r=this._svg.firstElementChild;t.appendChild(e),t.appendChild(i),r.appendChild(t),this._g.setAttribute("mask",`url(#${t.id})`)}const e=50*this._safeCutout;this._mask.setAttribute("r",`${e}`)}else t.Utils.isNull(this._mask)||(this._svg.firstElementChild.innerHTML="",this._mask=null,this._g.removeAttribute("mask"));const e=this._safeSlicePaddingPixels;if(e>0){const i=(e/this._svg.getCTM().a).roundoff(),r=this._sliceMaskId,s=this._svg.firstElementChild;let a=s.querySelector(`#${r}`);t.Utils.isNull(a)?(a=document.createElementNS("http://www.w3.org/2000/svg","mask"),a.id=r,s.appendChild(a)):a.innerHTML="";const n=document.createElementNS("http://www.w3.org/2000/svg","path"),o=`M${50+i},0 H100 V100 H0 V0 H50 V50 h${i} Z`;n.setAttribute("d",o),n.setAttribute("fill","#fff"),a.appendChild(n)}return this._g}get _sliceMaskId(){return"pieslice_mask_"+this._key}get _safeCutout(){return Math.min(1,Math.max(0,this.cutout))||0}get _safeSlicePaddingPixels(){return Math.max(0,this.slicePadding??0)}_drawSlice(t,e,i,r){const a=e.value>.5*i?1:0,n=s*e.value/i,o=360*r/i,l=e.value>=i?49.9:50*(1+Math.sin(n)),h=50*(1-Math.cos(n)),c=this._safeCutout,d=50*c;t.style.fill=e.color,t.style.transform=`rotate(${o}deg)`,t.style.transformOrigin="50% 50%";const u=this.maskBasedRendering?`M50,50 V0 A50,50 0 ${a} 1 ${l} ${h} L50,50 Z`:`M50,0 A50,50 0 ${a} 1 ${l} ${h} l${(50-l)*(1-c)},${(50-h)*(1-c)} A${d},${d} 0 ${a} 0 50,${50-d} Z`;t.setAttribute("d",u),e.normalizedPolarCoords={radius:c+Math.SQRT1_2*(1-c),angle:Math.PI*o/180+n/2}}_isSliceOk(t){return!t.disabled}_padSlice(t){this._safeSlicePaddingPixels>0?t.setAttribute("mask",`url(#${this._sliceMaskId})`):t.removeAttribute("mask")}draw(){const e=this._ensureArea(),i=e.children.length,r=this._svg.parentElement;let s=0,a=0,n=0;if(t.Utils.isNullOrEmpty(this.items))e.innerHTML="",t.Utils.removeClass(r,"chart-has-data");else{t.Utils.addClass(r,"chart-has-data");for(let t of this.items)this._isSliceOk(t)&&(a+=t.value);if(a<=0)e.innerHTML="",t.Utils.removeClass(r,"chart-has-data");else for(let r of this.items){if(!this._isSliceOk(r))continue;let o;if(s>=i){const i=document.createElementNS("http://www.w3.org/2000/svg","g");i.setAttribute("class","chart-series "+t.PCSS+"-pie-slice"+(t.Utils.isNullOrEmpty(r.className)?"":" "+r.className)),o=document.createElementNS("http://www.w3.org/2000/svg","path"),i.appendChild(o),e.appendChild(i),r._assignUi(i),this._slices.set(i,r)}else o=e.children.item(s).firstElementChild;r.value>0?(this._drawSlice(o,r,a,n),this._padSlice(o),n+=r.value,o.removeAttribute("display")):o.setAttribute("display","none"),s++}}for(;s<e.children.length;){const t=this._slices,i=e.children.item(s);t.has(i)&&(t.get(i)._disposeUi(),t.delete(i)),e.removeChild(i)}}};__decorate([t.Watch({converter:t.PropertyConverters.Number})],n.prototype,"cutout",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Element})],n.prototype,"target",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Boolean})],n.prototype,"maskBasedRendering",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Number})],n.prototype,"slicePadding",void 0),__decorate([t.Debounce(!0)],n.prototype,"draw",null),n=__decorate([t.CustomElement({tagName:t.P+"-pie-chart"})],n),i.PacemPieChartElement=n}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={}));
|
|
6
|
+
var Pacem,__decorate=this&&this.__decorate||function(t,e,i,r){var s,a=arguments.length,n=a<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(n=(a<3?s(n):a>3?s(e,i,n):s(e,i))||n);return a>3&&n&&Object.defineProperty(e,i,n),n};!function(t){!function(e){!function(i){i.MANAGED_EVENTS=["keydown","keyup","click","dblclick","mouseover","mouseout","mouseenter","mouseleave","mousedown","mouseup","mousemove","contextmenu"];const r=864e5,s="pacem:chart-series:dataitem",a="pacem:chart-series:series";function n(t,e,i){i??=Math.min(o(t,e),10);const r=(e-t)/i,s=Math.pow(10,Math.floor(Math.log10(r))),a=[1,2,5,10].map((t=>t*s)).filter((t=>t>=r)).reduce(((t,e)=>Math.min(t,e)),Number.POSITIVE_INFINITY);return{min:Math.floor(t/a)*a,max:Math.ceil(e/a)*a,round:a}}function o(t,e){const i=e-t;if(!(i>0))return 2;const r=Math.floor(Math.log10(i)),s=Math.pow(10,-r);if(0!=r)return o(t*s,e*s);const a=t=>{const e=Math.floor(10*Math.abs(t));return(e+10-e%10).roundoff()},n=a(i);let h=10;0!==t&&(h=a(Math.abs(e)));const c=l(h,n);return 1===c?n:Math.max(c,10-c)}function l(t,e){return t<=0?e:l(e%t,t)}class ChartEvent extends t.CustomUIEvent{constructor(t,e,i){super(t,e,i)}}i.ChartEvent=ChartEvent;let h=class PacemChartSeriesElement extends e.PacemItemElement{get values(){return this.datasource}};__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.Json})],h.prototype,"datasource",void 0),__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.String})],h.prototype,"label",void 0),__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.String})],h.prototype,"color",void 0),__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.Boolean})],h.prototype,"datapoints",void 0),__decorate([t.Watch()],h.prototype,"_uiElements",void 0),h=__decorate([t.CustomElement({tagName:t.P+"-chart-series"})],h),i.PacemChartSeriesElement=h;const c="http://www.w3.org/2000/svg";class PacemSeriesChartElement extends e.PacemItemsContainerElement{constructor(){super(),this._itemPropertyChangedCallback=t=>{const e=t.detail.propertyName;"datasource"!==e&&"label"!==e&&"datapoints"!==e&&"cssClass"!==e&&"color"!==e||this.draw()},this._series=[],this._resizeHandler=t=>{this._size=t.detail,this.draw()},this._broadcastHandler=e=>{const i=e.currentTarget,r=t.CustomElementUtils.getAttachedPropertyValue(i,s);if(t.Utils.isNull(r))return;const n=this.getAnchorPoint(i),o=new ChartEvent("item"+e.type,{detail:{dataItem:r,anchorPoint:n}},e),l=t.CustomElementUtils.getAttachedPropertyValue(i,a);l instanceof h&&l.dispatchEvent(o),this.dispatchEvent(o)},this._key=t.Utils.uniqueCode()}validate(t){return t instanceof h}register(e){return!!super.register(e)&&(e.addEventListener(t.PropertyChangeEventName,this._itemPropertyChangedCallback,!1),!0)}unregister(e){return!!super.unregister(e)&&(e.removeEventListener(t.PropertyChangeEventName,this._itemPropertyChangedCallback,!1),!0)}propertyChangedCallback(e,i,r,s){if(super.propertyChangedCallback(e,i,r,s),"target"===e){this._div!=i&&this._div&&this._div.remove(),this._div=null,this._body=null;const e=i;e&&(e.classList.remove(t.PCSS+"-chart-area"),e.innerHTML=""),this._ensureResizer(),this.draw()}else if(!s)switch(e){case"items":this._databindAndDrawDebounced();break;case"datasource":this._databind();case"yAxisDensity":case"xAxisDensity":case"xAxisType":case"yAxisMax":case"xAxisPosition":case"yAxisFormat":this.draw()}}_databindAndDrawDebounced(){cancelAnimationFrame(this._handle),this._handle=requestAnimationFrame((()=>{this._databind(),this.draw()}))}_databind(){this._datasource=t.Utils.isNullOrEmpty(this.datasource)?this.items:this.datasource}disconnectedCallback(){this._div&&this._div.remove();const e=this._resizer;t.Utils.isNull(e)||(e.removeEventListener(t.Components.ResizeEventName,this._resizeHandler,!1),e.remove(),this._resizer=null),super.disconnectedCallback()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureResizer(),this._databind(),this.draw()}_ensureResizer(i=this.target||this._div){if(t.Utils.isNull(this._resizer)){const i=t.CustomElementUtils.findAncestorShell(this);(this._resizer=i.appendChild(new e.PacemResizeElement)).addEventListener(t.Components.ResizeEventName,this._resizeHandler,!1)}this._resizer.target=i}get chartSize(){return this._size}get chartSeries(){return this._series}get chartBody(){return this._body}get chartGrid(){return this._grid}get chartMask(){return this._mask}get chartKey(){return this._key}get chartContainer(){return this._div}assignUiBehaviors(e,r,n,o){const l=!t.Utils.isNull(t.CustomElementUtils.getAttachedPropertyValue(e,s)),h=t.Utils.extend({series:r.label,color:o||r.color},n);t.CustomElementUtils.setAttachedPropertyValue(e,s,h),t.CustomElementUtils.setAttachedPropertyValue(e,a,r),l||i.MANAGED_EVENTS.forEach((t=>{e.addEventListener(t,this._broadcastHandler)}))}disposeUiBehaviors(e){t.CustomElementUtils.deleteAttachedPropertyValue(e,s),t.CustomElementUtils.deleteAttachedPropertyValue(e,a),i.MANAGED_EVENTS.forEach((t=>{e.removeEventListener(t,this._broadcastHandler)}))}ensureChartContainer(){if(t.Utils.isNull(this._div)){let e=this._div=this.target||document.createElement("div");e.classList.add(t.PCSS+"-chart-area"),e!=this.target&&this.parentElement.insertBefore(e,this)}return this._div}ensureChartBody(e,i,r){if(t.Utils.isNull(this._body)){let i=this._body=document.createElementNS(c,"svg");i.setAttribute("pacem",""),i.setAttribute("class",t.PCSS+"-"+e+"-chart"),i.setAttribute("preserveAspectRatio","xMinYMax slice");const r=this._grid=document.createElementNS(c,"svg");r.setAttribute("pacem",""),r.setAttribute("class","chart-grid");let s=document.createElementNS(c,"defs"),a=this._mask=document.createElementNS(c,"mask"),n=document.createElementNS(c,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","100%"),n.setAttribute("height","100%");let o=document.createElementNS(c,"rect");o.setAttribute("y","0"),o.setAttribute("width","100%"),o.setAttribute("fill","#fff"),a.id="gnrc_mask_"+this._key,a.appendChild(n),a.appendChild(o),s.appendChild(a),i.appendChild(s),i.appendChild(r),this._div.appendChild(i)}return this._body}chartDataItemToPoint(e,i){switch(this.xAxisType||"string"){case"number":return{x:parseFloat(e.label),y:e.value};case"date":return{x:t.Utils.parseDate(e.label).valueOf(),y:e.value};case"string":return{x:i.findIndex((t=>t.label==e.label)),y:e.value};default:throw"Not supported."}}getVirtualGrid(e,i,s,a,o,l=this.xAxisType,h,c){const d=n(a,o,h),u=d.round;var m=[];for(let t=d.min;t<=d.max;t+=u)m.push(t.roundoff());let p=t.Utils.lang(this),v=null;const g=this.xAxisFormat;if(!t.Utils.isNullOrEmpty(g))switch(l){case"number":v=t=>Intl.NumberFormat(p,g).format(t);break;case"date":v=e=>Intl.DateTimeFormat(p,g).format(t.Utils.parseDate(e))}const y=function(e,i,s,a,n,o=10){const l="number"===i||"date"===i?a-s:Math.max(1,e.length-1);for(var h=[],c=1,d=o-1;d>1;d--)if(l%d==0){c=l/d;break}1===c&&l>o&&(c=l);const u="function"==typeof n?n:c>=r?t=>t.toLocaleDateString(n):t=>t.toLocaleTimeString(n),m="function"==typeof n?n:c<r?t=>t.toLocaleString(n):u,p="function"==typeof n?n:t=>t.toLocaleString(n);for(var v=0;v<=l;v+=c){let r;switch(i){case"string":if(v>=e.length)continue;r=e[v].label;break;case"number":r=p(s+v);break;case"date":r=(0==v?m:u)(t.Utils.parseDate(s+v));break;default:throw"Not supported."}h.push(r)}return h}(e,l,i,s,v??p,c);return{x:y,y:m}}wipeOut(t=this._series,e=0){for(var i=t.length-1;i>=e;i--)t[i].remove();t.splice(e)}buildLinearGradient(e,i=!1){const r=document.createElementNS(c,"linearGradient");r.id=this.chartKey+"_grad"+e+(i?"_inverted":""),i&&t.Utils.addClass(r,"bottom-up"),r.setAttribute("x1","0%"),r.setAttribute("x2","0%"),r.setAttribute("y1","0%"),r.setAttribute("y2","100%"),r.setAttribute("spreadMethod","pad");const s=document.createElementNS(c,"stop");s.setAttribute("offset","0%");const a=document.createElementNS(c,"stop");return a.setAttribute("offset","100%"),r.appendChild(s),r.appendChild(a),r}setGradientColor(t,e){for(let i=0;i<t.children.length;i++){const r=t.children.item(i);r instanceof SVGStopElement&&(r.style.stopColor=e)}}estimateYAxisLabelWidth(t){const e=this.formatYAxisLabel(t);return this.estimateLabelWidth(e)}estimateLabelWidth(e){const i=this._grid;if(t.Utils.isNull(i))throw new Error("Unable to estimate label without an underlying grid available.");const r=document.createElementNS(c,"text");r.textContent=e,i.appendChild(r);const s=t.Utils.offset(r);return r.remove(),s.width}formatYAxisLabel(e){const i=this.yAxisFormat;return t.Utils.isNullOrEmpty(i)?e.toString():Intl.NumberFormat(t.Utils.lang(this),i).format(e)}estimateXAxisLabelWidth(t){const e=this.formatXAxisLabel(t);return this.estimateLabelWidth(e)}formatXAxisLabel(e){const i=this.xAxisFormat,r=t.Utils.lang(this);switch(this.xAxisType){case"date":const s=t.Utils.Dates.parse(e);return t.Utils.isNullOrEmpty(i)?s.toLocaleString(r):Intl.DateTimeFormat(r,i).format(s);case"number":const a=e;return t.Utils.isNullOrEmpty(i)?a.toLocaleString(r):Intl.NumberFormat(r,i).format(a);default:return e}}draw(){this.drawSeries(this._datasource)}getAnchorPoint(e){const i=t.Utils.offset(e);return{x:i.left+.5*i.width,y:i.top+.5*i.height}}}__decorate([t.Watch({converter:t.PropertyConverters.Element})],PacemSeriesChartElement.prototype,"target",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PacemSeriesChartElement.prototype,"xAxisType",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PacemSeriesChartElement.prototype,"xAxisPosition",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"datasource",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"yAxisDensity",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"xAxisDensity",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"yAxisMin",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"yAxisMax",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"yAxisFormat",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"xAxisFormat",void 0),__decorate([t.Throttle(!0)],PacemSeriesChartElement.prototype,"draw",null),i.PacemSeriesChartElement=PacemSeriesChartElement}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){const i="http://www.w3.org/2000/svg";let r=class PacemColumnChartElement extends e.PacemSeriesChartElement{constructor(){super(...arguments),this.groupWidth=0}propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),"type"!==t&&"groupWidth"!==t||this.draw()}_safen(t=this.groupWidth){return Math.min(1,Math.max(t||.75,0))}drawSeries(e){if(!this.isReady||t.Utils.isNull(this.chartSize))return;this.ensureChartContainer();const r=this.type||"cluster",s=24;var a=this.chartSize;if(a.height<=s||a.width<=s)return;if(t.Utils.isNullOrEmpty(e)||e.every((e=>t.Utils.isNullOrEmpty(e.values))))return void this.wipeOut();const n=this.ensureChartBody("column",a.width,a.height);this.log(t.Logging.LogLevel.Debug,`Drawing ${r} chart.`);const o=this.xAxisType||"string";let l=this.yAxisMin??0,h=this.yAxisMax??0,c=0,d=0,u=0,m=1;const p={negative:[],positive:[]};for(let i of e){let e=i.values;if(!t.Utils.isNullOrEmpty(e)){let i=0;for(let r of e){p.positive[i]=p.positive[i]||0,p.negative[i]=p.negative[i]||0;let s=this.chartDataItemToPoint(r,e);t.Utils.isNull(this.yAxisMin)&&(l=Math.min(l,s.y)),t.Utils.isNull(this.yAxisMax)&&(h=Math.max(h,s.y)),c=Math.min(c,s.x),d=Math.max(d,s.x),s.y>0?p.positive[i]+=s.y:s.y<0&&(p.negative[i]+=s.y),i++}u=Math.max(u,e.length)}}const v="stack"===r;v&&(t.Utils.isNull(this.yAxisMin)&&(l=Math.min.apply(null,p.negative)),t.Utils.isNull(this.yAxisMax)&&(h=Math.max.apply(null,p.positive))),0===d&&d===c&&(d=1);const g=(d-c)/u,y=.5*g,_=g*this._safen(this.groupWidth),C=.5*_,f=e.find((e=>!t.Utils.isNullOrEmpty(e.values))),b=this.getVirtualGrid(f.values,c-y,d+y,l,h,o,this.yAxisDensity,this.xAxisDensity),x=b.y[b.y.length-1],A=b.y[0];if(x===A)return;const E=b.y.reduce(((t,e)=>Math.max(t,this.estimateYAxisLabelWidth(e)+12)),s),w=a.width-E-s,N=a.height-48,S=N*(1-(x-A-(h-l))/(x-A)),P=N*(x-h)/(x-A);m=w/S,n.setAttribute("height",a.height.toString()),n.setAttribute("width",a.width.toString()),n.setAttribute("viewBox",`0 0 ${a.width} ${a.height}`);let M=0;const U=100*m/(d-c),k=100/(h-l),$=2400/S,L=this.chartSeries,W=this.chartGrid,D=(y-c)*U,O=(t,e)=>{const i=this.chartDataItemToPoint(t,e);return{x:D+2*i.x*D,y:i.y*k}};var T=new Array(u);for(let r of e){let s,a,n,o;if(L.length>M)s=L[M],a=s.firstElementChild.firstElementChild,n=s.firstElementChild.lastElementChild,o=s.lastElementChild;else{s=document.createElementNS(i,"svg"),s.setAttribute("pacem",""),W.insertAdjacentElement("afterend",s);const t=document.createElementNS(i,"defs");t.appendChild(a=this.buildLinearGradient(M)),t.appendChild(n=this.buildLinearGradient(M,!0)),s.appendChild(t),s.appendChild(o=document.createElementNS(i,"g")),L.push(s)}var B="chart-series series-fill";t.Utils.isNullOrEmpty(r.className)||(B+=" "+r.className),s.setAttribute("class",B),s.setAttribute("x",E.toString()),s.setAttribute("y",P.toString()),s.setAttribute("width",w.toString()),s.setAttribute("height",(S+48).toString());const l=r.values,h=t=>{for(;t>=o.children.length;)o.appendChild(document.createElementNS(i,"rect"));const e=o.children.item(t);e.style.stroke=r.color;const s=l[t].value<0?n:a;return this.setGradientColor(s,r.color),e.style.fill=`url(#${s.id})`,e},c=10,d=(t,e,i,r=e)=>{const s=-Math.max(e.y,i.y),a=Math.abs(i.y-e.y),n=()=>{t.setAttribute("y",s.toFixed(c)),t.setAttribute("height",a.toFixed(c))};t.hasAttribute("y")?n():(t.setAttribute("y","-"+r.y.toFixed(c)),t.setAttribute("height","0"),requestAnimationFrame(n))};if(!t.Utils.isNullOrEmpty(l)){const i=O({value:0,label:l[0].label},l);if(v){const e=C*U,s=(_*U).toFixed(c);for(let a=0;a<l.length;a++){const n=l[a];t.Utils.isNullOrEmpty(T[a])&&(T[a]={positive:0,negative:0});const o=T[a];let u=o.positive,m=o.negative;const p=n.value<0,v=p?m:u+n.value,g=p?m+n.value:u,y=O({label:n.label,value:v},l),_=O({label:n.label,value:g},l),C=y.x-e,f=h(a);this.assignUiBehaviors(f,r,n),f.setAttribute("x",C.toFixed(c)),f.setAttribute("width",s),d(f,_,y,i),p?o.negative=g:o.positive=v}}else{const t=C*U,s=2*t/e.length,a=s.toFixed(c);for(let e=0;e<l.length;e++){const n=l[e],o=O(n,l),u=o.x-t+s*M,m=h(e);this.assignUiBehaviors(m,r,n),m.setAttribute("x",u.toFixed(c)),m.setAttribute("width",a),d(m,i,o)}}}for(let t=o.children.length-1;t>=l?.length;t--){const e=o.children.item(t);this.disposeUiBehaviors(e),e.remove()}M++}this.wipeOut(L,M);const H=`0 ${-(h*k+$)} ${100*m} ${100+2*$}`;for(var I of L)I.setAttribute("viewBox",H);let V,G=this.chartMask.children.item(1);if(G.setAttribute("x",(0).toString()),G.setAttribute("height",(a.height-s).toString()),W.setAttribute("viewBox",`0 0 ${a.width} ${a.height}`),b.x.length<1||b.y.length<=1){for(let t=W.children.length-1;t>=0;t--)W.children.item(t).remove();return}W.children.length>0?V=W.children.item(0):(V=document.createElementNS(i,"path"),W.appendChild(V));let z=0,F=(t,e,r,s)=>{const a=t+1;let n;return W.children.length<=a?(n=document.createElementNS(i,"text"),W.appendChild(n)):n=W.children.item(a),n.textContent=s,n.setAttribute("x",e.toString()),n.setAttribute("y",r.toString()),n},R=`M${E},24 v${N}`,Y=0;const q=w/b.x.length,J=N/(b.y.length-1);if("none"!==this.xAxisPosition){const t=.5*q+E;for(var j of b.x){let e=t+Y*q;if("top"===this.xAxisPosition){R+=` M${e},24 v-6`;let t=F(z++,e,0,j);t.setAttribute("text-anchor","middle"),t.setAttribute("alignment-baseline","hanging")}else{let t=N+s;R+=` M${e},${t} v6`,F(z++,e,t+s,j).setAttribute("text-anchor","middle")}Y++}}for(var X of(Y=0,b.y)){const t=N+s-Y*J,e=E-6;R+=` M${e},${t} H${w+E}`,F(z++,e-6,t,this.formatYAxisLabel(X)).setAttribute("text-anchor","end"),Y++}V.setAttribute("d",R);for(let t=W.children.length-1;t>z;t--)W.children.item(t).remove()}};__decorate([t.Watch({converter:t.PropertyConverters.String})],r.prototype,"type",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Number})],r.prototype,"groupWidth",void 0),r=__decorate([t.CustomElement({tagName:t.P+"-column-chart"})],r),e.PacemColumnChartElement=r}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){function i(e,i,r){let s=e,a=e;const n=t.Utils.isNull(i),o=t.Utils.isNull(r);if(!n||!o){const t=3;let l,h;n||(l=(e.y-i.y)/(e.x-i.x)),o||(h=(r.y-e.y)/(r.x-e.x));const c=((h||l||0)+(l||h||0))/2,d=n?0:(e.x-i.x)/t,u=o?0:(r.x-e.x)/t;s={x:e.x-d,y:e.y-d*c},a={x:e.x+u,y:e.y+u*c}}return{c0:s,c1:a}}const r=t.CustomElementUtils.getAttachedPropertyValue,s=t.CustomElementUtils.setAttachedPropertyValue,a=(t.CustomElementUtils.deleteAttachedPropertyValue,"pacem:chart-series:area"),n="http://www.w3.org/2000/svg";let o=class PacemChartElement extends e.PacemSeriesChartElement{constructor(){super(...arguments),this.#t=!1,this._enterHandler=t=>{this.#t=!0},this._leaveHandler=t=>{this.#t=!1},this._moveHandler=t=>{this.#t},this._chartFillSeries=[]}_getVirtualGrid(t,e,i,r,s,a=this.xAxisType,n,o){return super.getVirtualGrid(t,e,i,r,s,a,n,o)}_wipe(t=this.chartSeries,e=0){super.wipeOut(t,e)}viewActivatedCallback(){super.viewActivatedCallback(),this._setupBehavior()}disconnectedCallback(){this._dismantleBehavior(),super.disconnectedCallback()}propertyChangedCallback(t,e,i,r){switch(super.propertyChangedCallback(t,e,i,r),t){case"type":case"aspectRatio":this.draw()}}_setupBehavior(){this.addEventListener("mouseenter",this._enterHandler,!1),this.addEventListener("mouseleave",this._enterHandler,!1),this.addEventListener("mousemove",this._moveHandler,!1)}_dismantleBehavior(){this.removeEventListener("mouseenter",this._enterHandler,!1),this.removeEventListener("mouseleave",this._leaveHandler,!1),this.removeEventListener("mousemove",this._moveHandler,!1)}#t;_buildLinearGradient(t){return super.buildLinearGradient(t)}_setGradientColor(t,e){super.setGradientColor(t,e)}drawSeries(e){if(!this.isReady||t.Utils.isNull(this.chartSize))return;this.ensureChartContainer();const o=this.type||"line",l=24;var h=this.chartSize;if(h.height<=l||h.width<=l)return;if(t.Utils.isNullOrEmpty(e)||e.every((e=>t.Utils.isNullOrEmpty(e.values))))return void this._wipe();const c=this.ensureChartBody("line",h.width,h.height);this.log(t.Logging.LogLevel.Debug,`Drawing ${o} chart.`);const d=this.xAxisType||"string";let u=this.yAxisMin??Number.NaN,m=this.yAxisMax??Number.NaN,p=Number.NaN,v=Number.NaN,g=1;for(let i of e){let e=i.values;if(e&&e.length){let i=0;for(let r of e){let s=this.chartDataItemToPoint(r,e);t.Utils.isNull(this.yAxisMin)&&(u=isNaN(u)?s.y:Math.min(u,s.y)),t.Utils.isNull(this.yAxisMax)&&(m=isNaN(m)?s.y:Math.max(m,s.y)),0===i?p=isNaN(p)?s.x:Math.min(p,s.x):i===e.length-1&&(v=isNaN(v)?s.x:Math.max(v,s.x)),i++}}}const y=e.find((e=>!t.Utils.isNullOrEmpty(e.values))),_=this._getVirtualGrid(y.values,p,v,u,m,d,this.yAxisDensity,this.xAxisDensity),C=_.y[_.y.length-1],f=_.y[0];if(C===f)return;const b=_.y.reduce(((t,e)=>Math.max(t,this.estimateYAxisLabelWidth(e)+12)),l),x=.5*_.x.reduce(((t,e)=>Math.max(t,this.estimateXAxisLabelWidth(e))),l),A=Math.max(x,b),E=x,w=h.width-A-E,N=h.height-48,S=N*(1-(C-f-(m-u))/(C-f)),P=N*(C-m)/(C-f);("number"!==d||"monometric"!==this.aspectRatio&&"logaritmic"!==this.aspectRatio)&&(g=w/S,c.setAttribute("height",h.height.toString()),c.setAttribute("width",h.width.toString())),c.setAttribute("viewBox",`0 0 ${h.width} ${h.height}`);let M=0;const U=100*g/(v-p),k=100/(m-u),$=2400/S,L=(t,e)=>{let i=this.chartDataItemToPoint(t,e);return i.y*=k,i.x=(i.x-p)*U,i},W=this.chartSeries,D=this._chartFillSeries,O=this.chartGrid,T="spline"===o||"splinearea"===o;for(let l of e){let e,h,d;if(W.length>M)e=W[M],h=D[M],d=h.firstElementChild.firstElementChild;else{e=document.createElementNS(n,"svg"),e.setAttribute("pacem",""),c.appendChild(e),h=document.createElementNS(n,"svg"),h.setAttribute("pacem",""),c.insertBefore(h,c.children.item(M+2));const t=document.createElementNS(n,"defs");t.appendChild(d=this._buildLinearGradient(M)),h.appendChild(t),h.appendChild(document.createElementNS(n,"path")),D.push(h),e.appendChild(document.createElementNS(n,"path")),W.push(e)}let m="chart-series";const p="area"===o||"splinearea"===o;t.Utils.isNullOrEmpty(l.className)||(m+=" "+l.className),[e,h].forEach((t=>{t.setAttribute("class",m),t.setAttribute("x",A.toString()),t.setAttribute("y",P.toString()),t.setAttribute("width",w.toString()),t.setAttribute("height",(S+48).toString())})),t.Utils.addClass(h,t.PCSS+"-inert");let v=h.children.item(1),g=e.firstElementChild;g.style.stroke=l.color,v.style.stroke=g.style.fill="none",this._setGradientColor(d,l.color),v.style.fill=`url(#${d.id})`,v.style.display=p?"":"none";let y="",_=l.values;if(_&&_.length){const o=(t,i,r,s,a)=>{const o=i+1;let l;e.children.length>o?l=e.children.item(o):(l=document.createElementNS(n,"line"),l.setAttribute("class","circle"),e.appendChild(l));const h=t.x.toString(),c=(-t.y).toString();l.setAttribute("x1",h),l.setAttribute("y1",c),l.setAttribute("x2",h),l.setAttribute("y2",c),l.style.stroke=a,this.assignUiBehaviors(l,r,s,a)},h=()=>{const t=l.datapoints?_.length+1:1;for(let r=e.children.length-1;r>=t;r--){var i=e.children.item(r);this.disposeUiBehaviors(i),i.remove()}};if(T){let e,n,h;for(let c=0;c<_.length;c++){const d=_[c];if(isNaN(d.value))continue;let u;n||(n=L(d,_)),T&&c<_.length-1&&(u=L(_[c+1],_));let m=r(l,a,0);m+=d.value,s(l,a,m);var B=i(n,e,u);y+=t.Utils.isNullOrEmpty(y)?`M${n.x},${-n.y} `:`C${h.x},${-h.y} ${B.c0.x},${-B.c0.y} ${n.x},${-n.y} `,l.datapoints&&o(n,c,l,d,l.color),e=n,n=u,h=B.c1}}else{let e=0;for(let i of _){if(isNaN(i.value))continue;const n=L(i,_);let h=r(l,a,0);h+=i.value,s(l,a,h),y+=t.Utils.isNullOrEmpty(y)?`M${n.x},${-n.y} `:`L${n.x},${-n.y} `,l.datapoints&&o(n,e,l,i,l.color),e++}}h()}g.setAttribute("d",y),v.setAttribute("d",y+`V${-u*k} H0 Z`),M++}this._wipe(D,M),this._wipe(W,M);const H=`0 ${-(m*k+$)} ${100*g} ${100+2*$}`;for(var I of W.concat(D))I.setAttribute("viewBox",H);let V,G=this.chartMask.children.item(1);if(G.setAttribute("x",(0).toString()),G.setAttribute("height",(h.height-l).toString()),O.setAttribute("viewBox",`0 0 ${h.width} ${h.height}`),_.x.length<=1||_.y.length<=1){for(let t=O.children.length-1;t>=0;t--)O.children.item(t).remove();return}O.children.length>0?V=O.children.item(0):(V=document.createElementNS(n,"path"),O.appendChild(V));let z=0,F=(t,e,i,r)=>{const s=t+1;let a;return O.children.length<=s?(a=document.createElementNS(n,"text"),O.appendChild(a)):a=O.children.item(s),a.textContent=r,a.setAttribute("x",e.toString()),a.setAttribute("y",i.toString()),a},R=`M${A},24 v${N}`,Y=0;const q=w/(_.x.length-1),J=N/(_.y.length-1);if("none"!==this.xAxisPosition)for(var j of _.x){const t=A+Y*q;if("top"===this.xAxisPosition){R+=` M${t},24 v-6`;let e=F(z++,t,0,j);e.setAttribute("text-anchor","middle"),e.setAttribute("alignment-baseline","hanging")}else{let e=N+l;R+=` M${t},${e} v6`,F(z++,t,e+l,j).setAttribute("text-anchor","middle")}Y++}for(var X of(Y=0,_.y)){const t=N+l-Y*J,e=A-6;R+=` M${e},${t} H${w+A}`,F(z++,e-6,t,this.formatYAxisLabel(X)).setAttribute("text-anchor","end"),Y++}V.setAttribute("d",R);for(let t=O.children.length-1;t>z;t--)O.children.item(t).remove()}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],o.prototype,"type",void 0),__decorate([t.Watch({converter:t.PropertyConverters.String})],o.prototype,"aspectRatio",void 0),o=__decorate([t.CustomElement({tagName:t.P+"-chart"})],o),e.PacemChartElement=o}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(i){let r=class PacemPieSliceElement extends e.PacemItemElement{constructor(){super(...arguments),this._broadcastHandler=t=>{this.emit(t)}}findContainer(){return t.CustomElementUtils.findAncestorOfType(this,n)}get chart(){return this.container}getCenterOfMass(){const e=this.chart&&this.chart.area;if(t.Utils.isNull(e))return null;const i=t.Utils.offset(e),r=i.width/2+i.left,s=i.top+i.height/2,n=.5*Math.min(i.width,i.height),o=this.normalizedPolarCoords,l=a-o.angle;return{y:s-n*o.radius*Math.sin(l),x:r+n*o.radius*Math.cos(l)}}propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),!r&&this.chart&&"normalizedPolarCoords"!=t&&this.chart.draw()}_assignUi(t){const e=this._ui=t;i.MANAGED_EVENTS.forEach((t=>{e.addEventListener(t,this._broadcastHandler)}))}_disposeUi(){t.Utils.isNull(this._ui)||i.MANAGED_EVENTS.forEach((t=>{this._ui.removeEventListener(t,this._broadcastHandler)}))}};__decorate([t.Watch({converter:t.PropertyConverters.Number})],r.prototype,"value",void 0),__decorate([t.Watch({converter:t.PropertyConverters.String})],r.prototype,"label",void 0),__decorate([t.Watch({converter:t.PropertyConverters.String})],r.prototype,"color",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Json})],r.prototype,"normalizedPolarCoords",void 0),r=__decorate([t.CustomElement({tagName:t.P+"-pie-slice"})],r),i.PacemPieSliceElement=r;const s=2*Math.PI,a=.5*Math.PI;let n=class PacemPieChartElement extends e.PacemItemsContainerElement{constructor(){super(),this.cutout=0,this.slicePadding=0,this._slices=new WeakMap,this._key=t.Utils.uniqueCode()}validate(t){return t instanceof r}viewActivatedCallback(){super.viewActivatedCallback(),this.draw()}propertyChangedCallback(e,i,r,s){if(super.propertyChangedCallback(e,i,r,s),"target"===e){this._g=null,this._div&&this._div.remove();const e=i;e&&(e.classList.remove(t.PCSS+"-chart-area"),e.innerHTML=""),this.draw()}else s||"cutout"!==e&&"items"!==e&&"slicePadding"!==e||this.draw()}get area(){return this._svg}disconnectedCallback(){this._div&&this._div.remove(),super.disconnectedCallback()}_ensureArea(){if(t.Utils.isNull(this._g)){let e=this.target||(this._div=document.createElement("div"));e.classList.add(t.PCSS+"-chart-area");let i=this._svg=document.createElementNS("http://www.w3.org/2000/svg","svg");i.setAttribute("pacem",""),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.setAttribute("viewBox","0 0 100 100"),i.classList.add(t.PCSS+"-pie-chart");let r=document.createElementNS("http://www.w3.org/2000/svg","defs"),s=this._g=document.createElementNS("http://www.w3.org/2000/svg","g");i.appendChild(r),i.appendChild(s),e.appendChild(i),this._div&&this.parentElement.insertBefore(e,this)}if(this.maskBasedRendering){if(t.Utils.isNull(this._mask)){let t=document.createElementNS("http://www.w3.org/2000/svg","mask");t.id="pie_mask_"+this._key;let e=document.createElementNS("http://www.w3.org/2000/svg","rect");e.setAttribute("x","0"),e.setAttribute("y","0"),e.setAttribute("width","100"),e.setAttribute("height","100"),e.setAttribute("fill","#fff");let i=this._mask=document.createElementNS("http://www.w3.org/2000/svg","circle");i.setAttribute("cx","50"),i.setAttribute("cy","50");const r=this._svg.firstElementChild;t.appendChild(e),t.appendChild(i),r.appendChild(t),this._g.setAttribute("mask",`url(#${t.id})`)}const e=50*this._safeCutout;this._mask.setAttribute("r",`${e}`)}else t.Utils.isNull(this._mask)||(this._svg.firstElementChild.innerHTML="",this._mask=null,this._g.removeAttribute("mask"));const e=this._safeSlicePaddingPixels;if(e>0){const i=(e/this._svg.getCTM().a).roundoff(),r=this._sliceMaskId,s=this._svg.firstElementChild;let a=s.querySelector(`#${r}`);t.Utils.isNull(a)?(a=document.createElementNS("http://www.w3.org/2000/svg","mask"),a.id=r,s.appendChild(a)):a.innerHTML="";const n=document.createElementNS("http://www.w3.org/2000/svg","path"),o=`M${50+i},0 H100 V100 H0 V0 H50 V50 h${i} Z`;n.setAttribute("d",o),n.setAttribute("fill","#fff"),a.appendChild(n)}return this._g}get _sliceMaskId(){return"pieslice_mask_"+this._key}get _safeCutout(){return Math.min(1,Math.max(0,this.cutout))||0}get _safeSlicePaddingPixels(){return Math.max(0,this.slicePadding??0)}_drawSlice(t,e,i,r){const a=e.value>.5*i?1:0,n=s*e.value/i,o=360*r/i,l=e.value>=i?49.9:50*(1+Math.sin(n)),h=50*(1-Math.cos(n)),c=this._safeCutout,d=50*c;t.style.fill=e.color,t.style.transform=`rotate(${o}deg)`,t.style.transformOrigin="50% 50%";const u=this.maskBasedRendering?`M50,50 V0 A50,50 0 ${a} 1 ${l} ${h} L50,50 Z`:`M50,0 A50,50 0 ${a} 1 ${l} ${h} l${(50-l)*(1-c)},${(50-h)*(1-c)} A${d},${d} 0 ${a} 0 50,${50-d} Z`;t.setAttribute("d",u),e.normalizedPolarCoords={radius:c+Math.SQRT1_2*(1-c),angle:Math.PI*o/180+n/2}}_isSliceOk(t){return!t.disabled}_padSlice(t){this._safeSlicePaddingPixels>0?t.setAttribute("mask",`url(#${this._sliceMaskId})`):t.removeAttribute("mask")}draw(){const e=this._ensureArea(),i=e.children.length,r=this._svg.parentElement;let s=0,a=0,n=0;if(t.Utils.isNullOrEmpty(this.items))e.innerHTML="",t.Utils.removeClass(r,"chart-has-data");else{t.Utils.addClass(r,"chart-has-data");for(let t of this.items)this._isSliceOk(t)&&(a+=t.value);if(a<=0)e.innerHTML="",t.Utils.removeClass(r,"chart-has-data");else for(let r of this.items){if(!this._isSliceOk(r))continue;let o;if(s>=i){const i=document.createElementNS("http://www.w3.org/2000/svg","g");i.setAttribute("class","chart-series "+t.PCSS+"-pie-slice"+(t.Utils.isNullOrEmpty(r.className)?"":" "+r.className)),o=document.createElementNS("http://www.w3.org/2000/svg","path"),i.appendChild(o),e.appendChild(i),r._assignUi(i),this._slices.set(i,r)}else o=e.children.item(s).firstElementChild;r.value>0?(this._drawSlice(o,r,a,n),this._padSlice(o),n+=r.value,o.removeAttribute("display")):o.setAttribute("display","none"),s++}}for(;s<e.children.length;){const t=this._slices,i=e.children.item(s);t.has(i)&&(t.get(i)._disposeUi(),t.delete(i)),e.removeChild(i)}}};__decorate([t.Watch({converter:t.PropertyConverters.Number})],n.prototype,"cutout",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Element})],n.prototype,"target",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Boolean})],n.prototype,"maskBasedRendering",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Number})],n.prototype,"slicePadding",void 0),__decorate([t.Debounce(!0)],n.prototype,"draw",null),n=__decorate([t.CustomElement({tagName:t.P+"-pie-chart"})],n),i.PacemPieChartElement=n}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={}));
|
package/dist/js/pacem-cms.d.ts
CHANGED
package/dist/js/pacem-cms.js
CHANGED
package/dist/js/pacem-cms.min.js
CHANGED
package/dist/js/pacem-core.d.ts
CHANGED
package/dist/js/pacem-core.js
CHANGED
package/dist/js/pacem-fx.d.ts
CHANGED
package/dist/js/pacem-fx.js
CHANGED
package/dist/js/pacem-fx.min.js
CHANGED
package/dist/js/pacem-logging.js
CHANGED
package/dist/js/pacem-maps.d.ts
CHANGED
package/dist/js/pacem-maps.js
CHANGED
package/dist/js/pacem-media.d.ts
CHANGED
package/dist/js/pacem-media.js
CHANGED
package/dist/js/pacem-plus.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.51.5-
|
|
2
|
+
* pacem v0.51.5-binet (https://js.pacem.it)
|
|
3
3
|
* Copyright 2025 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
@@ -53,6 +53,8 @@ declare namespace Pacem.Components.Plus {
|
|
|
53
53
|
private _onCommand;
|
|
54
54
|
private _slotchangeHandler;
|
|
55
55
|
private _resetLayout;
|
|
56
|
+
private _toggleBtn;
|
|
57
|
+
private _toggleIcon;
|
|
56
58
|
viewActivatedCallback(): void;
|
|
57
59
|
propertyChangedCallback(name: string, old: any, val: any, first?: boolean): void;
|
|
58
60
|
disconnectedCallback(): void;
|
package/dist/js/pacem-plus.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.51.5-
|
|
2
|
+
* pacem v0.51.5-binet (https://js.pacem.it)
|
|
3
3
|
* Copyright 2025 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
@@ -175,7 +175,6 @@ var Pacem;
|
|
|
175
175
|
retval.setAttribute('slot', 'button');
|
|
176
176
|
retval.className = `${Pacem.PCSS}-margin margin-0 button-flat`;
|
|
177
177
|
const icon = this.#icon = new Components.UI.PacemIconElement();
|
|
178
|
-
icon.icon = this.icon;
|
|
179
178
|
retval.appendChild(icon);
|
|
180
179
|
this.appendChild(retval);
|
|
181
180
|
return this.#btn = retval;
|
|
@@ -234,6 +233,20 @@ var Pacem;
|
|
|
234
233
|
if (!Pacem.Utils.isNull(btn) && !Pacem.Utils.isNull(balloon)) {
|
|
235
234
|
balloon.target = btn;
|
|
236
235
|
}
|
|
236
|
+
this._toggleBtn();
|
|
237
|
+
this._toggleIcon();
|
|
238
|
+
}
|
|
239
|
+
_toggleBtn(disabled = this.disabled) {
|
|
240
|
+
const btn = this.#btn;
|
|
241
|
+
if (!Pacem.Utils.isNull(btn) && btn instanceof Components.PacemElement) {
|
|
242
|
+
btn.disabled = disabled;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
_toggleIcon(icon = this.icon) {
|
|
246
|
+
const iconEl = this.#icon;
|
|
247
|
+
if (!Pacem.Utils.isNull(iconEl)) {
|
|
248
|
+
iconEl.icon = icon;
|
|
249
|
+
}
|
|
237
250
|
}
|
|
238
251
|
viewActivatedCallback() {
|
|
239
252
|
super.viewActivatedCallback();
|
|
@@ -242,8 +255,15 @@ var Pacem;
|
|
|
242
255
|
}
|
|
243
256
|
propertyChangedCallback(name, old, val, first) {
|
|
244
257
|
super.propertyChangedCallback(name, old, val, first);
|
|
245
|
-
if (!first
|
|
246
|
-
|
|
258
|
+
if (!first) {
|
|
259
|
+
switch (name) {
|
|
260
|
+
case 'icon':
|
|
261
|
+
this._toggleIcon(val);
|
|
262
|
+
break;
|
|
263
|
+
case 'disabled':
|
|
264
|
+
this._toggleBtn(val);
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
247
267
|
}
|
|
248
268
|
}
|
|
249
269
|
disconnectedCallback() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* pacem v0.51.5-
|
|
2
|
+
* pacem v0.51.5-binet (https://js.pacem.it)
|
|
3
3
|
* Copyright 2025 Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
var Pacem,__decorate=this&&this.__decorate||function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};!function(e){!function(t){!function(a){let s=class PacemCarouselElement extends t.UI.PacemAdaptedIterativeElement{constructor(){super(...arguments),this.interval=4e3}};__decorate([e.ViewChild(e.P+"-adapter")],s.prototype,"adapter",void 0),__decorate([e.ViewChild(e.P+"-slideshow")],s.prototype,"slideshow",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Number})],s.prototype,"interval",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],s.prototype,"pausable",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-carousel",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-repeater datasource="{{ :host.datasource }}">\n <${e.P}-slideshow class="${e.PCSS}-carousel" adapter="{{ ::adapter }}" index="{{ :host.index, twoway }}" on-load="this.focus()">\n\n <template>\n\n <${e.P}-slide class="${e.PCSS}-carousel-item" css-class="{{ { '${e.PCSS}-carousel-previous': :host.isPrevious(^index, ::slideshow.index), '${e.PCSS}-carousel-next': :host.isNext(^index, ::slideshow.index), '${e.PCSS}-carousel-focus': ^index === ::slideshow.index } }}">\n <${e.P}-a href="{{ ^item.url }}">\n <${e.P}-img disabled="{{ !:host.isCloseTo(^index, ::slideshow.index) }}" class="${e.PCSS}-carousel-splash" adapt="cover" src="{{ ^item.image }}"></${e.P}-img>\n <div class="${e.PCSS}-carousel-content">\n <div class="${e.PCSS}-carousel-caption">\n <h3><${e.P}-text text="{{ ^item.title }}"></${e.P}-text></h3>\n <${e.P}-panel class="paragraph" content="{{ ^item.content }}"></${e.P}-panel>\n </div>\n </div>\n </${e.P}-a>\n </${e.P}-slide>\n\n </template>\n </${e.P}-slideshow>\n \n </${e.P}-repeater><${e.P}-adapter pausable="{{ :host.pausable }}" class="${e.PCSS}-carousel-adapter" interval="{{ :host.interval }}"></${e.P}-adapter>`})],s),a.PacemCarouselElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){class PacemContextMenuItemElement extends t.PacemItemElement{connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-context-menuitem")}propertyChangedCallback(e,t,a,s){super.propertyChangedCallback(e,t,a,s);const o=this.container;o instanceof n&&o.refresh()}}a.PacemContextMenuItemElement=PacemContextMenuItemElement;let s=class PacemContextMenuItemCommandElement extends PacemContextMenuItemElement{createMenuItemElement(){const e=new t.UI.PacemButtonElement;return e.commandArgument=this.commandArgument,e.commandName=this.commandName,e.textContent=this.caption,e.iconGlyph=this.iconGlyph,e.confirmationDialog=this.confirmationDialog,e.confirmationMessage=this.confirmationMessage,e.tooltip=this.tooltip,e.disabled=this.disabled,e}};__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"commandName",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"caption",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"tooltip",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"iconGlyph",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"confirmationMessage",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Element})],s.prototype,"confirmationDialog",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Json})],s.prototype,"commandArgument",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-context-menuitem-command"})],s),a.PacemContextMenuItemCommandElement=s;let o=class PacemContextMenuItemSeparatorElement extends PacemContextMenuItemElement{createMenuItemElement(){const e=document.createElement("hr");return e.style.pointerEvents="none",e}};o=__decorate([e.CustomElement({tagName:e.P+"-context-menuitem-separator"})],o),a.PacemContextMenuItemSeparatorElement=o;let n=class PacemContextMenuElement extends t.PacemItemsContainerElement{constructor(){super(...arguments),this._dispatchCommand=t=>{e.avoidHandler(t),this._onCommand(new e.CommandEvent({commandName:t.detail.commandName,commandArgument:t.detail.commandArgument??this.commandArgument}))},this._slotchangeHandler=e=>{this._resetLayout()},this._attributeChangeHandler=e=>this._refreshMenuItems,this._mouseupHandler=t=>{const a=this._ensureBalloon();e.Utils.isNull(a)||a.popout()}}validate(e){return e instanceof PacemContextMenuItemElement}#e;#t;#a;_ensureButton(){if(!e.Utils.isNull(this.#e))return this.#e;const a=this._slot;if(e.Utils.isNull(a))return null;const s=this._lookForAButton();if(!e.Utils.isNull(s))return this.#e=s;const o=new t.UI.PacemButtonElement;o.setAttribute("slot","button"),o.className=`${e.PCSS}-margin margin-0 button-flat`;const n=this.#t=new t.UI.PacemIconElement;return n.icon=this.icon,o.appendChild(n),this.appendChild(o),this.#e=o}_lookForAButton(){const t=this._slot;if(e.Utils.isNull(t))return null;const a=t.assignedElements({flatten:!0});return e.Utils.isNullOrEmpty(a)?null:a[0]}_ensureBalloon(){let a=this.#a;if(!e.Utils.isNull(a))return a;const s=e.CustomElementUtils.findAncestorShell(this);return e.Utils.isNull(s)?null:(a=new t.UI.PacemBalloonElement,a.options={trigger:t.UI.BalloonTrigger.Click,position:t.UI.BalloonPosition.HorizontalAuto,align:t.UI.BalloonAlignment.Auto,autoAdjust:!0},a.addEventListener(e.CommandEventName,this._dispatchCommand,!1),a.className=`${e.PCSS}-contextmenu`,s.appendChild(a),this.#a=a)}register(t){const a=super.register(t);return a&&(t.addEventListener(e.AttributeChangeEventName,this._attributeChangeHandler,!1),this._refreshMenuItems()),a}unregister(t){const a=super.unregister(t);return a&&(t.removeEventListener(e.AttributeChangeEventName,this._attributeChangeHandler,!1),this._refreshMenuItems()),a}_onCommand(t){this.dispatchEvent(new CustomEvent(e.CommandEventName,{detail:t.detail,cancelable:!0,bubbles:!0})),this.dispatchEvent(new CustomEvent(t.detail.commandName.toLowerCase(),{detail:t.detail.commandArgument,cancelable:!0,bubbles:!0}))}_resetLayout(){const t=this._ensureButton(),a=this._ensureBalloon();e.Utils.isNull(t)||e.Utils.isNull(a)||(a.target=t)}viewActivatedCallback(){super.viewActivatedCallback(),this._resetLayout(),this._slot.addEventListener("slotchange",this._slotchangeHandler,!1)}propertyChangedCallback(t,a,s,o){super.propertyChangedCallback(t,a,s,o),o||"icon"!==t||e.Utils.isNull(this.#t)||(this.#t.icon=s)}disconnectedCallback(){this._disposeButton(),this._disposeSlot(),this._disposeBalloon(),super.disconnectedCallback()}refresh(){this._refreshMenuItems()}_disposeButton(){this.#e=this.#t=null}_disposeSlot(){const t=this._slot;e.Utils.isNull(t)||t.removeEventListener("slotchange",this._slotchangeHandler,!1)}_disposeBalloon(){const t=this.#a;e.Utils.isNull(t)||(t.removeEventListener(e.CommandEventName,this._dispatchCommand,!1),this._disposeBalloonChildren(0),t.remove(),this.#a=null)}_disposeBalloonChildren(e){const t=this.#a;for(let a=t.children.length-1;a>=e;a--){const e=t.children.item(a);e.removeEventListener("mouseup",this._mouseupHandler,!1),e.remove()}}_refreshMenuItems(){const t=this._ensureBalloon();if(e.Utils.isNull(t))return;const a=t.children.length;let s=0;for(let e of this.items){if(e.hide)continue;const o=e.createMenuItemElement();if(o.addEventListener("mouseup",this._mouseupHandler,!1),s<a){const e=t.children.item(s);e.removeEventListener("mouseup",this._mouseupHandler,!1),e.replaceWith(o)}else t.appendChild(o);s++}this._disposeBalloonChildren(s)}};__decorate([e.ViewChild("slot[name=button]")],n.prototype,"_slot",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],n.prototype,"commandArgument",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],n.prototype,"icon",void 0),__decorate([e.Debounce(!0)],n.prototype,"_refreshMenuItems",null),n=__decorate([e.CustomElement({tagName:e.P+"-context-menu",shadow:!0,template:'<slot name="button"></slot><slot></slot>'})],n),a.PacemContextMenuElement=n}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let s;!function(e){e.Text="text",e.Html="html",e.Image="image",e.Markdown="markdown"}(s=a.EditMode||(a.EditMode={}));let o=class PacemEditElement extends t.PacemElement{constructor(a=new e.MarkdownService){super(),this._markdown=a,this._dialogPropertyChangedHandler=e=>{this._dialogPropertyChangedCallback(e)},this._broadcastFetchRequestEventName=e=>{this.dispatchEvent(new t.Scaffolding.ImageFetchRequestEvent(e.detail))},this._innerValueChangedHandler=t=>{"value"!==t.detail.propertyName||e.Utils.isNull(this._dialog)||(this._dialog.state=t.detail.currentValue)},this._editHandler=e=>{this.edit(e)}}_addButton(){if(e.Utils.isNull(this._button)){var t=document.createElement(e.P+"-button");return t.className=e.PCSS+"-edit-button",t.addEventListener("click",this._editHandler,!1),this._target.appendChild(t),this._button=t}}_removeButton(){var t=this._button;e.Utils.isNull(t)||(t.removeEventListener("click",this._editHandler,!1),t.remove(),this._button=null)}_addDialog(){var a=document.createElement(e.P+"-dialog");return a.buttons=t.UI.DialogButtons.OkCancel,a.addEventListener(e.PropertyChangeEventName,this._dialogPropertyChangedHandler,!1),a.appendChild(this._addTextarea()),a.appendChild(this._addContenteditable()),a.appendChild(this._addEditImage()),document.body.appendChild(a),this._dialog=a}_removeDialog(){this._removeTextarea(),this._removeContenteditable(),this._removeEditImage(),e.Utils.isNull(this._dialog)||(this._dialog.removeEventListener(e.PropertyChangeEventName,this._dialogPropertyChangedHandler,!1),this._dialog.remove())}_addTextarea(){var t=document.createElement(e.P+"-textarea");t.className=e.PCSS+"-edit-text",t.addEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1);const a=this.type||s.Text;return t.hide=a!==s.Text&&a!==s.Markdown,this._textarea=t}_removeTextarea(){e.Utils.isNull(this._textarea)||this._textarea.removeEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1)}_addContenteditable(){var t=document.createElement(e.P+"-contenteditable");t.className=e.PCSS+"-edit-content",t.addEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1);const a=this.type||s.Text;return t.hide=a!==s.Html,this._contenteditable=t}_removeContenteditable(){e.Utils.isNull(this._contenteditable)||this._contenteditable.removeEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1)}_addEditImage(){var a=document.createElement(e.P+"-edit-image");a.disabled=!0,a.addEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1),a.addEventListener(t.Scaffolding.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1);const o=this.type||s.Text;return a.hide=o!==s.Image,a.uploadUrl=this.imageUploadUrl,a.allowSnapshot=this.allowSnapshot,a.maxWidth=this.maxImageWidth,a.maxHeight=this.maxImageHeight,this._editImage=a}_removeEditImage(){e.Utils.isNull(this._editImage)||(this._editImage.removeEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1),this._editImage.removeEventListener(t.Scaffolding.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1))}_update(t){var a=this._content;switch(this.type){case s.Html:a.innerHTML=t;break;case s.Markdown:if(a.localName===e.P+"-markdown")a.value=t;else a.innerHTML=this._markdown.toHtml(t);break;case s.Image:switch(a.localName){case"img":case e.P+"-img":a.src=t;break;default:a.style.backgroundImage=`url(${t})`}break;default:this._content.textContent=t}}_retrieve(){var t=this._content;switch(this.type){case s.Html:return t.innerHTML;case s.Image:switch(t.localName){case e.P+"-img":case"img":return t.src;default:let a=getComputedStyle(t).backgroundImage,s=/url\(["']?([^'"]+)["']?\)/.exec(a);return s&&s.length&&s[1]}case s.Markdown:return t.value||t.textContent;default:return t.textContent}}_setup(){this.disabled?(e.Utils.removeClass(this._target,e.PCSS+"-editing"),this._removeButton()):(e.Utils.addClass(this._target,e.PCSS+"-editing"),this._addButton())}_dialogPropertyChangedCallback(t){if("state"===t.detail.propertyName){const a=t.detail.currentValue;e.Utils.isNull(this._textarea)||(this._textarea.value=a),e.Utils.isNull(this._contenteditable)||(this._contenteditable.value=a),e.Utils.isNull(this._editImage)||(this._editImage.value=a),this._update(t.detail.currentValue)}}get _target(){var t=this.target;return e.Utils.isNull(t)&&(t=this.firstElementChild),t}connectedCallback(){super.connectedCallback(),this._addDialog()}viewActivatedCallback(){super.viewActivatedCallback(),this._addButton(),this._setup()}disconnectedCallback(){this._removeButton(),this._removeDialog(),super.disconnectedCallback()}propertyChangedCallback(t,a,o,n){switch(super.propertyChangedCallback(t,a,o,n),t){case"imageUploadUrl":e.Utils.isNull(this._editImage)||(this._editImage.uploadUrl=o);break;case"allowSnapshot":e.Utils.isNull(this._editImage)||(this._editImage.allowSnapshot=o);break;case"imageSet":e.Utils.isNull(this._editImage)||(this._editImage.imageSet=o);break;case"disabled":this._setup();break;case"type":const t=o;e.Utils.isNull(this._textarea)||(this._textarea.hide=t!==s.Text&&t!==s.Markdown),e.Utils.isNull(this._contenteditable)||(this._contenteditable.hide=t!==s.Html),e.Utils.isNull(this._editImage)||(this._editImage.hide=t!==s.Image);break;case"maxImageHeight":e.Utils.isNull(this._editImage)||(this._editImage.maxHeight=o);break;case"maxImageWidth":e.Utils.isNull(this._editImage)||(this._editImage.maxWidth=o)}}edit(a){e.avoidHandler(a);var s=this._target;if(!e.Utils.isNull(s)){this._removeButton(),this._content=s;var o=this._state=this._retrieve();e.Utils.isNull(this._editImage)||(this._editImage.disabled=!1),this._dialog.open(o).then((a=>{switch(a.button){case t.UI.DialogButton.Cancel:this._update(this._state);break;case t.UI.DialogButton.Ok:this._update(a.state),this.dispatchEvent(new CustomEvent("commit",{detail:{value:a.state}}))}this._content=null,e.Utils.isNull(this._editImage)||(this._editImage.disabled=!0),this._addButton()}))}}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"key",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"type",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Element})],o.prototype,"target",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"imageUploadUrl",void 0),__decorate([e.Watch({emit:!1})],o.prototype,"imageSet",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],o.prototype,"maxImageWidth",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],o.prototype,"maxImageHeight",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],o.prototype,"allowSnapshot",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-edit"})],o),a.PacemEditElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){function s(t=o(),a="image"){return`<${e.P}-slide class="${e.PCSS}-gallery-item"\ncss-class="{{ { '${e.PCSS}-gallery-previous': :host.isPrevious(^index, ::_slideshow.index), '${e.PCSS}-gallery-next': :host.isNext(^index, ::_slideshow.index), '${e.PCSS}-gallery-focus': ^index === ::_slideshow.index } }}"\n>\n <${e.P}-img src="{{ ^item.${a} }}" disabled="{{ !::_lightbox.show || !(:host.isCloseTo(^index, ::_slideshow.index) || ^index === ::_slideshow.index) }}" \ncss="{{ {'visibility': (:host._poppingUp ? 'hidden' : ''), 'transition': (:host._poppingUp ? 'none' : '')} }}" class="${e.PCSS}-gallery-splash" adapt="contain"></${e.P}-img>\n \n${t}\n \n </${e.P}-slide>`}function o(t="caption"){return`<${e.P}-panel hide="{{ $pacem.isNullOrEmpty(^item.${t}) }}" class="${e.PCSS}-gallery-caption gallery-caption-default">\n <${e.P}-span class="paragraph" text="{{ ^item.${t} }}"></${e.P}-span>\n </${e.P}-panel>`}let n=class PacemGalleryElement extends t.UI.PacemAdaptedIterativeElement{constructor(){super(...arguments),this._templateChangeHandler=e=>{const t=e.target;this._setupWithCaptionTemplate(t.target)}}viewActivatedCallback(){super.viewActivatedCallback(),this._setupWithCaptionTemplate(),this._databind()}propertyChangedCallback(t,a,s,o){if(super.propertyChangedCallback(t,a,s,o),!o)switch(t){case"datasource":this._databind();break;case"captionTemplate":this._setupWithCaptionTemplate(s,a);break;case"imageProperty":this._setupWithCaptionTemplate(this.captionTemplate,this.captionTemplate);break;case"captionProperty":e.Utils.isNull(this.captionTemplate)&&this._setupDefaultTemplate()}}disconnectedCallback(){this._disposeTemplate(),super.disconnectedCallback()}_disposeTemplate(e=this.captionTemplate){e instanceof t.PacemTemplateProxyElement&&e.removeEventListener("templatechange",this._templateChangeHandler)}_setupWithCaptionTemplate(a=this.captionTemplate,o){if(this._disposeTemplate(o),e.Utils.isNull(a))return void this._setupDefaultTemplate();a instanceof t.PacemTemplateProxyElement&&(a.addEventListener("templatechange",this._templateChangeHandler,!1),a=a.target);const n=a.content.firstElementChild;e.Utils.addClass(n,e.PCSS+"-gallery-caption");const i=document.createElement("template");i.innerHTML=s(a.innerHTML,this.imageProperty),this._setupTemplate(i)}_setupTemplate(e){this._templateProxy.target=e}_setupDefaultTemplate(){const e=document.createElement("template");e.innerHTML=s(o(this.captionProperty),this.imageProperty),this._setupTemplate(e)}_databind(){const t=this._repeater;e.Utils.isNull(t)||(t.datasource=this.datasource)}get adapter(){return this._adapter}async _heroAnimate(a,s){if(!e.Utils.isNull(a)){let o=new t.UI.PacemImageElement,n=this._heroPlaceholderProxy.dom[0];const i=300;o.src=s||a.src,o.adapt="contain";let r=e.Utils.offset(n),l=e.Utils.offset(a),c=o.style;const d=getComputedStyle(n);c.border=d.border,c.width=n.clientWidth+"px",c.height=n.clientHeight+"px",c.position="absolute",c.zIndex=d.zIndex,c.top=r.top+"px",c.left=r.left+"px";const h=a.clientWidth/n.clientWidth,m=a.clientHeight/n.clientHeight,p=l.left-r.left+"px",u=l.top-r.top+"px";c.transformOrigin="0 0",c.transition=`transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${i}ms, opacity ${i}ms`,c.transform=`translate(${p}, ${u}) scale(${h}, ${m})`,document.body.appendChild(o),requestAnimationFrame((()=>{o.style.transform=""})),await e.Utils.waitForAnimationEnd(o,i),o.remove()}}open(e,t,a){this._poppingUp=!0,this._lightbox.show=!0,this._slideshow.index=e,this._heroAnimate(t,a).then((e=>{this._poppingUp=!1,this._slideshow.focus()}))}};__decorate([e.ViewChild(e.P+"-adapter")],n.prototype,"_adapter",void 0),__decorate([e.ViewChild(e.P+"-lightbox")],n.prototype,"_lightbox",void 0),__decorate([e.ViewChild(e.P+"-slideshow")],n.prototype,"_slideshow",void 0),__decorate([e.ViewChild(e.P+"-repeater")],n.prototype,"_repeater",void 0),__decorate([e.ViewChild(e.P+"-template-proxy")],n.prototype,"_templateProxy",void 0),__decorate([e.ViewChild(e.P+"-shell-proxy")],n.prototype,"_heroPlaceholderProxy",void 0),__decorate([e.Watch()],n.prototype,"_poppingUp",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],n.prototype,"captionTemplate",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],n.prototype,"captionProperty",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],n.prototype,"imageProperty",void 0),n=__decorate([e.CustomElement({tagName:e.P+"-gallery",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-lightbox class="${e.PCSS}-gallery">\n <${e.P}-repeater>\n <${e.P}-slideshow adapter="{{ ::_adapter }}" index="{{ :host.index, twoway }}" hide="{{ !::_lightbox.show }}">\n <${e.P}-template-proxy></${e.P}-template-proxy>\n </${e.P}-slideshow>\n </${e.P}-repeater>\n<${e.P}-adapter class="${e.PCSS}-gallery-adapter"></${e.P}-adapter>\n</${e.P}-lightbox>\n<${e.P}-shell-proxy><div class="${e.PCSS}-gallery-hero-target"></div></${e.P}-shell-proxy>`})],n),a.PacemGalleryElement=n}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){var s;let o=s=class PacemModalFormElement extends t.UI.PacemDialogBase{get form(){return this._form}constructor(){super(),this.suddenValidation=!0,this.method=e.Net.HttpMethod.Post,this._keyupHandler=t=>{if(!(13!==t.keyCode||t.shiftKey||t.ctrlKey||t.altKey||t.metaKey)){let a=t.currentTarget.querySelector(`.${e.PCSS}-dialog-buttons ${e.P}-button[type=submit]`);e.Utils.isNull(a)||!e.Utils.isVisible(a)||a.disabled||a.click()}},this.#s=!1,this._emitter=new e.Components.Scaffolding.FormEventEmitter(this)}viewActivatedCallback(){super.viewActivatedCallback(),this.addEventListener("keyup",this._keyupHandler,!1),this._emitter.start()}disconnectedCallback(){this._emitter.stop(),this.removeEventListener("keyup",this._keyupHandler,!1),super.disconnectedCallback()}_submit(a){this.readonly?this.commit(t.UI.DialogButton.Ok,a):(e.avoidHandler(a),this._form.validate().then((s=>{s&&(e.Utils.isNullOrEmpty(this.action)?this.commit(t.UI.DialogButton.Ok,a):this._form.submit(this._fetcher).then((e=>{this.commit(t.UI.DialogButton.Ok,a)}),(e=>{})))})))}_onSubmit(e){this.emit(e)}#s;open(t,a,o=!0){if(e.Utils.isNull(t))throw`The state of a ${s} cannot be null.`;this.#s=a;var n=super.open(t);return o&&this._form.setPristine(),n}commit(t,a){super.commit(t,a),this.#s||e.Utils.waitForAnimationEnd(this,500).then((e=>{this.state={}}))}_cancel(e){this.commit(t.UI.DialogButton.Cancel,e),this._form.reset()}_broadcast(e){this.dispatchEvent(new CustomEvent(e.type,{detail:e.detail}))}get modalButtons(){const e=this._buttons;return{ok:e&&e.firstElementChild&&e.firstElementChild.firstElementChild,cancel:e&&e.firstElementChild&&e.firstElementChild.lastElementChild}}};__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"suddenValidation",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"okCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"cancelCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"method",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"metadata",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"action",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"loaderType",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"success",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"fail",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"readonly",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"fetchHeaders",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"fetchCredentials",void 0),__decorate([e.ViewChild(e.P+"-lightbox")],o.prototype,"lightbox",void 0),__decorate([e.ViewChild(e.P+"-form[entity]")],o.prototype,"_form",void 0),__decorate([e.ViewChild(e.P+"-fetch")],o.prototype,"_fetcher",void 0),o=s=__decorate([e.CustomElement({tagName:e.P+"-modal-form",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-lightbox modal="true" logger="{{ :host.logger }}">\n <${e.P}-form wrapper>\n <${e.P}-form logger="{{ :host.logger }}" on-submit=":host._onSubmit($event)" readonly="{{ :host.readonly }}" entity="{{ :host.state, twoway }}" on-success=":host._broadcast($event)" \n on-fail=":host._broadcast($event)" success="{{ :host.success, twoway }}" fail="{{ :host.fail, twoway }}" autogenerate="{{ !$pacem.isNull($this.entity) }}" metadata="{{ :host.metadata }}"\n fetch-headers="{{ :host.fetchHeaders }}" fetch-credentials="{{ :host.fetchCredentials }}" sudden-validation="{{ :host.suddenValidation }}"></${e.P}-form>\n </${e.P}-form>\n <${e.P}-fetch logger="{{ :host.logger }}" method="{{ :host.method }}" headers="{{ :host.fetchHeaders }}" credentials="{{ :host.fetchCredentials }}" autofetch="false" url="{{ :host.action }}"></${e.P}-fetch> \n <div class="${e.PCSS}-dialog-buttons ${e.PCSS}-buttonset buttons" slot="bottom">\n <div class="buttonset-left">\n <${e.P}-button on-click=":host._submit($event)" css-class="{{ {'buttonset-last': :host.readonly} }}" type="submit"\n class="button primary button-size size-small" disabled="{{ (:host.suddenValidation && !:host.readonly && !(::_form.valid && ::_form.dirty)) || ::_fetcher.fetching }}">\n <${e.P}-panel class="submit-spinner ${e.PCSS}-anim anim-pop" hide="{{ !::_form.fetching }}"><i class="${e.PCSS}-icon ${e.PCSS}-anim anim-rotate rotate-uniform display-block">refresh</i></${e.P}-panel>\n <${e.P}-text text="{{ :host.okCaption || 'OK' }}"></${e.P}-text>\n </${e.P}-button>\n <${e.P}-button on-click=":host._cancel($event)" hide="{{ :host.readonly }}" class="button button-size size-small" disabled="{{ ::_fetcher.fetching }}"><${e.P}-text text="{{ :host.cancelCaption || 'Cancel' }}"></${e.P}-text></${e.P}-button>\n </div></div>\n <div class="${e.PCSS}-dialog-heading" slot="top">\n <${e.P}-content></${e.P}-content>\n </div>\n <div class="pos-absolute absolute-top absolute-right absolute-left absolute-bottom overflow-hidden ${e.PCSS}-inert display-flex flex-center flex-middle">\n <${e.P}-loader type="{{ :host.loaderType }}" class="loader-primary loader-smaller ${e.PCSS}-anim anim-pop" active="{{ ::_fetcher.fetching }}"></${e.P}-loader>\n </div>\n</${e.P}-lightbox>`})],o),a.PacemModalFormElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let s=class PacemRouterHashStateElement extends t.PacemEventTarget{constructor(){super(...arguments),this.default={},this.state={},this.normalizedState={},this._routerNavigatingHandler=e=>{this.#o=!0},this._routerNavigateHandler=e=>{this.#o=!1,this._updateStateFromURI()}}#o;viewActivatedCallback(){super.viewActivatedCallback(),this._updateStateFromURI(),this._setupRouterHandlers(this.router)}propertyChangedCallback(e,t,a,s){switch(super.propertyChangedCallback(e,t,a,s),e){case"state":s||this.#o||(this._updateNormalizedState(),this._updateURIFromState());break;case"disabled":a&&this._updateStateFromURI();break;case"default":this._updateStateFromURI();break;case"router":s||(this._disposeRouterHandlers(t),this._setupRouterHandlers(a))}}disconnectedCallback(){this._disposeRouterHandlers(),super.disconnectedCallback()}_setupRouterHandlers(t=this.router){e.Utils.isNull(t)||(window.addEventListener("navigating",this._routerNavigatingHandler,!1),window.addEventListener("navigate",this._routerNavigateHandler,!1))}_disposeRouterHandlers(t=this.router){e.Utils.isNull(t)||(window.removeEventListener("navigating",this._routerNavigatingHandler,!1),window.removeEventListener("navigate",this._routerNavigateHandler,!1))}_currentBasePath(){const t=this.router;if(!e.Utils.isNull(t)){const e=t.state.$querystring;return this._normalizePath(document.location.pathname,e)}return null}_normalizePath(t,a){return e.Utils.isNullOrEmpty(t)?t:(t.endsWith("/")&&(t=t.substring(0,t.length-1)),a??="",t+(a.length>0?"?"+a:""))}_areStatesEquivalent(t,a){const s=e.Utils.extend({},t||{}),o=e.Utils.extend({},a||{});for(let e in s){if(!this._areSubstantiallyEquivalent(s[e],o[e]))return!1;delete s[e],delete o[e]}for(let e in o)if(!this._areSubstantiallyEquivalent(s[e],o[e]))return!1;return!0}_updateNormalizedState(e=this.state){if(this.disabled||this.#o)return;const t=this._normalizeState(e);this._areStatesEquivalent(t,this.normalizedState)||(this.normalizedState=t)}_updateStateFromURI(){if(this.disabled||this.#o)return;var t=e.Utils.extend({},this.default||{});const a=this.router;if(!e.Utils.isNull(a)){const s=this._denormalizeState(e.Utils.URIs.parseQuery(a.state&&a.state.$hash||"{}"));e.Utils.extend(t,s)}this._areStatesEquivalent(this.state,t)||(this.state=t)}_updateURIFromState(t=this.normalizedState){if(this.disabled||this.#o)return;const a=this.router;if(!e.Utils.isNull(a)){const o=this._currentBasePath(),n=e.Utils.URIs.parseQuery(a.state.$hash||"{}"),i=t||{};if(!this._areStatesEquivalent(n,i)){const t=this._cleanupStateForURI(i);var s=o;e.Utils.isNullOrEmpty(t)||(s=e.Utils.URIs.appendQuery(o,t,!1,!0)),a.path=s}}}_areSubstantiallyEquivalent(t,a){return t??="",a??="",t.toString()==a.toString()||e.Utils.areSemanticallyEqual(t,a)||JSON.stringify(t)===JSON.stringify(a)}_cleanupStateForURI(t=this.state){const a=e.Utils.clone(t||{}),s=this.default;for(let t in a)(e.Utils.isNullOrEmpty(a[t])&&(e.Utils.isNull(s)||!(t in s))||!e.Utils.isNull(s)&&t in s&&this._areSubstantiallyEquivalent(s[t],a[t]))&&delete a[t];return a}_normalizeState(t=this.state,a=this.default){var s={};const o=a;for(let a in t||{}){const n=t[a];if(e.Utils.isNullOrEmpty(n))e.Utils.isNull(o)||!(a in o)||e.Utils.isNullOrEmpty(o[a])||(s[a]="");else switch(typeof n){case"number":case"bigint":case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:n.toString()});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:n});break;default:if(e.Utils.Dates.isDate(n))Object.defineProperty(s,a,{enumerable:!0,value:n.toISOString()});else{if(!(n instanceof RegExp))throw new Error("Type not supported to be normalized into a URI hash.");Object.defineProperty(s,a,{enumerable:!0,value:n.source})}}}return s}_denormalizeState(t=this.normalizedState,a=this.default){const s={},o=a||{};for(let a in t){if(!(a in o)){s[a]=t[a];continue}const n=o[a],i=t[a];switch(typeof n){case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.Boolean.convert(i)});break;case"number":case"bigint":Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.Number.convert(i)});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.String.convert(i)});break;default:n instanceof Date?Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.Date.convert(i)}):n instanceof RegExp?Object.defineProperty(s,a,{enumerable:!0,value:new RegExp(i,n.flags)}):Object.defineProperty(s,a,{enumerable:!0,value:i})}}return s}set(t,a){var s={};"string"==typeof t?Object.defineProperty(s,t,{enumerable:!0,value:a}):s=t,this.state=e.Utils.extend({},this.state||{},s)}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],s.prototype,"router",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],s.prototype,"default",void 0),__decorate([e.Watch()],s.prototype,"state",void 0),__decorate([e.Watch()],s.prototype,"normalizedState",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-router-hash-state"})],s),a.PacemRouterHashStateElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let s=class PacemSearchElement extends t.PacemElement{constructor(){super(...arguments),this.hintParameter="q"}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),"hint"===e){let e={};e[this.hintParameter]=a,this._fetcher.parameters=e}}};__decorate([e.ViewChild(e.P+"-fetch")],s.prototype,"_fetcher",void 0),__decorate([e.Watch()],s.prototype,"datasource",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"hint",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"url",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"method",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],s.prototype,"hintParameter",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-search",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-fetch debounce="800" url="{{ :host.url }}" method="{{ :host.method }}">\n</${e.P}-fetch><${e.P}-input-search value="{{ :host.hint, twoway }}"></${e.P}-input-search>\n<${e.P}-repeater datasource="{{ ::_fetch.result }}">\n <${e.P}-content></${e.P}-content>\n</${e.P}-repeater>`})],s),a.PacemSearchElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){class PacemBaseCellElement extends t.PacemSafeContentElement{viewActivatedCallback(){super.viewActivatedCallback(),this.updateColumnPosition(),this.updateLayout(this.metadata)}updateColumnPosition(e=this.metadata,t=this.gridState){this.style.gridColumn=(t.orderedColumns.indexOf(e.prop)+1).toString()}updateVisibility(e=this.state){this.hide=!!e.hidden}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"metadata":this.updateLayout(a);break;case"gridState":this.updateColumnPosition();break;case"state":this.updateVisibility()}}}__decorate([e.Watch({converter:e.PropertyConverters.Json})],PacemBaseCellElement.prototype,"metadata",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],PacemBaseCellElement.prototype,"state",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],PacemBaseCellElement.prototype,"gridState",void 0),a.PacemBaseCellElement=PacemBaseCellElement}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){t.DataRowSelectChangeEventName="datarowselectchange";class DataRowSelectChangeEvent extends CustomEvent{constructor(e){super(t.DataRowSelectChangeEventName,{detail:e,bubbles:!1,cancelable:!0})}}t.DataRowSelectChangeEvent=DataRowSelectChangeEvent;const a={},s=[];let o=class PacemDataCellElement extends t.PacemBaseCellElement{updateLayout(e=this.metadata){this._setup(e)}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-datacell")}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"_contentTooltip":this._updateTooltipJustInCase();break;case"gridState":case"rowindex":this._updateSelection()}}_updateTooltipJustInCase(){(this.metadata.dataCell?.autoTooltip??!0)&&!e.Utils.isNullOrEmpty(this._contentTooltip)?this.setAttribute("tooltip",this._contentTooltip):this.removeAttribute("tooltip")}_inflateContent(t=this.dataitem,a=this.rowindex,s=this.metadata){this._contentTooltip="";let o=s.dataCell?.format;const n=s.dataCell?.null??"";if("function"==typeof o){const i=o(this,s,t,a);return e.Utils.isNullOrEmpty(i)?n:i}const i=e.CustomElementUtils.resolvePath(s.prop,t)?.target,r=i?.value;if(e.Utils.isNullOrEmpty(r))return n;const l=e.Utils.lang(this);switch(s.dataType){case"boolean":return`<${e.P}-icon icon="material ${r?"check_circle_outline":"radio_button_unchecked"} text-big-steady"></${e.P}-icon>`;case"time":case"date":case"datetime":return this._contentTooltip=e.Utils.core.date(r,o,l);case"byte":case"int16":case"int32":case"int64":case"short":case"integer":case"int":case"long":case"double":case"decimal":case"float":case"single":case"number":return this._contentTooltip=e.Utils.core.number(r,o||"",l);case"currency":return o??="EUR",this._contentTooltip="string"==typeof o?e.Utils.core.currency(r,o,l):e.Utils.core.number(r,o,l);case"percent":case"percentage":return o??={style:"percent",maximumFractionDigits:2},this._contentTooltip="string"==typeof o?e.Utils.core.currency(r,o,l):e.Utils.core.number(r,o,l);default:return this._contentTooltip=r}}_inflateCssClass(t=this.dataitem,a=this.rowindex,o=this.metadata,n){if(e.Utils.isNull(t)||e.Utils.isNullOrEmpty(o))return s;const i=o.dataCell&&o.dataCell.cssClass||s,r=[];switch("function"==typeof i?Array.prototype.push.apply(r,i(this,o,t,a)||[]):Array.prototype.push.apply(r,i),o.dataCell?.verticalAlign?.toLowerCase()){case"top":r.push("datacell-top");break;case"bottom":r.push("datacell-bottom");break;case"middle":r.push("datacell-middle")}switch(o.dataCell?.horizontalAlign?.toLowerCase()){case"left":r.push("datacell-left");break;case"right":r.push("datacell-right");break;case"center":r.push("datacell-center")}return n?.length&&(0===a&&r.push("datacell-firstrow"),a===n.length-1&&r.push("datacell-lastrow")),r}_inflateCss(t=this.dataitem,s=this.rowindex,o=this.metadata){if(e.Utils.isNull(t)||e.Utils.isNullOrEmpty(o))return a;const n=o.dataCell&&o.dataCell.css||a;return"function"==typeof n?n(this,o,t,s):n}_setup(t=this.metadata){this.setAttribute("css-class","{{ this._inflateCssClass(^item, ^index, this.metadata, :host.datasource) }}"),this.setAttribute("css","{{ Pacem.Utils.extend({ 'grid-row': ^index+2 }, this._inflateCss(^item, ^index, this.metadata, :host.datasource)) }}");const a=!!t.dataCell?.textEllipsis?["text-truncate"]:[],s=t?.dataCell?.selectMode?.toLowerCase();switch(s){case"cell":case"row":a.push(e.PCSS+"-inert"),a.push(e.PCSS+"-unselect")}this._content.cssClass=a,this._updateSelection()}_updateSelection(){(this.gridState?.selectedRows??[]).indexOf(this.rowindex)>=0?e.Utils.addClass(this,"datarow-selected datacell-filled datacell-primary"):e.Utils.removeClass(this,"datarow-selected datacell-filled datacell-primary")}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Eval})],o.prototype,"dataitem",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],o.prototype,"rowindex",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String,debounce:200})],o.prototype,"_contentTooltip",void 0),__decorate([e.ViewChild(e.P+"-span")],o.prototype,"_content",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-datacell",shadow:!1,template:`<${e.P}-span content="{{ :host._inflateContent(^item, ^index, :host.metadata) }}"></${e.P}-span>`})],o),t.PacemDataCellElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){const s="datacolumnchange",o="datacolumnstatechange",n={selectCaption:"Details",editCaption:"Edit",editIcon:"edit",deleteCaption:"Delete",deleteIcon:"delete"};class DataCellUIEvent extends e.CustomUIEvent{constructor(e,t,a){super(e,t,{bubbles:!1,cancelable:!0},a)}}a.DataCellUIEvent=DataCellUIEvent;let i=class PacemDataColumnElement extends t.PacemItemElement{propertyChangedCallback(e,t,a,n){if(super.propertyChangedCallback(e,t,a,n),!n)switch(e){case"field":case"headcellCss":case"headcellCssClass":case"datacellCss":case"datacellCssClass":case"resizable":case"togglable":case"sortable":case"label":this.dispatchEvent(new Event(s));break;case"order":case"hide":this.dispatchEvent(new Event(o))}}};function r(t){return`<${e.P}-headcell metadata="{{ :host._getColumnMetadata('${t.prop}') }}" state="{{ :host._columnState.${t.prop} }}" grid-state="{{ :host._gridState }}" \non-${a.DataColumnSortEventName}=":host._broadcastSortCommand($event)"\non-${a.DataColumnRescaleEventName}=":host._broadcastRescaleCommand($event)"></${e.P}-headcell>`}function l(t,a){return`<${e.P}-datacell metadata="{{ :host._getColumnMetadata('${t.prop}') }}" state="{{ :host._columnState.${t.prop} }}" grid-state="{{ :host._gridState }}"\ndataitem="{{ ^item }}" rowindex="{{ ^index }}" ${a}></${e.P}-datacell>`}__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"field",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"label",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],i.prototype,"resizable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],i.prototype,"togglable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],i.prototype,"sortable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"order",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],i.prototype,"format",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"headcellCss",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"headcellCssClass",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"datacellCss",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"datacellCssClass",void 0),i=__decorate([e.CustomElement({tagName:e.P+"-datacolumn"})],i),a.PacemDataColumnElement=i;let c=class PacemDataGridElement extends t.PacemItemsContainerElement{constructor(t=e.Utils.uniqueCode()){super(),this._key=t,this.state={},this._columnState={},this._gridState={sort:{},orderedColumns:[],selectedRows:[]},this._itemDataColumnRebuildHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._itemDataColumnChangeHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._memoizer={}}validate(e){return e instanceof i}viewActivatedCallback(){super.viewActivatedCallback(),this.addEventListener(e.CommandEventName,this._onCommand,!1),this._adaptColumnMetadata();const t=this._adaptedColumnMetadata||[];this._buildUpGrid(t)}disconnectedCallback(){this.removeEventListener(e.CommandEventName,this._onCommand,!1),super.disconnectedCallback()}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"items":case"metadata":this._adaptColumnMetadata();break;case"_adaptedColumnMetadata":this._buildUpGrid(a);break;case"datasource":this._setRowSelection();break;case"state":this._mergeState(a)}}register(e){return!!super.register(e)&&(e.addEventListener(s,this._itemDataColumnRebuildHandler,!1),e.addEventListener(o,this._itemDataColumnChangeHandler,!1),!0)}unregister(e){return!!super.unregister(e)&&(e.removeEventListener(s,this._itemDataColumnRebuildHandler,!1),e.removeEventListener(o,this._itemDataColumnChangeHandler,!1),!0)}setRowSelection(...e){const t=Array.from(e);this._setRowSelection(t)}_setRowSelection(t){const s=(t||[]).map((e=>({item:this.datasource[e],index:e}))),o=new a.DataRowSelectChangeEvent({selectedRows:s});if(this.dispatchEvent(o),!o.defaultPrevented){let t=o.detail.selectedRows;e.Utils.isArray(t)||(t=[]),this._doSetRowSelection(t.map((e=>e?.index??-1)).filter((e=>e>=0)))}}_doSetRowSelection(e){const t={selectedRows:e};this._mergeState(t)}_mergeState(t=this.state){t??={};const a={selectedRows:(t.selectedRows||[]).map((e=>"number"==typeof e?e:e.index))},s=this._gridState=e.Utils.extend({},this._gridState,t,a);this.state=e.Utils.extend(this.state??{},s)}_adaptColumnMetadata(e=this.items,t=this.metadata){const a=Array.prototype.concat.apply((e||[]).map((e=>({prop:e.field,headCell:{name:e.label,cssClass:e.headcellCssClass||[],css:e.headcellCss||{}},dataCell:{format:e.format,cssClass:e.datacellCssClass||[],css:e.datacellCss||{}},hide:e.hide,isRescalable:e.resizable,isSortable:e.sortable,isTogglable:e.togglable,order:e.order,width:1}))),t||[]);this._memoizer={},this._adaptedColumnMetadata=a}_getColumnMetadata(e){return this._memoizer[e]=this._memoizer[e]||this._adaptedColumnMetadata.find((t=>t.prop===e))}_buildUpGrid(a){const s=this._tableContainer;if(e.Utils.isNull(s))return;if(e.Utils.isNullOrEmpty(a))return void(s.innerHTML="");const o=this.options=e.Utils.extend({},n,this.options||{}),i=o.allowDelete||o.allowEdit||o.allowSelect,c=o.allowMultiSelect&&i;let d=c?"auto ":"",h=c?`<div class="${e.PCSS}-headcell"></div>`:"",m=c?`<${e.P}-panel class="${e.PCSS}-datacell" style="grid-column: 1;" css="{{ {'grid-row': ^index+2} }}"></${e.P}-panel>`:"",p=c?`<div class="${e.PCSS}-footcell"></div>`:"";const u=c?a.length+2:i?a.length+1:a.length;this._gridState.orderedColumns=a.sort(((e,t)=>(e.order??0)-(t.order??0))).map((e=>e.prop));let _="";for(let e of t.PacemElement.emittedEventTypes)_+=` on-${e}=":host._broadcastUiEvent(^item, ^index, $event)"`;for(let e of a)this._columnState[e.prop]={hidden:e.hide},d+=this._getColumnSize(e).replaceAll(" ","")+" ",h+=r(e),m+=l(e,_);m+=`<${e.P}-panel class="${e.PCSS}-datarow" css-class="{{ {'datarow-alt': ^index % 2 === 1, 'datarow-first': ^index === 0, 'datarow-last': ^index === (:host.datasource.length - 1), 'datarow-selected': :host._gridState.selectedRows.indexOf(^index) >= 0 } }}" style="grid-column: 1 /span ${u};" css="{{ {'grid-row': ^index+2} }}"></${e.P}-panel>`;const C=`<${e.P}-repeater datasource="{{ :host.datasource }}">\n<${e.P}-panel class="${e.PCSS}-datatable" css="{{ {'grid-template-columns': :host._getColumnSizes(:host._columnState, '${d.trimEnd()}', :host._gridState) } }}">\n ${h}\n <template>\n ${m}\n </template>\n ${p}\n</${e.P}-panel>`;s.innerHTML=C}_getColumnSizes(t=this._columnState,a,s=this._gridState){if(e.Utils.isNullOrEmpty(t))return a;const o=a.split(" ");for(let e in t){const a=t[e],n=s.orderedColumns.indexOf(e);a.hidden?o[n]="auto":a.pixelWidth>0&&(o[n]=a.pixelWidth+"px")}return o.join(" ")}_getColumnSize(e){if(e.hide)return"auto";const t=e.minPixelWidth,a=e.maxPixelWidth;if(a>0&&t>0)return`minmax(${t}px, ${a}px)`;{const s="number"==typeof e.width?e.width+"fr":"auto";return t>0?`minmax(${t}px, ${s})`:a>0?`minmax(${s}, ${a}px)`:s}}_onCommand(e){this.dispatchEvent(new t.ItemCommandEvent(e)),this.dispatchEvent(new t.CustomItemCommandEvent(e))}_broadcastUiEvent(e,t,a){const s=a.type.toLowerCase(),o="datacell"+s,n={dataitem:e,rowindex:t,datacell:a.srcElement},i=a instanceof MouseEvent||a instanceof TouchEvent||a instanceof KeyboardEvent?new DataCellUIEvent(o,n,a):new DataCellUIEvent(o,n);if(this.dispatchEvent(i),"click"===s&&!i.defaultPrevented){const e=i.detail.datacell,t=e.metadata?.dataCell?.selectMode?.toLowerCase();switch(t){case"cell":break;case"row":this._broadcastSelectCommand(i.detail.rowindex)}}}_broadcastSortCommand(t){const s=t.detail,o=new a.DataColumnSortEvent(s);if(this.dispatchEvent(o),!o.defaultPrevented){const t={column:""};"string"==typeof o.detail.column&&(t.column=o.detail.column),"string"==typeof o.detail.dir&&(t.dir="desc"===o.detail.dir?"desc":"asc"),this._gridState=e.Utils.extend({},this._gridState,{sort:t})}}_broadcastRescaleCommand(t){const s=t.detail,o=new a.DataColumnRescaleEvent(s);if(this.dispatchEvent(o),!o.defaultPrevented){let a=s.width;"number"==typeof o.detail.width&&o.detail.width>0&&(a=o.detail.width);const n={};n[t.srcElement.metadata.prop]={pixelWidth:a},this._columnState=e.Utils.extend({},this._columnState,n)}}_broadcastSelectCommand(t){let a=(this._gridState.selectedRows||[]).slice(0);const s=a.indexOf(t);let o=!0;if(s>=0)a.splice(s,1);else{const s=this.options;if(s.allowMultiSelect)a.push(t);else if(s.allowSelect)a=[t];else{o=!1;const a=`Cannot select the row at index ${t} since datagrid options do not allow any row selection.`;e.Utils.isNull(this.logger)?console.warn(a):this.log(e.Logging.LogLevel.Warn,a)}}o&&this._setRowSelection(a)}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],c.prototype,"metadata",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],c.prototype,"options",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],c.prototype,"state",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],c.prototype,"datasource",void 0),__decorate([e.ViewChild("."+e.PCSS+"-datagrid")],c.prototype,"_tableContainer",void 0),__decorate([e.Watch()],c.prototype,"_adaptedColumnMetadata",void 0),__decorate([e.Watch()],c.prototype,"_columnState",void 0),__decorate([e.Watch()],c.prototype,"_gridState",void 0),__decorate([e.Debounce()],c.prototype,"_adaptColumnMetadata",null),c=__decorate([e.CustomElement({tagName:e.P+"-datagrid",shadow:!1,template:`<div class="${e.PCSS}-datagrid"></div><${e.P}-content></${e.P}-content>`})],c),a.PacemDataGridElement=c}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){a.DataColumnSortEventName="datacolumnsort";class DataColumnSortEvent extends CustomEvent{constructor(e){super(a.DataColumnSortEventName,{detail:e,bubbles:!1,cancelable:!0})}}a.DataColumnSortEvent=DataColumnSortEvent,a.DataColumnRescaleEventName="datacolumnrescale";class DataColumnRescaleEvent extends CustomEvent{constructor(e){super(a.DataColumnRescaleEventName,{detail:e,bubbles:!1,cancelable:!0})}}a.DataColumnRescaleEvent=DataColumnRescaleEvent;let s=class PacemHeadCellElement extends a.PacemBaseCellElement{constructor(t=new e.MarkdownService){super(),this._md=t,this._sortButtonClickHandler=e=>{const t=this.metadata,a=this.gridState,s=t.prop,o=a.sort?.column===s?"desc"===a.sort.dir?"asc":"desc":t.defaultSort||"asc";this.dispatchEvent(new DataColumnSortEvent({column:s,dir:o}))},this._rescaleHandler=e=>{e.preventDefault();const t=e.detail,a=Math.max(this.metadata.minPixelWidth??24,t.currentPosition.x-this._columnBBox.x);this.dispatchEvent(new DataColumnRescaleEvent({width:a}))},this._rescaleStartHandler=t=>{this._columnBBox=e.Utils.offsetRect(this)},this._rescaleEndHandler=e=>{}}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-headcell")}propertyChangedCallback(e,t,a,s){super.propertyChangedCallback(e,t,a,s),s||"gridState"!==e||this._updateSortButtonIconGlyph()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureBalloon()}disconnectedCallback(){this._disposeBalloon(),this._disposeRescaler(),super.disconnectedCallback()}updateLayout(e=this.metadata){this._setup(e)}_setupSortButton(){const t=new e.Components.UI.PacemButtonElement;return t.className=`button-flat headcell-sort ${e.PCSS}-inert`,this.addEventListener("click",this._sortButtonClickHandler,!1),e.Utils.addClass(this,e.PCSS+"-clickable"),t}_disposeSortButton(t=this._sortButton){e.Utils.isNull(t)||(e.Utils.removeClass(this,e.PCSS+"-clickable"),this.removeEventListener("click",this._sortButtonClickHandler,!1),t.remove(),this._sortButton=null)}_updateSortButtonIconGlyph(t=this._sortButton,a=this.gridState,s=this.metadata){e.Utils.isNull(t)||e.Utils.isNullOrEmpty(s)||(t.iconGlyph=a?.sort?.column===s.prop?"desc"===a.sort.dir?"arrow_drop_down":"arrow_drop_up":"")}_ensureRescaler(){if(e.Utils.isNull(this._rescaler)){const t=this._rescaler=this._rescaler||new e.Components.PacemRescaleElement;t.handles=[e.UI.RescaleHandle.Right],t.addEventListener(e.UI.RescaleEventType.Rescale,this._rescaleHandler,!1),t.addEventListener(e.UI.RescaleEventType.Start,this._rescaleStartHandler,!1),t.addEventListener(e.UI.RescaleEventType.End,this._rescaleEndHandler,!1),e.CustomElementUtils.findAncestorShell(this).appendChild(t)}}_setupRescaleContainer(){this._ensureRescaler();const t=new e.Components.PacemPanelElement;return t.className="headcell-rescale",t.behaviors=[this._rescaler],t}_disposeRescaleContainer(t=this._rescaleContainer){e.Utils.isNull(t)||(t.remove(),this._rescaleContainer=null)}_disposeRescaler(t=this._rescaler){e.Utils.isNull(t)||(t.removeEventListener(e.UI.RescaleEventType.Rescale,this._rescaleHandler,!1),t.removeEventListener(e.UI.RescaleEventType.Start,this._rescaleStartHandler,!1),t.removeEventListener(e.UI.RescaleEventType.End,this._rescaleEndHandler,!1),t.remove(),this._rescaler=null)}_setup(t=this.metadata){this.setAttribute("css-class","{{ this.metadata && this.metadata.headCell && this.metadata.headCell.cssClass || [] }}"),this.setAttribute("css","{{ this.metadata && this.metadata.headCell && this.metadata.headCell.css }}");const a=!!t.headCell?.textEllipsis?["text-truncate"]:[];switch(t.headCell?.verticalAlign?.toLowerCase()){case"top":e.Utils.addClass(this,"headcell-top");break;case"bottom":e.Utils.addClass(this,"headcell-bottom");break;case"middle":e.Utils.addClass(this,"headcell-middle")}switch(t.headCell?.horizontalAlign?.toLowerCase()){case"left":a.push("text-left");break;case"right":a.push("text-right");break;case"center":a.push("text-center")}this.removeAttribute("content");const s=e.Utils.isNullOrEmpty(a)?"":` class="${a.join(" ")}"`,o=t.headCell?.name??t.prop;if(this.innerHTML=`<div${s}>${o}</div>`,t.isSortable){this._disposeSortButton();const e=this._sortButton=this._setupSortButton();this._updateSortButtonIconGlyph(e),this.appendChild(e)}if(t.isRescalable){this._disposeRescaleContainer();const e=this._rescaleContainer=this._setupRescaleContainer();this.appendChild(e)}t.isTogglable}_normalizeTooltip(){const e=this.metadata.headCell?.tooltip||!1;return"object"==typeof e?e:{type:e}}_ensureBalloon(){var a,s;const o=!1===(s=this._normalizeTooltip()).type||e.Utils.isNullOrEmpty(a=this.metadata.headCell?.description);if(e.Utils.isNull(this._balloon)&&!o){let a=new e.Components.UI.PacemBalloonElement;a.options={behavior:t.UI.BalloonBehavior.Tooltip,trigger:s.trigger||t.UI.BalloonTrigger.Hover,position:s.position||t.UI.BalloonPosition.Top,hoverDelay:200,hoverTimeout:50,align:s.align||t.UI.BalloonAlignment.Auto},e.Utils.addClass(a,e.PCSS+"-headcell-tooltip"),e.CustomElementUtils.findAncestorShell(this).appendChild(this._balloon=a)}const n=this._balloon;if(!(e.Utils.isNull(n)||(n.target=this,n.disabled=o))){const e=a||"";switch(s.type){case"md":case"markdown":n.innerHTML=this._md.toHtml(e);break;case"html":n.innerHTML=e;break;default:n.innerText=e}}}_disposeBalloon(){e.Utils.isNull(this._balloon)||(this._balloon.remove(),this._balloon=null)}};s=__decorate([e.CustomElement({tagName:e.P+"-headcell"})],s),a.PacemHeadCellElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={}));
|
|
6
|
+
var Pacem,__decorate=this&&this.__decorate||function(e,t,a,s){var o,n=arguments.length,i=n<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,a):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,a,s);else for(var r=e.length-1;r>=0;r--)(o=e[r])&&(i=(n<3?o(i):n>3?o(t,a,i):o(t,a))||i);return n>3&&i&&Object.defineProperty(t,a,i),i};!function(e){!function(t){!function(a){let s=class PacemCarouselElement extends t.UI.PacemAdaptedIterativeElement{constructor(){super(...arguments),this.interval=4e3}};__decorate([e.ViewChild(e.P+"-adapter")],s.prototype,"adapter",void 0),__decorate([e.ViewChild(e.P+"-slideshow")],s.prototype,"slideshow",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Number})],s.prototype,"interval",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],s.prototype,"pausable",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-carousel",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-repeater datasource="{{ :host.datasource }}">\n <${e.P}-slideshow class="${e.PCSS}-carousel" adapter="{{ ::adapter }}" index="{{ :host.index, twoway }}" on-load="this.focus()">\n\n <template>\n\n <${e.P}-slide class="${e.PCSS}-carousel-item" css-class="{{ { '${e.PCSS}-carousel-previous': :host.isPrevious(^index, ::slideshow.index), '${e.PCSS}-carousel-next': :host.isNext(^index, ::slideshow.index), '${e.PCSS}-carousel-focus': ^index === ::slideshow.index } }}">\n <${e.P}-a href="{{ ^item.url }}">\n <${e.P}-img disabled="{{ !:host.isCloseTo(^index, ::slideshow.index) }}" class="${e.PCSS}-carousel-splash" adapt="cover" src="{{ ^item.image }}"></${e.P}-img>\n <div class="${e.PCSS}-carousel-content">\n <div class="${e.PCSS}-carousel-caption">\n <h3><${e.P}-text text="{{ ^item.title }}"></${e.P}-text></h3>\n <${e.P}-panel class="paragraph" content="{{ ^item.content }}"></${e.P}-panel>\n </div>\n </div>\n </${e.P}-a>\n </${e.P}-slide>\n\n </template>\n </${e.P}-slideshow>\n \n </${e.P}-repeater><${e.P}-adapter pausable="{{ :host.pausable }}" class="${e.PCSS}-carousel-adapter" interval="{{ :host.interval }}"></${e.P}-adapter>`})],s),a.PacemCarouselElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){class PacemContextMenuItemElement extends t.PacemItemElement{connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-context-menuitem")}propertyChangedCallback(e,t,a,s){super.propertyChangedCallback(e,t,a,s);const o=this.container;o instanceof n&&o.refresh()}}a.PacemContextMenuItemElement=PacemContextMenuItemElement;let s=class PacemContextMenuItemCommandElement extends PacemContextMenuItemElement{createMenuItemElement(){const e=new t.UI.PacemButtonElement;return e.commandArgument=this.commandArgument,e.commandName=this.commandName,e.textContent=this.caption,e.iconGlyph=this.iconGlyph,e.confirmationDialog=this.confirmationDialog,e.confirmationMessage=this.confirmationMessage,e.tooltip=this.tooltip,e.disabled=this.disabled,e}};__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"commandName",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"caption",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"tooltip",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"iconGlyph",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.String})],s.prototype,"confirmationMessage",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Element})],s.prototype,"confirmationDialog",void 0),__decorate([e.Watch({emit:!1,reflectBack:!0,converter:e.PropertyConverters.Json})],s.prototype,"commandArgument",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-context-menuitem-command"})],s),a.PacemContextMenuItemCommandElement=s;let o=class PacemContextMenuItemSeparatorElement extends PacemContextMenuItemElement{createMenuItemElement(){const e=document.createElement("hr");return e.style.pointerEvents="none",e}};o=__decorate([e.CustomElement({tagName:e.P+"-context-menuitem-separator"})],o),a.PacemContextMenuItemSeparatorElement=o;let n=class PacemContextMenuElement extends t.PacemItemsContainerElement{constructor(){super(...arguments),this._dispatchCommand=t=>{e.avoidHandler(t),this._onCommand(new e.CommandEvent({commandName:t.detail.commandName,commandArgument:t.detail.commandArgument??this.commandArgument}))},this._slotchangeHandler=e=>{this._resetLayout()},this._attributeChangeHandler=e=>this._refreshMenuItems,this._mouseupHandler=t=>{const a=this._ensureBalloon();e.Utils.isNull(a)||a.popout()}}validate(e){return e instanceof PacemContextMenuItemElement}#e;#t;#a;_ensureButton(){if(!e.Utils.isNull(this.#e))return this.#e;const a=this._slot;if(e.Utils.isNull(a))return null;const s=this._lookForAButton();if(!e.Utils.isNull(s))return this.#e=s;const o=new t.UI.PacemButtonElement;o.setAttribute("slot","button"),o.className=`${e.PCSS}-margin margin-0 button-flat`;const n=this.#t=new t.UI.PacemIconElement;return o.appendChild(n),this.appendChild(o),this.#e=o}_lookForAButton(){const t=this._slot;if(e.Utils.isNull(t))return null;const a=t.assignedElements({flatten:!0});return e.Utils.isNullOrEmpty(a)?null:a[0]}_ensureBalloon(){let a=this.#a;if(!e.Utils.isNull(a))return a;const s=e.CustomElementUtils.findAncestorShell(this);return e.Utils.isNull(s)?null:(a=new t.UI.PacemBalloonElement,a.options={trigger:t.UI.BalloonTrigger.Click,position:t.UI.BalloonPosition.HorizontalAuto,align:t.UI.BalloonAlignment.Auto,autoAdjust:!0},a.addEventListener(e.CommandEventName,this._dispatchCommand,!1),a.className=`${e.PCSS}-contextmenu`,s.appendChild(a),this.#a=a)}register(t){const a=super.register(t);return a&&(t.addEventListener(e.AttributeChangeEventName,this._attributeChangeHandler,!1),this._refreshMenuItems()),a}unregister(t){const a=super.unregister(t);return a&&(t.removeEventListener(e.AttributeChangeEventName,this._attributeChangeHandler,!1),this._refreshMenuItems()),a}_onCommand(t){this.dispatchEvent(new CustomEvent(e.CommandEventName,{detail:t.detail,cancelable:!0,bubbles:!0})),this.dispatchEvent(new CustomEvent(t.detail.commandName.toLowerCase(),{detail:t.detail.commandArgument,cancelable:!0,bubbles:!0}))}_resetLayout(){const t=this._ensureButton(),a=this._ensureBalloon();e.Utils.isNull(t)||e.Utils.isNull(a)||(a.target=t),this._toggleBtn(),this._toggleIcon()}_toggleBtn(a=this.disabled){const s=this.#e;!e.Utils.isNull(s)&&s instanceof t.PacemElement&&(s.disabled=a)}_toggleIcon(t=this.icon){const a=this.#t;e.Utils.isNull(a)||(a.icon=t)}viewActivatedCallback(){super.viewActivatedCallback(),this._resetLayout(),this._slot.addEventListener("slotchange",this._slotchangeHandler,!1)}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"icon":this._toggleIcon(a);break;case"disabled":this._toggleBtn(a)}}disconnectedCallback(){this._disposeButton(),this._disposeSlot(),this._disposeBalloon(),super.disconnectedCallback()}refresh(){this._refreshMenuItems()}_disposeButton(){this.#e=this.#t=null}_disposeSlot(){const t=this._slot;e.Utils.isNull(t)||t.removeEventListener("slotchange",this._slotchangeHandler,!1)}_disposeBalloon(){const t=this.#a;e.Utils.isNull(t)||(t.removeEventListener(e.CommandEventName,this._dispatchCommand,!1),this._disposeBalloonChildren(0),t.remove(),this.#a=null)}_disposeBalloonChildren(e){const t=this.#a;for(let a=t.children.length-1;a>=e;a--){const e=t.children.item(a);e.removeEventListener("mouseup",this._mouseupHandler,!1),e.remove()}}_refreshMenuItems(){const t=this._ensureBalloon();if(e.Utils.isNull(t))return;const a=t.children.length;let s=0;for(let e of this.items){if(e.hide)continue;const o=e.createMenuItemElement();if(o.addEventListener("mouseup",this._mouseupHandler,!1),s<a){const e=t.children.item(s);e.removeEventListener("mouseup",this._mouseupHandler,!1),e.replaceWith(o)}else t.appendChild(o);s++}this._disposeBalloonChildren(s)}};__decorate([e.ViewChild("slot[name=button]")],n.prototype,"_slot",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],n.prototype,"commandArgument",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],n.prototype,"icon",void 0),__decorate([e.Debounce(!0)],n.prototype,"_refreshMenuItems",null),n=__decorate([e.CustomElement({tagName:e.P+"-context-menu",shadow:!0,template:'<slot name="button"></slot><slot></slot>'})],n),a.PacemContextMenuElement=n}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let s;!function(e){e.Text="text",e.Html="html",e.Image="image",e.Markdown="markdown"}(s=a.EditMode||(a.EditMode={}));let o=class PacemEditElement extends t.PacemElement{constructor(a=new e.MarkdownService){super(),this._markdown=a,this._dialogPropertyChangedHandler=e=>{this._dialogPropertyChangedCallback(e)},this._broadcastFetchRequestEventName=e=>{this.dispatchEvent(new t.Scaffolding.ImageFetchRequestEvent(e.detail))},this._innerValueChangedHandler=t=>{"value"!==t.detail.propertyName||e.Utils.isNull(this._dialog)||(this._dialog.state=t.detail.currentValue)},this._editHandler=e=>{this.edit(e)}}_addButton(){if(e.Utils.isNull(this._button)){var t=document.createElement(e.P+"-button");return t.className=e.PCSS+"-edit-button",t.addEventListener("click",this._editHandler,!1),this._target.appendChild(t),this._button=t}}_removeButton(){var t=this._button;e.Utils.isNull(t)||(t.removeEventListener("click",this._editHandler,!1),t.remove(),this._button=null)}_addDialog(){var a=document.createElement(e.P+"-dialog");return a.buttons=t.UI.DialogButtons.OkCancel,a.addEventListener(e.PropertyChangeEventName,this._dialogPropertyChangedHandler,!1),a.appendChild(this._addTextarea()),a.appendChild(this._addContenteditable()),a.appendChild(this._addEditImage()),document.body.appendChild(a),this._dialog=a}_removeDialog(){this._removeTextarea(),this._removeContenteditable(),this._removeEditImage(),e.Utils.isNull(this._dialog)||(this._dialog.removeEventListener(e.PropertyChangeEventName,this._dialogPropertyChangedHandler,!1),this._dialog.remove())}_addTextarea(){var t=document.createElement(e.P+"-textarea");t.className=e.PCSS+"-edit-text",t.addEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1);const a=this.type||s.Text;return t.hide=a!==s.Text&&a!==s.Markdown,this._textarea=t}_removeTextarea(){e.Utils.isNull(this._textarea)||this._textarea.removeEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1)}_addContenteditable(){var t=document.createElement(e.P+"-contenteditable");t.className=e.PCSS+"-edit-content",t.addEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1);const a=this.type||s.Text;return t.hide=a!==s.Html,this._contenteditable=t}_removeContenteditable(){e.Utils.isNull(this._contenteditable)||this._contenteditable.removeEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1)}_addEditImage(){var a=document.createElement(e.P+"-edit-image");a.disabled=!0,a.addEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1),a.addEventListener(t.Scaffolding.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1);const o=this.type||s.Text;return a.hide=o!==s.Image,a.uploadUrl=this.imageUploadUrl,a.allowSnapshot=this.allowSnapshot,a.maxWidth=this.maxImageWidth,a.maxHeight=this.maxImageHeight,this._editImage=a}_removeEditImage(){e.Utils.isNull(this._editImage)||(this._editImage.removeEventListener(e.PropertyChangeEventName,this._innerValueChangedHandler,!1),this._editImage.removeEventListener(t.Scaffolding.ImageFetchRequestEventName,this._broadcastFetchRequestEventName,!1))}_update(t){var a=this._content;switch(this.type){case s.Html:a.innerHTML=t;break;case s.Markdown:if(a.localName===e.P+"-markdown")a.value=t;else a.innerHTML=this._markdown.toHtml(t);break;case s.Image:switch(a.localName){case"img":case e.P+"-img":a.src=t;break;default:a.style.backgroundImage=`url(${t})`}break;default:this._content.textContent=t}}_retrieve(){var t=this._content;switch(this.type){case s.Html:return t.innerHTML;case s.Image:switch(t.localName){case e.P+"-img":case"img":return t.src;default:let a=getComputedStyle(t).backgroundImage,s=/url\(["']?([^'"]+)["']?\)/.exec(a);return s&&s.length&&s[1]}case s.Markdown:return t.value||t.textContent;default:return t.textContent}}_setup(){this.disabled?(e.Utils.removeClass(this._target,e.PCSS+"-editing"),this._removeButton()):(e.Utils.addClass(this._target,e.PCSS+"-editing"),this._addButton())}_dialogPropertyChangedCallback(t){if("state"===t.detail.propertyName){const a=t.detail.currentValue;e.Utils.isNull(this._textarea)||(this._textarea.value=a),e.Utils.isNull(this._contenteditable)||(this._contenteditable.value=a),e.Utils.isNull(this._editImage)||(this._editImage.value=a),this._update(t.detail.currentValue)}}get _target(){var t=this.target;return e.Utils.isNull(t)&&(t=this.firstElementChild),t}connectedCallback(){super.connectedCallback(),this._addDialog()}viewActivatedCallback(){super.viewActivatedCallback(),this._addButton(),this._setup()}disconnectedCallback(){this._removeButton(),this._removeDialog(),super.disconnectedCallback()}propertyChangedCallback(t,a,o,n){switch(super.propertyChangedCallback(t,a,o,n),t){case"imageUploadUrl":e.Utils.isNull(this._editImage)||(this._editImage.uploadUrl=o);break;case"allowSnapshot":e.Utils.isNull(this._editImage)||(this._editImage.allowSnapshot=o);break;case"imageSet":e.Utils.isNull(this._editImage)||(this._editImage.imageSet=o);break;case"disabled":this._setup();break;case"type":const t=o;e.Utils.isNull(this._textarea)||(this._textarea.hide=t!==s.Text&&t!==s.Markdown),e.Utils.isNull(this._contenteditable)||(this._contenteditable.hide=t!==s.Html),e.Utils.isNull(this._editImage)||(this._editImage.hide=t!==s.Image);break;case"maxImageHeight":e.Utils.isNull(this._editImage)||(this._editImage.maxHeight=o);break;case"maxImageWidth":e.Utils.isNull(this._editImage)||(this._editImage.maxWidth=o)}}edit(a){e.avoidHandler(a);var s=this._target;if(!e.Utils.isNull(s)){this._removeButton(),this._content=s;var o=this._state=this._retrieve();e.Utils.isNull(this._editImage)||(this._editImage.disabled=!1),this._dialog.open(o).then((a=>{switch(a.button){case t.UI.DialogButton.Cancel:this._update(this._state);break;case t.UI.DialogButton.Ok:this._update(a.state),this.dispatchEvent(new CustomEvent("commit",{detail:{value:a.state}}))}this._content=null,e.Utils.isNull(this._editImage)||(this._editImage.disabled=!0),this._addButton()}))}}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"key",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"type",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Element})],o.prototype,"target",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],o.prototype,"imageUploadUrl",void 0),__decorate([e.Watch({emit:!1})],o.prototype,"imageSet",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],o.prototype,"maxImageWidth",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],o.prototype,"maxImageHeight",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],o.prototype,"allowSnapshot",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-edit"})],o),a.PacemEditElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){function s(t=o(),a="image"){return`<${e.P}-slide class="${e.PCSS}-gallery-item"\ncss-class="{{ { '${e.PCSS}-gallery-previous': :host.isPrevious(^index, ::_slideshow.index), '${e.PCSS}-gallery-next': :host.isNext(^index, ::_slideshow.index), '${e.PCSS}-gallery-focus': ^index === ::_slideshow.index } }}"\n>\n <${e.P}-img src="{{ ^item.${a} }}" disabled="{{ !::_lightbox.show || !(:host.isCloseTo(^index, ::_slideshow.index) || ^index === ::_slideshow.index) }}" \ncss="{{ {'visibility': (:host._poppingUp ? 'hidden' : ''), 'transition': (:host._poppingUp ? 'none' : '')} }}" class="${e.PCSS}-gallery-splash" adapt="contain"></${e.P}-img>\n \n${t}\n \n </${e.P}-slide>`}function o(t="caption"){return`<${e.P}-panel hide="{{ $pacem.isNullOrEmpty(^item.${t}) }}" class="${e.PCSS}-gallery-caption gallery-caption-default">\n <${e.P}-span class="paragraph" text="{{ ^item.${t} }}"></${e.P}-span>\n </${e.P}-panel>`}let n=class PacemGalleryElement extends t.UI.PacemAdaptedIterativeElement{constructor(){super(...arguments),this._templateChangeHandler=e=>{const t=e.target;this._setupWithCaptionTemplate(t.target)}}viewActivatedCallback(){super.viewActivatedCallback(),this._setupWithCaptionTemplate(),this._databind()}propertyChangedCallback(t,a,s,o){if(super.propertyChangedCallback(t,a,s,o),!o)switch(t){case"datasource":this._databind();break;case"captionTemplate":this._setupWithCaptionTemplate(s,a);break;case"imageProperty":this._setupWithCaptionTemplate(this.captionTemplate,this.captionTemplate);break;case"captionProperty":e.Utils.isNull(this.captionTemplate)&&this._setupDefaultTemplate()}}disconnectedCallback(){this._disposeTemplate(),super.disconnectedCallback()}_disposeTemplate(e=this.captionTemplate){e instanceof t.PacemTemplateProxyElement&&e.removeEventListener("templatechange",this._templateChangeHandler)}_setupWithCaptionTemplate(a=this.captionTemplate,o){if(this._disposeTemplate(o),e.Utils.isNull(a))return void this._setupDefaultTemplate();a instanceof t.PacemTemplateProxyElement&&(a.addEventListener("templatechange",this._templateChangeHandler,!1),a=a.target);const n=a.content.firstElementChild;e.Utils.addClass(n,e.PCSS+"-gallery-caption");const i=document.createElement("template");i.innerHTML=s(a.innerHTML,this.imageProperty),this._setupTemplate(i)}_setupTemplate(e){this._templateProxy.target=e}_setupDefaultTemplate(){const e=document.createElement("template");e.innerHTML=s(o(this.captionProperty),this.imageProperty),this._setupTemplate(e)}_databind(){const t=this._repeater;e.Utils.isNull(t)||(t.datasource=this.datasource)}get adapter(){return this._adapter}async _heroAnimate(a,s){if(!e.Utils.isNull(a)){let o=new t.UI.PacemImageElement,n=this._heroPlaceholderProxy.dom[0];const i=300;o.src=s||a.src,o.adapt="contain";let r=e.Utils.offset(n),l=e.Utils.offset(a),c=o.style;const d=getComputedStyle(n);c.border=d.border,c.width=n.clientWidth+"px",c.height=n.clientHeight+"px",c.position="absolute",c.zIndex=d.zIndex,c.top=r.top+"px",c.left=r.left+"px";const h=a.clientWidth/n.clientWidth,m=a.clientHeight/n.clientHeight,p=l.left-r.left+"px",u=l.top-r.top+"px";c.transformOrigin="0 0",c.transition=`transform cubic-bezier(0.445, 0.05, 0.55, 0.95) ${i}ms, opacity ${i}ms`,c.transform=`translate(${p}, ${u}) scale(${h}, ${m})`,document.body.appendChild(o),requestAnimationFrame((()=>{o.style.transform=""})),await e.Utils.waitForAnimationEnd(o,i),o.remove()}}open(e,t,a){this._poppingUp=!0,this._lightbox.show=!0,this._slideshow.index=e,this._heroAnimate(t,a).then((e=>{this._poppingUp=!1,this._slideshow.focus()}))}};__decorate([e.ViewChild(e.P+"-adapter")],n.prototype,"_adapter",void 0),__decorate([e.ViewChild(e.P+"-lightbox")],n.prototype,"_lightbox",void 0),__decorate([e.ViewChild(e.P+"-slideshow")],n.prototype,"_slideshow",void 0),__decorate([e.ViewChild(e.P+"-repeater")],n.prototype,"_repeater",void 0),__decorate([e.ViewChild(e.P+"-template-proxy")],n.prototype,"_templateProxy",void 0),__decorate([e.ViewChild(e.P+"-shell-proxy")],n.prototype,"_heroPlaceholderProxy",void 0),__decorate([e.Watch()],n.prototype,"_poppingUp",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],n.prototype,"captionTemplate",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],n.prototype,"captionProperty",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],n.prototype,"imageProperty",void 0),n=__decorate([e.CustomElement({tagName:e.P+"-gallery",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-lightbox class="${e.PCSS}-gallery">\n <${e.P}-repeater>\n <${e.P}-slideshow adapter="{{ ::_adapter }}" index="{{ :host.index, twoway }}" hide="{{ !::_lightbox.show }}">\n <${e.P}-template-proxy></${e.P}-template-proxy>\n </${e.P}-slideshow>\n </${e.P}-repeater>\n<${e.P}-adapter class="${e.PCSS}-gallery-adapter"></${e.P}-adapter>\n</${e.P}-lightbox>\n<${e.P}-shell-proxy><div class="${e.PCSS}-gallery-hero-target"></div></${e.P}-shell-proxy>`})],n),a.PacemGalleryElement=n}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){var s;let o=s=class PacemModalFormElement extends t.UI.PacemDialogBase{get form(){return this._form}constructor(){super(),this.suddenValidation=!0,this.method=e.Net.HttpMethod.Post,this._keyupHandler=t=>{if(!(13!==t.keyCode||t.shiftKey||t.ctrlKey||t.altKey||t.metaKey)){let a=t.currentTarget.querySelector(`.${e.PCSS}-dialog-buttons ${e.P}-button[type=submit]`);e.Utils.isNull(a)||!e.Utils.isVisible(a)||a.disabled||a.click()}},this.#s=!1,this._emitter=new e.Components.Scaffolding.FormEventEmitter(this)}viewActivatedCallback(){super.viewActivatedCallback(),this.addEventListener("keyup",this._keyupHandler,!1),this._emitter.start()}disconnectedCallback(){this._emitter.stop(),this.removeEventListener("keyup",this._keyupHandler,!1),super.disconnectedCallback()}_submit(a){this.readonly?this.commit(t.UI.DialogButton.Ok,a):(e.avoidHandler(a),this._form.validate().then((s=>{s&&(e.Utils.isNullOrEmpty(this.action)?this.commit(t.UI.DialogButton.Ok,a):this._form.submit(this._fetcher).then((e=>{this.commit(t.UI.DialogButton.Ok,a)}),(e=>{})))})))}_onSubmit(e){this.emit(e)}#s;open(t,a,o=!0){if(e.Utils.isNull(t))throw`The state of a ${s} cannot be null.`;this.#s=a;var n=super.open(t);return o&&this._form.setPristine(),n}commit(t,a){super.commit(t,a),this.#s||e.Utils.waitForAnimationEnd(this,500).then((e=>{this.state={}}))}_cancel(e){this.commit(t.UI.DialogButton.Cancel,e),this._form.reset()}_broadcast(e){this.dispatchEvent(new CustomEvent(e.type,{detail:e.detail}))}get modalButtons(){const e=this._buttons;return{ok:e&&e.firstElementChild&&e.firstElementChild.firstElementChild,cancel:e&&e.firstElementChild&&e.firstElementChild.lastElementChild}}};__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"suddenValidation",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"okCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"cancelCaption",void 0),__decorate([e.Watch({reflectBack:!0,converter:e.PropertyConverters.String})],o.prototype,"method",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"metadata",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"action",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"loaderType",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"success",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"fail",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Boolean})],o.prototype,"readonly",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],o.prototype,"fetchHeaders",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],o.prototype,"fetchCredentials",void 0),__decorate([e.ViewChild(e.P+"-lightbox")],o.prototype,"lightbox",void 0),__decorate([e.ViewChild(e.P+"-form[entity]")],o.prototype,"_form",void 0),__decorate([e.ViewChild(e.P+"-fetch")],o.prototype,"_fetcher",void 0),o=s=__decorate([e.CustomElement({tagName:e.P+"-modal-form",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-lightbox modal="true" logger="{{ :host.logger }}">\n <${e.P}-form wrapper>\n <${e.P}-form logger="{{ :host.logger }}" on-submit=":host._onSubmit($event)" readonly="{{ :host.readonly }}" entity="{{ :host.state, twoway }}" on-success=":host._broadcast($event)" \n on-fail=":host._broadcast($event)" success="{{ :host.success, twoway }}" fail="{{ :host.fail, twoway }}" autogenerate="{{ !$pacem.isNull($this.entity) }}" metadata="{{ :host.metadata }}"\n fetch-headers="{{ :host.fetchHeaders }}" fetch-credentials="{{ :host.fetchCredentials }}" sudden-validation="{{ :host.suddenValidation }}"></${e.P}-form>\n </${e.P}-form>\n <${e.P}-fetch logger="{{ :host.logger }}" method="{{ :host.method }}" headers="{{ :host.fetchHeaders }}" credentials="{{ :host.fetchCredentials }}" autofetch="false" url="{{ :host.action }}"></${e.P}-fetch> \n <div class="${e.PCSS}-dialog-buttons ${e.PCSS}-buttonset buttons" slot="bottom">\n <div class="buttonset-left">\n <${e.P}-button on-click=":host._submit($event)" css-class="{{ {'buttonset-last': :host.readonly} }}" type="submit"\n class="button primary button-size size-small" disabled="{{ (:host.suddenValidation && !:host.readonly && !(::_form.valid && ::_form.dirty)) || ::_fetcher.fetching }}">\n <${e.P}-panel class="submit-spinner ${e.PCSS}-anim anim-pop" hide="{{ !::_form.fetching }}"><i class="${e.PCSS}-icon ${e.PCSS}-anim anim-rotate rotate-uniform display-block">refresh</i></${e.P}-panel>\n <${e.P}-text text="{{ :host.okCaption || 'OK' }}"></${e.P}-text>\n </${e.P}-button>\n <${e.P}-button on-click=":host._cancel($event)" hide="{{ :host.readonly }}" class="button button-size size-small" disabled="{{ ::_fetcher.fetching }}"><${e.P}-text text="{{ :host.cancelCaption || 'Cancel' }}"></${e.P}-text></${e.P}-button>\n </div></div>\n <div class="${e.PCSS}-dialog-heading" slot="top">\n <${e.P}-content></${e.P}-content>\n </div>\n <div class="pos-absolute absolute-top absolute-right absolute-left absolute-bottom overflow-hidden ${e.PCSS}-inert display-flex flex-center flex-middle">\n <${e.P}-loader type="{{ :host.loaderType }}" class="loader-primary loader-smaller ${e.PCSS}-anim anim-pop" active="{{ ::_fetcher.fetching }}"></${e.P}-loader>\n </div>\n</${e.P}-lightbox>`})],o),a.PacemModalFormElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let s=class PacemRouterHashStateElement extends t.PacemEventTarget{constructor(){super(...arguments),this.default={},this.state={},this.normalizedState={},this._routerNavigatingHandler=e=>{this.#o=!0},this._routerNavigateHandler=e=>{this.#o=!1,this._updateStateFromURI()}}#o;viewActivatedCallback(){super.viewActivatedCallback(),this._updateStateFromURI(),this._setupRouterHandlers(this.router)}propertyChangedCallback(e,t,a,s){switch(super.propertyChangedCallback(e,t,a,s),e){case"state":s||this.#o||(this._updateNormalizedState(),this._updateURIFromState());break;case"disabled":a&&this._updateStateFromURI();break;case"default":this._updateStateFromURI();break;case"router":s||(this._disposeRouterHandlers(t),this._setupRouterHandlers(a))}}disconnectedCallback(){this._disposeRouterHandlers(),super.disconnectedCallback()}_setupRouterHandlers(t=this.router){e.Utils.isNull(t)||(window.addEventListener("navigating",this._routerNavigatingHandler,!1),window.addEventListener("navigate",this._routerNavigateHandler,!1))}_disposeRouterHandlers(t=this.router){e.Utils.isNull(t)||(window.removeEventListener("navigating",this._routerNavigatingHandler,!1),window.removeEventListener("navigate",this._routerNavigateHandler,!1))}_currentBasePath(){const t=this.router;if(!e.Utils.isNull(t)){const e=t.state.$querystring;return this._normalizePath(document.location.pathname,e)}return null}_normalizePath(t,a){return e.Utils.isNullOrEmpty(t)?t:(t.endsWith("/")&&(t=t.substring(0,t.length-1)),a??="",t+(a.length>0?"?"+a:""))}_areStatesEquivalent(t,a){const s=e.Utils.extend({},t||{}),o=e.Utils.extend({},a||{});for(let e in s){if(!this._areSubstantiallyEquivalent(s[e],o[e]))return!1;delete s[e],delete o[e]}for(let e in o)if(!this._areSubstantiallyEquivalent(s[e],o[e]))return!1;return!0}_updateNormalizedState(e=this.state){if(this.disabled||this.#o)return;const t=this._normalizeState(e);this._areStatesEquivalent(t,this.normalizedState)||(this.normalizedState=t)}_updateStateFromURI(){if(this.disabled||this.#o)return;var t=e.Utils.extend({},this.default||{});const a=this.router;if(!e.Utils.isNull(a)){const s=this._denormalizeState(e.Utils.URIs.parseQuery(a.state&&a.state.$hash||"{}"));e.Utils.extend(t,s)}this._areStatesEquivalent(this.state,t)||(this.state=t)}_updateURIFromState(t=this.normalizedState){if(this.disabled||this.#o)return;const a=this.router;if(!e.Utils.isNull(a)){const o=this._currentBasePath(),n=e.Utils.URIs.parseQuery(a.state.$hash||"{}"),i=t||{};if(!this._areStatesEquivalent(n,i)){const t=this._cleanupStateForURI(i);var s=o;e.Utils.isNullOrEmpty(t)||(s=e.Utils.URIs.appendQuery(o,t,!1,!0)),a.path=s}}}_areSubstantiallyEquivalent(t,a){return t??="",a??="",t.toString()==a.toString()||e.Utils.areSemanticallyEqual(t,a)||JSON.stringify(t)===JSON.stringify(a)}_cleanupStateForURI(t=this.state){const a=e.Utils.clone(t||{}),s=this.default;for(let t in a)(e.Utils.isNullOrEmpty(a[t])&&(e.Utils.isNull(s)||!(t in s))||!e.Utils.isNull(s)&&t in s&&this._areSubstantiallyEquivalent(s[t],a[t]))&&delete a[t];return a}_normalizeState(t=this.state,a=this.default){var s={};const o=a;for(let a in t||{}){const n=t[a];if(e.Utils.isNullOrEmpty(n))e.Utils.isNull(o)||!(a in o)||e.Utils.isNullOrEmpty(o[a])||(s[a]="");else switch(typeof n){case"number":case"bigint":case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:n.toString()});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:n});break;default:if(e.Utils.Dates.isDate(n))Object.defineProperty(s,a,{enumerable:!0,value:n.toISOString()});else{if(!(n instanceof RegExp))throw new Error("Type not supported to be normalized into a URI hash.");Object.defineProperty(s,a,{enumerable:!0,value:n.source})}}}return s}_denormalizeState(t=this.normalizedState,a=this.default){const s={},o=a||{};for(let a in t){if(!(a in o)){s[a]=t[a];continue}const n=o[a],i=t[a];switch(typeof n){case"boolean":Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.Boolean.convert(i)});break;case"number":case"bigint":Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.Number.convert(i)});break;case"symbol":case"string":Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.String.convert(i)});break;default:n instanceof Date?Object.defineProperty(s,a,{enumerable:!0,value:e.PropertyConverters.Date.convert(i)}):n instanceof RegExp?Object.defineProperty(s,a,{enumerable:!0,value:new RegExp(i,n.flags)}):Object.defineProperty(s,a,{enumerable:!0,value:i})}}return s}set(t,a){var s={};"string"==typeof t?Object.defineProperty(s,t,{enumerable:!0,value:a}):s=t,this.state=e.Utils.extend({},this.state||{},s)}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Element})],s.prototype,"router",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],s.prototype,"default",void 0),__decorate([e.Watch()],s.prototype,"state",void 0),__decorate([e.Watch()],s.prototype,"normalizedState",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-router-hash-state"})],s),a.PacemRouterHashStateElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){let s=class PacemSearchElement extends t.PacemElement{constructor(){super(...arguments),this.hintParameter="q"}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),"hint"===e){let e={};e[this.hintParameter]=a,this._fetcher.parameters=e}}};__decorate([e.ViewChild(e.P+"-fetch")],s.prototype,"_fetcher",void 0),__decorate([e.Watch()],s.prototype,"datasource",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"hint",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"url",void 0),__decorate([e.Watch({converter:e.PropertyConverters.String})],s.prototype,"method",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],s.prototype,"hintParameter",void 0),s=__decorate([e.CustomElement({tagName:e.P+"-search",shadow:e.Defaults.USE_SHADOW_ROOT,template:`<${e.P}-fetch debounce="800" url="{{ :host.url }}" method="{{ :host.method }}">\n</${e.P}-fetch><${e.P}-input-search value="{{ :host.hint, twoway }}"></${e.P}-input-search>\n<${e.P}-repeater datasource="{{ ::_fetch.result }}">\n <${e.P}-content></${e.P}-content>\n</${e.P}-repeater>`})],s),a.PacemSearchElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){class PacemBaseCellElement extends t.PacemSafeContentElement{viewActivatedCallback(){super.viewActivatedCallback(),this.updateColumnPosition(),this.updateLayout(this.metadata)}updateColumnPosition(e=this.metadata,t=this.gridState){this.style.gridColumn=(t.orderedColumns.indexOf(e.prop)+1).toString()}updateVisibility(e=this.state){this.hide=!!e.hidden}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"metadata":this.updateLayout(a);break;case"gridState":this.updateColumnPosition();break;case"state":this.updateVisibility()}}}__decorate([e.Watch({converter:e.PropertyConverters.Json})],PacemBaseCellElement.prototype,"metadata",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],PacemBaseCellElement.prototype,"state",void 0),__decorate([e.Watch({converter:e.PropertyConverters.Json})],PacemBaseCellElement.prototype,"gridState",void 0),a.PacemBaseCellElement=PacemBaseCellElement}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){t.DataRowSelectChangeEventName="datarowselectchange";class DataRowSelectChangeEvent extends CustomEvent{constructor(e){super(t.DataRowSelectChangeEventName,{detail:e,bubbles:!1,cancelable:!0})}}t.DataRowSelectChangeEvent=DataRowSelectChangeEvent;const a={},s=[];let o=class PacemDataCellElement extends t.PacemBaseCellElement{updateLayout(e=this.metadata){this._setup(e)}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-datacell")}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"_contentTooltip":this._updateTooltipJustInCase();break;case"gridState":case"rowindex":this._updateSelection()}}_updateTooltipJustInCase(){(this.metadata.dataCell?.autoTooltip??!0)&&!e.Utils.isNullOrEmpty(this._contentTooltip)?this.setAttribute("tooltip",this._contentTooltip):this.removeAttribute("tooltip")}_inflateContent(t=this.dataitem,a=this.rowindex,s=this.metadata){this._contentTooltip="";let o=s.dataCell?.format;const n=s.dataCell?.null??"";if("function"==typeof o){const i=o(this,s,t,a);return e.Utils.isNullOrEmpty(i)?n:i}const i=e.CustomElementUtils.resolvePath(s.prop,t)?.target,r=i?.value;if(e.Utils.isNullOrEmpty(r))return n;const l=e.Utils.lang(this);switch(s.dataType){case"boolean":return`<${e.P}-icon icon="material ${r?"check_circle_outline":"radio_button_unchecked"} text-big-steady"></${e.P}-icon>`;case"time":case"date":case"datetime":return this._contentTooltip=e.Utils.core.date(r,o,l);case"byte":case"int16":case"int32":case"int64":case"short":case"integer":case"int":case"long":case"double":case"decimal":case"float":case"single":case"number":return this._contentTooltip=e.Utils.core.number(r,o||"",l);case"currency":return o??="EUR",this._contentTooltip="string"==typeof o?e.Utils.core.currency(r,o,l):e.Utils.core.number(r,o,l);case"percent":case"percentage":return o??={style:"percent",maximumFractionDigits:2},this._contentTooltip="string"==typeof o?e.Utils.core.currency(r,o,l):e.Utils.core.number(r,o,l);default:return this._contentTooltip=r}}_inflateCssClass(t=this.dataitem,a=this.rowindex,o=this.metadata,n){if(e.Utils.isNull(t)||e.Utils.isNullOrEmpty(o))return s;const i=o.dataCell&&o.dataCell.cssClass||s,r=[];switch("function"==typeof i?Array.prototype.push.apply(r,i(this,o,t,a)||[]):Array.prototype.push.apply(r,i),o.dataCell?.verticalAlign?.toLowerCase()){case"top":r.push("datacell-top");break;case"bottom":r.push("datacell-bottom");break;case"middle":r.push("datacell-middle")}switch(o.dataCell?.horizontalAlign?.toLowerCase()){case"left":r.push("datacell-left");break;case"right":r.push("datacell-right");break;case"center":r.push("datacell-center")}return n?.length&&(0===a&&r.push("datacell-firstrow"),a===n.length-1&&r.push("datacell-lastrow")),r}_inflateCss(t=this.dataitem,s=this.rowindex,o=this.metadata){if(e.Utils.isNull(t)||e.Utils.isNullOrEmpty(o))return a;const n=o.dataCell&&o.dataCell.css||a;return"function"==typeof n?n(this,o,t,s):n}_setup(t=this.metadata){this.setAttribute("css-class","{{ this._inflateCssClass(^item, ^index, this.metadata, :host.datasource) }}"),this.setAttribute("css","{{ Pacem.Utils.extend({ 'grid-row': ^index+2 }, this._inflateCss(^item, ^index, this.metadata, :host.datasource)) }}");const a=!!t.dataCell?.textEllipsis?["text-truncate"]:[],s=t?.dataCell?.selectMode?.toLowerCase();switch(s){case"cell":case"row":a.push(e.PCSS+"-inert"),a.push(e.PCSS+"-unselect")}this._content.cssClass=a,this._updateSelection()}_updateSelection(){(this.gridState?.selectedRows??[]).indexOf(this.rowindex)>=0?e.Utils.addClass(this,"datarow-selected datacell-filled datacell-primary"):e.Utils.removeClass(this,"datarow-selected datacell-filled datacell-primary")}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Eval})],o.prototype,"dataitem",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],o.prototype,"rowindex",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String,debounce:200})],o.prototype,"_contentTooltip",void 0),__decorate([e.ViewChild(e.P+"-span")],o.prototype,"_content",void 0),o=__decorate([e.CustomElement({tagName:e.P+"-datacell",shadow:!1,template:`<${e.P}-span content="{{ :host._inflateContent(^item, ^index, :host.metadata) }}"></${e.P}-span>`})],o),t.PacemDataCellElement=o}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){const s="datacolumnchange",o="datacolumnstatechange",n={selectCaption:"Details",editCaption:"Edit",editIcon:"edit",deleteCaption:"Delete",deleteIcon:"delete"};class DataCellUIEvent extends e.CustomUIEvent{constructor(e,t,a){super(e,t,{bubbles:!1,cancelable:!0},a)}}a.DataCellUIEvent=DataCellUIEvent;let i=class PacemDataColumnElement extends t.PacemItemElement{propertyChangedCallback(e,t,a,n){if(super.propertyChangedCallback(e,t,a,n),!n)switch(e){case"field":case"headcellCss":case"headcellCssClass":case"datacellCss":case"datacellCssClass":case"resizable":case"togglable":case"sortable":case"label":this.dispatchEvent(new Event(s));break;case"order":case"hide":this.dispatchEvent(new Event(o))}}};function r(t){return`<${e.P}-headcell metadata="{{ :host._getColumnMetadata('${t.prop}') }}" state="{{ :host._columnState.${t.prop} }}" grid-state="{{ :host._gridState }}" \non-${a.DataColumnSortEventName}=":host._broadcastSortCommand($event)"\non-${a.DataColumnRescaleEventName}=":host._broadcastRescaleCommand($event)"></${e.P}-headcell>`}function l(t,a){return`<${e.P}-datacell metadata="{{ :host._getColumnMetadata('${t.prop}') }}" state="{{ :host._columnState.${t.prop} }}" grid-state="{{ :host._gridState }}"\ndataitem="{{ ^item }}" rowindex="{{ ^index }}" ${a}></${e.P}-datacell>`}__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"field",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.String})],i.prototype,"label",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],i.prototype,"resizable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],i.prototype,"togglable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Boolean})],i.prototype,"sortable",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"order",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],i.prototype,"format",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"headcellCss",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"headcellCssClass",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"datacellCss",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],i.prototype,"datacellCssClass",void 0),i=__decorate([e.CustomElement({tagName:e.P+"-datacolumn"})],i),a.PacemDataColumnElement=i;let c=class PacemDataGridElement extends t.PacemItemsContainerElement{constructor(t=e.Utils.uniqueCode()){super(),this._key=t,this.state={},this._columnState={},this._gridState={sort:{},orderedColumns:[],selectedRows:[]},this._itemDataColumnRebuildHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._itemDataColumnChangeHandler=e=>{this._adaptColumnMetadata(this.items||[])},this._memoizer={}}validate(e){return e instanceof i}viewActivatedCallback(){super.viewActivatedCallback(),this.addEventListener(e.CommandEventName,this._onCommand,!1),this._adaptColumnMetadata();const t=this._adaptedColumnMetadata||[];this._buildUpGrid(t)}disconnectedCallback(){this.removeEventListener(e.CommandEventName,this._onCommand,!1),super.disconnectedCallback()}propertyChangedCallback(e,t,a,s){if(super.propertyChangedCallback(e,t,a,s),!s)switch(e){case"items":case"metadata":this._adaptColumnMetadata();break;case"_adaptedColumnMetadata":this._buildUpGrid(a);break;case"datasource":this._setRowSelection();break;case"state":this._mergeState(a)}}register(e){return!!super.register(e)&&(e.addEventListener(s,this._itemDataColumnRebuildHandler,!1),e.addEventListener(o,this._itemDataColumnChangeHandler,!1),!0)}unregister(e){return!!super.unregister(e)&&(e.removeEventListener(s,this._itemDataColumnRebuildHandler,!1),e.removeEventListener(o,this._itemDataColumnChangeHandler,!1),!0)}setRowSelection(...e){const t=Array.from(e);this._setRowSelection(t)}_setRowSelection(t){const s=(t||[]).map((e=>({item:this.datasource[e],index:e}))),o=new a.DataRowSelectChangeEvent({selectedRows:s});if(this.dispatchEvent(o),!o.defaultPrevented){let t=o.detail.selectedRows;e.Utils.isArray(t)||(t=[]),this._doSetRowSelection(t.map((e=>e?.index??-1)).filter((e=>e>=0)))}}_doSetRowSelection(e){const t={selectedRows:e};this._mergeState(t)}_mergeState(t=this.state){t??={};const a={selectedRows:(t.selectedRows||[]).map((e=>"number"==typeof e?e:e.index))},s=this._gridState=e.Utils.extend({},this._gridState,t,a);this.state=e.Utils.extend(this.state??{},s)}_adaptColumnMetadata(e=this.items,t=this.metadata){const a=Array.prototype.concat.apply((e||[]).map((e=>({prop:e.field,headCell:{name:e.label,cssClass:e.headcellCssClass||[],css:e.headcellCss||{}},dataCell:{format:e.format,cssClass:e.datacellCssClass||[],css:e.datacellCss||{}},hide:e.hide,isRescalable:e.resizable,isSortable:e.sortable,isTogglable:e.togglable,order:e.order,width:1}))),t||[]);this._memoizer={},this._adaptedColumnMetadata=a}_getColumnMetadata(e){return this._memoizer[e]=this._memoizer[e]||this._adaptedColumnMetadata.find((t=>t.prop===e))}_buildUpGrid(a){const s=this._tableContainer;if(e.Utils.isNull(s))return;if(e.Utils.isNullOrEmpty(a))return void(s.innerHTML="");const o=this.options=e.Utils.extend({},n,this.options||{}),i=o.allowDelete||o.allowEdit||o.allowSelect,c=o.allowMultiSelect&&i;let d=c?"auto ":"",h=c?`<div class="${e.PCSS}-headcell"></div>`:"",m=c?`<${e.P}-panel class="${e.PCSS}-datacell" style="grid-column: 1;" css="{{ {'grid-row': ^index+2} }}"></${e.P}-panel>`:"",p=c?`<div class="${e.PCSS}-footcell"></div>`:"";const u=c?a.length+2:i?a.length+1:a.length;this._gridState.orderedColumns=a.sort(((e,t)=>(e.order??0)-(t.order??0))).map((e=>e.prop));let _="";for(let e of t.PacemElement.emittedEventTypes)_+=` on-${e}=":host._broadcastUiEvent(^item, ^index, $event)"`;for(let e of a)this._columnState[e.prop]={hidden:e.hide},d+=this._getColumnSize(e).replaceAll(" ","")+" ",h+=r(e),m+=l(e,_);m+=`<${e.P}-panel class="${e.PCSS}-datarow" css-class="{{ {'datarow-alt': ^index % 2 === 1, 'datarow-first': ^index === 0, 'datarow-last': ^index === (:host.datasource.length - 1), 'datarow-selected': :host._gridState.selectedRows.indexOf(^index) >= 0 } }}" style="grid-column: 1 /span ${u};" css="{{ {'grid-row': ^index+2} }}"></${e.P}-panel>`;const C=`<${e.P}-repeater datasource="{{ :host.datasource }}">\n<${e.P}-panel class="${e.PCSS}-datatable" css="{{ {'grid-template-columns': :host._getColumnSizes(:host._columnState, '${d.trimEnd()}', :host._gridState) } }}">\n ${h}\n <template>\n ${m}\n </template>\n ${p}\n</${e.P}-panel>`;s.innerHTML=C}_getColumnSizes(t=this._columnState,a,s=this._gridState){if(e.Utils.isNullOrEmpty(t))return a;const o=a.split(" ");for(let e in t){const a=t[e],n=s.orderedColumns.indexOf(e);a.hidden?o[n]="auto":a.pixelWidth>0&&(o[n]=a.pixelWidth+"px")}return o.join(" ")}_getColumnSize(e){if(e.hide)return"auto";const t=e.minPixelWidth,a=e.maxPixelWidth;if(a>0&&t>0)return`minmax(${t}px, ${a}px)`;{const s="number"==typeof e.width?e.width+"fr":"auto";return t>0?`minmax(${t}px, ${s})`:a>0?`minmax(${s}, ${a}px)`:s}}_onCommand(e){this.dispatchEvent(new t.ItemCommandEvent(e)),this.dispatchEvent(new t.CustomItemCommandEvent(e))}_broadcastUiEvent(e,t,a){const s=a.type.toLowerCase(),o="datacell"+s,n={dataitem:e,rowindex:t,datacell:a.srcElement},i=a instanceof MouseEvent||a instanceof TouchEvent||a instanceof KeyboardEvent?new DataCellUIEvent(o,n,a):new DataCellUIEvent(o,n);if(this.dispatchEvent(i),"click"===s&&!i.defaultPrevented){const e=i.detail.datacell,t=e.metadata?.dataCell?.selectMode?.toLowerCase();switch(t){case"cell":break;case"row":this._broadcastSelectCommand(i.detail.rowindex)}}}_broadcastSortCommand(t){const s=t.detail,o=new a.DataColumnSortEvent(s);if(this.dispatchEvent(o),!o.defaultPrevented){const t={column:""};"string"==typeof o.detail.column&&(t.column=o.detail.column),"string"==typeof o.detail.dir&&(t.dir="desc"===o.detail.dir?"desc":"asc"),this._gridState=e.Utils.extend({},this._gridState,{sort:t})}}_broadcastRescaleCommand(t){const s=t.detail,o=new a.DataColumnRescaleEvent(s);if(this.dispatchEvent(o),!o.defaultPrevented){let a=s.width;"number"==typeof o.detail.width&&o.detail.width>0&&(a=o.detail.width);const n={};n[t.srcElement.metadata.prop]={pixelWidth:a},this._columnState=e.Utils.extend({},this._columnState,n)}}_broadcastSelectCommand(t){let a=(this._gridState.selectedRows||[]).slice(0);const s=a.indexOf(t);let o=!0;if(s>=0)a.splice(s,1);else{const s=this.options;if(s.allowMultiSelect)a.push(t);else if(s.allowSelect)a=[t];else{o=!1;const a=`Cannot select the row at index ${t} since datagrid options do not allow any row selection.`;e.Utils.isNull(this.logger)?console.warn(a):this.log(e.Logging.LogLevel.Warn,a)}}o&&this._setRowSelection(a)}};__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],c.prototype,"metadata",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],c.prototype,"options",void 0),__decorate([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],c.prototype,"state",void 0),__decorate([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],c.prototype,"datasource",void 0),__decorate([e.ViewChild("."+e.PCSS+"-datagrid")],c.prototype,"_tableContainer",void 0),__decorate([e.Watch()],c.prototype,"_adaptedColumnMetadata",void 0),__decorate([e.Watch()],c.prototype,"_columnState",void 0),__decorate([e.Watch()],c.prototype,"_gridState",void 0),__decorate([e.Debounce()],c.prototype,"_adaptColumnMetadata",null),c=__decorate([e.CustomElement({tagName:e.P+"-datagrid",shadow:!1,template:`<div class="${e.PCSS}-datagrid"></div><${e.P}-content></${e.P}-content>`})],c),a.PacemDataGridElement=c}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(a){a.DataColumnSortEventName="datacolumnsort";class DataColumnSortEvent extends CustomEvent{constructor(e){super(a.DataColumnSortEventName,{detail:e,bubbles:!1,cancelable:!0})}}a.DataColumnSortEvent=DataColumnSortEvent,a.DataColumnRescaleEventName="datacolumnrescale";class DataColumnRescaleEvent extends CustomEvent{constructor(e){super(a.DataColumnRescaleEventName,{detail:e,bubbles:!1,cancelable:!0})}}a.DataColumnRescaleEvent=DataColumnRescaleEvent;let s=class PacemHeadCellElement extends a.PacemBaseCellElement{constructor(t=new e.MarkdownService){super(),this._md=t,this._sortButtonClickHandler=e=>{const t=this.metadata,a=this.gridState,s=t.prop,o=a.sort?.column===s?"desc"===a.sort.dir?"asc":"desc":t.defaultSort||"asc";this.dispatchEvent(new DataColumnSortEvent({column:s,dir:o}))},this._rescaleHandler=e=>{e.preventDefault();const t=e.detail,a=Math.max(this.metadata.minPixelWidth??24,t.currentPosition.x-this._columnBBox.x);this.dispatchEvent(new DataColumnRescaleEvent({width:a}))},this._rescaleStartHandler=t=>{this._columnBBox=e.Utils.offsetRect(this)},this._rescaleEndHandler=e=>{}}connectedCallback(){super.connectedCallback(),e.Utils.addClass(this,e.PCSS+"-headcell")}propertyChangedCallback(e,t,a,s){super.propertyChangedCallback(e,t,a,s),s||"gridState"!==e||this._updateSortButtonIconGlyph()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureBalloon()}disconnectedCallback(){this._disposeBalloon(),this._disposeRescaler(),super.disconnectedCallback()}updateLayout(e=this.metadata){this._setup(e)}_setupSortButton(){const t=new e.Components.UI.PacemButtonElement;return t.className=`button-flat headcell-sort ${e.PCSS}-inert`,this.addEventListener("click",this._sortButtonClickHandler,!1),e.Utils.addClass(this,e.PCSS+"-clickable"),t}_disposeSortButton(t=this._sortButton){e.Utils.isNull(t)||(e.Utils.removeClass(this,e.PCSS+"-clickable"),this.removeEventListener("click",this._sortButtonClickHandler,!1),t.remove(),this._sortButton=null)}_updateSortButtonIconGlyph(t=this._sortButton,a=this.gridState,s=this.metadata){e.Utils.isNull(t)||e.Utils.isNullOrEmpty(s)||(t.iconGlyph=a?.sort?.column===s.prop?"desc"===a.sort.dir?"arrow_drop_down":"arrow_drop_up":"")}_ensureRescaler(){if(e.Utils.isNull(this._rescaler)){const t=this._rescaler=this._rescaler||new e.Components.PacemRescaleElement;t.handles=[e.UI.RescaleHandle.Right],t.addEventListener(e.UI.RescaleEventType.Rescale,this._rescaleHandler,!1),t.addEventListener(e.UI.RescaleEventType.Start,this._rescaleStartHandler,!1),t.addEventListener(e.UI.RescaleEventType.End,this._rescaleEndHandler,!1),e.CustomElementUtils.findAncestorShell(this).appendChild(t)}}_setupRescaleContainer(){this._ensureRescaler();const t=new e.Components.PacemPanelElement;return t.className="headcell-rescale",t.behaviors=[this._rescaler],t}_disposeRescaleContainer(t=this._rescaleContainer){e.Utils.isNull(t)||(t.remove(),this._rescaleContainer=null)}_disposeRescaler(t=this._rescaler){e.Utils.isNull(t)||(t.removeEventListener(e.UI.RescaleEventType.Rescale,this._rescaleHandler,!1),t.removeEventListener(e.UI.RescaleEventType.Start,this._rescaleStartHandler,!1),t.removeEventListener(e.UI.RescaleEventType.End,this._rescaleEndHandler,!1),t.remove(),this._rescaler=null)}_setup(t=this.metadata){this.setAttribute("css-class","{{ this.metadata && this.metadata.headCell && this.metadata.headCell.cssClass || [] }}"),this.setAttribute("css","{{ this.metadata && this.metadata.headCell && this.metadata.headCell.css }}");const a=!!t.headCell?.textEllipsis?["text-truncate"]:[];switch(t.headCell?.verticalAlign?.toLowerCase()){case"top":e.Utils.addClass(this,"headcell-top");break;case"bottom":e.Utils.addClass(this,"headcell-bottom");break;case"middle":e.Utils.addClass(this,"headcell-middle")}switch(t.headCell?.horizontalAlign?.toLowerCase()){case"left":a.push("text-left");break;case"right":a.push("text-right");break;case"center":a.push("text-center")}this.removeAttribute("content");const s=e.Utils.isNullOrEmpty(a)?"":` class="${a.join(" ")}"`,o=t.headCell?.name??t.prop;if(this.innerHTML=`<div${s}>${o}</div>`,t.isSortable){this._disposeSortButton();const e=this._sortButton=this._setupSortButton();this._updateSortButtonIconGlyph(e),this.appendChild(e)}if(t.isRescalable){this._disposeRescaleContainer();const e=this._rescaleContainer=this._setupRescaleContainer();this.appendChild(e)}t.isTogglable}_normalizeTooltip(){const e=this.metadata.headCell?.tooltip||!1;return"object"==typeof e?e:{type:e}}_ensureBalloon(){var a,s;const o=!1===(s=this._normalizeTooltip()).type||e.Utils.isNullOrEmpty(a=this.metadata.headCell?.description);if(e.Utils.isNull(this._balloon)&&!o){let a=new e.Components.UI.PacemBalloonElement;a.options={behavior:t.UI.BalloonBehavior.Tooltip,trigger:s.trigger||t.UI.BalloonTrigger.Hover,position:s.position||t.UI.BalloonPosition.Top,hoverDelay:200,hoverTimeout:50,align:s.align||t.UI.BalloonAlignment.Auto},e.Utils.addClass(a,e.PCSS+"-headcell-tooltip"),e.CustomElementUtils.findAncestorShell(this).appendChild(this._balloon=a)}const n=this._balloon;if(!(e.Utils.isNull(n)||(n.target=this,n.disabled=o))){const e=a||"";switch(s.type){case"md":case"markdown":n.innerHTML=this._md.toHtml(e);break;case"html":n.innerHTML=e;break;default:n.innerText=e}}}_disposeBalloon(){e.Utils.isNull(this._balloon)||(this._balloon.remove(),this._balloon=null)}};s=__decorate([e.CustomElement({tagName:e.P+"-headcell"})],s),a.PacemHeadCellElement=s}(t.Plus||(t.Plus={}))}(e.Components||(e.Components={}))}(Pacem||(Pacem={}));
|
package/dist/js/pacem-ui.d.ts
CHANGED
package/dist/js/pacem-ui.js
CHANGED
package/dist/js/pacem-ui.min.js
CHANGED
package/package.json
CHANGED