@pacem/pacem 1.0.0-babbage → 1.0.0-bernoulli
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/pacem-2d.js +1 -1
- package/dist/browser/pacem-2d.min.js +2 -2
- package/dist/browser/pacem-2d.min.js.map +1 -1
- package/dist/browser/pacem-3d.js +1 -1
- package/dist/browser/pacem-3d.min.js +2 -2
- package/dist/browser/pacem-3d.min.js.map +1 -1
- package/dist/browser/pacem-charts.js +1 -1
- package/dist/browser/pacem-charts.min.js +2 -2
- package/dist/browser/pacem-charts.min.js.map +1 -1
- package/dist/browser/pacem-cms.js +1 -1
- package/dist/browser/pacem-cms.min.js +2 -2
- package/dist/browser/pacem-cms.min.js.map +1 -1
- package/dist/browser/pacem-core.js +1 -1
- package/dist/browser/pacem-core.min.js +2 -2
- package/dist/browser/pacem-core.min.js.map +1 -1
- package/dist/browser/pacem-foundation.js +1 -1
- package/dist/browser/pacem-foundation.min.js +2 -2
- package/dist/browser/pacem-foundation.min.js.map +1 -1
- package/dist/browser/pacem-fx.js +1 -1
- package/dist/browser/pacem-fx.min.js +2 -2
- package/dist/browser/pacem-fx.min.js.map +1 -1
- package/dist/browser/pacem-logging.js +1 -1
- package/dist/browser/pacem-logging.min.js +2 -2
- package/dist/browser/pacem-logging.min.js.map +1 -1
- package/dist/browser/pacem-maps.js +1 -1
- package/dist/browser/pacem-maps.min.js +2 -2
- package/dist/browser/pacem-maps.min.js.map +1 -1
- package/dist/browser/pacem-media.js +1 -1
- package/dist/browser/pacem-media.min.js +2 -2
- package/dist/browser/pacem-media.min.js.map +1 -1
- package/dist/browser/pacem-networking.js +1 -1
- package/dist/browser/pacem-networking.min.js +2 -2
- package/dist/browser/pacem-networking.min.js.map +1 -1
- package/dist/browser/pacem-numerical.js +1 -1
- package/dist/browser/pacem-numerical.min.js +2 -2
- package/dist/browser/pacem-numerical.min.js.map +1 -1
- package/dist/browser/pacem-plus.js +1 -1
- package/dist/browser/pacem-plus.min.js +2 -2
- package/dist/browser/pacem-plus.min.js.map +1 -1
- package/dist/browser/pacem-scaffolding.js +1 -1
- package/dist/browser/pacem-scaffolding.min.js +2 -2
- package/dist/browser/pacem-scaffolding.min.js.map +1 -1
- package/dist/browser/pacem-ui.js +1 -1
- package/dist/browser/pacem-ui.min.js +2 -2
- package/dist/browser/pacem-ui.min.js.map +1 -1
- package/dist/bundle/pacem.min.mjs +1 -1
- package/dist/bundle/pacem.mjs +1 -1
- package/dist/typings/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @pacem/pacem v1.0.0-
|
|
2
|
+
* @pacem/pacem v1.0.0-bernoulli (https://js.pacem.it)
|
|
3
3
|
* Pacem (https://pacem.it)
|
|
4
4
|
* Licensed under Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
!function(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);
|
|
6
|
+
!function(t,e){"use strict";var i=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 l=t.length-1;l>=0;l--)(s=t[l])&&(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};const r=["keydown","keyup","click","dblclick","mouseover","mouseout","mouseenter","mouseleave","mousedown","mouseup","mousemove","contextmenu"],s=864e5,a="pacem:chart-series:dataitem",n="pacem:chart-series:series";function l(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 l=10;0!==t&&(l=a(Math.abs(e)));const c=h(l,n);return 1===c?n:Math.max(c,10-c)}function h(t,e){return t<=0?e:h(e%t,t)}class ChartEvent extends e.CustomUIEvent{constructor(t,e,i){super(t,e,i)}}let c=class PacemChartSeriesElement extends e.Components.PacemItemElement{get values(){return this.datasource}};i([e.Watch({emit:!0,converter:e.PropertyConverters.Json})],c.prototype,"datasource",void 0),i([e.Watch({emit:!0,converter:e.PropertyConverters.String})],c.prototype,"label",void 0),i([e.Watch({emit:!0,converter:e.PropertyConverters.String})],c.prototype,"color",void 0),i([e.Watch({emit:!0,converter:e.PropertyConverters.Boolean})],c.prototype,"datapoints",void 0),i([e.Watch()],c.prototype,"_uiElements",void 0),c=i([e.CustomElement({tagName:e.P+"-chart-series"})],c);const d="http://www.w3.org/2000/svg";class PacemSeriesChartElement 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,a);if(e.Utils.isNull(r))return;const s=this.getAnchorPoint(i),l=new ChartEvent("item"+t.type,{detail:{dataItem:r,anchorPoint:s}},t),o=e.CustomElementUtils.getAttachedPropertyValue(i,n);o instanceof c&&o.dispatchEvent(l),this.dispatchEvent(l)},this._key=e.Utils.uniqueCode()}validate(t){return t instanceof c}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,l){const o=!e.Utils.isNull(e.CustomElementUtils.getAttachedPropertyValue(t,a)),h=e.Utils.extend({series:i.label,color:l||i.color},s);e.CustomElementUtils.setAttachedPropertyValue(t,a,h),e.CustomElementUtils.setAttachedPropertyValue(t,n,i),o||r.forEach(e=>{t.addEventListener(e,this._broadcastHandler)})}disposeUiBehaviors(t){e.CustomElementUtils.deleteAttachedPropertyValue(t,a),e.CustomElementUtils.deleteAttachedPropertyValue(t,n),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(d,"svg");i.setAttribute("pacem",""),i.setAttribute("class",e.PCSS+"-"+t+"-chart"),i.setAttribute("preserveAspectRatio","xMinYMax slice");const r=this._grid=document.createElementNS(d,"svg");r.setAttribute("pacem",""),r.setAttribute("class","chart-grid");let s=document.createElementNS(d,"defs"),a=this._mask=document.createElementNS(d,"mask"),n=document.createElementNS(d,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","100%"),n.setAttribute("height","100%");let l=document.createElementNS(d,"rect");l.setAttribute("y","0"),l.setAttribute("width","100%"),l.setAttribute("fill","#fff"),a.id="gnrc_mask_"+this._key,a.appendChild(n),a.appendChild(l),s.appendChild(a),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,a,n,o=this.xAxisType,h,c){const d=l(a,n,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(o){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,a,n,l=10){const o="number"===i||"date"===i?a-r:Math.max(1,t.length-1);for(var h=[],c=1,d=l-1;d>1;d--)if(o%d===0){c=o/d;break}1===c&&o>l&&(c=o);const u="function"==typeof n?n:c>=s?t=>t.toLocaleDateString(n):t=>t.toLocaleTimeString(n),m="function"==typeof n?n:c<s?t=>t.toLocaleString(n):u,p="function"==typeof n?n:t=>t.toLocaleString(n);for(var v=0;v<=o;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,o,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(d,"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(d,"stop");s.setAttribute("offset","0%");const a=document.createElementNS(d,"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(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(d,"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 a=t;return e.Utils.isNullOrEmpty(i)?a.toLocaleString(r):Intl.NumberFormat(r,i).format(a);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})],PacemSeriesChartElement.prototype,"target",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.String})],PacemSeriesChartElement.prototype,"xAxisType",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.String})],PacemSeriesChartElement.prototype,"xAxisPosition",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"datasource",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"yAxisDensity",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"xAxisDensity",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"yAxisMin",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"yAxisMax",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"yAxisFormat",void 0),i([e.Watch({emit:!1,converter:e.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"xAxisFormat",void 0),i([e.Throttle(!0)],PacemSeriesChartElement.prototype,"draw",null);var u=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 l=t.length-1;l>=0;l--)(s=t[l])&&(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 m(t,i,r){let s=t,a=t;const n=e.Utils.isNull(i),l=e.Utils.isNull(r);if(!n||!l){const e=3;let o,h;n||(o=(t.y-i.y)/(t.x-i.x)),l||(h=(r.y-t.y)/(r.x-t.x));const c=((h||o||0)+(o||h||0))/2,d=n?0:(t.x-i.x)/e,u=l?0:(r.x-t.x)/e;s={x:t.x-d,y:t.y-d*c},a={x:t.x+u,y:t.y+u*c}}return{c0:s,c1:a}}const p=e.CustomElementUtils.getAttachedPropertyValue,v=e.CustomElementUtils.setAttachedPropertyValue;e.CustomElementUtils.deleteAttachedPropertyValue;const g="pacem:chart-series:area",y="http://www.w3.org/2000/svg";let f=class PacemChartElement extends 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,l){return super.getVirtualGrid(t,e,i,r,s,a,n,l)}_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 a=this.ensureChartBody("line",s.width,s.height);this.log(e.Logging.LogLevel.Debug,`Drawing ${i} chart.`);const n=this.xAxisType||"string";let l=this.yAxisMin??Number.NaN,o=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)&&(l=isNaN(l)?s.y:Math.min(l,s.y)),e.Utils.isNull(this.yAxisMax)&&(o=isNaN(o)?s.y:Math.max(o,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)),f=this._getVirtualGrid(u.values,h,c,l,o,n,this.yAxisDensity,this.xAxisDensity),b=f.y[f.y.length-1],C=f.y[0];if(b===C)return;const x=f.y.reduce((t,e)=>Math.max(t,this.estimateYAxisLabelWidth(e)+12),r),A=.5*f.x.reduce((t,e)=>Math.max(t,this.estimateXAxisLabelWidth(e)),r),_=Math.max(A,x),E=A,w=s.width-_-E,S=s.height-48,N=S*(1-(b-C-(o-l))/(b-C)),P=S*(b-o)/(b-C);("number"!==n||"monometric"!==this.aspectRatio&&"logaritmic"!==this.aspectRatio)&&(d=w/N,a.setAttribute("height",s.height.toString()),a.setAttribute("width",s.width.toString())),a.setAttribute("viewBox",`0 0 ${s.width} ${s.height}`);let M=0;const U=100*d/(c-h),k=100/(o-l),$=2400/N,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,n;if(O.length>M)t=O[M],s=W[M],n=s.firstElementChild.firstElementChild;else{t=document.createElementNS(y,"svg"),t.setAttribute("pacem",""),a.appendChild(t),s=document.createElementNS(y,"svg"),s.setAttribute("pacem",""),a.insertBefore(s,a.children.item(M+2));const e=document.createElementNS(y,"defs");e.appendChild(n=this._buildLinearGradient(M)),s.appendChild(e),s.appendChild(document.createElementNS(y,"path")),W.push(s),t.appendChild(document.createElementNS(y,"path")),O.push(t)}let o="chart-series";const h="area"===i||"splinearea"===i;e.Utils.isNullOrEmpty(r.className)||(o+=" "+r.className),[t,s].forEach(t=>{t.setAttribute("class",o),t.setAttribute("x",_.toString()),t.setAttribute("y",P.toString()),t.setAttribute("width",w.toString()),t.setAttribute("height",(N+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(n,r.color),c.style.fill=`url(#${n.id})`,c.style.display=h?"":"none";let u="",f=r.values;if(f&&f.length){const i=(e,i,r,s,a)=>{const n=i+1;let l;t.children.length>n?l=t.children.item(n):(l=document.createElementNS(y,"line"),l.setAttribute("class","circle"),t.appendChild(l));const o=e.x.toString(),h=(-e.y).toString();l.setAttribute("x1",o),l.setAttribute("y1",h),l.setAttribute("x2",o),l.setAttribute("y2",h),l.style.stroke=a,this.assignUiBehaviors(l,r,s,a)},s=()=>{const e=r.datapoints?f.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,a;for(let n=0;n<f.length;n++){const l=f[n];if(isNaN(l.value))continue;let o;s||(s=L(l,f)),B&&n<f.length-1&&(o=L(f[n+1],f));let h=p(r,g,0);h+=l.value,v(r,g,h);var H=m(s,t,o);u+=e.Utils.isNullOrEmpty(u)?`M${s.x},${-s.y} `:`C${a.x},${-a.y} ${H.c0.x},${-H.c0.y} ${s.x},${-s.y} `,r.datapoints&&i(s,n,r,l,r.color),t=s,s=o,a=H.c1}}else{let t=0;for(let s of f){if(isNaN(s.value))continue;const a=L(s,f);let n=p(r,g,0);n+=s.value,v(r,g,n),u+=e.Utils.isNullOrEmpty(u)?`M${a.x},${-a.y} `:`L${a.x},${-a.y} `,r.datapoints&&i(a,t,r,s,r.color),t++}}s()}d.setAttribute("d",u),c.setAttribute("d",u+`V${-l*k} H0 Z`),M++}this._wipe(W,M),this._wipe(O,M);const R=`0 ${-(o*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}`),f.x.length<=1||f.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(y,"path"),D.appendChild(z));let F=0,V=(t,e,i,r)=>{const s=t+1;let a;return D.children.length<=s?(a=document.createElementNS(y,"text"),D.appendChild(a)):a=D.children.item(s),a.textContent=r,a.setAttribute("x",e.toString()),a.setAttribute("y",i.toString()),a},G=`M${_},24 v${S}`,j=0;const Y=w/(f.x.length-1),q=S/(f.y.length-1);if("none"!==this.xAxisPosition)for(var J of f.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=S+r;G+=` M${t},${e} v6`,V(F++,t,e+r,J).setAttribute("text-anchor","middle")}j++}for(var X of(j=0,f.y)){const t=S+r-j*q,e=_-6;G+=` M${e},${t} H${w+_}`,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()}};u([e.Watch({emit:!1,converter:e.PropertyConverters.String})],f.prototype,"type",void 0),u([e.Watch({converter:e.PropertyConverters.String})],f.prototype,"aspectRatio",void 0),f=u([e.CustomElement({tagName:e.P+"-chart"})],f);var b=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 l=t.length-1;l>=0;l--)(s=t[l])&&(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};const C="http://www.w3.org/2000/svg";let x=class PacemColumnChartElement extends 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(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 a=this.ensureChartBody("column",s.width,s.height);this.log(e.Logging.LogLevel.Debug,`Drawing ${i} chart.`);const n=this.xAxisType||"string";let l=this.yAxisMin??0,o=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)&&(l=Math.min(l,s.y)),e.Utils.isNull(this.yAxisMax)&&(o=Math.max(o,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)&&(l=Math.min.apply(null,m.negative)),e.Utils.isNull(this.yAxisMax)&&(o=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,l,o,n,this.yAxisDensity,this.xAxisDensity),A=x.y[x.y.length-1],_=x.y[0];if(A===_)return;const E=x.y.reduce((t,e)=>Math.max(t,this.estimateYAxisLabelWidth(e)+12),r),w=s.width-E-r,S=s.height-48,N=S*(1-(A-_-(o-l))/(A-_)),P=S*(A-o)/(A-_);u=w/N,a.setAttribute("height",s.height.toString()),a.setAttribute("width",s.width.toString()),a.setAttribute("viewBox",`0 0 ${s.width} ${s.height}`);let M=0;const U=100*u/(c-h),k=100/(o-l),$=2400/N,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,a,n;if(L.length>M)r=L[M],s=r.firstElementChild.firstElementChild,a=r.firstElementChild.lastElementChild,n=r.lastElementChild;else{r=document.createElementNS(C,"svg"),r.setAttribute("pacem",""),O.insertAdjacentElement("afterend",r);const t=document.createElementNS(C,"defs");t.appendChild(s=this.buildLinearGradient(M)),t.appendChild(a=this.buildLinearGradient(M,!0)),r.appendChild(t),r.appendChild(n=document.createElementNS(C,"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",E.toString()),r.setAttribute("y",P.toString()),r.setAttribute("width",w.toString()),r.setAttribute("height",(N+48).toString());const l=i.values,o=t=>{for(;t>=n.children.length;)n.appendChild(document.createElementNS(C,"rect"));const e=n.children.item(t);e.style.stroke=i.color;const r=l[t].value<0?a: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),a=Math.abs(i.y-e.y),n=()=>{t.setAttribute("y",s.toFixed(h)),t.setAttribute("height",a.toFixed(h))};t.hasAttribute("y")?n():(t.setAttribute("y","-"+r.y.toFixed(h)),t.setAttribute("height","0"),requestAnimationFrame(n))};if(!e.Utils.isNullOrEmpty(l)){const r=D({value:0,label:l[0].label},l);if(p){const t=f*U,s=(y*U).toFixed(h);for(let a=0;a<l.length;a++){const n=l[a];e.Utils.isNullOrEmpty(B[a])&&(B[a]={positive:0,negative:0});const d=B[a];let u=d.positive,m=d.negative;const p=n.value<0,v=p?m:u+n.value,g=p?m+n.value:u,y=D({label:n.label,value:v},l),f=D({label:n.label,value:g},l),b=y.x-t,C=o(a);this.assignUiBehaviors(C,i,n),C.setAttribute("x",b.toFixed(h)),C.setAttribute("width",s),c(C,f,y,r),p?d.negative=g:d.positive=v}}else{const e=f*U,s=2*e/t.length,a=s.toFixed(h);for(let t=0;t<l.length;t++){const n=l[t],d=D(n,l),u=d.x-e+s*M,m=o(t);this.assignUiBehaviors(m,i,n),m.setAttribute("x",u.toFixed(h)),m.setAttribute("width",a),c(m,r,d)}}}for(let t=n.children.length-1;t>=l?.length;t--){const e=n.children.item(t);this.disposeUiBehaviors(e),e.remove()}M++}this.wipeOut(L,M);const R=`0 ${-(o*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(C,"path"),O.appendChild(z));let F=0,V=(t,e,i,r)=>{const s=t+1;let a;return O.children.length<=s?(a=document.createElementNS(C,"text"),O.appendChild(a)):a=O.children.item(s),a.textContent=r,a.setAttribute("x",e.toString()),a.setAttribute("y",i.toString()),a},G=`M${E},24 v${S}`,j=0;const Y=w/x.x.length,q=S/(x.y.length-1);if("none"!==this.xAxisPosition){const t=.5*Y+E;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=S+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=S+r-j*q,e=E-6;G+=` M${e},${t} H${w+E}`,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()}};b([e.Watch({converter:e.PropertyConverters.String})],x.prototype,"type",void 0),b([e.Watch({converter:e.PropertyConverters.Number})],x.prototype,"groupWidth",void 0),x=b([e.CustomElement({tagName:e.P+"-column-chart"})],x);var A=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 l=t.length-1;l>=0;l--)(s=t[l])&&(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};let _=class PacemPieSliceElement extends e.Components.PacemItemElement{constructor(){super(...arguments),this._broadcastHandler=t=>{this.emit(t)}}findContainer(){return e.CustomElementUtils.findAncestorOfType(this,S)}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,a=.5*Math.min(i.width,i.height),n=this.normalizedPolarCoords,l=w-n.angle;return{y:s-a*n.radius*Math.sin(l),x:r+a*n.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;r.forEach(t=>{e.addEventListener(t,this._broadcastHandler)})}_disposeUi(){e.Utils.isNull(this._ui)||r.forEach(t=>{this._ui.removeEventListener(t,this._broadcastHandler)})}};A([e.Watch({converter:e.PropertyConverters.Number})],_.prototype,"value",void 0),A([e.Watch({converter:e.PropertyConverters.String})],_.prototype,"label",void 0),A([e.Watch({converter:e.PropertyConverters.String})],_.prototype,"color",void 0),A([e.Watch({converter:e.PropertyConverters.Json})],_.prototype,"normalizedPolarCoords",void 0),_=A([e.CustomElement({tagName:e.P+"-pie-slice"})],_);const E=2*Math.PI,w=.5*Math.PI;let S=class PacemPieChartElement 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 _}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 a=s.querySelector(`#${r}`);e.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"),l=`M${50+i},0 H100 V100 H0 V0 H50 V50 h${i} Z`;n.setAttribute("d",l),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 s=e.value>.5*i?1:0,a=E*e.value/i,n=360*r/i,l=e.value>=i?49.9:50*(1+Math.sin(a)),o=50*(1-Math.cos(a)),h=this._safeCutout,c=50*h;t.style.fill=e.color,t.style.transform=`rotate(${n}deg)`,t.style.transformOrigin="50% 50%";const d=this.maskBasedRendering?`M50,50 V0 A50,50 0 ${s} 1 ${l} ${o} L50,50 Z`:`M50,0 A50,50 0 ${s} 1 ${l} ${o} l${(50-l)*(1-h)},${(50-o)*(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*n/180+a/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,a=0,n=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)&&(a+=t.value);if(a<=0)t.innerHTML="",e.Utils.removeClass(r,"chart-has-data");else for(let r of this.items){if(!this._isSliceOk(r))continue;let l;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)),l=document.createElementNS("http://www.w3.org/2000/svg","path"),i.appendChild(l),t.appendChild(i),r._assignUi(i),this._slices.set(i,r)}else l=t.children.item(s).firstElementChild;r.value>0?(this._drawSlice(l,r,a,n),this._padSlice(l),n+=r.value,l.removeAttribute("display")):l.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)}}};A([e.Watch({converter:e.PropertyConverters.Number})],S.prototype,"cutout",void 0),A([e.Watch({converter:e.PropertyConverters.Element})],S.prototype,"target",void 0),A([e.Watch({converter:e.PropertyConverters.Boolean})],S.prototype,"maskBasedRendering",void 0),A([e.Watch({converter:e.PropertyConverters.Number})],S.prototype,"slicePadding",void 0),A([e.Debounce(!0)],S.prototype,"draw",null),S=A([e.CustomElement({tagName:e.P+"-pie-chart"})],S);var N=Object.freeze({__proto__:null,ChartEvent:ChartEvent,MANAGED_EVENTS:r,get PacemChartElement(){return f},get PacemChartSeriesElement(){return c},get PacemColumnChartElement(){return x},get PacemPieChartElement(){return S},get PacemPieSliceElement(){return _},PacemSeriesChartElement:PacemSeriesChartElement}),P=Object.freeze({__proto__:null,Charts:N}),M=Object.freeze({__proto__:null,Components:P});t.DeepMerger.merge(M)}(Pacem,Pacem);
|
|
7
7
|
//# sourceMappingURL=pacem-charts.min.js.map
|