@pacem/pacem-charts 1.0.0-abel → 1.0.0-amaldi

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,8 @@
1
+ /*!
2
+ * @pacem/pacem-charts v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  (function (pacemFoundation, pacemCore) {
2
7
  'use strict';
3
8
 
@@ -1,2 +1,7 @@
1
+ /*!
2
+ * @pacem/pacem-charts v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  !function(t,e){"use strict";var i=function(t,e,i,r){var s,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,i,a):s(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};const r=["keydown","keyup","click","dblclick","mouseover","mouseout","mouseenter","mouseleave","mousedown","mouseup","mousemove","contextmenu"],s=864e5,n="pacem:chart-series:dataitem",a="pacem:chart-series:series";function o(t,e,i){i??=Math.min(l(t,e),10);const r=(e-t)/i,s=Math.pow(10,Math.floor(Math.log10(r))),n=[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/n)*n,max:Math.ceil(e/n)*n,round:n}}function l(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 l(t*s,e*s);const n=t=>{const e=Math.floor(10*Math.abs(t));return(e+10-e%10).roundoff()},a=n(i);let o=10;0!==t&&(o=n(Math.abs(e)));const c=h(o,a);return 1===c?a:Math.max(c,10-c)}function h(t,e){return t<=0?e:h(e%t,t)}class c extends e.CustomUIEvent{constructor(t,e,i){super(t,e,i)}}let d=class extends e.Components.PacemItemElement{get values(){return this.datasource}};i([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],d.prototype,"datasource",void 0),i([e.Watch({emit:!0,converter:e.PropertyConverters.String})],d.prototype,"label",void 0),i([e.Watch({emit:!0,converter:e.PropertyConverters.String})],d.prototype,"color",void 0),i([e.Watch({emit:!0,converter:e.PropertyConverters.Boolean})],d.prototype,"datapoints",void 0),i([e.Watch()],d.prototype,"_uiElements",void 0),d=i([e.CustomElement({tagName:e.P+"-chart-series"})],d);const u="http://www.w3.org/2000/svg";class m extends e.Components.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=t=>{const i=t.currentTarget,r=e.CustomElementUtils.getAttachedPropertyValue(i,n);if(e.Utils.isNull(r))return;const s=this.getAnchorPoint(i),o=new c("item"+t.type,{detail:{dataItem:r,anchorPoint:s}},t),l=e.CustomElementUtils.getAttachedPropertyValue(i,a);l instanceof d&&l.dispatchEvent(o),this.dispatchEvent(o)},this._key=e.Utils.uniqueCode()}validate(t){return t instanceof d}register(t){return!!super.register(t)&&(t.addEventListener(e.PropertyChangeEventName,this._itemPropertyChangedCallback,!1),!0)}unregister(t){return!!super.unregister(t)&&(t.removeEventListener(e.PropertyChangeEventName,this._itemPropertyChangedCallback,!1),!0)}propertyChangedCallback(t,i,r,s){if(super.propertyChangedCallback(t,i,r,s),"target"===t){this._div!=i&&this._div&&this._div.remove(),this._div=null,this._body=null;const t=i;t&&(t.classList.remove(e.PCSS+"-chart-area"),t.innerHTML=""),this._ensureResizer(),this.draw()}else if(!s)switch(t){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=e.Utils.isNullOrEmpty(this.datasource)?this.items:this.datasource}disconnectedCallback(){this._div&&this._div.remove();const t=this._resizer;e.Utils.isNull(t)||(t.removeEventListener(e.Components.ResizeEventName,this._resizeHandler,!1),t.remove(),this._resizer=null),super.disconnectedCallback()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureResizer(),this._databind(),this.draw()}_ensureResizer(t=this.target||this._div){if(e.Utils.isNull(this._resizer)){const t=e.CustomElementUtils.findAncestorShell(this);(this._resizer=t.appendChild(new e.Components.PacemResizeElement)).addEventListener(e.Components.ResizeEventName,this._resizeHandler,!1)}this._resizer.target=t}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(t,i,s,o){const l=!e.Utils.isNull(e.CustomElementUtils.getAttachedPropertyValue(t,n)),h=e.Utils.extend({series:i.label,color:o||i.color},s);e.CustomElementUtils.setAttachedPropertyValue(t,n,h),e.CustomElementUtils.setAttachedPropertyValue(t,a,i),l||r.forEach(e=>{t.addEventListener(e,this._broadcastHandler)})}disposeUiBehaviors(t){e.CustomElementUtils.deleteAttachedPropertyValue(t,n),e.CustomElementUtils.deleteAttachedPropertyValue(t,a),r.forEach(e=>{t.removeEventListener(e,this._broadcastHandler)})}ensureChartContainer(){if(e.Utils.isNull(this._div)){let t=this._div=this.target||document.createElement("div");t.classList.add(e.PCSS+"-chart-area"),t!=this.target&&this.parentElement.insertBefore(t,this)}return this._div}ensureChartBody(t,i,r){if(e.Utils.isNull(this._body)){let i=this._body=document.createElementNS(u,"svg");i.setAttribute("pacem",""),i.setAttribute("class",e.PCSS+"-"+t+"-chart"),i.setAttribute("preserveAspectRatio","xMinYMax slice");const r=this._grid=document.createElementNS(u,"svg");r.setAttribute("pacem",""),r.setAttribute("class","chart-grid");let s=document.createElementNS(u,"defs"),n=this._mask=document.createElementNS(u,"mask"),a=document.createElementNS(u,"rect");a.setAttribute("x","0"),a.setAttribute("y","0"),a.setAttribute("width","100%"),a.setAttribute("height","100%");let o=document.createElementNS(u,"rect");o.setAttribute("y","0"),o.setAttribute("width","100%"),o.setAttribute("fill","#fff"),n.id="gnrc_mask_"+this._key,n.appendChild(a),n.appendChild(o),s.appendChild(n),i.appendChild(s),i.appendChild(r),this._div.appendChild(i)}return this._body}chartDataItemToPoint(t,i){switch(this.xAxisType||"string"){case"number":return{x:parseFloat(t.label),y:t.value};case"date":return{x:e.Utils.parseDate(t.label).valueOf(),y:t.value};case"string":return{x:i.findIndex(e=>e.label==t.label),y:t.value};default:throw"Not supported."}}getVirtualGrid(t,i,r,n,a,l=this.xAxisType,h,c){const d=o(n,a,h),u=d.round;var m=[];for(let t=d.min;t<=d.max;t+=u)m.push(t.roundoff());let p=e.Utils.lang(this),v=null;const g=this.xAxisFormat;if(!e.Utils.isNullOrEmpty(g))switch(l){case"number":v=t=>Intl.NumberFormat(p,g).format(t);break;case"date":v=t=>Intl.DateTimeFormat(p,g).format(e.Utils.parseDate(t))}const y=function(t,i,r,n,a,o=10){const l="number"===i||"date"===i?n-r:Math.max(1,t.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 a?a:c>=s?t=>t.toLocaleDateString(a):t=>t.toLocaleTimeString(a),m="function"==typeof a?a:c<s?t=>t.toLocaleString(a):u,p="function"==typeof a?a:t=>t.toLocaleString(a);for(var v=0;v<=l;v+=c){let s;switch(i){case"string":if(v>=t.length)continue;s=t[v].label;break;case"number":s=p(r+v);break;case"date":s=(0==v?m:u)(e.Utils.parseDate(r+v));break;default:throw"Not supported."}h.push(s)}return h}(t,l,i,r,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(t,i=!1){const r=document.createElementNS(u,"linearGradient");r.id=this.chartKey+"_grad"+t+(i?"_inverted":""),i&&e.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(u,"stop");s.setAttribute("offset","0%");const n=document.createElementNS(u,"stop");return n.setAttribute("offset","100%"),r.appendChild(s),r.appendChild(n),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(t){const i=this._grid;if(e.Utils.isNull(i))throw new Error("Unable to estimate label without an underlying grid available.");const r=document.createElementNS(u,"text");r.textContent=t,i.appendChild(r);const s=e.Utils.offset(r);return r.remove(),s.width}formatYAxisLabel(t){const i=this.yAxisFormat;return e.Utils.isNullOrEmpty(i)?t.toString():Intl.NumberFormat(e.Utils.lang(this),i).format(t)}estimateXAxisLabelWidth(t){const e=this.formatXAxisLabel(t);return this.estimateLabelWidth(e)}formatXAxisLabel(t){const i=this.xAxisFormat,r=e.Utils.lang(this);switch(this.xAxisType){case"date":const s=e.Utils.Dates.parse(t);return e.Utils.isNullOrEmpty(i)?s.toLocaleString(r):Intl.DateTimeFormat(r,i).format(s);case"number":const n=t;return e.Utils.isNullOrEmpty(i)?n.toLocaleString(r):Intl.NumberFormat(r,i).format(n);default:return t}}draw(){this.drawSeries(this._datasource)}getAnchorPoint(t){const i=e.Utils.offset(t);return{x:i.left+.5*i.width,y:i.top+.5*i.height}}}i([e.Watch({converter:e.PropertyConverters.Element})],m.prototype,"target",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.String})],m.prototype,"xAxisType",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.String})],m.prototype,"xAxisPosition",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],m.prototype,"datasource",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],m.prototype,"yAxisDensity",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],m.prototype,"xAxisDensity",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],m.prototype,"yAxisMin",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],m.prototype,"yAxisMax",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],m.prototype,"yAxisFormat",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],m.prototype,"xAxisFormat",void 0),i([e.Throttle(!0)],m.prototype,"draw",null);var p=function(t,e,i,r){var s,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,i,a):s(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};function v(t,i,r){let s=t,n=t;const a=e.Utils.isNull(i),o=e.Utils.isNull(r);if(!a||!o){const e=3;let l,h;a||(l=(t.y-i.y)/(t.x-i.x)),o||(h=(r.y-t.y)/(r.x-t.x));const c=((h||l||0)+(l||h||0))/2,d=a?0:(t.x-i.x)/e,u=o?0:(r.x-t.x)/e;s={x:t.x-d,y:t.y-d*c},n={x:t.x+u,y:t.y+u*c}}return{c0:s,c1:n}}const g=e.CustomElementUtils.getAttachedPropertyValue,y=e.CustomElementUtils.setAttachedPropertyValue;e.CustomElementUtils.deleteAttachedPropertyValue;const f="pacem:chart-series:area",b="http://www.w3.org/2000/svg";let x=class extends m{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,n=this.xAxisType,a,o){return super.getVirtualGrid(t,e,i,r,s,n,a,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(t){if(!this.isReady||e.Utils.isNull(this.chartSize))return;this.ensureChartContainer();const i=this.type||"line",r=24;var s=this.chartSize;if(s.height<=r||s.width<=r)return;if(e.Utils.isNullOrEmpty(t)||t.every(t=>e.Utils.isNullOrEmpty(t.values)))return void this._wipe();const n=this.ensureChartBody("line",s.width,s.height);this.log(e.Logging.LogLevel.Debug,`Drawing ${i} chart.`);const a=this.xAxisType||"string";let o=this.yAxisMin??Number.NaN,l=this.yAxisMax??Number.NaN,h=Number.NaN,c=Number.NaN,d=1;for(let i of t){let t=i.values;if(t&&t.length){let i=0;for(let r of t){let s=this.chartDataItemToPoint(r,t);e.Utils.isNull(this.yAxisMin)&&(o=isNaN(o)?s.y:Math.min(o,s.y)),e.Utils.isNull(this.yAxisMax)&&(l=isNaN(l)?s.y:Math.max(l,s.y)),0===i?h=isNaN(h)?s.x:Math.min(h,s.x):i===t.length-1&&(c=isNaN(c)?s.x:Math.max(c,s.x)),i++}}}const u=t.find(t=>!e.Utils.isNullOrEmpty(t.values)),m=this._getVirtualGrid(u.values,h,c,o,l,a,this.yAxisDensity,this.xAxisDensity),p=m.y[m.y.length-1],x=m.y[0];if(p===x)return;const C=m.y.reduce((t,e)=>Math.max(t,this.estimateYAxisLabelWidth(e)+12),r),A=.5*m.x.reduce((t,e)=>Math.max(t,this.estimateXAxisLabelWidth(e)),r),_=Math.max(A,C),w=A,E=s.width-_-w,N=s.height-48,S=N*(1-(p-x-(l-o))/(p-x)),P=N*(p-l)/(p-x);("number"!==a||"monometric"!==this.aspectRatio&&"logaritmic"!==this.aspectRatio)&&(d=E/S,n.setAttribute("height",s.height.toString()),n.setAttribute("width",s.width.toString())),n.setAttribute("viewBox",`0 0 ${s.width} ${s.height}`);let M=0;const U=100*d/(c-h),k=100/(l-o),$=2400/S,L=(t,e)=>{let i=this.chartDataItemToPoint(t,e);return i.y*=k,i.x=(i.x-h)*U,i},O=this.chartSeries,W=this._chartFillSeries,D=this.chartGrid,B="spline"===i||"splinearea"===i;for(let r of t){let t,s,a;if(O.length>M)t=O[M],s=W[M],a=s.firstElementChild.firstElementChild;else{t=document.createElementNS(b,"svg"),t.setAttribute("pacem",""),n.appendChild(t),s=document.createElementNS(b,"svg"),s.setAttribute("pacem",""),n.insertBefore(s,n.children.item(M+2));const e=document.createElementNS(b,"defs");e.appendChild(a=this._buildLinearGradient(M)),s.appendChild(e),s.appendChild(document.createElementNS(b,"path")),W.push(s),t.appendChild(document.createElementNS(b,"path")),O.push(t)}let l="chart-series";const h="area"===i||"splinearea"===i;e.Utils.isNullOrEmpty(r.className)||(l+=" "+r.className),[t,s].forEach(t=>{t.setAttribute("class",l),t.setAttribute("x",_.toString()),t.setAttribute("y",P.toString()),t.setAttribute("width",E.toString()),t.setAttribute("height",(S+48).toString())}),e.Utils.addClass(s,e.PCSS+"-inert");let c=s.children.item(1),d=t.firstElementChild;d.style.stroke=r.color,c.style.stroke=d.style.fill="none",this._setGradientColor(a,r.color),c.style.fill=`url(#${a.id})`,c.style.display=h?"":"none";let u="",m=r.values;if(m&&m.length){const i=(e,i,r,s,n)=>{const a=i+1;let o;t.children.length>a?o=t.children.item(a):(o=document.createElementNS(b,"line"),o.setAttribute("class","circle"),t.appendChild(o));const l=e.x.toString(),h=(-e.y).toString();o.setAttribute("x1",l),o.setAttribute("y1",h),o.setAttribute("x2",l),o.setAttribute("y2",h),o.style.stroke=n,this.assignUiBehaviors(o,r,s,n)},s=()=>{const e=r.datapoints?m.length+1:1;for(let r=t.children.length-1;r>=e;r--){var i=t.children.item(r);this.disposeUiBehaviors(i),i.remove()}};if(B){let t,s,n;for(let a=0;a<m.length;a++){const o=m[a];if(isNaN(o.value))continue;let l;s||(s=L(o,m)),B&&a<m.length-1&&(l=L(m[a+1],m));let h=g(r,f,0);h+=o.value,y(r,f,h);var H=v(s,t,l);u+=e.Utils.isNullOrEmpty(u)?`M${s.x},${-s.y} `:`C${n.x},${-n.y} ${H.c0.x},${-H.c0.y} ${s.x},${-s.y} `,r.datapoints&&i(s,a,r,o,r.color),t=s,s=l,n=H.c1}}else{let t=0;for(let s of m){if(isNaN(s.value))continue;const n=L(s,m);let a=g(r,f,0);a+=s.value,y(r,f,a),u+=e.Utils.isNullOrEmpty(u)?`M${n.x},${-n.y} `:`L${n.x},${-n.y} `,r.datapoints&&i(n,t,r,s,r.color),t++}}s()}d.setAttribute("d",u),c.setAttribute("d",u+`V${-o*k} H0 Z`),M++}this._wipe(W,M),this._wipe(O,M);const R=`0 ${-(l*k+$)} ${100*d} ${100+2*$}`;for(var T of O.concat(W))T.setAttribute("viewBox",R);let z,I=this.chartMask.children.item(1);if(I.setAttribute("x",(0).toString()),I.setAttribute("height",(s.height-r).toString()),D.setAttribute("viewBox",`0 0 ${s.width} ${s.height}`),m.x.length<=1||m.y.length<=1){for(let t=D.children.length-1;t>=0;t--)D.children.item(t).remove();return}D.children.length>0?z=D.children.item(0):(z=document.createElementNS(b,"path"),D.appendChild(z));let F=0,V=(t,e,i,r)=>{const s=t+1;let n;return D.children.length<=s?(n=document.createElementNS(b,"text"),D.appendChild(n)):n=D.children.item(s),n.textContent=r,n.setAttribute("x",e.toString()),n.setAttribute("y",i.toString()),n},G=`M${_},24 v${N}`,j=0;const Y=E/(m.x.length-1),q=N/(m.y.length-1);if("none"!==this.xAxisPosition)for(var J of m.x){const t=_+j*Y;if("top"===this.xAxisPosition){G+=` M${t},24 v-6`;let e=V(F++,t,0,J);e.setAttribute("text-anchor","middle"),e.setAttribute("alignment-baseline","hanging")}else{let e=N+r;G+=` M${t},${e} v6`,V(F++,t,e+r,J).setAttribute("text-anchor","middle")}j++}for(var X of(j=0,m.y)){const t=N+r-j*q,e=_-6;G+=` M${e},${t} H${E+_}`,V(F++,e-6,t,this.formatYAxisLabel(X)).setAttribute("text-anchor","end"),j++}z.setAttribute("d",G);for(let t=D.children.length-1;t>F;t--)D.children.item(t).remove()}};p([e.Watch({emit:!1,converter:e.PropertyConverters.String})],x.prototype,"type",void 0),p([e.Watch({converter:e.PropertyConverters.String})],x.prototype,"aspectRatio",void 0),x=p([e.CustomElement({tagName:e.P+"-chart"})],x);var C=function(t,e,i,r){var s,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,i,a):s(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};const A="http://www.w3.org/2000/svg";let _=class extends m{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(t){if(!this.isReady||e.Utils.isNull(this.chartSize))return;this.ensureChartContainer();const i=this.type||"cluster",r=24;var s=this.chartSize;if(s.height<=r||s.width<=r)return;if(e.Utils.isNullOrEmpty(t)||t.every(t=>e.Utils.isNullOrEmpty(t.values)))return void this.wipeOut();const n=this.ensureChartBody("column",s.width,s.height);this.log(e.Logging.LogLevel.Debug,`Drawing ${i} chart.`);const a=this.xAxisType||"string";let o=this.yAxisMin??0,l=this.yAxisMax??0,h=0,c=0,d=0,u=1;const m={negative:[],positive:[]};for(let i of t){let t=i.values;if(!e.Utils.isNullOrEmpty(t)){let i=0;for(let r of t){m.positive[i]=m.positive[i]||0,m.negative[i]=m.negative[i]||0;let s=this.chartDataItemToPoint(r,t);e.Utils.isNull(this.yAxisMin)&&(o=Math.min(o,s.y)),e.Utils.isNull(this.yAxisMax)&&(l=Math.max(l,s.y)),h=Math.min(h,s.x),c=Math.max(c,s.x),s.y>0?m.positive[i]+=s.y:s.y<0&&(m.negative[i]+=s.y),i++}d=Math.max(d,t.length)}}const p="stack"===i;p&&(e.Utils.isNull(this.yAxisMin)&&(o=Math.min.apply(null,m.negative)),e.Utils.isNull(this.yAxisMax)&&(l=Math.max.apply(null,m.positive))),0===c&&c===h&&(c=1);const v=(c-h)/d,g=.5*v,y=v*this._safen(this.groupWidth),f=.5*y,b=t.find(t=>!e.Utils.isNullOrEmpty(t.values)),x=this.getVirtualGrid(b.values,h-g,c+g,o,l,a,this.yAxisDensity,this.xAxisDensity),C=x.y[x.y.length-1],_=x.y[0];if(C===_)return;const w=x.y.reduce((t,e)=>Math.max(t,this.estimateYAxisLabelWidth(e)+12),r),E=s.width-w-r,N=s.height-48,S=N*(1-(C-_-(l-o))/(C-_)),P=N*(C-l)/(C-_);u=E/S,n.setAttribute("height",s.height.toString()),n.setAttribute("width",s.width.toString()),n.setAttribute("viewBox",`0 0 ${s.width} ${s.height}`);let M=0;const U=100*u/(c-h),k=100/(l-o),$=2400/S,L=this.chartSeries,O=this.chartGrid,W=(g-h)*U,D=(t,e)=>{const i=this.chartDataItemToPoint(t,e);return{x:W+2*i.x*W,y:i.y*k}};var B=new Array(d);for(let i of t){let r,s,n,a;if(L.length>M)r=L[M],s=r.firstElementChild.firstElementChild,n=r.firstElementChild.lastElementChild,a=r.lastElementChild;else{r=document.createElementNS(A,"svg"),r.setAttribute("pacem",""),O.insertAdjacentElement("afterend",r);const t=document.createElementNS(A,"defs");t.appendChild(s=this.buildLinearGradient(M)),t.appendChild(n=this.buildLinearGradient(M,!0)),r.appendChild(t),r.appendChild(a=document.createElementNS(A,"g")),L.push(r)}var H="chart-series series-fill";e.Utils.isNullOrEmpty(i.className)||(H+=" "+i.className),r.setAttribute("class",H),r.setAttribute("x",w.toString()),r.setAttribute("y",P.toString()),r.setAttribute("width",E.toString()),r.setAttribute("height",(S+48).toString());const o=i.values,l=t=>{for(;t>=a.children.length;)a.appendChild(document.createElementNS(A,"rect"));const e=a.children.item(t);e.style.stroke=i.color;const r=o[t].value<0?n:s;return this.setGradientColor(r,i.color),e.style.fill=`url(#${r.id})`,e},h=10,c=(t,e,i,r=e)=>{const s=-Math.max(e.y,i.y),n=Math.abs(i.y-e.y),a=()=>{t.setAttribute("y",s.toFixed(h)),t.setAttribute("height",n.toFixed(h))};t.hasAttribute("y")?a():(t.setAttribute("y","-"+r.y.toFixed(h)),t.setAttribute("height","0"),requestAnimationFrame(a))};if(!e.Utils.isNullOrEmpty(o)){const r=D({value:0,label:o[0].label},o);if(p){const t=f*U,s=(y*U).toFixed(h);for(let n=0;n<o.length;n++){const a=o[n];e.Utils.isNullOrEmpty(B[n])&&(B[n]={positive:0,negative:0});const d=B[n];let u=d.positive,m=d.negative;const p=a.value<0,v=p?m:u+a.value,g=p?m+a.value:u,y=D({label:a.label,value:v},o),f=D({label:a.label,value:g},o),b=y.x-t,x=l(n);this.assignUiBehaviors(x,i,a),x.setAttribute("x",b.toFixed(h)),x.setAttribute("width",s),c(x,f,y,r),p?d.negative=g:d.positive=v}}else{const e=f*U,s=2*e/t.length,n=s.toFixed(h);for(let t=0;t<o.length;t++){const a=o[t],d=D(a,o),u=d.x-e+s*M,m=l(t);this.assignUiBehaviors(m,i,a),m.setAttribute("x",u.toFixed(h)),m.setAttribute("width",n),c(m,r,d)}}}for(let t=a.children.length-1;t>=o?.length;t--){const e=a.children.item(t);this.disposeUiBehaviors(e),e.remove()}M++}this.wipeOut(L,M);const R=`0 ${-(l*k+$)} ${100*u} ${100+2*$}`;for(var T of L)T.setAttribute("viewBox",R);let z,I=this.chartMask.children.item(1);if(I.setAttribute("x",(0).toString()),I.setAttribute("height",(s.height-r).toString()),O.setAttribute("viewBox",`0 0 ${s.width} ${s.height}`),x.x.length<1||x.y.length<=1){for(let t=O.children.length-1;t>=0;t--)O.children.item(t).remove();return}O.children.length>0?z=O.children.item(0):(z=document.createElementNS(A,"path"),O.appendChild(z));let F=0,V=(t,e,i,r)=>{const s=t+1;let n;return O.children.length<=s?(n=document.createElementNS(A,"text"),O.appendChild(n)):n=O.children.item(s),n.textContent=r,n.setAttribute("x",e.toString()),n.setAttribute("y",i.toString()),n},G=`M${w},24 v${N}`,j=0;const Y=E/x.x.length,q=N/(x.y.length-1);if("none"!==this.xAxisPosition){const t=.5*Y+w;for(var J of x.x){let e=t+j*Y;if("top"===this.xAxisPosition){G+=` M${e},24 v-6`;let t=V(F++,e,0,J);t.setAttribute("text-anchor","middle"),t.setAttribute("alignment-baseline","hanging")}else{let t=N+r;G+=` M${e},${t} v6`,V(F++,e,t+r,J).setAttribute("text-anchor","middle")}j++}}for(var X of(j=0,x.y)){const t=N+r-j*q,e=w-6;G+=` M${e},${t} H${E+w}`,V(F++,e-6,t,this.formatYAxisLabel(X)).setAttribute("text-anchor","end"),j++}z.setAttribute("d",G);for(let t=O.children.length-1;t>F;t--)O.children.item(t).remove()}};C([e.Watch({converter:e.PropertyConverters.String})],_.prototype,"type",void 0),C([e.Watch({converter:e.PropertyConverters.Number})],_.prototype,"groupWidth",void 0),_=C([e.CustomElement({tagName:e.P+"-column-chart"})],_);var w=function(t,e,i,r){var s,n=arguments.length,a=n<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(a=(n<3?s(a):n>3?s(e,i,a):s(e,i))||a);return n>3&&a&&Object.defineProperty(e,i,a),a};let E=class extends e.Components.PacemItemElement{constructor(){super(...arguments),this._broadcastHandler=t=>{this.emit(t)}}findContainer(){return e.CustomElementUtils.findAncestorOfType(this,P)}get chart(){return this.container}getCenterOfMass(){const t=this.chart&&this.chart.area;if(e.Utils.isNull(t))return null;const i=e.Utils.offset(t),r=i.width/2+i.left,s=i.top+i.height/2,n=.5*Math.min(i.width,i.height),a=this.normalizedPolarCoords,o=S-a.angle;return{y:s-n*a.radius*Math.sin(o),x:r+n*a.radius*Math.cos(o)}}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;r.forEach(t=>{e.addEventListener(t,this._broadcastHandler)})}_disposeUi(){e.Utils.isNull(this._ui)||r.forEach(t=>{this._ui.removeEventListener(t,this._broadcastHandler)})}};w([e.Watch({converter:e.PropertyConverters.Number})],E.prototype,"value",void 0),w([e.Watch({converter:e.PropertyConverters.String})],E.prototype,"label",void 0),w([e.Watch({converter:e.PropertyConverters.String})],E.prototype,"color",void 0),w([e.Watch({converter:e.PropertyConverters.Json})],E.prototype,"normalizedPolarCoords",void 0),E=w([e.CustomElement({tagName:e.P+"-pie-slice"})],E);const N=2*Math.PI,S=.5*Math.PI;let P=class extends e.Components.PacemItemsContainerElement{constructor(){super(),this.cutout=0,this.slicePadding=0,this._slices=new WeakMap,this._key=e.Utils.uniqueCode()}validate(t){return t instanceof E}viewActivatedCallback(){super.viewActivatedCallback(),this.draw()}propertyChangedCallback(t,i,r,s){if(super.propertyChangedCallback(t,i,r,s),"target"===t){this._g=null,this._div&&this._div.remove();const t=i;t&&(t.classList.remove(e.PCSS+"-chart-area"),t.innerHTML=""),this.draw()}else s||"cutout"!==t&&"items"!==t&&"slicePadding"!==t||this.draw()}get area(){return this._svg}disconnectedCallback(){this._div&&this._div.remove(),super.disconnectedCallback()}_ensureArea(){if(e.Utils.isNull(this._g)){let t=this.target||(this._div=document.createElement("div"));t.classList.add(e.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(e.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),t.appendChild(i),this._div&&this.parentElement.insertBefore(t,this)}if(this.maskBasedRendering){if(e.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 t=50*this._safeCutout;this._mask.setAttribute("r",`${t}`)}else e.Utils.isNull(this._mask)||(this._svg.firstElementChild.innerHTML="",this._mask=null,this._g.removeAttribute("mask"));const t=this._safeSlicePaddingPixels;if(t>0){const i=(t/this._svg.getCTM().a).roundoff(),r=this._sliceMaskId,s=this._svg.firstElementChild;let n=s.querySelector(`#${r}`);e.Utils.isNull(n)?(n=document.createElementNS("http://www.w3.org/2000/svg","mask"),n.id=r,s.appendChild(n)):n.innerHTML="";const a=document.createElementNS("http://www.w3.org/2000/svg","path"),o=`M${50+i},0 H100 V100 H0 V0 H50 V50 h${i} Z`;a.setAttribute("d",o),a.setAttribute("fill","#fff"),n.appendChild(a)}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 s=e.value>.5*i?1:0,n=N*e.value/i,a=360*r/i,o=e.value>=i?49.9:50*(1+Math.sin(n)),l=50*(1-Math.cos(n)),h=this._safeCutout,c=50*h;t.style.fill=e.color,t.style.transform=`rotate(${a}deg)`,t.style.transformOrigin="50% 50%";const d=this.maskBasedRendering?`M50,50 V0 A50,50 0 ${s} 1 ${o} ${l} L50,50 Z`:`M50,0 A50,50 0 ${s} 1 ${o} ${l} l${(50-o)*(1-h)},${(50-l)*(1-h)} A${c},${c} 0 ${s} 0 50,${50-c} Z`;t.setAttribute("d",d),e.normalizedPolarCoords={radius:h+Math.SQRT1_2*(1-h),angle:Math.PI*a/180+n/2}}_isSliceOk(t){return!t.disabled}_padSlice(t){this._safeSlicePaddingPixels>0?t.setAttribute("mask",`url(#${this._sliceMaskId})`):t.removeAttribute("mask")}draw(){const t=this._ensureArea(),i=t.children.length,r=this._svg.parentElement;let s=0,n=0,a=0;if(e.Utils.isNullOrEmpty(this.items))t.innerHTML="",e.Utils.removeClass(r,"chart-has-data");else{e.Utils.addClass(r,"chart-has-data");for(let t of this.items)this._isSliceOk(t)&&(n+=t.value);if(n<=0)t.innerHTML="",e.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 "+e.PCSS+"-pie-slice"+(e.Utils.isNullOrEmpty(r.className)?"":" "+r.className)),o=document.createElementNS("http://www.w3.org/2000/svg","path"),i.appendChild(o),t.appendChild(i),r._assignUi(i),this._slices.set(i,r)}else o=t.children.item(s).firstElementChild;r.value>0?(this._drawSlice(o,r,n,a),this._padSlice(o),a+=r.value,o.removeAttribute("display")):o.setAttribute("display","none"),s++}}for(;s<t.children.length;){const e=this._slices,i=t.children.item(s);e.has(i)&&(e.get(i)._disposeUi(),e.delete(i)),t.removeChild(i)}}};w([e.Watch({converter:e.PropertyConverters.Number})],P.prototype,"cutout",void 0),w([e.Watch({converter:e.PropertyConverters.Element})],P.prototype,"target",void 0),w([e.Watch({converter:e.PropertyConverters.Boolean})],P.prototype,"maskBasedRendering",void 0),w([e.Watch({converter:e.PropertyConverters.Number})],P.prototype,"slicePadding",void 0),w([e.Debounce(!0)],P.prototype,"draw",null),P=w([e.CustomElement({tagName:e.P+"-pie-chart"})],P);var M=Object.freeze({__proto__:null,ChartEvent:c,MANAGED_EVENTS:r,get PacemChartElement(){return x},get PacemChartSeriesElement(){return d},get PacemColumnChartElement(){return _},get PacemPieChartElement(){return P},get PacemPieSliceElement(){return E},PacemSeriesChartElement:m}),U=Object.freeze({__proto__:null,Charts:M}),k=Object.freeze({__proto__:null,Components:U});t.DeepMerger.merge(k)}(Pacem,Pacem);
2
7
  //# sourceMappingURL=pacem-charts.min.js.map
@@ -1 +1,6 @@
1
+ /*!
2
+ * @pacem/pacem-charts v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  var Ee=Object.defineProperty;var oe=(l,t)=>{for(var e in t)Ee(l,e,{get:t[e],enumerable:!0})};var Ae={};oe(Ae,{Charts:()=>ie});var ie={};oe(ie,{ChartEvent:()=>Yt,MANAGED_EVENTS:()=>wt,PacemChartElement:()=>Ht,PacemChartSeriesElement:()=>tt,PacemColumnChartElement:()=>Rt,PacemPieChartElement:()=>rt,PacemPieSliceElement:()=>ht,PacemSeriesChartElement:()=>$});import{CustomElement as we,Watch as T,PropertyConverters as V,P as Se,PCSS as Jt,Components as It,CustomUIEvent as Ne,CustomElementUtils as lt,Utils as E,Throttle as Pe,PropertyChangeEventName as le}from"@pacem/pacem-core";var D=function(l,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(l,t,e,i);else for(var a=l.length-1;a>=0;a--)(n=l[a])&&(r=(s<3?n(r):s>3?n(t,e,r):n(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},wt=["keydown","keyup","click","dblclick","mouseover","mouseout","mouseenter","mouseleave","mousedown","mouseup","mousemove","contextmenu"],ce=1e3*60*60*24,Me=10,ke=10,zt="pacem:chart-series:dataitem",Zt="pacem:chart-series:series";function $e(l,t,e,i,s,r=Me){let n=t==="number"||t==="date"?i-e:Math.max(1,l.length-1),a=r-1;for(var o=[],h=1,f=a;f>1;f--)if(n%f===0){h=n/f;break}h===1&&n>r&&(h=n);let A=typeof s=="function"?s:h>=ce?(N=>N.toLocaleDateString(s)):(N=>N.toLocaleTimeString(s)),L=typeof s=="function"?s:h<ce?(N=>N.toLocaleString(s)):A,S=typeof s=="function"?s:N=>N.toLocaleString(s);for(var _=0;_<=n;_+=h){let N;switch(t){case"string":if(_>=l.length)continue;N=l[_].label;break;case"number":N=S(e+_);break;case"date":let G=E.parseDate(e+_);N=(_==0?L:A)(G);break;default:throw"Not supported."}o.push(N)}return o}function Le(l,t,e){e??=Math.min(he(l,t),ke);let i=(t-l)/e,s=Math.pow(10,Math.floor(Math.log10(i))),r=[1,2,5,10].map(n=>n*s).filter(n=>n>=i).reduce((n,a)=>Math.min(n,a),Number.POSITIVE_INFINITY);return{min:Math.floor(l/r)*r,max:Math.ceil(t/r)*r,round:r}}function he(l,t){let e=t-l;if(!(e>0))return 2;let i=Math.floor(Math.log10(e)),s=Math.pow(10,-i);if(i!=0)return he(l*s,t*s);let r=h=>{let f=Math.floor(Math.abs(h)*10);return(f+10-f%10).roundoff()},n=r(e),a=10;l!==0&&(a=r(Math.abs(t)));let o=de(a,n);return o===1?n:Math.max(o,10-o)}function de(l,t){return l<=0?t:de(t%l,l)}var Yt=class extends Ne{constructor(t,e,i){super(t,e,i)}},tt=class extends It.PacemItemElement{get values(){return this.datasource}};D([T({emit:!0,converter:V.Json})],tt.prototype,"datasource",void 0);D([T({emit:!0,converter:V.String})],tt.prototype,"label",void 0);D([T({emit:!0,converter:V.String})],tt.prototype,"color",void 0);D([T({emit:!0,converter:V.Boolean})],tt.prototype,"datapoints",void 0);D([T()],tt.prototype,"_uiElements",void 0);tt=D([we({tagName:Se+"-chart-series"})],tt);var Q="http://www.w3.org/2000/svg",$=class extends It.PacemItemsContainerElement{constructor(){super(),this._itemPropertyChangedCallback=t=>{let e=t.detail.propertyName;(e==="datasource"||e==="label"||e==="datapoints"||e==="cssClass"||e==="color")&&this.draw()},this._series=[],this._resizeHandler=t=>{this._size=t.detail,this.draw()},this._broadcastHandler=t=>{let e=t.currentTarget,i=lt.getAttachedPropertyValue(e,zt);if(E.isNull(i))return;let s=this,r=s.getAnchorPoint(e),n=new Yt("item"+t.type,{detail:{dataItem:i,anchorPoint:r}},t),a=lt.getAttachedPropertyValue(e,Zt);a instanceof tt&&a.dispatchEvent(n),s.dispatchEvent(n)},this._key=E.uniqueCode()}validate(t){return t instanceof tt}register(t){return super.register(t)?(t.addEventListener(le,this._itemPropertyChangedCallback,!1),!0):!1}unregister(t){return super.unregister(t)?(t.removeEventListener(le,this._itemPropertyChangedCallback,!1),!0):!1}propertyChangedCallback(t,e,i,s){if(super.propertyChangedCallback(t,e,i,s),t==="target"){this._div!=e&&this._div&&this._div.remove(),this._div=null,this._body=null;let r=e;r&&(r.classList.remove(Jt+"-chart-area"),r.innerHTML=""),this._ensureResizer(),this.draw()}else if(!s)switch(t){case"items":this._databindAndDrawDebounced();break;case"datasource":this._databind();case"yAxisDensity":case"xAxisDensity":case"xAxisType":case"yAxisMax":case"xAxisPosition":case"yAxisFormat":this.draw();break}}_databindAndDrawDebounced(){cancelAnimationFrame(this._handle),this._handle=requestAnimationFrame(()=>{this._databind(),this.draw()})}_databind(){this._datasource=E.isNullOrEmpty(this.datasource)?this.items:this.datasource}disconnectedCallback(){this._div&&this._div.remove();let t=this._resizer;E.isNull(t)||(t.removeEventListener(It.ResizeEventName,this._resizeHandler,!1),t.remove(),this._resizer=null),super.disconnectedCallback()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureResizer(),this._databind(),this.draw()}_ensureResizer(t=this.target||this._div){if(E.isNull(this._resizer)){let e=lt.findAncestorShell(this);(this._resizer=e.appendChild(new It.PacemResizeElement)).addEventListener(It.ResizeEventName,this._resizeHandler,!1)}this._resizer.target=t}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(t,e,i,s){let r=!E.isNull(lt.getAttachedPropertyValue(t,zt)),n=E.extend({series:e.label,color:s||e.color},i);lt.setAttachedPropertyValue(t,zt,n),lt.setAttachedPropertyValue(t,Zt,e),r||wt.forEach(a=>{t.addEventListener(a,this._broadcastHandler)})}disposeUiBehaviors(t){lt.deleteAttachedPropertyValue(t,zt),lt.deleteAttachedPropertyValue(t,Zt),wt.forEach(e=>{t.removeEventListener(e,this._broadcastHandler)})}ensureChartContainer(){if(E.isNull(this._div)){let t=this._div=this.target||document.createElement("div");t.classList.add(Jt+"-chart-area"),t!=this.target&&this.parentElement.insertBefore(t,this)}return this._div}ensureChartBody(t,e,i){if(E.isNull(this._body)){let s=this._body=document.createElementNS(Q,"svg");s.setAttribute("pacem",""),s.setAttribute("class",Jt+"-"+t+"-chart"),s.setAttribute("preserveAspectRatio","xMinYMax slice");let r=this._grid=document.createElementNS(Q,"svg");r.setAttribute("pacem",""),r.setAttribute("class","chart-grid");let n=document.createElementNS(Q,"defs"),a=this._mask=document.createElementNS(Q,"mask"),o=document.createElementNS(Q,"rect");o.setAttribute("x","0"),o.setAttribute("y","0"),o.setAttribute("width","100%"),o.setAttribute("height","100%");let h=document.createElementNS(Q,"rect");h.setAttribute("y","0"),h.setAttribute("width","100%"),h.setAttribute("fill","#fff"),a.id="gnrc_mask_"+this._key,a.appendChild(o),a.appendChild(h),n.appendChild(a),s.appendChild(n),s.appendChild(r),this._div.appendChild(s)}return this._body}chartDataItemToPoint(t,e){switch(this.xAxisType||"string"){case"number":return{x:parseFloat(t.label),y:t.value};case"date":return{x:E.parseDate(t.label).valueOf(),y:t.value};case"string":return{x:e.findIndex(i=>i.label==t.label),y:t.value};default:throw"Not supported."}}getVirtualGrid(t,e,i,s,r,n=this.xAxisType,a,o){let h=Le(s,r,a),f=h.round;var A=[];for(let G=h.min;G<=h.max;G+=f)A.push(G.roundoff());let L=E.lang(this),S=null,_=this.xAxisFormat;if(!E.isNullOrEmpty(_))switch(n){case"number":S=G=>Intl.NumberFormat(L,_).format(G);break;case"date":S=G=>Intl.DateTimeFormat(L,_).format(E.parseDate(G));break}return{x:$e(t,n,e,i,S??L,o),y:A}}wipeOut(t=this._series,e=0){for(var i=t.length-1;i>=e;i--)t[i].remove();t.splice(e)}buildLinearGradient(t,e=!1){let i=document.createElementNS(Q,"linearGradient");i.id=this.chartKey+"_grad"+t+(e?"_inverted":""),e&&E.addClass(i,"bottom-up"),i.setAttribute("x1","0%"),i.setAttribute("x2","0%"),i.setAttribute("y1","0%"),i.setAttribute("y2","100%"),i.setAttribute("spreadMethod","pad");let s=document.createElementNS(Q,"stop");s.setAttribute("offset","0%");let r=document.createElementNS(Q,"stop");return r.setAttribute("offset","100%"),i.appendChild(s),i.appendChild(r),i}setGradientColor(t,e){for(let i=0;i<t.children.length;i++){let s=t.children.item(i);s instanceof SVGStopElement&&(s.style.stopColor=e)}}estimateYAxisLabelWidth(t){let e=this.formatYAxisLabel(t);return this.estimateLabelWidth(e)}estimateLabelWidth(t){let e=this._grid;if(E.isNull(e))throw new Error("Unable to estimate label without an underlying grid available.");let i=document.createElementNS(Q,"text");i.textContent=t,e.appendChild(i);let s=E.offset(i);return i.remove(),s.width}formatYAxisLabel(t){let e=this.yAxisFormat;return E.isNullOrEmpty(e)?t.toString():Intl.NumberFormat(E.lang(this),e).format(t)}estimateXAxisLabelWidth(t){let e=this.formatXAxisLabel(t);return this.estimateLabelWidth(e)}formatXAxisLabel(t){let e=this.xAxisFormat,i=E.lang(this);switch(this.xAxisType){case"date":let s=E.Dates.parse(t);return E.isNullOrEmpty(e)?s.toLocaleString(i):Intl.DateTimeFormat(i,e).format(s);case"number":let r=t;return E.isNullOrEmpty(e)?r.toLocaleString(i):Intl.NumberFormat(i,e).format(r);default:return t}}draw(){this.drawSeries(this._datasource)}getAnchorPoint(t){let e=E.offset(t);return{x:e.left+e.width*.5,y:e.top+e.height*.5}}};D([T({converter:V.Element})],$.prototype,"target",void 0);D([T({emit:!1,converter:V.String})],$.prototype,"xAxisType",void 0);D([T({emit:!1,converter:V.String})],$.prototype,"xAxisPosition",void 0);D([T({emit:!1,converter:V.Json})],$.prototype,"datasource",void 0);D([T({emit:!1,converter:V.Number})],$.prototype,"yAxisDensity",void 0);D([T({emit:!1,converter:V.Number})],$.prototype,"xAxisDensity",void 0);D([T({emit:!1,converter:V.Number})],$.prototype,"yAxisMin",void 0);D([T({emit:!1,converter:V.Number})],$.prototype,"yAxisMax",void 0);D([T({emit:!1,converter:V.Json})],$.prototype,"yAxisFormat",void 0);D([T({emit:!1,converter:V.Json})],$.prototype,"xAxisFormat",void 0);D([Pe(!0)],$.prototype,"draw",null);import{CustomElement as De,Watch as pe,PropertyConverters as fe,P as Ie,PCSS as He,Utils as W,CustomElementUtils as Qt,Logging as Re}from"@pacem/pacem-core";var Kt=function(l,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(l,t,e,i);else for(var a=l.length-1;a>=0;a--)(n=l[a])&&(r=(s<3?n(r):s>3?n(t,e,r):n(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r};function Te(l,t,e){let i=l,s=l,r=W.isNull(t),n=W.isNull(e);if(!(r&&n)){let o,h;r||(o=(l.y-t.y)/(l.x-t.x)),n||(h=(e.y-l.y)/(e.x-l.x));let f=((h||o||0)+(o||h||0))/2,A=r?0:(l.x-t.x)/3,L=n?0:(e.x-l.x)/3;i={x:l.x-A,y:l.y-A*f},s={x:l.x+L,y:l.y+L*f}}return{c0:i,c1:s}}var ue=Qt.getAttachedPropertyValue,me=Qt.setAttachedPropertyValue,Ke=Qt.deleteAttachedPropertyValue,Ge=24,Ut="pacem:chart-series:area",ct="http://www.w3.org/2000/svg",Ht=class extends ${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,s,r,n=this.xAxisType,a,o){return super.getVirtualGrid(t,e,i,s,r,n,a,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,s){switch(super.propertyChangedCallback(t,e,i,s),t){case"type":case"aspectRatio":this.draw();break}}_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(t){if(!this.isReady||W.isNull(this.chartSize))return;this.ensureChartContainer();let e=this.type||"line",i=Ge;var s=this.chartSize;if(s.height<=i||s.width<=i)return;if(W.isNullOrEmpty(t)||t.every(c=>W.isNullOrEmpty(c.values))){this._wipe();return}let r=this.ensureChartBody("line",s.width,s.height);this.log(Re.LogLevel.Debug,`Drawing ${e} chart.`);let n=this.xAxisType||"string",a=this.yAxisMin??Number.NaN,o=this.yAxisMax??Number.NaN,h=Number.NaN,f=Number.NaN,A=1;for(let c of t){let u=c.values;if(u&&u.length){let C=0;for(let X of u){let I=this.chartDataItemToPoint(X,u);W.isNull(this.yAxisMin)&&(a=isNaN(a)?I.y:Math.min(a,I.y)),W.isNull(this.yAxisMax)&&(o=isNaN(o)?I.y:Math.max(o,I.y)),C===0?h=isNaN(h)?I.x:Math.min(h,I.x):C===u.length-1&&(f=isNaN(f)?I.x:Math.max(f,I.x)),C++}}}let L=t.find(c=>!W.isNullOrEmpty(c.values)),S=this._getVirtualGrid(L.values,h,f,a,o,n,this.yAxisDensity,this.xAxisDensity),_=S.y[S.y.length-1],N=S.y[0];if(_===N)return;let G=i*.5,gt=S.y.reduce((c,u)=>Math.max(c,this.estimateYAxisLabelWidth(u)+G),i),Nt=S.x.reduce((c,u)=>Math.max(c,this.estimateXAxisLabelWidth(u)),i)*.5,et=Math.max(Nt,gt),jt=Nt,H=s.width-et-jt,Y=s.height-2*i,nt=Y*(1-(_-N-(o-a))/(_-N)),Xt=Y*(_-o)/(_-N);(n!=="number"||this.aspectRatio!=="monometric"&&this.aspectRatio!=="logaritmic")&&(A=H/nt,r.setAttribute("height",s.height.toString()),r.setAttribute("width",s.width.toString())),r.setAttribute("viewBox",`0 0 ${s.width} ${s.height}`);let R=0,vt=f-h,at=o-a,Pt=100*A/vt,Mt=100/at,Z=100*i/nt,kt=(c,u)=>{let C=this.chartDataItemToPoint(c,u);return C.y*=Mt,C.x=(C.x-h)*Pt,C},mt=this.chartSeries,it=this._chartFillSeries,O=this.chartGrid,$t=e==="spline"||e==="splinearea";for(let c of t){let u,C,X;if(mt.length>R)u=mt[R],C=it[R],X=C.firstElementChild.firstElementChild;else{u=document.createElementNS(ct,"svg"),u.setAttribute("pacem",""),r.appendChild(u),C=document.createElementNS(ct,"svg"),C.setAttribute("pacem",""),r.insertBefore(C,r.children.item(R+2));let g=document.createElementNS(ct,"defs");g.appendChild(X=this._buildLinearGradient(R)),C.appendChild(g),C.appendChild(document.createElementNS(ct,"path")),it.push(C),u.appendChild(document.createElementNS(ct,"path")),mt.push(u)}let I="chart-series",d=e==="area"||e==="splinearea";W.isNullOrEmpty(c.className)||(I+=" "+c.className),[u,C].forEach(g=>{g.setAttribute("class",I),g.setAttribute("x",et.toString()),g.setAttribute("y",Xt.toString()),g.setAttribute("width",H.toString()),g.setAttribute("height",(nt+2*i).toString())}),W.addClass(C,He+"-inert");let m=C.children.item(1),y=u.firstElementChild;y.style.stroke=c.color,m.style.stroke=y.style.fill="none",this._setGradientColor(X,c.color),m.style.fill=`url(#${X.id})`,m.style.display=d?"":"none";let F="",v=c.values;if(v&&v.length){let g=(P,w,p,b,M)=>{let k=w+1,x;u.children.length>k?x=u.children.item(k):(x=document.createElementNS(ct,"line"),x.setAttribute("class","circle"),u.appendChild(x));let U=P.x.toString(),q=(-P.y).toString();x.setAttribute("x1",U),x.setAttribute("y1",q),x.setAttribute("x2",U),x.setAttribute("y2",q),x.style.stroke=M,this.assignUiBehaviors(x,p,b,M)},Bt=()=>{let P=c.datapoints?v.length+1:1;for(let p=u.children.length-1;p>=P;p--){var w=u.children.item(p);this.disposeUiBehaviors(w),w.remove()}};if($t){let P,w,p;for(let b=0;b<v.length;b++){let M=v[b];if(isNaN(M.value))continue;w||(w=kt(M,v));let k;$t&&b<v.length-1&&(k=kt(v[b+1],v));let x=ue(c,Ut,0);x+=M.value,me(c,Ut,x);var st=Te(w,P,k);F+=W.isNullOrEmpty(F)?`M${w.x},${-w.y} `:`C${p.x},${-p.y} ${st.c0.x},${-st.c0.y} ${w.x},${-w.y} `,c.datapoints&&g(w,b,c,M,c.color),P=w,w=k,p=st.c1}}else{let P=0;for(let w of v){if(isNaN(w.value))continue;let p=kt(w,v),b=ue(c,Ut,0);b+=w.value,me(c,Ut,b),F+=W.isNullOrEmpty(F)?`M${p.x},${-p.y} `:`L${p.x},${-p.y} `,c.datapoints&&g(p,P,c,w,c.color),P++}}Bt()}y.setAttribute("d",F),m.setAttribute("d",F+`V${-a*Mt} H0 Z`),R++}this._wipe(it,R),this._wipe(mt,R);let B=100*A,Tt=100+2*Z,pt=0,Lt=o*Mt+Z,Gt=`${pt} ${-Lt} ${B} ${Tt}`;for(var qt of mt.concat(it))qt.setAttribute("viewBox",Gt);let Dt=this.chartMask.children.item(1);if(Dt.setAttribute("x",pt.toString()),Dt.setAttribute("height",(s.height-i).toString()),O.setAttribute("viewBox",`0 0 ${s.width} ${s.height}`),S.x.length<=1||S.y.length<=1){for(let c=O.children.length-1;c>=0;c--)O.children.item(c).remove();return}let yt;O.children.length>0?yt=O.children.item(0):(yt=document.createElementNS(ct,"path"),O.appendChild(yt));let bt=i*.25,xt=0,Ot=(c,u,C,X)=>{let I=c+1,d;return O.children.length<=I?(d=document.createElementNS(ct,"text"),O.appendChild(d)):d=O.children.item(I),d.textContent=X,d.setAttribute("x",u.toString()),d.setAttribute("y",C.toString()),d},ft=`M${et},${i} v${Y}`,K=0,At=H/(S.x.length-1),_t=Y/(S.y.length-1);if(this.xAxisPosition!=="none")for(var Ct of S.x){let c=et+K*At;if(this.xAxisPosition==="top"){ft+=` M${c},${i} v${-bt}`;let u=Ot(xt++,c,0,Ct);u.setAttribute("text-anchor","middle"),u.setAttribute("alignment-baseline","hanging")}else{let u=Y+i;ft+=` M${c},${u} v${bt}`,Ot(xt++,c,u+i,Ct).setAttribute("text-anchor","middle")}K++}K=0;for(var Et of S.y){let c=Y+i-K*_t,u=et-bt;ft+=` M${u},${c} H${H+et}`;let C=this.formatYAxisLabel(Et);Ot(xt++,u-bt,c,C).setAttribute("text-anchor","end"),K++}yt.setAttribute("d",ft);for(let c=O.children.length-1;c>xt;c--)O.children.item(c).remove()}};Kt([pe({emit:!1,converter:fe.String})],Ht.prototype,"type",void 0);Kt([pe({converter:fe.String})],Ht.prototype,"aspectRatio",void 0);Ht=Kt([De({tagName:Ie+"-chart"})],Ht);import{CustomElement as Oe,Watch as ge,PropertyConverters as ve,P as Be,Utils as j,Logging as Fe}from"@pacem/pacem-core";var ee=function(l,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(l,t,e,i);else for(var a=l.length-1;a>=0;a--)(n=l[a])&&(r=(s<3?n(r):s>3?n(t,e,r):n(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},St="http://www.w3.org/2000/svg",te=24,Rt=class extends ${constructor(){super(...arguments),this.groupWidth=0}propertyChangedCallback(t,e,i,s){super.propertyChangedCallback(t,e,i,s),(t==="type"||t==="groupWidth")&&this.draw()}_safen(t=this.groupWidth){return Math.min(1,Math.max(t||.75,0))}drawSeries(t){if(!this.isReady||j.isNull(this.chartSize))return;let e=this.ensureChartContainer(),i=this.type||"cluster",s=te;var r=this.chartSize;if(r.height<=s||r.width<=s)return;if(j.isNullOrEmpty(t)||t.every(d=>j.isNullOrEmpty(d.values))){this.wipeOut();return}let n=this.ensureChartBody("column",r.width,r.height);this.log(Fe.LogLevel.Debug,`Drawing ${i} chart.`);let a=this.xAxisType||"string",o=this.yAxisMin??0,h=this.yAxisMax??0,f=0,A=0,L=0,S=1,_={negative:[],positive:[]};for(let d of t){let m=d.values;if(!j.isNullOrEmpty(m)){let y=0;for(let F of m){_.positive[y]=_.positive[y]||0,_.negative[y]=_.negative[y]||0;let v=this.chartDataItemToPoint(F,m);j.isNull(this.yAxisMin)&&(o=Math.min(o,v.y)),j.isNull(this.yAxisMax)&&(h=Math.max(h,v.y)),f=Math.min(f,v.x),A=Math.max(A,v.x),v.y>0?_.positive[y]+=v.y:v.y<0&&(_.negative[y]+=v.y),y++}L=Math.max(L,m.length)}}let N=i==="stack";N&&(j.isNull(this.yAxisMin)&&(o=Math.min.apply(null,_.negative)),j.isNull(this.yAxisMax)&&(h=Math.max.apply(null,_.positive))),A===0&&A===f&&(A=1);let G=(A-f)/L,gt=G*.5,Nt=G*this._safen(this.groupWidth),et=Nt*.5,jt=t.find(d=>!j.isNullOrEmpty(d.values)),H=this.getVirtualGrid(jt.values,f-gt,A+gt,o,h,a,this.yAxisDensity,this.xAxisDensity),Y=H.y[H.y.length-1],nt=H.y[0];if(Y===nt)return;let Xt=te*.5,R=H.y.reduce((d,m)=>Math.max(d,this.estimateYAxisLabelWidth(m)+Xt),s),vt=r.width-R-s,at=r.height-2*s,Pt=at*(1-(Y-nt-(h-o))/(Y-nt)),Mt=at*(Y-h)/(Y-nt);S=vt/Pt,n.setAttribute("height",r.height.toString()),n.setAttribute("width",r.width.toString()),n.setAttribute("viewBox",`0 0 ${r.width} ${r.height}`);let Z=0,kt=A-f,mt=h-o,it=100*S/kt,O=100/mt,$t=100*s/Pt,st=this.chartSeries,B=this.chartGrid,Tt=(gt-f)*it,pt=(d,m)=>{let y=this.chartDataItemToPoint(d,m);return{x:Tt+y.x*2*Tt,y:y.y*O}};var Lt=new Array(L);for(let d of t){let m,y,F,v;if(st.length>Z)m=st[Z],y=m.firstElementChild.firstElementChild,F=m.firstElementChild.lastElementChild,v=m.lastElementChild;else{m=document.createElementNS(St,"svg"),m.setAttribute("pacem",""),B.insertAdjacentElement("afterend",m);let p=document.createElementNS(St,"defs");p.appendChild(y=this.buildLinearGradient(Z)),p.appendChild(F=this.buildLinearGradient(Z,!0)),m.appendChild(p),m.appendChild(v=document.createElementNS(St,"g")),st.push(m)}var Gt="chart-series series-fill";j.isNullOrEmpty(d.className)||(Gt+=" "+d.className),m.setAttribute("class",Gt),m.setAttribute("x",R.toString()),m.setAttribute("y",Mt.toString()),m.setAttribute("width",vt.toString()),m.setAttribute("height",(Pt+2*s).toString());let g=d.values,Bt=p=>{for(;p>=v.children.length;)v.appendChild(document.createElementNS(St,"rect"));let b=v.children.item(p);b.style.stroke=d.color;let M=g[p].value<0?F:y;return this.setGradientColor(M,d.color),b.style.fill=`url(#${M.id})`,b},P=10,w=(p,b,M,k=b)=>{let x=-Math.max(b.y,M.y),U=Math.abs(M.y-b.y),q=()=>{p.setAttribute("y",x.toFixed(P)),p.setAttribute("height",U.toFixed(P))};p.hasAttribute("y")?q():(p.setAttribute("y","-"+k.y.toFixed(P)),p.setAttribute("height","0"),requestAnimationFrame(q))};if(!j.isNullOrEmpty(g)){let p=pt({value:0,label:g[0].label},g);if(N){let b=et*it,M=(Nt*it).toFixed(P);for(let k=0;k<g.length;k++){let x=g[k];j.isNullOrEmpty(Lt[k])&&(Lt[k]={positive:0,negative:0});let U=Lt[k],q=U.positive,Ft=U.negative,ot=x.value<0,re=ot?Ft:q+x.value,ne=ot?Ft+x.value:q,ae=pt({label:x.label,value:re},g),_e=pt({label:x.label,value:ne},g),Ce=ae.x-b,Vt=Bt(k);this.assignUiBehaviors(Vt,d,x),Vt.setAttribute("x",Ce.toFixed(P)),Vt.setAttribute("width",M),w(Vt,_e,ae,p),ot?U.negative=ne:U.positive=re}}else{let b=et*it,M=b*2/t.length,k=M.toFixed(P);for(let x=0;x<g.length;x++){let U=g[x],q=pt(U,g),Ft=q.x-b+M*Z,ot=Bt(x);this.assignUiBehaviors(ot,d,U),ot.setAttribute("x",Ft.toFixed(P)),ot.setAttribute("width",k),w(ot,p,q)}}}for(let p=v.children.length-1;p>=g?.length;p--){let b=v.children.item(p);this.disposeUiBehaviors(b),b.remove()}Z++}this.wipeOut(st,Z);let qt=100*S,se=100+2*$t,Dt=0,yt=h*O+$t,bt=`${Dt} ${-yt} ${qt} ${se}`;for(var xt of st)xt.setAttribute("viewBox",bt);let ft=this.chartMask.children.item(1);if(ft.setAttribute("x",Dt.toString()),ft.setAttribute("height",(r.height-s).toString()),B.setAttribute("viewBox",`0 0 ${r.width} ${r.height}`),H.x.length<1||H.y.length<=1){for(let d=B.children.length-1;d>=0;d--)B.children.item(d).remove();return}let K;B.children.length>0?K=B.children.item(0):(K=document.createElementNS(St,"path"),B.appendChild(K));let At=te*.25,_t=0,Ct=(d,m,y,F)=>{let v=d+1,g;return B.children.length<=v?(g=document.createElementNS(St,"text"),B.appendChild(g)):g=B.children.item(v),g.textContent=F,g.setAttribute("x",m.toString()),g.setAttribute("y",y.toString()),g},Et=`M${R},${s} v${at}`,c=0,u=vt/H.x.length,C=at/(H.y.length-1);if(this.xAxisPosition!=="none"){let d=u*.5+R;for(var X of H.x){let m=d+c*u;if(this.xAxisPosition==="top"){Et+=` M${m},${s} v${-At}`;let y=Ct(_t++,m,0,X);y.setAttribute("text-anchor","middle"),y.setAttribute("alignment-baseline","hanging")}else{let y=at+s;Et+=` M${m},${y} v${At}`,Ct(_t++,m,y+s,X).setAttribute("text-anchor","middle")}c++}}c=0;for(var I of H.y){let d=at+s-c*C,m=R-At;Et+=` M${m},${d} H${vt+R}`;let y=this.formatYAxisLabel(I);Ct(_t++,m-At,d,y).setAttribute("text-anchor","end"),c++}K.setAttribute("d",Et);for(let d=B.children.length-1;d>_t;d--)B.children.item(d).remove()}};ee([ge({converter:ve.String})],Rt.prototype,"type",void 0);ee([ge({converter:ve.Number})],Rt.prototype,"groupWidth",void 0);Rt=ee([Oe({tagName:Be+"-column-chart"})],Rt);import{CustomElement as ye,Watch as dt,PropertyConverters as ut,P as be,PCSS as Wt,Components as xe,Utils as z,CustomElementUtils as Ve,Debounce as ze}from"@pacem/pacem-core";var J=function(l,t,e,i){var s=arguments.length,r=s<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(l,t,e,i);else for(var a=l.length-1;a>=0;a--)(n=l[a])&&(r=(s<3?n(r):s>3?n(t,e,r):n(t,e))||r);return s>3&&r&&Object.defineProperty(t,e,r),r},ht=class extends xe.PacemItemElement{constructor(){super(...arguments),this._broadcastHandler=t=>{this.emit(t)}}findContainer(){return Ve.findAncestorOfType(this,rt)}get chart(){return this.container}getCenterOfMass(){let t=this.chart&&this.chart.area;if(z.isNull(t))return null;let e=z.offset(t),i={x:e.width/2+e.left,y:e.top+e.height/2},s=Math.min(e.width,e.height)*.5,r=this.normalizedPolarCoords,n=Ue-r.angle;return{y:i.y-s*r.radius*Math.sin(n),x:i.x+s*r.radius*Math.cos(n)}}propertyChangedCallback(t,e,i,s){super.propertyChangedCallback(t,e,i,s),!s&&this.chart&&t!="normalizedPolarCoords"&&this.chart.draw()}_assignUi(t){let e=this._ui=t;wt.forEach(i=>{e.addEventListener(i,this._broadcastHandler)})}_disposeUi(){z.isNull(this._ui)||wt.forEach(t=>{this._ui.removeEventListener(t,this._broadcastHandler)})}};J([dt({converter:ut.Number})],ht.prototype,"value",void 0);J([dt({converter:ut.String})],ht.prototype,"label",void 0);J([dt({converter:ut.String})],ht.prototype,"color",void 0);J([dt({converter:ut.Json})],ht.prototype,"normalizedPolarCoords",void 0);ht=J([ye({tagName:be+"-pie-slice"})],ht);var Ye=Math.PI*2,Ue=Math.PI*.5,rt=class extends xe.PacemItemsContainerElement{constructor(){super(),this.cutout=0,this.slicePadding=0,this._slices=new WeakMap,this._key=z.uniqueCode()}validate(t){return t instanceof ht}viewActivatedCallback(){super.viewActivatedCallback(),this.draw()}propertyChangedCallback(t,e,i,s){if(super.propertyChangedCallback(t,e,i,s),t==="target"){this._g=null,this._div&&this._div.remove();let r=e;r&&(r.classList.remove(Wt+"-chart-area"),r.innerHTML=""),this.draw()}else!s&&(t==="cutout"||t==="items"||t==="slicePadding")&&this.draw()}get area(){return this._svg}disconnectedCallback(){this._div&&this._div.remove(),super.disconnectedCallback()}_ensureArea(){if(z.isNull(this._g)){let e=this.target||(this._div=document.createElement("div"));e.classList.add(Wt+"-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(Wt+"-pie-chart");let s=document.createElementNS("http://www.w3.org/2000/svg","defs"),r=this._g=document.createElementNS("http://www.w3.org/2000/svg","g");i.appendChild(s),i.appendChild(r),e.appendChild(i),this._div&&this.parentElement.insertBefore(e,this)}if(this.maskBasedRendering){if(z.isNull(this._mask)){let i=document.createElementNS("http://www.w3.org/2000/svg","mask");i.id="pie_mask_"+this._key;let s=document.createElementNS("http://www.w3.org/2000/svg","rect");s.setAttribute("x","0"),s.setAttribute("y","0"),s.setAttribute("width","100"),s.setAttribute("height","100"),s.setAttribute("fill","#fff");let r=this._mask=document.createElementNS("http://www.w3.org/2000/svg","circle");r.setAttribute("cx","50"),r.setAttribute("cy","50");let n=this._svg.firstElementChild;i.appendChild(s),i.appendChild(r),n.appendChild(i),this._g.setAttribute("mask",`url(#${i.id})`)}let e=50*this._safeCutout;this._mask.setAttribute("r",`${e}`)}else z.isNull(this._mask)||(this._svg.firstElementChild.innerHTML="",this._mask=null,this._g.removeAttribute("mask"));let t=this._safeSlicePaddingPixels;if(t>0){let e=this._svg.getCTM(),i=(t/e.a).roundoff(),s=this._sliceMaskId,r=this._svg.firstElementChild,n=r.querySelector(`#${s}`);z.isNull(n)?(n=document.createElementNS("http://www.w3.org/2000/svg","mask"),n.id=s,r.appendChild(n)):n.innerHTML="";let a=document.createElementNS("http://www.w3.org/2000/svg","path"),o=`M${50+i},0 H100 V100 H0 V0 H50 V50 h${i} Z`;a.setAttribute("d",o),a.setAttribute("fill","#fff"),n.appendChild(a)}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,s){let r=e.value>.5*i?1:0,n=Ye*e.value/i,a=360*s/i,o=e.value>=i?49.9:50*(1+Math.sin(n)),h=50*(1-Math.cos(n)),f=this._safeCutout,A=f*50;t.style.fill=e.color,t.style.transform=`rotate(${a}deg)`,t.style.transformOrigin="50% 50%";let L=this.maskBasedRendering?`M50,50 V0 A50,50 0 ${r} 1 ${o} ${h} L50,50 Z`:`M50,0 A50,50 0 ${r} 1 ${o} ${h} l${(50-o)*(1-f)},${(50-h)*(1-f)} A${A},${A} 0 ${r} 0 50,${50-A} Z`;t.setAttribute("d",L),e.normalizedPolarCoords={radius:f+Math.SQRT1_2*(1-f),angle:Math.PI*a/180+n/2}}_isSliceOk(t){return!t.disabled}_padSlice(t){this._safeSlicePaddingPixels>0?t.setAttribute("mask",`url(#${this._sliceMaskId})`):t.removeAttribute("mask")}draw(){let t=this._ensureArea(),e=t.children.length,i=this._svg.parentElement,s=0,r=0,n=0;if(z.isNullOrEmpty(this.items))t.innerHTML="",z.removeClass(i,"chart-has-data");else{z.addClass(i,"chart-has-data");for(let a of this.items)this._isSliceOk(a)&&(r+=a.value);if(r<=0)t.innerHTML="",z.removeClass(i,"chart-has-data");else for(let a of this.items){if(!this._isSliceOk(a))continue;let o;if(s>=e){let h=document.createElementNS("http://www.w3.org/2000/svg","g");h.setAttribute("class","chart-series "+Wt+"-pie-slice"+(z.isNullOrEmpty(a.className)?"":" "+a.className)),o=document.createElementNS("http://www.w3.org/2000/svg","path"),h.appendChild(o),t.appendChild(h),a._assignUi(h),this._slices.set(h,a)}else o=t.children.item(s).firstElementChild;a.value>0?(this._drawSlice(o,a,r,n),this._padSlice(o),n+=a.value,o.removeAttribute("display")):o.setAttribute("display","none"),s++}}for(;s<t.children.length;){let a=this._slices,o=t.children.item(s);a.has(o)&&(a.get(o)._disposeUi(),a.delete(o)),t.removeChild(o)}}};J([dt({converter:ut.Number})],rt.prototype,"cutout",void 0);J([dt({converter:ut.Element})],rt.prototype,"target",void 0);J([dt({converter:ut.Boolean})],rt.prototype,"maskBasedRendering",void 0);J([dt({converter:ut.Number})],rt.prototype,"slicePadding",void 0);J([ze(!0)],rt.prototype,"draw",null);rt=J([ye({tagName:be+"-pie-chart"})],rt);export{Ae as Components};
@@ -1,3 +1,8 @@
1
+ /*!
2
+ * @pacem/pacem-charts v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  var __defProp = Object.defineProperty;
2
7
  var __export = (target, all) => {
3
8
  for (var name in all)
@@ -1,3 +1,8 @@
1
+ /*!
2
+ * @pacem/pacem-charts v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
7
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
8
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -1,3 +1,8 @@
1
+ /*!
2
+ * @pacem/pacem-charts v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
7
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
8
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -1,3 +1,8 @@
1
+ /*!
2
+ * @pacem/pacem-charts v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  export * from './types';
2
7
  export * from './generic';
3
8
  export * from './column';
@@ -1 +1,6 @@
1
+ /*!
2
+ * @pacem/pacem-charts v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  export * as Charts from './index-components-charts';
@@ -1,3 +1,8 @@
1
+ /*!
2
+ * @pacem/pacem-charts v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  import { DeepMerger } from '@pacem/pacem-foundation';
2
7
  import * as Output from './index';
3
8
  DeepMerger.merge(Output);
package/dist/esm/index.js CHANGED
@@ -1 +1,6 @@
1
+ /*!
2
+ * @pacem/pacem-charts v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  export * as Components from './index-components';
package/dist/esm/pie.js CHANGED
@@ -1,3 +1,8 @@
1
+ /*!
2
+ * @pacem/pacem-charts v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
7
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
8
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
package/dist/esm/types.js CHANGED
@@ -1,3 +1,8 @@
1
+ /*!
2
+ * @pacem/pacem-charts v1.0.0-amaldi (https://js.pacem.it)
3
+ * Pacem (https://pacem.it)
4
+ * Licensed under Apache-2.0
5
+ */
1
6
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
7
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
8
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
package/package.json CHANGED
@@ -24,7 +24,7 @@
24
24
  "types": "./typings/index.d.ts"
25
25
  }
26
26
  },
27
- "version": "1.0.0-abel",
27
+ "version": "1.0.0-amaldi",
28
28
  "author": {
29
29
  "name": "Pacem",
30
30
  "url": "https://pacem.it"