pacem 0.51.3 → 0.51.4-abel

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/css/pacem-dark-content.min.css +1 -1
  2. package/dist/css/pacem-dark-shell.min.css +1 -1
  3. package/dist/css/pacem-dark.min.css +1 -1
  4. package/dist/css/pacem-light-content.min.css +1 -1
  5. package/dist/css/pacem-light-shell.min.css +1 -1
  6. package/dist/css/pacem-light.min.css +1 -1
  7. package/dist/css/pacem-phousys-content.min.css +1 -1
  8. package/dist/css/pacem-phousys-shell.min.css +1 -1
  9. package/dist/css/pacem-phousys.min.css +1 -1
  10. package/dist/js/azure-maps.d.ts +1 -1
  11. package/dist/js/pacem-2d.d.ts +1 -1
  12. package/dist/js/pacem-2d.js +1 -1
  13. package/dist/js/pacem-2d.min.js +1 -1
  14. package/dist/js/pacem-3d.d.ts +1 -1
  15. package/dist/js/pacem-3d.js +1 -1
  16. package/dist/js/pacem-3d.min.js +1 -1
  17. package/dist/js/pacem-charts.d.ts +5 -1
  18. package/dist/js/pacem-charts.js +22 -10
  19. package/dist/js/pacem-charts.min.js +2 -2
  20. package/dist/js/pacem-cms.d.ts +1 -1
  21. package/dist/js/pacem-cms.js +1 -1
  22. package/dist/js/pacem-cms.min.js +1 -1
  23. package/dist/js/pacem-core.d.ts +1 -1
  24. package/dist/js/pacem-core.js +1 -1
  25. package/dist/js/pacem-core.min.js +1 -1
  26. package/dist/js/pacem-foundation.d.ts +4 -1
  27. package/dist/js/pacem-foundation.js +26 -4
  28. package/dist/js/pacem-foundation.min.js +2 -2
  29. package/dist/js/pacem-fx.d.ts +1 -1
  30. package/dist/js/pacem-fx.js +1 -1
  31. package/dist/js/pacem-fx.min.js +1 -1
  32. package/dist/js/pacem-logging.d.ts +1 -1
  33. package/dist/js/pacem-logging.js +1 -1
  34. package/dist/js/pacem-logging.min.js +1 -1
  35. package/dist/js/pacem-maps.d.ts +1 -1
  36. package/dist/js/pacem-maps.js +1 -1
  37. package/dist/js/pacem-maps.min.js +1 -1
  38. package/dist/js/pacem-media.d.ts +1 -1
  39. package/dist/js/pacem-media.js +1 -1
  40. package/dist/js/pacem-media.min.js +1 -1
  41. package/dist/js/pacem-networking.d.ts +1 -1
  42. package/dist/js/pacem-networking.js +1 -1
  43. package/dist/js/pacem-networking.min.js +1 -1
  44. package/dist/js/pacem-numerical.d.ts +1 -1
  45. package/dist/js/pacem-numerical.js +1 -1
  46. package/dist/js/pacem-numerical.min.js +1 -1
  47. package/dist/js/pacem-plus.d.ts +1 -1
  48. package/dist/js/pacem-plus.js +1 -1
  49. package/dist/js/pacem-plus.min.js +1 -1
  50. package/dist/js/pacem-scaffolding.d.ts +1 -1
  51. package/dist/js/pacem-scaffolding.js +1 -1
  52. package/dist/js/pacem-scaffolding.min.js +1 -1
  53. package/dist/js/pacem-ui.d.ts +1 -1
  54. package/dist/js/pacem-ui.js +1 -1
  55. package/dist/js/pacem-ui.min.js +1 -1
  56. package/dist/js/swagger-types.d.ts +1 -1
  57. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -54,6 +54,10 @@ declare namespace Pacem.Components.Charts {
54
54
  datasource: ChartDatasource;
55
55
  /** Gets or sets the maximum number of horizontal grid lines. */
56
56
  yAxisDensity: number;
57
+ /** Minimum y value. */
58
+ yAxisMin: number;
59
+ /** Maximum y value. */
60
+ yAxisMax: number;
57
61
  yAxisFormat: Intl.NumberFormatOptions;
58
62
  xAxisFormat: Intl.NumberFormatOptions | Intl.DateTimeFormatOptions;
59
63
  register(item: PacemChartSeriesElement): boolean;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -69,7 +69,7 @@ var Pacem;
69
69
  if (!(step > 0)) {
70
70
  step = bestGuessedDensity(a0, a1);
71
71
  }
72
- const magn = logN(step, a1 - a0), rounder = Math.pow(step, Math.floor(magn));
72
+ const magn = logN(step, a1 - a0), exp = magn % 1 == 0 ? magn - 1 : magn, rounder = Math.pow(step, Math.floor(exp));
73
73
  return {
74
74
  min: Math.floor(a0 / rounder) * rounder,
75
75
  max: Math.ceil(a1 / rounder) * rounder,
@@ -477,6 +477,12 @@ var Pacem;
477
477
  __decorate([
478
478
  Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.Number })
479
479
  ], PacemSeriesChartElement.prototype, "yAxisDensity", void 0);
480
+ __decorate([
481
+ Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.Number })
482
+ ], PacemSeriesChartElement.prototype, "yAxisMin", void 0);
483
+ __decorate([
484
+ Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.Number })
485
+ ], PacemSeriesChartElement.prototype, "yAxisMax", void 0);
480
486
  __decorate([
481
487
  Pacem.Watch({ emit: false, converter: Pacem.PropertyConverters.Json })
482
488
  ], PacemSeriesChartElement.prototype, "yAxisFormat", void 0);
@@ -536,7 +542,7 @@ var Pacem;
536
542
  this.log(Pacem.Logging.LogLevel.Debug, `Drawing ${type} chart.`);
537
543
  // #region computations
538
544
  const xAxisType = this.xAxisType || 'string';
539
- let minY = 0, maxY = 0, minX = 0, maxX = 0, maxCount = 0;
545
+ let minY = this.yAxisMin ?? 0, maxY = this.yAxisMax ?? 0, minX = 0, maxX = 0, maxCount = 0;
540
546
  let stretch = 1;
541
547
  const accumulator = { negative: [], positive: [] };
542
548
  // individuate the min/max x & y in order correctly apply aspect ratio...
@@ -548,8 +554,10 @@ var Pacem;
548
554
  accumulator.positive[j] = accumulator.positive[j] || 0;
549
555
  accumulator.negative[j] = accumulator.negative[j] || 0;
550
556
  let pt = this.chartDataItemToPoint(item, data);
551
- minY = Math.min(minY, pt.y);
552
- maxY = Math.max(maxY, pt.y);
557
+ if (Pacem.Utils.isNull(this.yAxisMin))
558
+ minY = Math.min(minY, pt.y);
559
+ if (Pacem.Utils.isNull(this.yAxisMax))
560
+ maxY = Math.max(maxY, pt.y);
553
561
  minX = Math.min(minX, pt.x);
554
562
  maxX = Math.max(maxX, pt.x);
555
563
  if (pt.y > 0) {
@@ -565,8 +573,10 @@ var Pacem;
565
573
  }
566
574
  const stacked = type === 'stack';
567
575
  if (stacked) {
568
- minY = Math.min.apply(null, accumulator.negative);
569
- maxY = Math.max.apply(null, accumulator.positive);
576
+ if (Pacem.Utils.isNull(this.yAxisMin))
577
+ minY = Math.min.apply(null, accumulator.negative);
578
+ if (Pacem.Utils.isNull(this.yAxisMax))
579
+ maxY = Math.max.apply(null, accumulator.positive);
570
580
  }
571
581
  // estimate y-axis max width
572
582
  const paddingYAxis = Math.max(padding, this.estimateYAxisLabelWidth(maxY) + PADDING_PIXELS * .5);
@@ -962,7 +972,7 @@ var Pacem;
962
972
  this.log(Pacem.Logging.LogLevel.Debug, `Drawing ${type} chart.`);
963
973
  // #region computations
964
974
  const xAxisType = this.xAxisType || 'string';
965
- let minY = Number.NaN, maxY = Number.NaN, minX = Number.NaN, maxX = Number.NaN;
975
+ let minY = this.yAxisMin ?? Number.NaN, maxY = this.yAxisMax ?? Number.NaN, minX = Number.NaN, maxX = Number.NaN;
966
976
  let stretch = 1;
967
977
  // individuate the min/max x & y in order correctly apply aspect ratio...
968
978
  for (let series of datasource) {
@@ -971,8 +981,10 @@ var Pacem;
971
981
  let j = 0;
972
982
  for (let item of data) {
973
983
  let pt = this.chartDataItemToPoint(item, data);
974
- minY = isNaN(minY) ? pt.y : Math.min(minY, pt.y);
975
- maxY = isNaN(maxY) ? pt.y : Math.max(maxY, pt.y);
984
+ if (Pacem.Utils.isNull(this.yAxisMin))
985
+ minY = isNaN(minY) ? pt.y : Math.min(minY, pt.y);
986
+ if (Pacem.Utils.isNull(this.yAxisMax))
987
+ maxY = isNaN(maxY) ? pt.y : Math.max(maxY, pt.y);
976
988
  if (j === 0)
977
989
  minX = isNaN(minX) ? pt.x : Math.min(minX, pt.x);
978
990
  else if (j === data.length - 1)
@@ -1,6 +1,6 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
- var Pacem,__decorate=this&&this.__decorate||function(t,e,i,r){var s,a=arguments.length,n=a<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(n=(a<3?s(n):a>3?s(e,i,n):s(e,i))||n);return a>3&&n&&Object.defineProperty(e,i,n),n};!function(t){!function(e){!function(i){i.MANAGED_EVENTS=["keydown","keyup","click","dblclick","mouseover","mouseout","mouseenter","mouseleave","mousedown","mouseup","mousemove","contextmenu"];const r=864e5,s="pacem:chart-series:dataitem",a="pacem:chart-series:series";function n(t,e,i){i>0||(i=o(t,e));const r=(a=i,n=e-t,Math.log10(n)/Math.log10(a)),s=Math.pow(i,Math.floor(r));var a,n;return{min:Math.floor(t/s)*s,max:Math.ceil(e/s)*s,round:s}}function o(t,e){const i=e-t;if(!(i>0))return 2;const r=Math.floor(Math.log10(i)),s=Math.pow(10,-r);if(0!=r)return o(t*s,e*s);const a=t=>{const e=Math.floor(10*Math.abs(t));return(e+10-e%10).roundoff()},n=a(i);let h=10;0!==t&&(h=a(Math.abs(e)));const c=l(h,n);return 1===c?n:Math.max(c,10-c)}function l(t,e){return t<=0?e:l(e%t,t)}class ChartEvent extends t.CustomUIEvent{constructor(t,e,i){super(t,e,i)}}i.ChartEvent=ChartEvent;let h=class PacemChartSeriesElement extends e.PacemItemElement{get values(){return this.datasource}};__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.Json})],h.prototype,"datasource",void 0),__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.String})],h.prototype,"label",void 0),__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.String})],h.prototype,"color",void 0),__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.Boolean})],h.prototype,"datapoints",void 0),__decorate([t.Watch()],h.prototype,"_uiElements",void 0),h=__decorate([t.CustomElement({tagName:t.P+"-chart-series"})],h),i.PacemChartSeriesElement=h;const c="http://www.w3.org/2000/svg";class PacemSeriesChartElement extends e.PacemItemsContainerElement{constructor(){super(),this._itemPropertyChangedCallback=t=>{const e=t.detail.propertyName;"datasource"!==e&&"label"!==e&&"datapoints"!==e&&"cssClass"!==e&&"color"!==e||this.draw()},this._series=[],this._resizeHandler=t=>{this._size=t.detail,this.draw()},this._broadcastHandler=e=>{const i=e.currentTarget,r=t.CustomElementUtils.getAttachedPropertyValue(i,s);if(t.Utils.isNull(r))return;const n=this.getAnchorPoint(i),o=new ChartEvent("item"+e.type,{detail:{dataItem:r,anchorPoint:n}},e),l=t.CustomElementUtils.getAttachedPropertyValue(i,a);l instanceof h&&l.dispatchEvent(o),this.dispatchEvent(o)},this._key=t.Utils.uniqueCode()}validate(t){return t instanceof h}register(e){return!!super.register(e)&&(e.addEventListener(t.PropertyChangeEventName,this._itemPropertyChangedCallback,!1),!0)}unregister(e){return!!super.unregister(e)&&(e.removeEventListener(t.PropertyChangeEventName,this._itemPropertyChangedCallback,!1),!0)}propertyChangedCallback(e,i,r,s){if(super.propertyChangedCallback(e,i,r,s),"target"===e){this._div!=i&&this._div&&this._div.remove(),this._div=null,this._body=null;const e=i;e&&(e.classList.remove(t.PCSS+"-chart-area"),e.innerHTML=""),this._ensureResizer(),this.draw()}else if(!s)switch(e){case"items":this._databindAndDrawDebounced();break;case"datasource":this._databind();case"yAxisDensity":case"xAxisType":case"xAxisPosition":case"yAxisFormat":this.draw()}}_databindAndDrawDebounced(){cancelAnimationFrame(this._handle),this._handle=requestAnimationFrame((()=>{this._databind(),this.draw()}))}_databind(){this._datasource=t.Utils.isNullOrEmpty(this.datasource)?this.items:this.datasource}disconnectedCallback(){this._div&&this._div.remove();const e=this._resizer;t.Utils.isNull(e)||(e.removeEventListener(t.Components.ResizeEventName,this._resizeHandler,!1),e.remove(),this._resizer=null),super.disconnectedCallback()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureResizer(),this._databind(),this.draw()}_ensureResizer(i=this.target||this._div){if(t.Utils.isNull(this._resizer)){const i=t.CustomElementUtils.findAncestorShell(this);(this._resizer=i.appendChild(new e.PacemResizeElement)).addEventListener(t.Components.ResizeEventName,this._resizeHandler,!1)}this._resizer.target=i}get chartSize(){return this._size}get chartSeries(){return this._series}get chartBody(){return this._body}get chartGrid(){return this._grid}get chartMask(){return this._mask}get chartKey(){return this._key}get chartContainer(){return this._div}assignUiBehaviors(e,r,n,o){const l=!t.Utils.isNull(t.CustomElementUtils.getAttachedPropertyValue(e,s)),h={series:r.label,label:n.label,value:n.value,color:o||r.color};t.CustomElementUtils.setAttachedPropertyValue(e,s,h),t.CustomElementUtils.setAttachedPropertyValue(e,a,r),l||i.MANAGED_EVENTS.forEach((t=>{e.addEventListener(t,this._broadcastHandler)}))}disposeUiBehaviors(e){t.CustomElementUtils.deleteAttachedPropertyValue(e,s),t.CustomElementUtils.deleteAttachedPropertyValue(e,a),i.MANAGED_EVENTS.forEach((t=>{e.removeEventListener(t,this._broadcastHandler)}))}ensureChartContainer(){if(t.Utils.isNull(this._div)){let e=this._div=this.target||document.createElement("div");e.classList.add(t.PCSS+"-chart-area"),e!=this.target&&this.parentElement.insertBefore(e,this)}return this._div}ensureChartBody(e,i,r){if(t.Utils.isNull(this._body)){let i=this._body=document.createElementNS(c,"svg");i.setAttribute("pacem",""),i.setAttribute("class",t.PCSS+"-"+e+"-chart"),i.setAttribute("preserveAspectRatio","xMinYMax slice");const r=this._grid=document.createElementNS(c,"svg");r.setAttribute("pacem",""),r.setAttribute("class","chart-grid");let s=document.createElementNS(c,"defs"),a=this._mask=document.createElementNS(c,"mask"),n=document.createElementNS(c,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","100%"),n.setAttribute("height","100%");let o=document.createElementNS(c,"rect");o.setAttribute("y","0"),o.setAttribute("width","100%"),o.setAttribute("fill","#fff"),a.id="gnrc_mask_"+this._key,a.appendChild(n),a.appendChild(o),s.appendChild(a),i.appendChild(s),i.appendChild(r),this._div.appendChild(i)}return this._body}chartDataItemToPoint(e,i){switch(this.xAxisType||"string"){case"number":return{x:parseFloat(e.label),y:e.value};case"date":return{x:t.Utils.parseDate(e.label).valueOf(),y:e.value};case"string":return{x:i.findIndex((t=>t.label==e.label)),y:e.value};default:throw"Not supported."}}getVirtualGrid(e,i,s,a,o,l=this.xAxisType,h){const c=n(a,o,h),d=c.round;var u=[];for(let t=c.min;t<=c.max;t+=d)u.push(t.roundoff());let m=t.Utils.lang(this),p=null;const v=this.xAxisFormat;if(!t.Utils.isNullOrEmpty(v))switch(l){case"number":p=t=>Intl.NumberFormat(m,v).format(t);break;case"date":p=e=>Intl.DateTimeFormat(m,v).format(t.Utils.parseDate(e))}const g=function(e,i,s,a,n,o=10){const l="number"===i||"date"===i?a-s:Math.max(1,e.length-1);for(var h=[],c=1,d=o-1;d>1;d--)if(l%d==0){c=l/d;break}1===c&&l>o&&(c=l);const u="function"==typeof n?n:c>=r?t=>t.toLocaleDateString(n):t=>t.toLocaleTimeString(n),m="function"==typeof n?n:c<r?t=>t.toLocaleString(n):u,p="function"==typeof n?n:t=>t.toLocaleString(n);for(var v=0;v<=l;v+=c){let r;switch(i){case"string":if(v>=e.length)continue;r=e[v].label;break;case"number":r=p(s+v);break;case"date":r=(0==v?m:u)(t.Utils.parseDate(s+v));break;default:throw"Not supported."}h.push(r)}return h}(e,l,i,s,p??m);return{x:g,y:u}}wipeOut(t=this._series,e=0){for(var i=t.length-1;i>=e;i--)t[i].remove();t.splice(e)}buildLinearGradient(e,i=!1){const r=document.createElementNS(c,"linearGradient");r.id=this.chartKey+"_grad"+e+(i?"_inverted":""),i&&t.Utils.addClass(r,"bottom-up"),r.setAttribute("x1","0%"),r.setAttribute("x2","0%"),r.setAttribute("y1","0%"),r.setAttribute("y2","100%"),r.setAttribute("spreadMethod","pad");const s=document.createElementNS(c,"stop");s.setAttribute("offset","0%");const a=document.createElementNS(c,"stop");return a.setAttribute("offset","100%"),r.appendChild(s),r.appendChild(a),r}setGradientColor(t,e){for(let i=0;i<t.children.length;i++){const r=t.children.item(i);r instanceof SVGStopElement&&(r.style.stopColor=e)}}estimateYAxisLabelWidth(t){const e=this.formatYAxisLabel(t);return this.estimateLabelWidth(e)}estimateLabelWidth(e){const i=this._grid;if(t.Utils.isNull(i))throw new Error("Unable to estimate label without an underlying grid available.");const r=document.createElementNS(c,"text");r.textContent=e,i.appendChild(r);const s=t.Utils.offset(r);return r.remove(),s.width}formatYAxisLabel(e){const i=this.yAxisFormat;return t.Utils.isNullOrEmpty(i)?e.toString():Intl.NumberFormat(t.Utils.lang(this),i).format(e)}estimateXAxisLabelWidth(t){const e=this.formatXAxisLabel(t);return this.estimateLabelWidth(e)}formatXAxisLabel(e){const i=this.xAxisFormat,r=t.Utils.lang(this);switch(this.xAxisType){case"date":const s=t.Utils.Dates.parse(e);return t.Utils.isNullOrEmpty(i)?s.toLocaleString(r):Intl.DateTimeFormat(r,i).format(s);case"number":const a=e;return t.Utils.isNullOrEmpty(i)?a.toLocaleString(r):Intl.NumberFormat(r,i).format(a);default:return e}}draw(){this.drawSeries(this._datasource)}getAnchorPoint(e){const i=t.Utils.offset(e);return{x:i.left+.5*i.width,y:i.top+.5*i.height}}}__decorate([t.Watch({converter:t.PropertyConverters.Element})],PacemSeriesChartElement.prototype,"target",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PacemSeriesChartElement.prototype,"xAxisType",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PacemSeriesChartElement.prototype,"xAxisPosition",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"datasource",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"yAxisDensity",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"yAxisFormat",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"xAxisFormat",void 0),__decorate([t.Throttle(!0)],PacemSeriesChartElement.prototype,"draw",null),i.PacemSeriesChartElement=PacemSeriesChartElement}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){const i="http://www.w3.org/2000/svg";let r=class PacemColumnChartElement extends e.PacemSeriesChartElement{constructor(){super(...arguments),this.groupWidth=0}propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),"type"!==t&&"groupWidth"!==t||this.draw()}_safen(t=this.groupWidth){return Math.min(1,Math.max(t||.75,0))}drawSeries(e){if(!this.isReady||t.Utils.isNull(this.chartSize))return;this.ensureChartContainer();const r=this.type||"cluster",s=24;var a=this.chartSize;if(a.height<=s||a.width<=s)return;if(t.Utils.isNullOrEmpty(e)||e.every((e=>t.Utils.isNullOrEmpty(e.values))))return void this.wipeOut();const n=this.ensureChartBody("column",a.width,a.height);this.log(t.Logging.LogLevel.Debug,`Drawing ${r} chart.`);const o=this.xAxisType||"string";let l=0,h=0,c=0,d=0,u=0,m=1;const p={negative:[],positive:[]};for(let i of e){let e=i.values;if(!t.Utils.isNullOrEmpty(e)){let t=0;for(let i of e){p.positive[t]=p.positive[t]||0,p.negative[t]=p.negative[t]||0;let r=this.chartDataItemToPoint(i,e);l=Math.min(l,r.y),h=Math.max(h,r.y),c=Math.min(c,r.x),d=Math.max(d,r.x),r.y>0?p.positive[t]+=r.y:r.y<0&&(p.negative[t]+=r.y),t++}u=Math.max(u,e.length)}}const v="stack"===r;v&&(l=Math.min.apply(null,p.negative),h=Math.max.apply(null,p.positive));const g=Math.max(s,this.estimateYAxisLabelWidth(h)+12);0===d&&d===c&&(d=1);const y=(d-c)/u,C=.5*y,b=y*this._safen(this.groupWidth),f=.5*b,_=e.find((e=>!t.Utils.isNullOrEmpty(e.values))),A=this.getVirtualGrid(_.values,c-C,d+C,l,h,o,this.yAxisDensity),x=A.y[A.y.length-1],E=A.y[0];if(x===E)return;const w=a.width-2*g,S=a.height-48,N=S*(1-(x-E-(h-l))/(x-E)),P=S*(x-h)/(x-E);m=w/N,n.setAttribute("height",a.height.toString()),n.setAttribute("width",a.width.toString()),n.setAttribute("viewBox",`0 0 ${a.width} ${a.height}`);let U=0;const M=100*m/(d-c),k=100/(h-l),$=2400/N,L=this.chartSeries,W=this.chartGrid,O=(C-c)*M,D=(t,e)=>{const i=this.chartDataItemToPoint(t,e);return{x:O+2*i.x*O,y:i.y*k}};var B=new Array(u);for(let r of e){let s,a,n,o;if(L.length>U)s=L[U],a=s.firstElementChild.firstElementChild,n=s.firstElementChild.lastElementChild,o=s.lastElementChild;else{s=document.createElementNS(i,"svg"),s.setAttribute("pacem",""),W.insertAdjacentElement("afterend",s);const t=document.createElementNS(i,"defs");t.appendChild(a=this.buildLinearGradient(U)),t.appendChild(n=this.buildLinearGradient(U,!0)),s.appendChild(t),s.appendChild(o=document.createElementNS(i,"g")),L.push(s)}var T="chart-series series-fill";t.Utils.isNullOrEmpty(r.className)||(T+=" "+r.className),s.setAttribute("class",T),s.setAttribute("x",g.toString()),s.setAttribute("y",P.toString()),s.setAttribute("width",w.toString()),s.setAttribute("height",(N+48).toString());const l=r.values,h=t=>{for(;t>=o.children.length;)o.appendChild(document.createElementNS(i,"rect"));const e=o.children.item(t);e.style.stroke=r.color;const s=l[t].value<0?n:a;return this.setGradientColor(s,r.color),e.style.fill=`url(#${s.id})`,e},c=10,d=(t,e,i,r=e)=>{const s=-Math.max(e.y,i.y),a=Math.abs(i.y-e.y),n=()=>{t.setAttribute("y",s.toFixed(c)),t.setAttribute("height",a.toFixed(c))};t.hasAttribute("y")?n():(t.setAttribute("y","-"+r.y.toFixed(c)),t.setAttribute("height","0"),requestAnimationFrame(n))};if(!t.Utils.isNullOrEmpty(l)){const i=D({value:0,label:l[0].label},l);if(v){const e=f*M,s=(b*M).toFixed(c);for(let a=0;a<l.length;a++){const n=l[a];t.Utils.isNullOrEmpty(B[a])&&(B[a]={positive:0,negative:0});const o=B[a];let u=o.positive,m=o.negative;const p=n.value<0,v=p?m:u+n.value,g=p?m+n.value:u,y=D({label:n.label,value:v},l),C=D({label:n.label,value:g},l),b=y.x-e,f=h(a);this.assignUiBehaviors(f,r,n),f.setAttribute("x",b.toFixed(c)),f.setAttribute("width",s),d(f,C,y,i),p?o.negative=g:o.positive=v}}else{const t=f*M,s=2*t/e.length,a=s.toFixed(c);for(let e=0;e<l.length;e++){const n=l[e],o=D(n,l),u=o.x-t+s*U,m=h(e);this.assignUiBehaviors(m,r,n),m.setAttribute("x",u.toFixed(c)),m.setAttribute("width",a),d(m,i,o)}}}for(let t=o.children.length-1;t>=l?.length;t--){const e=o.children.item(t);this.disposeUiBehaviors(e),e.remove()}U++}this.wipeOut(L,U);const G=`0 ${-(h*k+$)} ${100*m} ${100+2*$}`;for(var H of L)H.setAttribute("viewBox",G);let z,F=this.chartMask.children.item(1);if(F.setAttribute("x",(0).toString()),F.setAttribute("height",(a.height-s).toString()),W.setAttribute("viewBox",`0 0 ${a.width} ${a.height}`),A.x.length<1||A.y.length<=1){for(let t=W.children.length-1;t>=0;t--)W.children.item(t).remove();return}W.children.length>0?z=W.children.item(0):(z=document.createElementNS(i,"path"),W.appendChild(z));let V=0,R=(t,e,r,s)=>{const a=t+1;let n;return W.children.length<=a?(n=document.createElementNS(i,"text"),W.appendChild(n)):n=W.children.item(a),n.textContent=s,n.setAttribute("x",e.toString()),n.setAttribute("y",r.toString()),n},I=`M${g},24 v${S}`,Y=0;const J=w/A.x.length,j=S/(A.y.length-1);if("none"!==this.xAxisPosition){const t=.5*J+g;for(var q of A.x){let e=t+Y*J;if("top"===this.xAxisPosition){I+=` M${e},24 v-6`;let t=R(V++,e,0,q);t.setAttribute("text-anchor","middle"),t.setAttribute("alignment-baseline","hanging")}else{let t=S+s;I+=` M${e},${t} v6`,R(V++,e,t+s,q).setAttribute("text-anchor","middle")}Y++}}for(var X of(Y=0,A.y)){const t=S+s-Y*j,e=g-6;I+=` M${e},${t} H${w+g}`,R(V++,e-6,t,this.formatYAxisLabel(X)).setAttribute("text-anchor","end"),Y++}z.setAttribute("d",I);for(let t=W.children.length-1;t>V;t--)W.children.item(t).remove()}};__decorate([t.Watch({converter:t.PropertyConverters.String})],r.prototype,"type",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Number})],r.prototype,"groupWidth",void 0),r=__decorate([t.CustomElement({tagName:t.P+"-column-chart"})],r),e.PacemColumnChartElement=r}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){function i(e,i,r){let s=e,a=e;const n=t.Utils.isNull(i),o=t.Utils.isNull(r);if(!n||!o){const t=3;let l,h;n||(l=(e.y-i.y)/(e.x-i.x)),o||(h=(r.y-e.y)/(r.x-e.x));const c=((h||l||0)+(l||h||0))/2,d=n?0:(e.x-i.x)/t,u=o?0:(r.x-e.x)/t;s={x:e.x-d,y:e.y-d*c},a={x:e.x+u,y:e.y+u*c}}return{c0:s,c1:a}}const r=t.CustomElementUtils.getAttachedPropertyValue,s=t.CustomElementUtils.setAttachedPropertyValue,a=(t.CustomElementUtils.deleteAttachedPropertyValue,"pacem:chart-series:area"),n="http://www.w3.org/2000/svg";let o=class PacemChartElement extends e.PacemSeriesChartElement{constructor(){super(...arguments),this.#t=!1,this._enterHandler=t=>{this.#t=!0},this._leaveHandler=t=>{this.#t=!1},this._moveHandler=t=>{this.#t},this._chartFillSeries=[]}_getVirtualGrid(t,e,i,r,s,a=this.xAxisType,n){return super.getVirtualGrid(t,e,i,r,s,a,n)}_wipe(t=this.chartSeries,e=0){super.wipeOut(t,e)}viewActivatedCallback(){super.viewActivatedCallback(),this._setupBehavior()}disconnectedCallback(){this._dismantleBehavior(),super.disconnectedCallback()}propertyChangedCallback(t,e,i,r){switch(super.propertyChangedCallback(t,e,i,r),t){case"type":case"aspectRatio":this.draw()}}_setupBehavior(){this.addEventListener("mouseenter",this._enterHandler,!1),this.addEventListener("mouseleave",this._enterHandler,!1),this.addEventListener("mousemove",this._moveHandler,!1)}_dismantleBehavior(){this.removeEventListener("mouseenter",this._enterHandler,!1),this.removeEventListener("mouseleave",this._leaveHandler,!1),this.removeEventListener("mousemove",this._moveHandler,!1)}#t;_buildLinearGradient(t){return super.buildLinearGradient(t)}_setGradientColor(t,e){super.setGradientColor(t,e)}drawSeries(e){if(!this.isReady||t.Utils.isNull(this.chartSize))return;this.ensureChartContainer();const o=this.type||"line",l=24;var h=this.chartSize;if(h.height<=l||h.width<=l)return;if(t.Utils.isNullOrEmpty(e)||e.every((e=>t.Utils.isNullOrEmpty(e.values))))return void this._wipe();const c=this.ensureChartBody("line",h.width,h.height);this.log(t.Logging.LogLevel.Debug,`Drawing ${o} chart.`);const d=this.xAxisType||"string";let u=Number.NaN,m=Number.NaN,p=Number.NaN,v=Number.NaN,g=1;for(let t of e){let e=t.values;if(e&&e.length){let t=0;for(let i of e){let r=this.chartDataItemToPoint(i,e);u=isNaN(u)?r.y:Math.min(u,r.y),m=isNaN(m)?r.y:Math.max(m,r.y),0===t?p=isNaN(p)?r.x:Math.min(p,r.x):t===e.length-1&&(v=isNaN(v)?r.x:Math.max(v,r.x)),t++}}}const y=Math.max(l,.5*this.estimateXAxisLabelWidth(p)+24),C=Math.max(y,this.estimateYAxisLabelWidth(m)+12),b=e.find((e=>!t.Utils.isNullOrEmpty(e.values))),f=this._getVirtualGrid(b.values,p,v,u,m,d,this.yAxisDensity),_=f.y[f.y.length-1],A=f.y[0];if(_===A)return;const x=h.width-C-y,E=h.height-48,w=E*(1-(_-A-(m-u))/(_-A)),S=E*(_-m)/(_-A);("number"!==d||"monometric"!==this.aspectRatio&&"logaritmic"!==this.aspectRatio)&&(g=x/w,c.setAttribute("height",h.height.toString()),c.setAttribute("width",h.width.toString())),c.setAttribute("viewBox",`0 0 ${h.width} ${h.height}`);let N=0;const P=100*g/(v-p),U=100/(m-u),M=2400/w,k=(t,e)=>{let i=this.chartDataItemToPoint(t,e);return i.y*=U,i.x=(i.x-p)*P,i},$=this.chartSeries,L=this._chartFillSeries,W=this.chartGrid,O="spline"===o||"splinearea"===o;for(let l of e){let e,h,d;if($.length>N)e=$[N],h=L[N],d=h.firstElementChild.firstElementChild;else{e=document.createElementNS(n,"svg"),e.setAttribute("pacem",""),c.appendChild(e),h=document.createElementNS(n,"svg"),h.setAttribute("pacem",""),c.insertBefore(h,c.children.item(N+2));const t=document.createElementNS(n,"defs");t.appendChild(d=this._buildLinearGradient(N)),h.appendChild(t),h.appendChild(document.createElementNS(n,"path")),L.push(h),e.appendChild(document.createElementNS(n,"path")),$.push(e)}let m="chart-series";const p="area"===o||"splinearea"===o;t.Utils.isNullOrEmpty(l.className)||(m+=" "+l.className),[e,h].forEach((t=>{t.setAttribute("class",m),t.setAttribute("x",C.toString()),t.setAttribute("y",S.toString()),t.setAttribute("width",x.toString()),t.setAttribute("height",(w+48).toString())})),t.Utils.addClass(h,t.PCSS+"-inert");let v=h.children.item(1),g=e.firstElementChild;g.style.stroke=l.color,v.style.stroke=g.style.fill="none",this._setGradientColor(d,l.color),v.style.fill=`url(#${d.id})`,v.style.display=p?"":"none";let y="",b=l.values;if(b&&b.length){const o=(t,i,r,s,a)=>{const o=i+1;let l;e.children.length>o?l=e.children.item(o):(l=document.createElementNS(n,"line"),l.setAttribute("class","circle"),e.appendChild(l));const h=t.x.toString(),c=(-t.y).toString();l.setAttribute("x1",h),l.setAttribute("y1",c),l.setAttribute("x2",h),l.setAttribute("y2",c),l.style.stroke=a,this.assignUiBehaviors(l,r,s,a)},h=()=>{const t=l.datapoints?b.length+1:1;for(let r=e.children.length-1;r>=t;r--){var i=e.children.item(r);this.disposeUiBehaviors(i),i.remove()}};if(O){let e,n,h;for(let c=0;c<b.length;c++){const d=b[c];if(isNaN(d.value))continue;let u;n||(n=k(d,b)),O&&c<b.length-1&&(u=k(b[c+1],b));let m=r(l,a,0);m+=d.value,s(l,a,m);var D=i(n,e,u);y+=t.Utils.isNullOrEmpty(y)?`M${n.x},${-n.y} `:`C${h.x},${-h.y} ${D.c0.x},${-D.c0.y} ${n.x},${-n.y} `,l.datapoints&&o(n,c,l,d,l.color),e=n,n=u,h=D.c1}}else{let e=0;for(let i of b){if(isNaN(i.value))continue;const n=k(i,b);let h=r(l,a,0);h+=i.value,s(l,a,h),y+=t.Utils.isNullOrEmpty(y)?`M${n.x},${-n.y} `:`L${n.x},${-n.y} `,l.datapoints&&o(n,e,l,i,l.color),e++}}h()}g.setAttribute("d",y),v.setAttribute("d",y+`V${-u*U} H0 Z`),N++}this._wipe(L,N),this._wipe($,N);const B=`0 ${-(m*U+M)} ${100*g} ${100+2*M}`;for(var T of $.concat(L))T.setAttribute("viewBox",B);let G,H=this.chartMask.children.item(1);if(H.setAttribute("x",(0).toString()),H.setAttribute("height",(h.height-l).toString()),W.setAttribute("viewBox",`0 0 ${h.width} ${h.height}`),f.x.length<=1||f.y.length<=1){for(let t=W.children.length-1;t>=0;t--)W.children.item(t).remove();return}W.children.length>0?G=W.children.item(0):(G=document.createElementNS(n,"path"),W.appendChild(G));let z=0,F=(t,e,i,r)=>{const s=t+1;let a;return W.children.length<=s?(a=document.createElementNS(n,"text"),W.appendChild(a)):a=W.children.item(s),a.textContent=r,a.setAttribute("x",e.toString()),a.setAttribute("y",i.toString()),a},V=`M${C},24 v${E}`,R=0;const I=x/(f.x.length-1),Y=E/(f.y.length-1);if("none"!==this.xAxisPosition)for(var J of f.x){const t=C+R*I;if("top"===this.xAxisPosition){V+=` M${t},24 v-6`;let e=F(z++,t,0,J);e.setAttribute("text-anchor","middle"),e.setAttribute("alignment-baseline","hanging")}else{let e=E+l;V+=` M${t},${e} v6`,F(z++,t,e+l,J).setAttribute("text-anchor","middle")}R++}for(var j of(R=0,f.y)){const t=E+l-R*Y,e=C-6;V+=` M${e},${t} H${x+C}`,F(z++,e-6,t,this.formatYAxisLabel(j)).setAttribute("text-anchor","end"),R++}G.setAttribute("d",V);for(let t=W.children.length-1;t>z;t--)W.children.item(t).remove()}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],o.prototype,"type",void 0),__decorate([t.Watch({converter:t.PropertyConverters.String})],o.prototype,"aspectRatio",void 0),o=__decorate([t.CustomElement({tagName:t.P+"-chart"})],o),e.PacemChartElement=o}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(i){let r=class PacemPieSliceElement extends e.PacemItemElement{constructor(){super(...arguments),this._broadcastHandler=t=>{this.emit(t)}}findContainer(){return t.CustomElementUtils.findAncestorOfType(this,n)}get chart(){return this.container}getCenterOfMass(){const e=this.chart&&this.chart.area;if(t.Utils.isNull(e))return null;const i=t.Utils.offset(e),r=i.width/2+i.left,s=i.top+i.height/2,n=.5*Math.min(i.width,i.height),o=this.normalizedPolarCoords,l=a-o.angle;return{y:s-n*o.radius*Math.sin(l),x:r+n*o.radius*Math.cos(l)}}propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),!r&&this.chart&&"normalizedPolarCoords"!=t&&this.chart.draw()}_assignUi(t){const e=this._ui=t;i.MANAGED_EVENTS.forEach((t=>{e.addEventListener(t,this._broadcastHandler)}))}_disposeUi(){t.Utils.isNull(this._ui)||i.MANAGED_EVENTS.forEach((t=>{this._ui.removeEventListener(t,this._broadcastHandler)}))}};__decorate([t.Watch({converter:t.PropertyConverters.Number})],r.prototype,"value",void 0),__decorate([t.Watch({converter:t.PropertyConverters.String})],r.prototype,"label",void 0),__decorate([t.Watch({converter:t.PropertyConverters.String})],r.prototype,"color",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Json})],r.prototype,"normalizedPolarCoords",void 0),r=__decorate([t.CustomElement({tagName:t.P+"-pie-slice"})],r),i.PacemPieSliceElement=r;const s=2*Math.PI,a=.5*Math.PI;let n=class PacemPieChartElement extends e.PacemItemsContainerElement{constructor(){super(),this.cutout=0,this._slices=new WeakMap,this._key=t.Utils.uniqueCode()}validate(t){return t instanceof r}viewActivatedCallback(){super.viewActivatedCallback(),this.draw()}propertyChangedCallback(e,i,r,s){if(super.propertyChangedCallback(e,i,r,s),"target"===e){this._g=null,this._div&&this._div.remove();const e=i;e&&(e.classList.remove(t.PCSS+"-chart-area"),e.innerHTML=""),this.draw()}else s||"cutout"!==e&&"items"!==e||this.draw()}get area(){return this._svg}disconnectedCallback(){this._div&&this._div.remove(),super.disconnectedCallback()}_ensureArea(){if(t.Utils.isNull(this._g)){let e=this.target||(this._div=document.createElement("div"));e.classList.add(t.PCSS+"-chart-area");let i=this._svg=document.createElementNS("http://www.w3.org/2000/svg","svg");i.setAttribute("pacem",""),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.setAttribute("viewBox","0 0 100 100"),i.classList.add(t.PCSS+"-pie-chart");let r=document.createElementNS("http://www.w3.org/2000/svg","defs"),s=this._g=document.createElementNS("http://www.w3.org/2000/svg","g");i.appendChild(r),i.appendChild(s),e.appendChild(i),this._div&&this.parentElement.insertBefore(e,this)}if(this.maskBasedRendering){if(t.Utils.isNull(this._mask)){let t=document.createElementNS("http://www.w3.org/2000/svg","mask");t.id="pie_mask_"+this._key;let e=document.createElementNS("http://www.w3.org/2000/svg","rect");e.setAttribute("x","0"),e.setAttribute("y","0"),e.setAttribute("width","100"),e.setAttribute("height","100"),e.setAttribute("fill","#fff");let i=this._mask=document.createElementNS("http://www.w3.org/2000/svg","circle");i.setAttribute("cx","50"),i.setAttribute("cy","50");const r=this._svg.firstElementChild;t.appendChild(e),t.appendChild(i),r.appendChild(t),this._g.setAttribute("mask",`url(#${t.id})`)}const e=50*this._safeCutout;this._mask.setAttribute("r",`${e}`)}else t.Utils.isNull(this._mask)||(this._svg.firstElementChild.innerHTML="",this._mask=null,this._g.removeAttribute("mask"));return this._g}get _safeCutout(){return Math.min(1,Math.max(0,this.cutout))||0}_drawSlice(t,e,i,r){const a=e.value>.5*i?1:0,n=s*e.value/i,o=360*r/i,l=e.value>=i?49.9:50*(1+Math.sin(n)),h=50*(1-Math.cos(n)),c=this._safeCutout,d=50*c;t.style.fill=e.color,t.style.transform=`rotate(${o}deg)`,t.style.transformOrigin="50% 50%";const u=this.maskBasedRendering?`M50,50 V0 A50,50 0 ${a} 1 ${l} ${h} L50,50 Z`:`M50,0 A50,50 0 ${a} 1 ${l} ${h} l${(50-l)*(1-c)},${(50-h)*(1-c)} A${d},${d} 0 ${a} 0 50,${50-d} Z`;t.setAttribute("d",u),e.normalizedPolarCoords={radius:c+Math.SQRT1_2*(1-c),angle:Math.PI*o/180+n/2}}_isSliceOk(t){return!t.disabled}draw(){const e=this._ensureArea(),i=e.children.length,r=this._svg.parentElement;let s=0,a=0,n=0;if(t.Utils.isNullOrEmpty(this.items))e.innerHTML="",t.Utils.removeClass(r,"chart-has-data");else{t.Utils.addClass(r,"chart-has-data");for(let t of this.items)this._isSliceOk(t)&&(a+=t.value);if(a<=0)e.innerHTML="",t.Utils.removeClass(r,"chart-has-data");else for(let r of this.items){if(!this._isSliceOk(r))continue;let o;if(s>=i){const i=document.createElementNS("http://www.w3.org/2000/svg","g");i.setAttribute("class","chart-series "+t.PCSS+"-pie-slice"+(t.Utils.isNullOrEmpty(r.className)?"":" "+r.className)),o=document.createElementNS("http://www.w3.org/2000/svg","path"),i.appendChild(o),e.appendChild(i),r._assignUi(i),this._slices.set(i,r)}else o=e.children.item(s).firstElementChild;r.value>0?(this._drawSlice(o,r,a,n),n+=r.value,o.removeAttribute("display")):o.setAttribute("display","none"),s++}}for(;s<e.children.length;){const t=this._slices,i=e.children.item(s);t.has(i)&&(t.get(i)._disposeUi(),t.delete(i)),e.removeChild(i)}}};__decorate([t.Watch({converter:t.PropertyConverters.Number})],n.prototype,"cutout",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Element})],n.prototype,"target",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Boolean})],n.prototype,"maskBasedRendering",void 0),__decorate([t.Debounce(!0)],n.prototype,"draw",null),n=__decorate([t.CustomElement({tagName:t.P+"-pie-chart"})],n),i.PacemPieChartElement=n}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={}));
6
+ var Pacem,__decorate=this&&this.__decorate||function(t,e,i,r){var s,a=arguments.length,n=a<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,r);else for(var o=t.length-1;o>=0;o--)(s=t[o])&&(n=(a<3?s(n):a>3?s(e,i,n):s(e,i))||n);return a>3&&n&&Object.defineProperty(e,i,n),n};!function(t){!function(e){!function(i){i.MANAGED_EVENTS=["keydown","keyup","click","dblclick","mouseover","mouseout","mouseenter","mouseleave","mousedown","mouseup","mousemove","contextmenu"];const r=864e5,s="pacem:chart-series:dataitem",a="pacem:chart-series:series";function n(t,e,i){i>0||(i=o(t,e));const r=(n=i,l=e-t,Math.log10(l)/Math.log10(n)),s=r%1==0?r-1:r,a=Math.pow(i,Math.floor(s));var n,l;return{min:Math.floor(t/a)*a,max:Math.ceil(e/a)*a,round:a}}function o(t,e){const i=e-t;if(!(i>0))return 2;const r=Math.floor(Math.log10(i)),s=Math.pow(10,-r);if(0!=r)return o(t*s,e*s);const a=t=>{const e=Math.floor(10*Math.abs(t));return(e+10-e%10).roundoff()},n=a(i);let h=10;0!==t&&(h=a(Math.abs(e)));const c=l(h,n);return 1===c?n:Math.max(c,10-c)}function l(t,e){return t<=0?e:l(e%t,t)}class ChartEvent extends t.CustomUIEvent{constructor(t,e,i){super(t,e,i)}}i.ChartEvent=ChartEvent;let h=class PacemChartSeriesElement extends e.PacemItemElement{get values(){return this.datasource}};__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.Json})],h.prototype,"datasource",void 0),__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.String})],h.prototype,"label",void 0),__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.String})],h.prototype,"color",void 0),__decorate([t.Watch({emit:!0,converter:t.PropertyConverters.Boolean})],h.prototype,"datapoints",void 0),__decorate([t.Watch()],h.prototype,"_uiElements",void 0),h=__decorate([t.CustomElement({tagName:t.P+"-chart-series"})],h),i.PacemChartSeriesElement=h;const c="http://www.w3.org/2000/svg";class PacemSeriesChartElement extends e.PacemItemsContainerElement{constructor(){super(),this._itemPropertyChangedCallback=t=>{const e=t.detail.propertyName;"datasource"!==e&&"label"!==e&&"datapoints"!==e&&"cssClass"!==e&&"color"!==e||this.draw()},this._series=[],this._resizeHandler=t=>{this._size=t.detail,this.draw()},this._broadcastHandler=e=>{const i=e.currentTarget,r=t.CustomElementUtils.getAttachedPropertyValue(i,s);if(t.Utils.isNull(r))return;const n=this.getAnchorPoint(i),o=new ChartEvent("item"+e.type,{detail:{dataItem:r,anchorPoint:n}},e),l=t.CustomElementUtils.getAttachedPropertyValue(i,a);l instanceof h&&l.dispatchEvent(o),this.dispatchEvent(o)},this._key=t.Utils.uniqueCode()}validate(t){return t instanceof h}register(e){return!!super.register(e)&&(e.addEventListener(t.PropertyChangeEventName,this._itemPropertyChangedCallback,!1),!0)}unregister(e){return!!super.unregister(e)&&(e.removeEventListener(t.PropertyChangeEventName,this._itemPropertyChangedCallback,!1),!0)}propertyChangedCallback(e,i,r,s){if(super.propertyChangedCallback(e,i,r,s),"target"===e){this._div!=i&&this._div&&this._div.remove(),this._div=null,this._body=null;const e=i;e&&(e.classList.remove(t.PCSS+"-chart-area"),e.innerHTML=""),this._ensureResizer(),this.draw()}else if(!s)switch(e){case"items":this._databindAndDrawDebounced();break;case"datasource":this._databind();case"yAxisDensity":case"xAxisType":case"xAxisPosition":case"yAxisFormat":this.draw()}}_databindAndDrawDebounced(){cancelAnimationFrame(this._handle),this._handle=requestAnimationFrame((()=>{this._databind(),this.draw()}))}_databind(){this._datasource=t.Utils.isNullOrEmpty(this.datasource)?this.items:this.datasource}disconnectedCallback(){this._div&&this._div.remove();const e=this._resizer;t.Utils.isNull(e)||(e.removeEventListener(t.Components.ResizeEventName,this._resizeHandler,!1),e.remove(),this._resizer=null),super.disconnectedCallback()}viewActivatedCallback(){super.viewActivatedCallback(),this._ensureResizer(),this._databind(),this.draw()}_ensureResizer(i=this.target||this._div){if(t.Utils.isNull(this._resizer)){const i=t.CustomElementUtils.findAncestorShell(this);(this._resizer=i.appendChild(new e.PacemResizeElement)).addEventListener(t.Components.ResizeEventName,this._resizeHandler,!1)}this._resizer.target=i}get chartSize(){return this._size}get chartSeries(){return this._series}get chartBody(){return this._body}get chartGrid(){return this._grid}get chartMask(){return this._mask}get chartKey(){return this._key}get chartContainer(){return this._div}assignUiBehaviors(e,r,n,o){const l=!t.Utils.isNull(t.CustomElementUtils.getAttachedPropertyValue(e,s)),h={series:r.label,label:n.label,value:n.value,color:o||r.color};t.CustomElementUtils.setAttachedPropertyValue(e,s,h),t.CustomElementUtils.setAttachedPropertyValue(e,a,r),l||i.MANAGED_EVENTS.forEach((t=>{e.addEventListener(t,this._broadcastHandler)}))}disposeUiBehaviors(e){t.CustomElementUtils.deleteAttachedPropertyValue(e,s),t.CustomElementUtils.deleteAttachedPropertyValue(e,a),i.MANAGED_EVENTS.forEach((t=>{e.removeEventListener(t,this._broadcastHandler)}))}ensureChartContainer(){if(t.Utils.isNull(this._div)){let e=this._div=this.target||document.createElement("div");e.classList.add(t.PCSS+"-chart-area"),e!=this.target&&this.parentElement.insertBefore(e,this)}return this._div}ensureChartBody(e,i,r){if(t.Utils.isNull(this._body)){let i=this._body=document.createElementNS(c,"svg");i.setAttribute("pacem",""),i.setAttribute("class",t.PCSS+"-"+e+"-chart"),i.setAttribute("preserveAspectRatio","xMinYMax slice");const r=this._grid=document.createElementNS(c,"svg");r.setAttribute("pacem",""),r.setAttribute("class","chart-grid");let s=document.createElementNS(c,"defs"),a=this._mask=document.createElementNS(c,"mask"),n=document.createElementNS(c,"rect");n.setAttribute("x","0"),n.setAttribute("y","0"),n.setAttribute("width","100%"),n.setAttribute("height","100%");let o=document.createElementNS(c,"rect");o.setAttribute("y","0"),o.setAttribute("width","100%"),o.setAttribute("fill","#fff"),a.id="gnrc_mask_"+this._key,a.appendChild(n),a.appendChild(o),s.appendChild(a),i.appendChild(s),i.appendChild(r),this._div.appendChild(i)}return this._body}chartDataItemToPoint(e,i){switch(this.xAxisType||"string"){case"number":return{x:parseFloat(e.label),y:e.value};case"date":return{x:t.Utils.parseDate(e.label).valueOf(),y:e.value};case"string":return{x:i.findIndex((t=>t.label==e.label)),y:e.value};default:throw"Not supported."}}getVirtualGrid(e,i,s,a,o,l=this.xAxisType,h){const c=n(a,o,h),d=c.round;var u=[];for(let t=c.min;t<=c.max;t+=d)u.push(t.roundoff());let m=t.Utils.lang(this),p=null;const v=this.xAxisFormat;if(!t.Utils.isNullOrEmpty(v))switch(l){case"number":p=t=>Intl.NumberFormat(m,v).format(t);break;case"date":p=e=>Intl.DateTimeFormat(m,v).format(t.Utils.parseDate(e))}const g=function(e,i,s,a,n,o=10){const l="number"===i||"date"===i?a-s:Math.max(1,e.length-1);for(var h=[],c=1,d=o-1;d>1;d--)if(l%d==0){c=l/d;break}1===c&&l>o&&(c=l);const u="function"==typeof n?n:c>=r?t=>t.toLocaleDateString(n):t=>t.toLocaleTimeString(n),m="function"==typeof n?n:c<r?t=>t.toLocaleString(n):u,p="function"==typeof n?n:t=>t.toLocaleString(n);for(var v=0;v<=l;v+=c){let r;switch(i){case"string":if(v>=e.length)continue;r=e[v].label;break;case"number":r=p(s+v);break;case"date":r=(0==v?m:u)(t.Utils.parseDate(s+v));break;default:throw"Not supported."}h.push(r)}return h}(e,l,i,s,p??m);return{x:g,y:u}}wipeOut(t=this._series,e=0){for(var i=t.length-1;i>=e;i--)t[i].remove();t.splice(e)}buildLinearGradient(e,i=!1){const r=document.createElementNS(c,"linearGradient");r.id=this.chartKey+"_grad"+e+(i?"_inverted":""),i&&t.Utils.addClass(r,"bottom-up"),r.setAttribute("x1","0%"),r.setAttribute("x2","0%"),r.setAttribute("y1","0%"),r.setAttribute("y2","100%"),r.setAttribute("spreadMethod","pad");const s=document.createElementNS(c,"stop");s.setAttribute("offset","0%");const a=document.createElementNS(c,"stop");return a.setAttribute("offset","100%"),r.appendChild(s),r.appendChild(a),r}setGradientColor(t,e){for(let i=0;i<t.children.length;i++){const r=t.children.item(i);r instanceof SVGStopElement&&(r.style.stopColor=e)}}estimateYAxisLabelWidth(t){const e=this.formatYAxisLabel(t);return this.estimateLabelWidth(e)}estimateLabelWidth(e){const i=this._grid;if(t.Utils.isNull(i))throw new Error("Unable to estimate label without an underlying grid available.");const r=document.createElementNS(c,"text");r.textContent=e,i.appendChild(r);const s=t.Utils.offset(r);return r.remove(),s.width}formatYAxisLabel(e){const i=this.yAxisFormat;return t.Utils.isNullOrEmpty(i)?e.toString():Intl.NumberFormat(t.Utils.lang(this),i).format(e)}estimateXAxisLabelWidth(t){const e=this.formatXAxisLabel(t);return this.estimateLabelWidth(e)}formatXAxisLabel(e){const i=this.xAxisFormat,r=t.Utils.lang(this);switch(this.xAxisType){case"date":const s=t.Utils.Dates.parse(e);return t.Utils.isNullOrEmpty(i)?s.toLocaleString(r):Intl.DateTimeFormat(r,i).format(s);case"number":const a=e;return t.Utils.isNullOrEmpty(i)?a.toLocaleString(r):Intl.NumberFormat(r,i).format(a);default:return e}}draw(){this.drawSeries(this._datasource)}getAnchorPoint(e){const i=t.Utils.offset(e);return{x:i.left+.5*i.width,y:i.top+.5*i.height}}}__decorate([t.Watch({converter:t.PropertyConverters.Element})],PacemSeriesChartElement.prototype,"target",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PacemSeriesChartElement.prototype,"xAxisType",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],PacemSeriesChartElement.prototype,"xAxisPosition",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"datasource",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"yAxisDensity",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"yAxisMin",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Number})],PacemSeriesChartElement.prototype,"yAxisMax",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"yAxisFormat",void 0),__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.Json})],PacemSeriesChartElement.prototype,"xAxisFormat",void 0),__decorate([t.Throttle(!0)],PacemSeriesChartElement.prototype,"draw",null),i.PacemSeriesChartElement=PacemSeriesChartElement}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){const i="http://www.w3.org/2000/svg";let r=class PacemColumnChartElement extends e.PacemSeriesChartElement{constructor(){super(...arguments),this.groupWidth=0}propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),"type"!==t&&"groupWidth"!==t||this.draw()}_safen(t=this.groupWidth){return Math.min(1,Math.max(t||.75,0))}drawSeries(e){if(!this.isReady||t.Utils.isNull(this.chartSize))return;this.ensureChartContainer();const r=this.type||"cluster",s=24;var a=this.chartSize;if(a.height<=s||a.width<=s)return;if(t.Utils.isNullOrEmpty(e)||e.every((e=>t.Utils.isNullOrEmpty(e.values))))return void this.wipeOut();const n=this.ensureChartBody("column",a.width,a.height);this.log(t.Logging.LogLevel.Debug,`Drawing ${r} chart.`);const o=this.xAxisType||"string";let l=this.yAxisMin??0,h=this.yAxisMax??0,c=0,d=0,u=0,m=1;const p={negative:[],positive:[]};for(let i of e){let e=i.values;if(!t.Utils.isNullOrEmpty(e)){let i=0;for(let r of e){p.positive[i]=p.positive[i]||0,p.negative[i]=p.negative[i]||0;let s=this.chartDataItemToPoint(r,e);t.Utils.isNull(this.yAxisMin)&&(l=Math.min(l,s.y)),t.Utils.isNull(this.yAxisMax)&&(h=Math.max(h,s.y)),c=Math.min(c,s.x),d=Math.max(d,s.x),s.y>0?p.positive[i]+=s.y:s.y<0&&(p.negative[i]+=s.y),i++}u=Math.max(u,e.length)}}const v="stack"===r;v&&(t.Utils.isNull(this.yAxisMin)&&(l=Math.min.apply(null,p.negative)),t.Utils.isNull(this.yAxisMax)&&(h=Math.max.apply(null,p.positive)));const g=Math.max(s,this.estimateYAxisLabelWidth(h)+12);0===d&&d===c&&(d=1);const y=(d-c)/u,C=.5*y,b=y*this._safen(this.groupWidth),f=.5*b,_=e.find((e=>!t.Utils.isNullOrEmpty(e.values))),A=this.getVirtualGrid(_.values,c-C,d+C,l,h,o,this.yAxisDensity),x=A.y[A.y.length-1],E=A.y[0];if(x===E)return;const w=a.width-2*g,N=a.height-48,S=N*(1-(x-E-(h-l))/(x-E)),P=N*(x-h)/(x-E);m=w/S,n.setAttribute("height",a.height.toString()),n.setAttribute("width",a.width.toString()),n.setAttribute("viewBox",`0 0 ${a.width} ${a.height}`);let M=0;const U=100*m/(d-c),k=100/(h-l),$=2400/S,L=this.chartSeries,W=this.chartGrid,O=(C-c)*U,D=(t,e)=>{const i=this.chartDataItemToPoint(t,e);return{x:O+2*i.x*O,y:i.y*k}};var B=new Array(u);for(let r of e){let s,a,n,o;if(L.length>M)s=L[M],a=s.firstElementChild.firstElementChild,n=s.firstElementChild.lastElementChild,o=s.lastElementChild;else{s=document.createElementNS(i,"svg"),s.setAttribute("pacem",""),W.insertAdjacentElement("afterend",s);const t=document.createElementNS(i,"defs");t.appendChild(a=this.buildLinearGradient(M)),t.appendChild(n=this.buildLinearGradient(M,!0)),s.appendChild(t),s.appendChild(o=document.createElementNS(i,"g")),L.push(s)}var T="chart-series series-fill";t.Utils.isNullOrEmpty(r.className)||(T+=" "+r.className),s.setAttribute("class",T),s.setAttribute("x",g.toString()),s.setAttribute("y",P.toString()),s.setAttribute("width",w.toString()),s.setAttribute("height",(S+48).toString());const l=r.values,h=t=>{for(;t>=o.children.length;)o.appendChild(document.createElementNS(i,"rect"));const e=o.children.item(t);e.style.stroke=r.color;const s=l[t].value<0?n:a;return this.setGradientColor(s,r.color),e.style.fill=`url(#${s.id})`,e},c=10,d=(t,e,i,r=e)=>{const s=-Math.max(e.y,i.y),a=Math.abs(i.y-e.y),n=()=>{t.setAttribute("y",s.toFixed(c)),t.setAttribute("height",a.toFixed(c))};t.hasAttribute("y")?n():(t.setAttribute("y","-"+r.y.toFixed(c)),t.setAttribute("height","0"),requestAnimationFrame(n))};if(!t.Utils.isNullOrEmpty(l)){const i=D({value:0,label:l[0].label},l);if(v){const e=f*U,s=(b*U).toFixed(c);for(let a=0;a<l.length;a++){const n=l[a];t.Utils.isNullOrEmpty(B[a])&&(B[a]={positive:0,negative:0});const o=B[a];let u=o.positive,m=o.negative;const p=n.value<0,v=p?m:u+n.value,g=p?m+n.value:u,y=D({label:n.label,value:v},l),C=D({label:n.label,value:g},l),b=y.x-e,f=h(a);this.assignUiBehaviors(f,r,n),f.setAttribute("x",b.toFixed(c)),f.setAttribute("width",s),d(f,C,y,i),p?o.negative=g:o.positive=v}}else{const t=f*U,s=2*t/e.length,a=s.toFixed(c);for(let e=0;e<l.length;e++){const n=l[e],o=D(n,l),u=o.x-t+s*M,m=h(e);this.assignUiBehaviors(m,r,n),m.setAttribute("x",u.toFixed(c)),m.setAttribute("width",a),d(m,i,o)}}}for(let t=o.children.length-1;t>=l?.length;t--){const e=o.children.item(t);this.disposeUiBehaviors(e),e.remove()}M++}this.wipeOut(L,M);const G=`0 ${-(h*k+$)} ${100*m} ${100+2*$}`;for(var H of L)H.setAttribute("viewBox",G);let z,F=this.chartMask.children.item(1);if(F.setAttribute("x",(0).toString()),F.setAttribute("height",(a.height-s).toString()),W.setAttribute("viewBox",`0 0 ${a.width} ${a.height}`),A.x.length<1||A.y.length<=1){for(let t=W.children.length-1;t>=0;t--)W.children.item(t).remove();return}W.children.length>0?z=W.children.item(0):(z=document.createElementNS(i,"path"),W.appendChild(z));let V=0,R=(t,e,r,s)=>{const a=t+1;let n;return W.children.length<=a?(n=document.createElementNS(i,"text"),W.appendChild(n)):n=W.children.item(a),n.textContent=s,n.setAttribute("x",e.toString()),n.setAttribute("y",r.toString()),n},I=`M${g},24 v${N}`,Y=0;const J=w/A.x.length,j=N/(A.y.length-1);if("none"!==this.xAxisPosition){const t=.5*J+g;for(var q of A.x){let e=t+Y*J;if("top"===this.xAxisPosition){I+=` M${e},24 v-6`;let t=R(V++,e,0,q);t.setAttribute("text-anchor","middle"),t.setAttribute("alignment-baseline","hanging")}else{let t=N+s;I+=` M${e},${t} v6`,R(V++,e,t+s,q).setAttribute("text-anchor","middle")}Y++}}for(var X of(Y=0,A.y)){const t=N+s-Y*j,e=g-6;I+=` M${e},${t} H${w+g}`,R(V++,e-6,t,this.formatYAxisLabel(X)).setAttribute("text-anchor","end"),Y++}z.setAttribute("d",I);for(let t=W.children.length-1;t>V;t--)W.children.item(t).remove()}};__decorate([t.Watch({converter:t.PropertyConverters.String})],r.prototype,"type",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Number})],r.prototype,"groupWidth",void 0),r=__decorate([t.CustomElement({tagName:t.P+"-column-chart"})],r),e.PacemColumnChartElement=r}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(e){function i(e,i,r){let s=e,a=e;const n=t.Utils.isNull(i),o=t.Utils.isNull(r);if(!n||!o){const t=3;let l,h;n||(l=(e.y-i.y)/(e.x-i.x)),o||(h=(r.y-e.y)/(r.x-e.x));const c=((h||l||0)+(l||h||0))/2,d=n?0:(e.x-i.x)/t,u=o?0:(r.x-e.x)/t;s={x:e.x-d,y:e.y-d*c},a={x:e.x+u,y:e.y+u*c}}return{c0:s,c1:a}}const r=t.CustomElementUtils.getAttachedPropertyValue,s=t.CustomElementUtils.setAttachedPropertyValue,a=(t.CustomElementUtils.deleteAttachedPropertyValue,"pacem:chart-series:area"),n="http://www.w3.org/2000/svg";let o=class PacemChartElement extends e.PacemSeriesChartElement{constructor(){super(...arguments),this.#t=!1,this._enterHandler=t=>{this.#t=!0},this._leaveHandler=t=>{this.#t=!1},this._moveHandler=t=>{this.#t},this._chartFillSeries=[]}_getVirtualGrid(t,e,i,r,s,a=this.xAxisType,n){return super.getVirtualGrid(t,e,i,r,s,a,n)}_wipe(t=this.chartSeries,e=0){super.wipeOut(t,e)}viewActivatedCallback(){super.viewActivatedCallback(),this._setupBehavior()}disconnectedCallback(){this._dismantleBehavior(),super.disconnectedCallback()}propertyChangedCallback(t,e,i,r){switch(super.propertyChangedCallback(t,e,i,r),t){case"type":case"aspectRatio":this.draw()}}_setupBehavior(){this.addEventListener("mouseenter",this._enterHandler,!1),this.addEventListener("mouseleave",this._enterHandler,!1),this.addEventListener("mousemove",this._moveHandler,!1)}_dismantleBehavior(){this.removeEventListener("mouseenter",this._enterHandler,!1),this.removeEventListener("mouseleave",this._leaveHandler,!1),this.removeEventListener("mousemove",this._moveHandler,!1)}#t;_buildLinearGradient(t){return super.buildLinearGradient(t)}_setGradientColor(t,e){super.setGradientColor(t,e)}drawSeries(e){if(!this.isReady||t.Utils.isNull(this.chartSize))return;this.ensureChartContainer();const o=this.type||"line",l=24;var h=this.chartSize;if(h.height<=l||h.width<=l)return;if(t.Utils.isNullOrEmpty(e)||e.every((e=>t.Utils.isNullOrEmpty(e.values))))return void this._wipe();const c=this.ensureChartBody("line",h.width,h.height);this.log(t.Logging.LogLevel.Debug,`Drawing ${o} chart.`);const d=this.xAxisType||"string";let u=this.yAxisMin??Number.NaN,m=this.yAxisMax??Number.NaN,p=Number.NaN,v=Number.NaN,g=1;for(let i of e){let e=i.values;if(e&&e.length){let i=0;for(let r of e){let s=this.chartDataItemToPoint(r,e);t.Utils.isNull(this.yAxisMin)&&(u=isNaN(u)?s.y:Math.min(u,s.y)),t.Utils.isNull(this.yAxisMax)&&(m=isNaN(m)?s.y:Math.max(m,s.y)),0===i?p=isNaN(p)?s.x:Math.min(p,s.x):i===e.length-1&&(v=isNaN(v)?s.x:Math.max(v,s.x)),i++}}}const y=Math.max(l,.5*this.estimateXAxisLabelWidth(p)+24),C=Math.max(y,this.estimateYAxisLabelWidth(m)+12),b=e.find((e=>!t.Utils.isNullOrEmpty(e.values))),f=this._getVirtualGrid(b.values,p,v,u,m,d,this.yAxisDensity),_=f.y[f.y.length-1],A=f.y[0];if(_===A)return;const x=h.width-C-y,E=h.height-48,w=E*(1-(_-A-(m-u))/(_-A)),N=E*(_-m)/(_-A);("number"!==d||"monometric"!==this.aspectRatio&&"logaritmic"!==this.aspectRatio)&&(g=x/w,c.setAttribute("height",h.height.toString()),c.setAttribute("width",h.width.toString())),c.setAttribute("viewBox",`0 0 ${h.width} ${h.height}`);let S=0;const P=100*g/(v-p),M=100/(m-u),U=2400/w,k=(t,e)=>{let i=this.chartDataItemToPoint(t,e);return i.y*=M,i.x=(i.x-p)*P,i},$=this.chartSeries,L=this._chartFillSeries,W=this.chartGrid,O="spline"===o||"splinearea"===o;for(let l of e){let e,h,d;if($.length>S)e=$[S],h=L[S],d=h.firstElementChild.firstElementChild;else{e=document.createElementNS(n,"svg"),e.setAttribute("pacem",""),c.appendChild(e),h=document.createElementNS(n,"svg"),h.setAttribute("pacem",""),c.insertBefore(h,c.children.item(S+2));const t=document.createElementNS(n,"defs");t.appendChild(d=this._buildLinearGradient(S)),h.appendChild(t),h.appendChild(document.createElementNS(n,"path")),L.push(h),e.appendChild(document.createElementNS(n,"path")),$.push(e)}let m="chart-series";const p="area"===o||"splinearea"===o;t.Utils.isNullOrEmpty(l.className)||(m+=" "+l.className),[e,h].forEach((t=>{t.setAttribute("class",m),t.setAttribute("x",C.toString()),t.setAttribute("y",N.toString()),t.setAttribute("width",x.toString()),t.setAttribute("height",(w+48).toString())})),t.Utils.addClass(h,t.PCSS+"-inert");let v=h.children.item(1),g=e.firstElementChild;g.style.stroke=l.color,v.style.stroke=g.style.fill="none",this._setGradientColor(d,l.color),v.style.fill=`url(#${d.id})`,v.style.display=p?"":"none";let y="",b=l.values;if(b&&b.length){const o=(t,i,r,s,a)=>{const o=i+1;let l;e.children.length>o?l=e.children.item(o):(l=document.createElementNS(n,"line"),l.setAttribute("class","circle"),e.appendChild(l));const h=t.x.toString(),c=(-t.y).toString();l.setAttribute("x1",h),l.setAttribute("y1",c),l.setAttribute("x2",h),l.setAttribute("y2",c),l.style.stroke=a,this.assignUiBehaviors(l,r,s,a)},h=()=>{const t=l.datapoints?b.length+1:1;for(let r=e.children.length-1;r>=t;r--){var i=e.children.item(r);this.disposeUiBehaviors(i),i.remove()}};if(O){let e,n,h;for(let c=0;c<b.length;c++){const d=b[c];if(isNaN(d.value))continue;let u;n||(n=k(d,b)),O&&c<b.length-1&&(u=k(b[c+1],b));let m=r(l,a,0);m+=d.value,s(l,a,m);var D=i(n,e,u);y+=t.Utils.isNullOrEmpty(y)?`M${n.x},${-n.y} `:`C${h.x},${-h.y} ${D.c0.x},${-D.c0.y} ${n.x},${-n.y} `,l.datapoints&&o(n,c,l,d,l.color),e=n,n=u,h=D.c1}}else{let e=0;for(let i of b){if(isNaN(i.value))continue;const n=k(i,b);let h=r(l,a,0);h+=i.value,s(l,a,h),y+=t.Utils.isNullOrEmpty(y)?`M${n.x},${-n.y} `:`L${n.x},${-n.y} `,l.datapoints&&o(n,e,l,i,l.color),e++}}h()}g.setAttribute("d",y),v.setAttribute("d",y+`V${-u*M} H0 Z`),S++}this._wipe(L,S),this._wipe($,S);const B=`0 ${-(m*M+U)} ${100*g} ${100+2*U}`;for(var T of $.concat(L))T.setAttribute("viewBox",B);let G,H=this.chartMask.children.item(1);if(H.setAttribute("x",(0).toString()),H.setAttribute("height",(h.height-l).toString()),W.setAttribute("viewBox",`0 0 ${h.width} ${h.height}`),f.x.length<=1||f.y.length<=1){for(let t=W.children.length-1;t>=0;t--)W.children.item(t).remove();return}W.children.length>0?G=W.children.item(0):(G=document.createElementNS(n,"path"),W.appendChild(G));let z=0,F=(t,e,i,r)=>{const s=t+1;let a;return W.children.length<=s?(a=document.createElementNS(n,"text"),W.appendChild(a)):a=W.children.item(s),a.textContent=r,a.setAttribute("x",e.toString()),a.setAttribute("y",i.toString()),a},V=`M${C},24 v${E}`,R=0;const I=x/(f.x.length-1),Y=E/(f.y.length-1);if("none"!==this.xAxisPosition)for(var J of f.x){const t=C+R*I;if("top"===this.xAxisPosition){V+=` M${t},24 v-6`;let e=F(z++,t,0,J);e.setAttribute("text-anchor","middle"),e.setAttribute("alignment-baseline","hanging")}else{let e=E+l;V+=` M${t},${e} v6`,F(z++,t,e+l,J).setAttribute("text-anchor","middle")}R++}for(var j of(R=0,f.y)){const t=E+l-R*Y,e=C-6;V+=` M${e},${t} H${x+C}`,F(z++,e-6,t,this.formatYAxisLabel(j)).setAttribute("text-anchor","end"),R++}G.setAttribute("d",V);for(let t=W.children.length-1;t>z;t--)W.children.item(t).remove()}};__decorate([t.Watch({emit:!1,converter:t.PropertyConverters.String})],o.prototype,"type",void 0),__decorate([t.Watch({converter:t.PropertyConverters.String})],o.prototype,"aspectRatio",void 0),o=__decorate([t.CustomElement({tagName:t.P+"-chart"})],o),e.PacemChartElement=o}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={})),function(t){!function(e){!function(i){let r=class PacemPieSliceElement extends e.PacemItemElement{constructor(){super(...arguments),this._broadcastHandler=t=>{this.emit(t)}}findContainer(){return t.CustomElementUtils.findAncestorOfType(this,n)}get chart(){return this.container}getCenterOfMass(){const e=this.chart&&this.chart.area;if(t.Utils.isNull(e))return null;const i=t.Utils.offset(e),r=i.width/2+i.left,s=i.top+i.height/2,n=.5*Math.min(i.width,i.height),o=this.normalizedPolarCoords,l=a-o.angle;return{y:s-n*o.radius*Math.sin(l),x:r+n*o.radius*Math.cos(l)}}propertyChangedCallback(t,e,i,r){super.propertyChangedCallback(t,e,i,r),!r&&this.chart&&"normalizedPolarCoords"!=t&&this.chart.draw()}_assignUi(t){const e=this._ui=t;i.MANAGED_EVENTS.forEach((t=>{e.addEventListener(t,this._broadcastHandler)}))}_disposeUi(){t.Utils.isNull(this._ui)||i.MANAGED_EVENTS.forEach((t=>{this._ui.removeEventListener(t,this._broadcastHandler)}))}};__decorate([t.Watch({converter:t.PropertyConverters.Number})],r.prototype,"value",void 0),__decorate([t.Watch({converter:t.PropertyConverters.String})],r.prototype,"label",void 0),__decorate([t.Watch({converter:t.PropertyConverters.String})],r.prototype,"color",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Json})],r.prototype,"normalizedPolarCoords",void 0),r=__decorate([t.CustomElement({tagName:t.P+"-pie-slice"})],r),i.PacemPieSliceElement=r;const s=2*Math.PI,a=.5*Math.PI;let n=class PacemPieChartElement extends e.PacemItemsContainerElement{constructor(){super(),this.cutout=0,this._slices=new WeakMap,this._key=t.Utils.uniqueCode()}validate(t){return t instanceof r}viewActivatedCallback(){super.viewActivatedCallback(),this.draw()}propertyChangedCallback(e,i,r,s){if(super.propertyChangedCallback(e,i,r,s),"target"===e){this._g=null,this._div&&this._div.remove();const e=i;e&&(e.classList.remove(t.PCSS+"-chart-area"),e.innerHTML=""),this.draw()}else s||"cutout"!==e&&"items"!==e||this.draw()}get area(){return this._svg}disconnectedCallback(){this._div&&this._div.remove(),super.disconnectedCallback()}_ensureArea(){if(t.Utils.isNull(this._g)){let e=this.target||(this._div=document.createElement("div"));e.classList.add(t.PCSS+"-chart-area");let i=this._svg=document.createElementNS("http://www.w3.org/2000/svg","svg");i.setAttribute("pacem",""),i.setAttribute("preserveAspectRatio","xMidYMid meet"),i.setAttribute("viewBox","0 0 100 100"),i.classList.add(t.PCSS+"-pie-chart");let r=document.createElementNS("http://www.w3.org/2000/svg","defs"),s=this._g=document.createElementNS("http://www.w3.org/2000/svg","g");i.appendChild(r),i.appendChild(s),e.appendChild(i),this._div&&this.parentElement.insertBefore(e,this)}if(this.maskBasedRendering){if(t.Utils.isNull(this._mask)){let t=document.createElementNS("http://www.w3.org/2000/svg","mask");t.id="pie_mask_"+this._key;let e=document.createElementNS("http://www.w3.org/2000/svg","rect");e.setAttribute("x","0"),e.setAttribute("y","0"),e.setAttribute("width","100"),e.setAttribute("height","100"),e.setAttribute("fill","#fff");let i=this._mask=document.createElementNS("http://www.w3.org/2000/svg","circle");i.setAttribute("cx","50"),i.setAttribute("cy","50");const r=this._svg.firstElementChild;t.appendChild(e),t.appendChild(i),r.appendChild(t),this._g.setAttribute("mask",`url(#${t.id})`)}const e=50*this._safeCutout;this._mask.setAttribute("r",`${e}`)}else t.Utils.isNull(this._mask)||(this._svg.firstElementChild.innerHTML="",this._mask=null,this._g.removeAttribute("mask"));return this._g}get _safeCutout(){return Math.min(1,Math.max(0,this.cutout))||0}_drawSlice(t,e,i,r){const a=e.value>.5*i?1:0,n=s*e.value/i,o=360*r/i,l=e.value>=i?49.9:50*(1+Math.sin(n)),h=50*(1-Math.cos(n)),c=this._safeCutout,d=50*c;t.style.fill=e.color,t.style.transform=`rotate(${o}deg)`,t.style.transformOrigin="50% 50%";const u=this.maskBasedRendering?`M50,50 V0 A50,50 0 ${a} 1 ${l} ${h} L50,50 Z`:`M50,0 A50,50 0 ${a} 1 ${l} ${h} l${(50-l)*(1-c)},${(50-h)*(1-c)} A${d},${d} 0 ${a} 0 50,${50-d} Z`;t.setAttribute("d",u),e.normalizedPolarCoords={radius:c+Math.SQRT1_2*(1-c),angle:Math.PI*o/180+n/2}}_isSliceOk(t){return!t.disabled}draw(){const e=this._ensureArea(),i=e.children.length,r=this._svg.parentElement;let s=0,a=0,n=0;if(t.Utils.isNullOrEmpty(this.items))e.innerHTML="",t.Utils.removeClass(r,"chart-has-data");else{t.Utils.addClass(r,"chart-has-data");for(let t of this.items)this._isSliceOk(t)&&(a+=t.value);if(a<=0)e.innerHTML="",t.Utils.removeClass(r,"chart-has-data");else for(let r of this.items){if(!this._isSliceOk(r))continue;let o;if(s>=i){const i=document.createElementNS("http://www.w3.org/2000/svg","g");i.setAttribute("class","chart-series "+t.PCSS+"-pie-slice"+(t.Utils.isNullOrEmpty(r.className)?"":" "+r.className)),o=document.createElementNS("http://www.w3.org/2000/svg","path"),i.appendChild(o),e.appendChild(i),r._assignUi(i),this._slices.set(i,r)}else o=e.children.item(s).firstElementChild;r.value>0?(this._drawSlice(o,r,a,n),n+=r.value,o.removeAttribute("display")):o.setAttribute("display","none"),s++}}for(;s<e.children.length;){const t=this._slices,i=e.children.item(s);t.has(i)&&(t.get(i)._disposeUi(),t.delete(i)),e.removeChild(i)}}};__decorate([t.Watch({converter:t.PropertyConverters.Number})],n.prototype,"cutout",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Element})],n.prototype,"target",void 0),__decorate([t.Watch({converter:t.PropertyConverters.Boolean})],n.prototype,"maskBasedRendering",void 0),__decorate([t.Debounce(!0)],n.prototype,"draw",null),n=__decorate([t.CustomElement({tagName:t.P+"-pie-chart"})],n),i.PacemPieChartElement=n}(e.Charts||(e.Charts={}))}(t.Components||(t.Components={}))}(Pacem||(Pacem={}));
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -12,6 +12,8 @@ declare namespace Pacem {
12
12
  declare namespace Pacem {
13
13
  class Blobs {
14
14
  static blobToDataURL(blob: Blob): Promise<string>;
15
+ private static _b64ToUint8Array;
16
+ static base64ToBlob(bstr: string, options?: BlobPropertyBag): Blob;
15
17
  static dataURLToBlob(dataurl: string): Blob;
16
18
  static blobToText(blob: Blob, encoding?: string): Promise<string>;
17
19
  static textToBlob(content: string, type?: string): Blob;
@@ -54,6 +56,7 @@ declare namespace Pacem {
54
56
  static stringify(hsl: Hsla, precision?: number): string;
55
57
  static stringify(rgb: Rgba, hex?: boolean): string;
56
58
  static contrastRatio(clr1: Rgba | Hsla, clr2: Rgba | Hsla): number;
59
+ static luminance(clr: Rgba | Hsla): number;
57
60
  static lighten(rgb: Rgba, amount?: number): Rgba;
58
61
  static lighten(rgb: Hsla, amount?: number): Hsla;
59
62
  static darken(rgb: Rgba, amount?: number): Rgba;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -44,12 +44,28 @@ var Pacem;
44
44
  a.readAsDataURL(blob);
45
45
  });
46
46
  }
47
- static dataURLToBlob(dataurl) {
48
- var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
47
+ static _b64ToUint8Array(bstr) {
48
+ let n = bstr.length;
49
+ const u8arr = new Uint8Array(n);
49
50
  while (n--) {
50
51
  u8arr[n] = bstr.charCodeAt(n);
51
52
  }
52
- return new Blob([u8arr], { type: mime });
53
+ return u8arr;
54
+ }
55
+ static base64ToBlob(bstr, options) {
56
+ const u8arr = Blobs._b64ToUint8Array(atob(bstr));
57
+ return new Blob([u8arr], options);
58
+ }
59
+ static dataURLToBlob(dataurl) {
60
+ const coma = dataurl.indexOf(',');
61
+ if (coma === -1) {
62
+ return Blobs.base64ToBlob(dataurl);
63
+ }
64
+ else {
65
+ const bstr = dataurl.substring(coma + 1), data = dataurl.substring(0, coma);
66
+ const mime = data.match(/:(.*?);/)[1];
67
+ return Blobs.base64ToBlob(bstr, { type: mime });
68
+ }
53
69
  }
54
70
  static blobToText(blob, encoding) {
55
71
  return new Promise((resolve, _) => {
@@ -377,6 +393,12 @@ var Pacem;
377
393
  }
378
394
  return cieUtils.contrastRatio(clr1, clr2);
379
395
  }
396
+ static luminance(clr) {
397
+ if (isHsl(clr)) {
398
+ clr = Colors.rgb(clr);
399
+ }
400
+ return cieUtils.relativeLuminance(clr);
401
+ }
380
402
  static lighten(clr, amount = 0.1) {
381
403
  amount ||= 0;
382
404
  if (isHsl(clr)) {
@@ -1,6 +1,6 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
6
- var Pacem;!function(e){e.Arrays=class Arrays{static range(e,t,r=2){let n=e;const a=(t-e)/(r-1),s=[];if(a>0)for(;s.length<r;)s.push(n.roundoff()),n+=a;return s}static chunkify(t,r){if(e.NullChecker.isNullOrEmpty(t))return[];if(r<=0||r%1!=0)throw new Error("Provide a positive integer number.");const n=Math.ceil(t.length/r);return Array.from({length:n},((e,n)=>{const a=n*r,s=a+r;return t.slice(a,s)}))}}}(Pacem||(Pacem={})),function(e){e.Blobs=class Blobs{static blobToDataURL(e){return new Promise(((t,r)=>{const n=new FileReader;n.onload=e=>{t(e.target.result)},n.readAsDataURL(e)}))}static dataURLToBlob(e){for(var t=e.split(","),r=t[0].match(/:(.*?);/)[1],n=atob(t[1]),a=n.length,s=new Uint8Array(a);a--;)s[a]=n.charCodeAt(a);return new Blob([s],{type:r})}static blobToText(e,t){return new Promise(((r,n)=>{e.arrayBuffer().then((e=>{const n=new TextDecoder(t).decode(e);r(n)}))}))}static textToBlob(e,t="text/plain"){const r=(new TextEncoder).encode(e);return new Blob([r],{type:t})}}}(Pacem||(Pacem={})),function(e){!function(e){const t=(e,t)=>{const r=e.match(t);return r?r[2]:null};e.detect=function(e=navigator.userAgent){let r="unknown",n=null;switch(/ucbrowser/i.test(e)?r="UCBrowser":/edg/i.test(e)?r="Edge":/googlebot/i.test(e)?r="GoogleBot":/chromium/i.test(e)?r="Chromium":/firefox|fxios/i.test(e)&&!/seamonkey/i.test(e)?r="Firefox":/; msie|trident/i.test(e)&&!/ucbrowser/i.test(e)?r="IE":/chrome|crios/i.test(e)&&!/opr|opera|chromium|edg|ucbrowser|googlebot/i.test(e)?r="Chrome":/safari/i.test(e)&&!/chromium|edg|ucbrowser|chrome|crios|opr|opera|fxios|firefox/i.test(e)?r="Safari":/opr|opera/i.test(e)&&(r="Opera"),r){case"UCBrowser":n=t(e,/(ucbrowser)\/([\d\.]+)/i);break;case"Edge":n=t(e,/(edge|edga|edgios|edg)\/([\d\.]+)/i);break;case"GoogleBot":n=t(e,/(googlebot)\/([\d\.]+)/i);break;case"Chromium":n=t(e,/(chromium)\/([\d\.]+)/i);break;case"Firefox":n=t(e,/(firefox|fxios)\/([\d\.]+)/i);break;case"Chrome":n=t(e,/(chrome|crios)\/([\d\.]+)/i);break;case"Safari":n=t(e,/(safari)\/([\d\.]+)/i);break;case"Opera":n=t(e,/(opera|opr)\/([\d\.]+)/i);break;case"IE":{const r=t(e,/(trident)\/([\d\.]+)/i);n=r?`${parseFloat(r)+4}`:"7.0";break}default:n="0.0.0.0"}return{name:r,version:n}}}(e.Browsers||(e.Browsers={}))}(Pacem||(Pacem={})),function(e){const t=/^hsl\s*\(\s*([\d\.]+)\s*,\s*([\d\.]+)%\s*,\s*([\d\.]+)%\s*\)$/,r=/^hsla\s*\(\s*([\d\.]+)\s*,\s*([\d\.]+)%\s*,\s*([\d\.]+)%\s*,\s*([\d\.]+)\)$/,n=/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/,a=/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\)$/,s=/^#[a-f0-9]{6}$/,i=/^#[a-f0-9]{3}$/;function o(t){return!e.NullChecker.isNullOrEmpty(t)&&"object"==typeof t&&"r"in t&&"g"in t&&"b"in t&&"number"==typeof t.r&&"number"==typeof t.b&&"number"==typeof t.g&&(t.a??=1,t.r>=0&&t.r<=1&&t.g>=0&&t.g<=1&&t.b>=0&&t.b<=1&&t.a>=0&&t.a<=1)}function c(t){return!e.NullChecker.isNullOrEmpty(t)&&"object"==typeof t&&"h"in t&&"s"in t&&"l"in t&&"number"==typeof t.h&&"number"==typeof t.s&&"number"==typeof t.l&&(t.a??=1,t.h>=0&&t.h<=360&&t.s>=0&&t.s<=1&&t.l>=0&&t.l<=1&&t.a>=0&&t.a<=1)}const l={adjustRgbChannel:e=>e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4),adjustRgbChannelInv:e=>e<=.00304?12.92*e:1.055*(Math.pow(e,1/2.4)-.055),adjustRgb:e=>({r:l.adjustRgbChannel(e.r),g:l.adjustRgbChannel(e.g),b:l.adjustRgbChannel(e.b),a:e.a}),adjustRgbInv:e=>({r:l.adjustRgbChannelInv(e.r),g:l.adjustRgbChannelInv(e.g),b:l.adjustRgbChannelInv(e.b),a:e.a}),X:e=>.4125*e.r+.3576*e.g+.1804*e.b,Y:e=>.2126*e.r+.7152*e.g+.0722*e.b,Z:e=>.0193*e.r+.1191*e.g+.9503*e.b,relativeLuminance:e=>{const t=l.adjustRgb(e);return l.Y(t)},rgbToCieXYZ:e=>{const t=l.adjustRgb(e);return{x:l.X(t),y:l.Y(t),z:l.Z(t),a:e.a}},cieXYZToRgb:e=>{const t=3.241*e.x-1.5374*e.y-.4986*e.z,r=-.9692*e.x+1.876*e.y+.0416*e.z,n=.0556*e.x-.204*e.y+1.057*e.z;return l.adjustRgbInv({r:t,g:r,b:n,a:e.a})},contrastRatio:(e,t)=>{const r=l.relativeLuminance(e)+.05,n=l.relativeLuminance(t)+.05;return r>n?r/n:n/r}};function u(t){return e.Strings.leftPad(t.toString(16),2,"0")}class Colors{static _clampRGB(e){const t=e=>Math.min(1,Math.max(0,e));return null==e[3]&&(e[3]=1),{r:t(e[0]),g:t(e[1]),b:t(e[2]),a:Math.min(1,Math.max(0,e[3]))}}static _normalize(e){return[e[0]/255,e[1]/255,e[2]/255,e[3]]}static parse(e){if(e=(e||"").toLowerCase(),n.test(e)){let t=n.exec(e);return this._clampRGB(this._normalize([parseInt(t[1]),parseInt(t[2]),parseInt(t[3]),1]))}if(a.test(e)){let t=a.exec(e);return this._clampRGB(this._normalize([parseInt(t[1]),parseInt(t[2]),parseInt(t[3]),parseFloat(t[4])]))}if(s.test(e)){let t=s.exec(e)[0];return this._clampRGB(this._normalize([parseInt("0x"+t.substr(1,2)),parseInt("0x"+t.substr(3,2)),parseInt("0x"+t.substr(5,2)),1]))}if(i.test(e)){let t=i.exec(e)[0],r=t.substr(1,1),n=t.substr(2,1),a=t.substr(3,1);return this._clampRGB(this._normalize([parseInt("0x"+r+r),parseInt("0x"+n+n),parseInt("0x"+a+a),1]))}if(t.test(e)){let r=t.exec(e);const n={h:parseFloat(r[1]),s:.01*parseFloat(r[2]),l:.01*parseFloat(r[3])};return this.rgb(n)}if(r.test(e)){let t=r.exec(e);const n={h:parseFloat(t[1]),s:.01*parseFloat(t[2]),l:.01*parseFloat(t[3]),a:parseFloat(t[4])};return this.rgb(n)}}static hsl(e){const t=function(e){const t=e.r,r=e.g,n=e.b;return.5*(Math.max(t,r,n)+Math.min(t,r,n))}(e),r=function(e,t){const r=e.r,n=e.g,a=e.b,s=Math.max(r,n,a),i=Math.min(r,n,a);return 0===t||1===t?0:(s-i)/(1-Math.abs(2*t-1))}(e,t),n=function(e){const t=e.r,r=e.g,n=e.b;return t>=r&&r>n?60*(r-n)/(t-n):r>t&&t>=n?60*(2-(t-n)/(r-n)):r>=n&&n>t?60*(2+(n-t)/(r-t)):n>r&&r>t?60*(4-(r-t)/(n-t)):n>t&&t>=r?60*(4+(t-r)/(n-r)):t>=n&&n>r?60*(6-(n-r)/(t-r)):void 0}(e);return{h:n,s:r,l:t,a:e.a}}static cieXYZ(e){return c(e)&&(e=this.rgb(e)),l.rgbToCieXYZ(e)}static rgb(e){if(!c(e)){const t=l.cieXYZToRgb(e);return this._clampRGB([t.r,t.g,t.b,t.a])}{const t=e.h,r=e.s,n=e.l,a=t/60,s=(1-Math.abs(2*n-1))*r,i=s*(1-Math.abs(a%2-1)),o=n-s/2,c=(t,r,n)=>this._clampRGB([t+o,r+o,n+o,e.a]);if(a<=1)return c(s,i,0);if(a<=2)return c(i,s,0);if(a<=3)return c(0,s,i);if(a<=4)return c(0,i,s);if(a<=5)return c(i,0,s);if(a<=6)return c(s,0,i)}}static stringify(e,t=1){if(c(e)){t??=1,e.a??=1;const r="number"==typeof t?t:1;return`hsla(${e.h.roundoff(r)},${(100*e.s).roundoff(r)}%,${(100*e.l).roundoff(r)}%,${e.a.roundoff()})`}if(o(e)){t??=!0,e.a??=1;const r="boolean"==typeof t?t:!!t,n=Math.round(255*e.r),a=Math.round(255*e.g),s=Math.round(255*e.b),i=e.a.roundoff();return 1===i?r?("#"+u(n)+u(a)+u(s)).toUpperCase():`rgb(${n},${a},${s})`:`rgba(${n},${a},${s},${i})`}}static contrastRatio(e,t){return c(e)&&(e=this.rgb(e)),c(t)&&(t=this.rgb(t)),l.contrastRatio(e,t)}static lighten(e,t=.1){if(t||=0,c(e)){const r=Math.min(1,Math.max(0,e.l+t));return Object.assign({},e,{l:r})}if(o(e)){const r=this.lighten(this.hsl(e),t);return this.rgb(r)}return e}static darken(e,t=.1){return this.lighten(e,-t)}static saturate(e,t=.1){if(t||=0,c(e)){const r=Math.min(1,Math.max(0,e.s+t));return Object.assign({},e,{s:r})}if(o(e)){const r=this.saturate(this.hsl(e),t);return this.rgb(r)}return e}static desaturate(e,t=.1){return this.saturate(e,-t)}static interpolate(e,t,r,n){r??=.5,n??=r;const a=(r+n).roundoff(),s=(r/a).roundoff(),i=(n/a).roundoff(),l=o(e),u=c(e),h=e=>o(e)||c(e)?Colors.cieXYZ(e):e;e=h(e),t=h(t);const d={x:(e.x*s+t.x*i).roundoff(),y:(e.y*s+t.y*i).roundoff(),z:(e.z*s+t.z*i).roundoff(),a:(e.a*s+t.a*i).roundoff()};return l?Colors.rgb(d):u?Colors.hsl(Colors.rgb(d)):d}}e.Colors=Colors}(Pacem||(Pacem={})),function(e){const t=/^\/Date\([\d]+\)\/$/i;class Dates{static parse(e){let r;return"string"==typeof e?(r=t.test(e)?parseInt(e.substring(6)):Date.parse(e),new Date(r)):"number"==typeof e?new Date(e):e}static isLeapYear(e){return e%4==0&&e%100!=0||e%400==0}static daysInMonth(e,t){return[31,Dates.isLeapYear(e)?29:28,31,30,31,30,31,31,30,31,30,31][t]}static isDate(e){return e instanceof Date&&!isNaN(e.valueOf())}static dateOnly(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}static addMonths(e,t){let r=e.getDate(),n=new Date(e),a=n.getMonth()+t,s=0;for(;a<0;)a+=12,s--;return n.setDate(1),n.setMonth(a%12),n.setFullYear(n.getFullYear()+s+Math.floor(a/12)),n.setDate(Math.min(r,Dates.daysInMonth(n.getFullYear(),n.getMonth()))),n}static addDays(e,t){return new Date(e.valueOf()+864e5*t)}static daysBetween(e,t){return(t.valueOf()-e.valueOf())/864e5}}e.Dates=Dates}(Pacem||(Pacem={})),function(e){const t=/[-+]?([\d]+(\.[\d]+(e-[\d]+)?)?|[\d]*(\.[\d]+(e-[\d]+)?))/g;function r(e){const r=[];let n=e.match(t);return n&&n.length>0&&n.forEach((e=>r.push(parseFloat(e)))),r}e.parseAsNumericalArray=r;class Angle{static isAngle(e){return"object"==typeof e&&"vertex"in e&&Point.isPoint(e.vertex)&&"start"in e&&Point.isPoint(e.start)&&"end"in e&&Point.isPoint(e.end)}static value(t){if(e.NullChecker.isNullOrEmpty(t)||!Angle.isAngle(t))return Number.NaN;const{vertex:r,start:n,end:a}=t;return Angle.angleBetween(r,n,a)}static angleBetween(e,t,r){const n=t.x-e.x,a=t.y-e.y,s=r.x-e.x,i=r.y-e.y,o=n*s+a*i,c=n*i-a*s;return-Math.atan2(c,o)}}e.Angle=Angle;class Size{static parse(e){let t=r(e);if(t&&2===t.length)return{width:t[0],height:t[1]};throw new Error(`Cannot parse "${e}" as a valid Size.`)}static isSize(e){return"object"==typeof e&&"width"in e&&"number"==typeof e.width&&"height"in e&&"number"==typeof e.height}}e.Size=Size;class Point{static parse(e){let t=r(e);if(t&&2===t.length)return{x:t[0],y:t[1]};throw new Error(`Cannot parse "${e}" as a valid Point.`)}static isPoint(e){return"object"==typeof e&&"x"in e&&"number"==typeof e.x&&"y"in e&&"number"==typeof e.y}static distance(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}static subtract(e,t){return{x:t.x-e.x,y:t.y-e.y}}static add(...e){var t={x:0,y:0};for(var r of e)t.x+=r.x,t.y+=r.y;return t}static multiply(e,t){return{x:e.x*t,y:e.y*t}}}e.Point=Point;class Rect{static parse(e){let t=r(e);if(t&&4===t.length)return{x:t[0],y:t[1],width:t[2],height:t[3]};throw new Error(`Cannot parse "${e}" as a valid Rect.`)}static isRect(e){return Point.isPoint(e)&&Size.isSize(e)}static _stretch(e,t){return{a:t.width/e.width,b:0,c:0,d:t.height/e.height,e:t.x-e.x,f:t.y-e.y}}static _contain(t,r,n,a){let s=1;s=t.width/t.height>=r.width/r.height?r.width/t.width:r.height/t.height;const i=t.width*s,o=t.height*s,c=this._align({x:t.x,y:t.y,width:i,height:o},r,n,a);return e.Matrix2D.translate({a:s,b:0,c:0,d:s,e:0,f:0},c)}static _cover(t,r,n,a){let s=1;s=t.width/t.height<r.width/r.height?r.width/t.width:r.height/t.height;const i=t.width*s,o=t.height*s,c=this._align({x:t.x,y:t.y,width:i,height:o},r,n,a);return e.Matrix2D.translate({a:s,b:0,c:0,d:s,e:0,f:0},c)}static _align(e,t,r,n){let a=0,s=0;switch(r){case"left":a=t.x-e.x;break;case"right":a=t.x+t.width-e.width-e.x;break;default:a=t.x+.5*t.width-.5*e.width-e.x}switch(n){case"top":s=t.y-e.y;break;case"bottom":s=t.y+t.height-e.height-e.y;break;default:s=t.y+.5*t.height-.5*e.height-e.y}return{x:a,y:s}}static findTransform(e,t,r="stretch",n="center",a="middle"){switch(r){case"contain":return this._contain(e,t,n,a);case"cover":return this._cover(e,t,n,a);default:return this._stretch(e,t)}}static intersect(...e){const t={x:0,y:0,height:0,width:0},r=Array.from(e||[]);if(r.length<=0)return t;for(var n=r[0],a=1;a<r.length;a++){const e=r[a],s=Math.max(e.x,n.x),i=Math.max(e.y,n.y),o=Math.min(e.x+e.width,n.x+n.width)-s,c=Math.min(e.y+e.height,n.y+n.height)-i;if(o<0||c<=0)return t;n={x:s,y:i,width:o,height:c}}return n}static expand(e,...t){const r=Array.from(t||[]);let n=e.x,a=e.y,s=n,i=a;Rect.isRect(e)&&(s+=e.width,i+=e.height);for(let e of r)n=Math.min(e.x,n),a=Math.min(e.y,a),s=Math.max(e.x,s),i=Math.max(e.y,i);return{x:n,y:a,width:s-n,height:i-a}}}e.Rect=Rect}(Pacem||(Pacem={})),function(e){e.HistoryService=class HistoryService{constructor(e,t){this.#e=e,this.#t=t}#r=[];#n=[];#t;#e;get current(){return this.#e}get canUndo(){return this.#r.length>0}get canRedo(){return this.#n.length>0}set maxlength(e){this.#t=e}undo(){if(this.canUndo){const e=this.#r,t=this.#n,r=this.#e;t.unshift(r),this.#e=e.pop()}}redo(){if(this.canRedo){const e=this.#r,t=this.#n,r=this.#e;e.push(r),this.#e=t.shift()}}push(e){this.#n.splice(0),this.#r.push(this.#e),this.#e=e;const t=this.#t,r=this.#r;t>0&&r.length>t&&r.splice(0,r.length-t)}reset(){this.#n.splice(0),this.#r.splice(0)}}}(Pacem||(Pacem={})),function(e){const t={mode:"stretch",align:"center",valign:"middle",quality:1,type:"image/jpeg"};class Imaging{static async loadImage(e){const t=await fetch(e);if(!t.ok)return null;return await t.blob()}static async resizeImage(r,n,a,s){if(n<=0||a<=0||isNaN(n)||isNaN(a))throw new Error("Invalid target size");"string"==typeof r&&(r=await Imaging.loadImage(r));const i=await self.createImageBitmap(r),o=i.width,c=i.height,l=new OffscreenCanvas(o,c),u=l.getContext("2d");u.imageSmoothingEnabled=u.mozImageSmoothingEnabled=u.oImageSmoothingEnabled=u.webkitImageSmoothingEnabled=!0;const{quality:h,type:d,mode:g,align:f,valign:p,background:m}=Object.assign({},t,s??{}),y={width:o,height:c,x:0,y:0},x={x:0,y:0,width:n,height:a},b=e.Rect.findTransform(y,x,g,f,p);l.width=n,l.height=a,m&&(u.fillStyle=m,u.fillRect(0,0,l.width,l.height)),u.setTransform(b),u.drawImage(i,0,0);return await l.convertToBlob({quality:h,type:d})}}e.Imaging=Imaging}(Pacem||(Pacem={})),function(e){class Keys{static#a;static uniqueId(){let e=Keys.#a||Date.now();return Keys.#a=++e}static uniqueCode(){return Keys.uniqueId().toBase62()}static randomString(e){let t="";do{t+=(62*Math.random()).toBase62()}while(t.length<e);return t}}e.Keys=Keys}(Pacem||(Pacem={})),function(e){class Matrix2D{static isIdentity(e){return 1===e.a&&1===e.d&&0===e.b&&0===e.f&&0===e.c&&0===e.e}static get identity(){return{a:1,b:0,c:0,d:1,e:0,f:0}}static copy(e){return{a:e.a,b:e.b,c:e.c,d:e.d,e:e.e,f:e.f}}static scale(e,t,r=t){return{a:e.a*t,b:e.b,c:e.c,d:e.d*r,e:e.e,f:e.f}}static translate(e,t){return{a:e.a,b:e.b,c:e.c,d:e.d,e:e.e+t.x,f:e.f+t.y}}static rotate(e,t){const r=Math.cos(t),n=Math.sin(t);return Matrix2D.multiply(e,{a:r,b:n,c:-n,d:r,e:0,f:0})}static multiply(e,t){return"x"in e&&"y"in e?"number"==typeof t?{x:e.x*t,y:e.y*t}:{x:e.x*t.a+e.y*t.c+t.e,y:e.x*t.b+e.y*t.d+t.f}:"number"==typeof t?{a:e.a*t,b:e.b*t,c:e.c*t,d:e.d*t,e:e.e*t,f:e.f*t}:{a:e.a*t.a+e.b*t.c,b:e.a*t.b+e.b*t.d,c:e.c*t.a+e.d*t.c,d:e.c*t.b+e.d*t.d,e:e.e*t.a+e.f*t.c+t.e,f:e.e*t.b+e.f*t.d+t.f}}static det(e){return e.a*e.d-e.c*e.b}static invert(e){const t=this.det(e);if(0===t)return null;const r=1/t;return this.multiply({a:e.d,b:-e.b,c:-e.c,d:e.a,e:-e.e*e.d+e.c*e.f,f:e.e*e.b-e.a*e.f},r)}}e.Matrix2D=Matrix2D}(Pacem||(Pacem={})),function(e){class NullChecker{static isNull(e){return null==e}static isEmpty(t){try{return Array.isArray(t)&&0===t.length||"string"==typeof t&&""===t||"object"==typeof t&&0===Object.keys(t).length&&!e.Dates.isDate(t)&&!(t instanceof RegExp)&&!(t instanceof FileSystemDirectoryHandle)&&!(t instanceof FileSystemFileHandle)}catch(e){return!1}}static isNullOrEmpty(e){return NullChecker.isNull(e)||NullChecker.isEmpty(e)}}e.NullChecker=NullChecker}(Pacem||(Pacem={})),Number.prototype.isCloseTo=function(e,t=14){return this.toFixed(t)===e.toFixed(t)},Number.prototype.roundoff=function(e=14){return parseFloat(this.toFixed(e))},Number.prototype.clamp=function(e,t){let r=this;return null==e||isNaN(e)||(r=Math.max(r,e)),null==t||isNaN(t)||(r=Math.min(r,t)),r},Number.prototype.toBase62=function(){for(var e=this,t="";0!=e;){t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".charAt(e%62)+t,e=Math.floor(e/62)}return t},Number.prototype.toBase36=function(){return this.toString(36)},function(e){e.Numbers=class Numbers{static round(e,t=1){return Math.round(e/t)*t}static log(e,t){return Math.log10(e)/Math.log10(t)}static rebase(e,t,r){const n=e.toString(),a=parseInt(n,t);return n.endsWith(a.toString(t))?parseInt(e.toString(),t).toString(r):Number.NaN.toString()}}}(Pacem||(Pacem={})),function(e){function t(e,t){const r=function(e,t){const r=e.length,n=t.length,a=Array.from({length:r+1},(()=>Array(n+1).fill(0)));for(let s=1;s<=r;s++)for(let r=1;r<=n;r++)e[s-1]===t[r-1]?a[s][r]=a[s-1][r-1]+1:a[s][r]=Math.max(a[s-1][r],a[s][r-1]);return a}(e,t),n=e.length,a=t.length,s=[];let i=n,o=a,c=null;const l=(e,t,r)=>{const n=c?.type===e?c:{type:e,end:t,start:t,value:""};return n.value=r+n.value,n.start=t,n.start===n.end&&s.push(n),c=n};for(;i>0&&o>0;)e[i-1]===t[o-1]?(l("=",i-1,e[i-1]),i--,o--):r[i-1][o]>r[i][o-1]?(l("-",i-1,e[i-1]),i--):(l("+",o-1,t[o-1]),o--);for(;i>0;)l("-",i-1,e[i-1]),i--;for(;o>0;)l("+",o-1,t[o-1]),o--;return s.reverse()}e.Strings=class Strings{static leftPad(e,t,r){let n=e.toString();for(;n.length<t;)n=r+n;return n}static format(t,...r){const n=Array.from(r);let a=t;for(let e=0;e<n.length;e++){const t=new RegExp("(^|[^\\{])\\{"+e+"\\}($|[^\\}])","g");a=a.replaceAll(t,((t,...r)=>t.replace("{"+e+"}",n[e])))}const s=/(^|[^\{}])\{(\d+)\}($|[^\}])/.exec(a);if(!e.NullChecker.isNullOrEmpty(s))throw new Error(`Missing argument at index ${s[2]}.`);return a}static diff(e,r){return t(e,r)}}}(Pacem||(Pacem={})),function(e){!function(e){class LexerClass{tokenize(e,t){const r=[];for(;e;){const n=e.length;for(let n of t){const t=n.exec(e,this),a=t?.length;if(a>0){Array.prototype.push.apply(r,t);const n=t[a-1];e=e.substr((n.index||0)+n.raw.length);break}}if(e.length>=n)throw new Error(`Cannot parse\n"${e}"\n using the provided grammar.`)}return r}}e.Parser=class Parser{_lexer;constructor(e=new LexerClass){this._lexer=e}parse(e,t,r){const n=this._lexer.tokenize(e,t);return r.render(n)}}}(e.Compile||(e.Compile={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){function r(e){return(e??"").replace(/</g,"&lt;")}function n(e){return e?.index||void 0}function a(e){return e?.replace(/[^\w]+/g," ").trim().replace(/ +/g,"-").toLowerCase()}function s(e,t,r){const n=t.exec(e);return n&&n.length?r(n):null}const i=/(<!--)([\s\S]*?)(-->|$)/,o=/^ {0,3}(={3,}|_{3,}|-{3,})(\r?\n|$)/,c=/^ {0,3}(#{1,6})\s+([^\n]+)(\r?\n|$)+/,l=/^ {0,3}([^\n]+)(\r?\n=+(\r?\n|$))+/,u=/^ {0,3}([^\n]+)(\r?\n-+(\r?\n|$))+/,h=/^ {4,}.+(\r?\n {4,}.+)*(\r?\n|$)+/,d=/^ {0,3}``` *([^\n]*)\r?\n(([\s\S](?!\r?\n {0,3}```))*.(\r?\n)+) {0,3}```(\r?\n|$)+/,g=/^ {0,3}> *([^\n]+)(\r?\n {0,3}> *([^\n]*))*(\r?\n|$)+/,f=/^( {0,3}([-+]).*\r?\n|$)((?!(?: {0,3}(?:\d+[.\)]|\r?\n\S))).*(\r?\n|$))*/,p=/^( {0,3}(\d+[.\)]).*\r?\n|$)((?!(?: {0,3}(?:[+-]|\r?\n\S))).*(\r?\n|$))*/,m=/^(?:[-+*]|\d+[.\)])/m,y=/^(?! {4,})(.+(\n(?! {0,3}```)(?! {0,3}([-+]|\d+[.\)]))(?! {4,})(?! {0,3}>).+)*)/,x=/^ {0,3}(!?)\[([^\]]+)\]: +(\S+)(?: +['"\(](.+)['"\)])?(\r?\n|$)+/,b=/!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?(\[[^\[\]]*\]|\([^\(\)]*\))?/,w=/(\*\*?|__?)(\[[^\]]*]\([^\)]+\))\1/,k=/(?:(?<!\\)`)(.+?)(?:(?<!\\)`)/,C=/(\*\*?|__?)((?!\1\s?)(?:(?!\1)[\S\s])*[^\s])\1/,$=/(~~?|__?)(?!\1\s?)([^\s][\s\S]*?(?!\1)[^\s])\1/,N=/(:")(?!":\s?)([^\s][\s\S]*?(?!":)[^\s])":/,R=/^\s+/,I=/ {2,}\r?\n/,P=/^[^\r\n]+/;let M,L;function S(t=[]){const S={[L.Comment]:{exec:(e,t)=>s(e,i,(r=>{const a=n(r),s=[{type:M.Html,index:a,raw:r[0],text:r[2]}];if(a>0){const r=e.substr(0,a),n=t.tokenize(r,U);Array.prototype.unshift.apply(s,n)}return s}))},[L.Reference]:{exec:e=>s(e,x,(e=>{const t=n(e),r=e[0],a=r,s="!"===e[1],i=e[2],o=e[3],c=e[4];return[{type:M.Reference,index:t,raw:r,text:a,id:i,image:s,url:o,title:c}]}))}},v=[],z=[],B={};for(let e of t){let t,r="inline";switch("type"in e?(r=e.type,t=e.rule):t=e,r){case"block":v.push(t);break;case"code":if("lang"in e){const r=e.lang.toLowerCase();(B[r]=B[r]||[]).push(t)}break;default:const r={exec:(e,r)=>{const n=t.exec(e,r);return _(e,n,r),n}};z.push(r)}}const E={[L.Text]:{exec:e=>s(e,P,(e=>{const t=e[0],r=t;return[{index:n(e),raw:t,text:r,type:M.Text}]}))},[L.Space]:{exec:e=>s(e,R,(e=>{const t=e[0];return[{type:M.Space,raw:t,text:t}]}))}},O={[L.ImageOrLink]:{exec:(t,r)=>A(t,b,r,(t=>{const s=n(t),i=t[0],o="!"===i.charAt(0),c=t[1],l=function(t){if(!(e.NullChecker.isNullOrEmpty(t)||/^\[/.test(t)&&/\]$/.test(t)))return/^\(/.test(t)&&/\)$/.test(t)&&(t=t.substr(1,t.length-2)),t}(t[2]),u=a(function(t){if(!(e.NullChecker.isNullOrEmpty(t)||/^\(/.test(t)&&/\)$/.test(t)))return/^\[/.test(t)&&/\]$/.test(t)&&(t=t.substr(1,t.length-2)),t}(t[2])??c);return o?[{index:s,type:l?M.Image:M.ImageLike,raw:i,text:c,src:l,ref:u,tokens:r.tokenize(c,D)}]:[{index:s,type:l?M.Link:M.LinkLike,raw:i,text:c,href:l,ref:u,tokens:r.tokenize(c,D)}]}))},[L.Code]:{exec:(e,t)=>A(e,k,t,(e=>{const t=r(e[1]);return[{type:M.Code,raw:e[0],text:t,index:n(e)}]}))},[L.EmphasizedLink]:{exec:(t,r)=>A(t,w,r,(t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=t[1].length>1?M.Bold:M.Italic,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,D)}]}))},[L.Emphasize]:{exec:(t,r)=>A(t,C,r,(t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=t[1].length>1?M.Bold:M.Italic,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,D)}]}))},[L.StrikeThrough]:{exec:(t,r)=>A(t,$,r,(t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=M.StrikeThrough,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,D)}]}))},[L.Quote]:{exec:(t,r)=>A(t,N,r,(t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=M.Quote,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,D)}]}))},[L.LineBreak]:{exec:(e,t)=>A(e,I,t,(e=>{const t=e[0],r=t;return[{index:n(e),raw:t,text:r,type:M.LineBreak}]}))}},_=(e,t,r)=>{const n=t?.length>0&&t[0].index;if(n>0){const a=e.substr(0,n),s=r.tokenize(a,D)||[];Array.prototype.unshift.apply(t,s)}},A=(e,t,r,n)=>{const a=s(e,t,(r=>{if(t!=k){const t=k.exec(e);if(t&&t.length&&t.index<r.index)return null}return n(r)}));return _(e,a,r),a},D=Object.values(O);Array.prototype.push.apply(D,z),D.push(E[L.Text],E[L.Space]);const T=e=>{const t=[E[L.Text],E[L.Space]],r=e?.toLowerCase()||"";return r&&r in B&&Array.prototype.unshift.apply(t,B[r]),t},H={[L.Paragraph]:{exec:(e,t)=>s(e,y,(e=>{const r=e[0],n=r;return[{type:M.Paragraph,raw:r,text:n,tokens:t.tokenize(n,D)}]}))},[L.Space]:E[L.Space]},j=(e,t)=>{const r=/^ {0,3}(`{3,}|$|>|[+-]\s|\d+[.\)])/m.test(e)?U:D;return t.tokenize(e,r)},F={[L.HorizontalRule]:{exec:(e,t)=>s(e,o,(e=>{const t=e[0],r=t;return[{type:M.HorizontalRule,raw:t,text:r}]}))},[L.Heading]:{exec:(e,t)=>s(e,c,(e=>{const r=e[2];return[{type:M.Heading,raw:e[0],text:r,level:e[1].length,ref:a(r),tokens:t.tokenize(r,D)}]}))},[L.Heading1]:{exec:(e,t)=>s(e,l,(e=>{const r=e[1];return[{type:M.Heading,raw:e[0],text:r,level:1,ref:a(r),tokens:t.tokenize(r,D)}]}))},[L.Heading2]:{exec:(e,t)=>s(e,u,(e=>{const r=e[1];return[{type:M.Heading,raw:e[0],text:r,level:2,ref:a(r),tokens:t.tokenize(r,D)}]}))},[L.CodeBlock]:{exec:(e,t)=>s(e,h,(e=>{const n=e[0],a=r(n);return[{type:M.CodeBlock,raw:n,text:a,tokens:t.tokenize(a,[])}]}))},[L.Fences]:{exec:(e,t)=>s(e,d,(e=>{const n=r(e[2]),a=e[1]?.toLowerCase();return[{type:M.CodeBlock,raw:e[0],text:n,lang:a,tokens:t.tokenize(n,T(a))}]}))},[L.BlockQuote]:{exec:(e,t)=>s(e,g,(e=>{const r=e[0],n=r.replace(/^ {0,3}> */gm,"");return[{type:M.BlockQuote,raw:r,text:n,tokens:t.tokenize(n,[H[L.Paragraph],H[L.Space]])}]}))},[L.OrderedList]:{exec:(t,r)=>s(t,p,(t=>{const n=t[0],a=n.replace(/^ {0,3}/gm,"").split(m).filter((t=>!e.NullChecker.isNullOrEmpty(t))).map((e=>e.trim()));return[{type:M.OrderedList,start:parseInt(/\d/.exec(t[0])[0]),raw:n,text:n,tokens:a.map((e=>({type:M.ListItem,raw:e,text:e,tokens:j(e,r)})))}]}))},[L.UnorderedList]:{exec:(t,r)=>s(t,f,(t=>{const n=t[0],a=n.replace(/^ {0,3}/gm,"").split(m).filter((t=>!e.NullChecker.isNullOrEmpty(t))).map((e=>e.trim()));return[{type:M.UnorderedList,raw:n,text:n,tokens:a.map((e=>({type:M.ListItem,raw:e,text:e,tokens:j(e,r)})))}]}))}},U=Object.values(F);return Array.prototype.push.apply(U,v),U.push(H[L.Paragraph],H[L.Space]),[S[L.Comment],S[L.Reference]].concat(U)}!function(e){e.Html="html",e.Text="text",e.Paragraph="paragraph",e.BlockQuote="blockquote",e.Space="space",e.Heading="heading",e.Bold="bold",e.Italic="italic",e.CodeBlock="codeblock",e.Code="code",e.Image="img",e.ImageLike="imglike",e.Link="link",e.LinkLike="linklike",e.LineBreak="br",e.StrikeThrough="strike",e.Quote="quote",e.HorizontalRule="hr",e.OrderedList="ol",e.UnorderedList="ul",e.ListItem="listitem",e.Reference="ref"}(M||(M={})),function(e){e[e.Comment=0]="Comment",e[e.Reference=1]="Reference",e[e.HorizontalRule=2]="HorizontalRule",e[e.Heading=3]="Heading",e[e.Heading1=4]="Heading1",e[e.Heading2=5]="Heading2",e[e.CodeBlock=6]="CodeBlock",e[e.Fences=7]="Fences",e[e.BlockQuote=8]="BlockQuote",e[e.OrderedList=9]="OrderedList",e[e.UnorderedList=10]="UnorderedList",e[e.Paragraph=11]="Paragraph",e[e.EmphasizedLink=12]="EmphasizedLink",e[e.ImageOrLink=13]="ImageOrLink",e[e.Emphasize=14]="Emphasize",e[e.StrikeThrough=15]="StrikeThrough",e[e.Quote=16]="Quote",e[e.Code=17]="Code",e[e.LineBreak=18]="LineBreak",e[e.Text=254]="Text",e[e.Space=255]="Space"}(L||(L={}));const v=/[ \r\n]*\0+[ \r\n]*/g;class HtmlRenderer{_extraItemRender;constructor(e=(e,t)=>e?.text||""){this._extraItemRender=e}_renderContent=t=>{const r=t.tokens;return e.NullChecker.isNullOrEmpty(r)?t.text:this._render(r)};_rendeItem(e,t){const r=this._renderContent,n="\0";switch(e?.type){case M.Reference:return"";case M.Html:return e.raw;case M.BlockQuote:return`<blockquote>\n${r(e)}</blockquote>${n}`;case M.Bold:return`<b>${r(e)}</b>`;case M.CodeBlock:const a=e.lang;return`<pre>${n}<code${a?' class="'+a+'"':""}>${r(e)}</code>${n}</pre>${n}`;case M.Code:return`<code>${r(e)}</code>`;case M.HorizontalRule:return`<hr />${n}`;case M.Heading:const s=e.level;return`<h${s} id="${e.ref}">${r(e)}</h${s}>${n}`;case M.Image:case M.ImageLike:const i=e;let o=i.src,c="";const l=i.text,u=i.ref;if(!o&&u){const e=t.find((e=>e.type===M.Reference&&!0===e.image&&e.id?.toLowerCase()===u.toLowerCase()));e&&(o=e.url,c=e.title??"")}return o?`<img src="${o}" alt="${l}"${c?' title="'+c+'"':""} />`:`![${r(e)}]`;case M.Italic:return`<i>${r(e)}</i>`;case M.StrikeThrough:return`<s>${r(e)}</s>`;case M.Quote:return`<q>${r(e)}</q>`;case M.LineBreak:return"<br />\0";case M.OrderedList:return`<ol start="${e.start}">\n${r(e)}</ol>${n}`;case M.UnorderedList:return`<ul>\n${r(e)}</ul>${n}`;case M.ListItem:return`\t<li>${r(e)}</li>${n}`;case M.Link:case M.LinkLike:const h=e;let d=h.href,g="";const f=h.ref;if(!d&&f){const e=t.find((e=>e.type===M.Reference&&!0!==e.image&&e.id?.toLowerCase()===f.toLowerCase()));e&&(d=e.url,g=e.title??"")}return d?`<a href="${d}"${g?' title="'+g+'"':""}>${r(e)}</a>`:`[${r(e)}]`;case M.Paragraph:return`<p>${r(e)}</p>${n}`;case M.Text:case M.Space:return e.text}return this._extraItemRender(e,t)}_render(e){let t="";for(let r of e||[])t+=this._rendeItem(r,e);return t}render(e){return t=this._render(e),t?.replace(v,"\n").trim();var t}}class TokenRenderer{_render(t){return e.NullChecker.isNullOrEmpty(t)?"":JSON.stringify(t)}render(t){return"["+t.filter((t=>!e.NullChecker.isNullOrEmpty(t))).map(this._render).join(",")+"]"}}class Parser extends e.Compile.Parser{toHtml(t,r,n){const a=new HtmlRenderer(n);return e.NullChecker.isNullOrEmpty(r)?this.parse(t,a):this.parse(t,S(r),a)}tokenize(e,t){const r=this.parse(e,S(t),new TokenRenderer);return JSON.parse(r)}parse(e,t=S(),r=new HtmlRenderer){return(n=t)&&"object"==typeof n&&"function"==typeof n.render?super.parse(e,S(),t):super.parse(e,t,r);var n}}t.Parser=Parser}(t.Markdown||(t.Markdown={}))}(e.Compile||(e.Compile={}))}(Pacem||(Pacem={}));
6
+ var Pacem;!function(e){e.Arrays=class Arrays{static range(e,t,r=2){let n=e;const a=(t-e)/(r-1),s=[];if(a>0)for(;s.length<r;)s.push(n.roundoff()),n+=a;return s}static chunkify(t,r){if(e.NullChecker.isNullOrEmpty(t))return[];if(r<=0||r%1!=0)throw new Error("Provide a positive integer number.");const n=Math.ceil(t.length/r);return Array.from({length:n},((e,n)=>{const a=n*r,s=a+r;return t.slice(a,s)}))}}}(Pacem||(Pacem={})),function(e){class Blobs{static blobToDataURL(e){return new Promise(((t,r)=>{const n=new FileReader;n.onload=e=>{t(e.target.result)},n.readAsDataURL(e)}))}static _b64ToUint8Array(e){let t=e.length;const r=new Uint8Array(t);for(;t--;)r[t]=e.charCodeAt(t);return r}static base64ToBlob(e,t){const r=Blobs._b64ToUint8Array(atob(e));return new Blob([r],t)}static dataURLToBlob(e){const t=e.indexOf(",");if(-1===t)return Blobs.base64ToBlob(e);{const r=e.substring(t+1),n=e.substring(0,t).match(/:(.*?);/)[1];return Blobs.base64ToBlob(r,{type:n})}}static blobToText(e,t){return new Promise(((r,n)=>{e.arrayBuffer().then((e=>{const n=new TextDecoder(t).decode(e);r(n)}))}))}static textToBlob(e,t="text/plain"){const r=(new TextEncoder).encode(e);return new Blob([r],{type:t})}}e.Blobs=Blobs}(Pacem||(Pacem={})),function(e){!function(e){const t=(e,t)=>{const r=e.match(t);return r?r[2]:null};e.detect=function(e=navigator.userAgent){let r="unknown",n=null;switch(/ucbrowser/i.test(e)?r="UCBrowser":/edg/i.test(e)?r="Edge":/googlebot/i.test(e)?r="GoogleBot":/chromium/i.test(e)?r="Chromium":/firefox|fxios/i.test(e)&&!/seamonkey/i.test(e)?r="Firefox":/; msie|trident/i.test(e)&&!/ucbrowser/i.test(e)?r="IE":/chrome|crios/i.test(e)&&!/opr|opera|chromium|edg|ucbrowser|googlebot/i.test(e)?r="Chrome":/safari/i.test(e)&&!/chromium|edg|ucbrowser|chrome|crios|opr|opera|fxios|firefox/i.test(e)?r="Safari":/opr|opera/i.test(e)&&(r="Opera"),r){case"UCBrowser":n=t(e,/(ucbrowser)\/([\d\.]+)/i);break;case"Edge":n=t(e,/(edge|edga|edgios|edg)\/([\d\.]+)/i);break;case"GoogleBot":n=t(e,/(googlebot)\/([\d\.]+)/i);break;case"Chromium":n=t(e,/(chromium)\/([\d\.]+)/i);break;case"Firefox":n=t(e,/(firefox|fxios)\/([\d\.]+)/i);break;case"Chrome":n=t(e,/(chrome|crios)\/([\d\.]+)/i);break;case"Safari":n=t(e,/(safari)\/([\d\.]+)/i);break;case"Opera":n=t(e,/(opera|opr)\/([\d\.]+)/i);break;case"IE":{const r=t(e,/(trident)\/([\d\.]+)/i);n=r?`${parseFloat(r)+4}`:"7.0";break}default:n="0.0.0.0"}return{name:r,version:n}}}(e.Browsers||(e.Browsers={}))}(Pacem||(Pacem={})),function(e){const t=/^hsl\s*\(\s*([\d\.]+)\s*,\s*([\d\.]+)%\s*,\s*([\d\.]+)%\s*\)$/,r=/^hsla\s*\(\s*([\d\.]+)\s*,\s*([\d\.]+)%\s*,\s*([\d\.]+)%\s*,\s*([\d\.]+)\)$/,n=/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/,a=/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\)$/,s=/^#[a-f0-9]{6}$/,i=/^#[a-f0-9]{3}$/;function o(t){return!e.NullChecker.isNullOrEmpty(t)&&"object"==typeof t&&"r"in t&&"g"in t&&"b"in t&&"number"==typeof t.r&&"number"==typeof t.b&&"number"==typeof t.g&&(t.a??=1,t.r>=0&&t.r<=1&&t.g>=0&&t.g<=1&&t.b>=0&&t.b<=1&&t.a>=0&&t.a<=1)}function c(t){return!e.NullChecker.isNullOrEmpty(t)&&"object"==typeof t&&"h"in t&&"s"in t&&"l"in t&&"number"==typeof t.h&&"number"==typeof t.s&&"number"==typeof t.l&&(t.a??=1,t.h>=0&&t.h<=360&&t.s>=0&&t.s<=1&&t.l>=0&&t.l<=1&&t.a>=0&&t.a<=1)}const l={adjustRgbChannel:e=>e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4),adjustRgbChannelInv:e=>e<=.00304?12.92*e:1.055*(Math.pow(e,1/2.4)-.055),adjustRgb:e=>({r:l.adjustRgbChannel(e.r),g:l.adjustRgbChannel(e.g),b:l.adjustRgbChannel(e.b),a:e.a}),adjustRgbInv:e=>({r:l.adjustRgbChannelInv(e.r),g:l.adjustRgbChannelInv(e.g),b:l.adjustRgbChannelInv(e.b),a:e.a}),X:e=>.4125*e.r+.3576*e.g+.1804*e.b,Y:e=>.2126*e.r+.7152*e.g+.0722*e.b,Z:e=>.0193*e.r+.1191*e.g+.9503*e.b,relativeLuminance:e=>{const t=l.adjustRgb(e);return l.Y(t)},rgbToCieXYZ:e=>{const t=l.adjustRgb(e);return{x:l.X(t),y:l.Y(t),z:l.Z(t),a:e.a}},cieXYZToRgb:e=>{const t=3.241*e.x-1.5374*e.y-.4986*e.z,r=-.9692*e.x+1.876*e.y+.0416*e.z,n=.0556*e.x-.204*e.y+1.057*e.z;return l.adjustRgbInv({r:t,g:r,b:n,a:e.a})},contrastRatio:(e,t)=>{const r=l.relativeLuminance(e)+.05,n=l.relativeLuminance(t)+.05;return r>n?r/n:n/r}};function u(t){return e.Strings.leftPad(t.toString(16),2,"0")}class Colors{static _clampRGB(e){const t=e=>Math.min(1,Math.max(0,e));return null==e[3]&&(e[3]=1),{r:t(e[0]),g:t(e[1]),b:t(e[2]),a:Math.min(1,Math.max(0,e[3]))}}static _normalize(e){return[e[0]/255,e[1]/255,e[2]/255,e[3]]}static parse(e){if(e=(e||"").toLowerCase(),n.test(e)){let t=n.exec(e);return this._clampRGB(this._normalize([parseInt(t[1]),parseInt(t[2]),parseInt(t[3]),1]))}if(a.test(e)){let t=a.exec(e);return this._clampRGB(this._normalize([parseInt(t[1]),parseInt(t[2]),parseInt(t[3]),parseFloat(t[4])]))}if(s.test(e)){let t=s.exec(e)[0];return this._clampRGB(this._normalize([parseInt("0x"+t.substr(1,2)),parseInt("0x"+t.substr(3,2)),parseInt("0x"+t.substr(5,2)),1]))}if(i.test(e)){let t=i.exec(e)[0],r=t.substr(1,1),n=t.substr(2,1),a=t.substr(3,1);return this._clampRGB(this._normalize([parseInt("0x"+r+r),parseInt("0x"+n+n),parseInt("0x"+a+a),1]))}if(t.test(e)){let r=t.exec(e);const n={h:parseFloat(r[1]),s:.01*parseFloat(r[2]),l:.01*parseFloat(r[3])};return this.rgb(n)}if(r.test(e)){let t=r.exec(e);const n={h:parseFloat(t[1]),s:.01*parseFloat(t[2]),l:.01*parseFloat(t[3]),a:parseFloat(t[4])};return this.rgb(n)}}static hsl(e){const t=function(e){const t=e.r,r=e.g,n=e.b;return.5*(Math.max(t,r,n)+Math.min(t,r,n))}(e),r=function(e,t){const r=e.r,n=e.g,a=e.b,s=Math.max(r,n,a),i=Math.min(r,n,a);return 0===t||1===t?0:(s-i)/(1-Math.abs(2*t-1))}(e,t),n=function(e){const t=e.r,r=e.g,n=e.b;return t>=r&&r>n?60*(r-n)/(t-n):r>t&&t>=n?60*(2-(t-n)/(r-n)):r>=n&&n>t?60*(2+(n-t)/(r-t)):n>r&&r>t?60*(4-(r-t)/(n-t)):n>t&&t>=r?60*(4+(t-r)/(n-r)):t>=n&&n>r?60*(6-(n-r)/(t-r)):void 0}(e);return{h:n,s:r,l:t,a:e.a}}static cieXYZ(e){return c(e)&&(e=this.rgb(e)),l.rgbToCieXYZ(e)}static rgb(e){if(!c(e)){const t=l.cieXYZToRgb(e);return this._clampRGB([t.r,t.g,t.b,t.a])}{const t=e.h,r=e.s,n=e.l,a=t/60,s=(1-Math.abs(2*n-1))*r,i=s*(1-Math.abs(a%2-1)),o=n-s/2,c=(t,r,n)=>this._clampRGB([t+o,r+o,n+o,e.a]);if(a<=1)return c(s,i,0);if(a<=2)return c(i,s,0);if(a<=3)return c(0,s,i);if(a<=4)return c(0,i,s);if(a<=5)return c(i,0,s);if(a<=6)return c(s,0,i)}}static stringify(e,t=1){if(c(e)){t??=1,e.a??=1;const r="number"==typeof t?t:1;return`hsla(${e.h.roundoff(r)},${(100*e.s).roundoff(r)}%,${(100*e.l).roundoff(r)}%,${e.a.roundoff()})`}if(o(e)){t??=!0,e.a??=1;const r="boolean"==typeof t?t:!!t,n=Math.round(255*e.r),a=Math.round(255*e.g),s=Math.round(255*e.b),i=e.a.roundoff();return 1===i?r?("#"+u(n)+u(a)+u(s)).toUpperCase():`rgb(${n},${a},${s})`:`rgba(${n},${a},${s},${i})`}}static contrastRatio(e,t){return c(e)&&(e=this.rgb(e)),c(t)&&(t=this.rgb(t)),l.contrastRatio(e,t)}static luminance(e){return c(e)&&(e=Colors.rgb(e)),l.relativeLuminance(e)}static lighten(e,t=.1){if(t||=0,c(e)){const r=Math.min(1,Math.max(0,e.l+t));return Object.assign({},e,{l:r})}if(o(e)){const r=this.lighten(this.hsl(e),t);return this.rgb(r)}return e}static darken(e,t=.1){return this.lighten(e,-t)}static saturate(e,t=.1){if(t||=0,c(e)){const r=Math.min(1,Math.max(0,e.s+t));return Object.assign({},e,{s:r})}if(o(e)){const r=this.saturate(this.hsl(e),t);return this.rgb(r)}return e}static desaturate(e,t=.1){return this.saturate(e,-t)}static interpolate(e,t,r,n){r??=.5,n??=r;const a=(r+n).roundoff(),s=(r/a).roundoff(),i=(n/a).roundoff(),l=o(e),u=c(e),h=e=>o(e)||c(e)?Colors.cieXYZ(e):e;e=h(e),t=h(t);const d={x:(e.x*s+t.x*i).roundoff(),y:(e.y*s+t.y*i).roundoff(),z:(e.z*s+t.z*i).roundoff(),a:(e.a*s+t.a*i).roundoff()};return l?Colors.rgb(d):u?Colors.hsl(Colors.rgb(d)):d}}e.Colors=Colors}(Pacem||(Pacem={})),function(e){const t=/^\/Date\([\d]+\)\/$/i;class Dates{static parse(e){let r;return"string"==typeof e?(r=t.test(e)?parseInt(e.substring(6)):Date.parse(e),new Date(r)):"number"==typeof e?new Date(e):e}static isLeapYear(e){return e%4==0&&e%100!=0||e%400==0}static daysInMonth(e,t){return[31,Dates.isLeapYear(e)?29:28,31,30,31,30,31,31,30,31,30,31][t]}static isDate(e){return e instanceof Date&&!isNaN(e.valueOf())}static dateOnly(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate())}static addMonths(e,t){let r=e.getDate(),n=new Date(e),a=n.getMonth()+t,s=0;for(;a<0;)a+=12,s--;return n.setDate(1),n.setMonth(a%12),n.setFullYear(n.getFullYear()+s+Math.floor(a/12)),n.setDate(Math.min(r,Dates.daysInMonth(n.getFullYear(),n.getMonth()))),n}static addDays(e,t){return new Date(e.valueOf()+864e5*t)}static daysBetween(e,t){return(t.valueOf()-e.valueOf())/864e5}}e.Dates=Dates}(Pacem||(Pacem={})),function(e){const t=/[-+]?([\d]+(\.[\d]+(e-[\d]+)?)?|[\d]*(\.[\d]+(e-[\d]+)?))/g;function r(e){const r=[];let n=e.match(t);return n&&n.length>0&&n.forEach((e=>r.push(parseFloat(e)))),r}e.parseAsNumericalArray=r;class Angle{static isAngle(e){return"object"==typeof e&&"vertex"in e&&Point.isPoint(e.vertex)&&"start"in e&&Point.isPoint(e.start)&&"end"in e&&Point.isPoint(e.end)}static value(t){if(e.NullChecker.isNullOrEmpty(t)||!Angle.isAngle(t))return Number.NaN;const{vertex:r,start:n,end:a}=t;return Angle.angleBetween(r,n,a)}static angleBetween(e,t,r){const n=t.x-e.x,a=t.y-e.y,s=r.x-e.x,i=r.y-e.y,o=n*s+a*i,c=n*i-a*s;return-Math.atan2(c,o)}}e.Angle=Angle;class Size{static parse(e){let t=r(e);if(t&&2===t.length)return{width:t[0],height:t[1]};throw new Error(`Cannot parse "${e}" as a valid Size.`)}static isSize(e){return"object"==typeof e&&"width"in e&&"number"==typeof e.width&&"height"in e&&"number"==typeof e.height}}e.Size=Size;class Point{static parse(e){let t=r(e);if(t&&2===t.length)return{x:t[0],y:t[1]};throw new Error(`Cannot parse "${e}" as a valid Point.`)}static isPoint(e){return"object"==typeof e&&"x"in e&&"number"==typeof e.x&&"y"in e&&"number"==typeof e.y}static distance(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}static subtract(e,t){return{x:t.x-e.x,y:t.y-e.y}}static add(...e){var t={x:0,y:0};for(var r of e)t.x+=r.x,t.y+=r.y;return t}static multiply(e,t){return{x:e.x*t,y:e.y*t}}}e.Point=Point;class Rect{static parse(e){let t=r(e);if(t&&4===t.length)return{x:t[0],y:t[1],width:t[2],height:t[3]};throw new Error(`Cannot parse "${e}" as a valid Rect.`)}static isRect(e){return Point.isPoint(e)&&Size.isSize(e)}static _stretch(e,t){return{a:t.width/e.width,b:0,c:0,d:t.height/e.height,e:t.x-e.x,f:t.y-e.y}}static _contain(t,r,n,a){let s=1;s=t.width/t.height>=r.width/r.height?r.width/t.width:r.height/t.height;const i=t.width*s,o=t.height*s,c=this._align({x:t.x,y:t.y,width:i,height:o},r,n,a);return e.Matrix2D.translate({a:s,b:0,c:0,d:s,e:0,f:0},c)}static _cover(t,r,n,a){let s=1;s=t.width/t.height<r.width/r.height?r.width/t.width:r.height/t.height;const i=t.width*s,o=t.height*s,c=this._align({x:t.x,y:t.y,width:i,height:o},r,n,a);return e.Matrix2D.translate({a:s,b:0,c:0,d:s,e:0,f:0},c)}static _align(e,t,r,n){let a=0,s=0;switch(r){case"left":a=t.x-e.x;break;case"right":a=t.x+t.width-e.width-e.x;break;default:a=t.x+.5*t.width-.5*e.width-e.x}switch(n){case"top":s=t.y-e.y;break;case"bottom":s=t.y+t.height-e.height-e.y;break;default:s=t.y+.5*t.height-.5*e.height-e.y}return{x:a,y:s}}static findTransform(e,t,r="stretch",n="center",a="middle"){switch(r){case"contain":return this._contain(e,t,n,a);case"cover":return this._cover(e,t,n,a);default:return this._stretch(e,t)}}static intersect(...e){const t={x:0,y:0,height:0,width:0},r=Array.from(e||[]);if(r.length<=0)return t;for(var n=r[0],a=1;a<r.length;a++){const e=r[a],s=Math.max(e.x,n.x),i=Math.max(e.y,n.y),o=Math.min(e.x+e.width,n.x+n.width)-s,c=Math.min(e.y+e.height,n.y+n.height)-i;if(o<0||c<=0)return t;n={x:s,y:i,width:o,height:c}}return n}static expand(e,...t){const r=Array.from(t||[]);let n=e.x,a=e.y,s=n,i=a;Rect.isRect(e)&&(s+=e.width,i+=e.height);for(let e of r)n=Math.min(e.x,n),a=Math.min(e.y,a),s=Math.max(e.x,s),i=Math.max(e.y,i);return{x:n,y:a,width:s-n,height:i-a}}}e.Rect=Rect}(Pacem||(Pacem={})),function(e){e.HistoryService=class HistoryService{constructor(e,t){this.#e=e,this.#t=t}#r=[];#n=[];#t;#e;get current(){return this.#e}get canUndo(){return this.#r.length>0}get canRedo(){return this.#n.length>0}set maxlength(e){this.#t=e}undo(){if(this.canUndo){const e=this.#r,t=this.#n,r=this.#e;t.unshift(r),this.#e=e.pop()}}redo(){if(this.canRedo){const e=this.#r,t=this.#n,r=this.#e;e.push(r),this.#e=t.shift()}}push(e){this.#n.splice(0),this.#r.push(this.#e),this.#e=e;const t=this.#t,r=this.#r;t>0&&r.length>t&&r.splice(0,r.length-t)}reset(){this.#n.splice(0),this.#r.splice(0)}}}(Pacem||(Pacem={})),function(e){const t={mode:"stretch",align:"center",valign:"middle",quality:1,type:"image/jpeg"};class Imaging{static async loadImage(e){const t=await fetch(e);if(!t.ok)return null;return await t.blob()}static async resizeImage(r,n,a,s){if(n<=0||a<=0||isNaN(n)||isNaN(a))throw new Error("Invalid target size");"string"==typeof r&&(r=await Imaging.loadImage(r));const i=await self.createImageBitmap(r),o=i.width,c=i.height,l=new OffscreenCanvas(o,c),u=l.getContext("2d");u.imageSmoothingEnabled=u.mozImageSmoothingEnabled=u.oImageSmoothingEnabled=u.webkitImageSmoothingEnabled=!0;const{quality:h,type:d,mode:g,align:f,valign:p,background:m}=Object.assign({},t,s??{}),y={width:o,height:c,x:0,y:0},x={x:0,y:0,width:n,height:a},b=e.Rect.findTransform(y,x,g,f,p);l.width=n,l.height=a,m&&(u.fillStyle=m,u.fillRect(0,0,l.width,l.height)),u.setTransform(b),u.drawImage(i,0,0);return await l.convertToBlob({quality:h,type:d})}}e.Imaging=Imaging}(Pacem||(Pacem={})),function(e){class Keys{static#a;static uniqueId(){let e=Keys.#a||Date.now();return Keys.#a=++e}static uniqueCode(){return Keys.uniqueId().toBase62()}static randomString(e){let t="";do{t+=(62*Math.random()).toBase62()}while(t.length<e);return t}}e.Keys=Keys}(Pacem||(Pacem={})),function(e){class Matrix2D{static isIdentity(e){return 1===e.a&&1===e.d&&0===e.b&&0===e.f&&0===e.c&&0===e.e}static get identity(){return{a:1,b:0,c:0,d:1,e:0,f:0}}static copy(e){return{a:e.a,b:e.b,c:e.c,d:e.d,e:e.e,f:e.f}}static scale(e,t,r=t){return{a:e.a*t,b:e.b,c:e.c,d:e.d*r,e:e.e,f:e.f}}static translate(e,t){return{a:e.a,b:e.b,c:e.c,d:e.d,e:e.e+t.x,f:e.f+t.y}}static rotate(e,t){const r=Math.cos(t),n=Math.sin(t);return Matrix2D.multiply(e,{a:r,b:n,c:-n,d:r,e:0,f:0})}static multiply(e,t){return"x"in e&&"y"in e?"number"==typeof t?{x:e.x*t,y:e.y*t}:{x:e.x*t.a+e.y*t.c+t.e,y:e.x*t.b+e.y*t.d+t.f}:"number"==typeof t?{a:e.a*t,b:e.b*t,c:e.c*t,d:e.d*t,e:e.e*t,f:e.f*t}:{a:e.a*t.a+e.b*t.c,b:e.a*t.b+e.b*t.d,c:e.c*t.a+e.d*t.c,d:e.c*t.b+e.d*t.d,e:e.e*t.a+e.f*t.c+t.e,f:e.e*t.b+e.f*t.d+t.f}}static det(e){return e.a*e.d-e.c*e.b}static invert(e){const t=this.det(e);if(0===t)return null;const r=1/t;return this.multiply({a:e.d,b:-e.b,c:-e.c,d:e.a,e:-e.e*e.d+e.c*e.f,f:e.e*e.b-e.a*e.f},r)}}e.Matrix2D=Matrix2D}(Pacem||(Pacem={})),function(e){class NullChecker{static isNull(e){return null==e}static isEmpty(t){try{return Array.isArray(t)&&0===t.length||"string"==typeof t&&""===t||"object"==typeof t&&0===Object.keys(t).length&&!e.Dates.isDate(t)&&!(t instanceof RegExp)&&!(t instanceof FileSystemDirectoryHandle)&&!(t instanceof FileSystemFileHandle)}catch(e){return!1}}static isNullOrEmpty(e){return NullChecker.isNull(e)||NullChecker.isEmpty(e)}}e.NullChecker=NullChecker}(Pacem||(Pacem={})),Number.prototype.isCloseTo=function(e,t=14){return this.toFixed(t)===e.toFixed(t)},Number.prototype.roundoff=function(e=14){return parseFloat(this.toFixed(e))},Number.prototype.clamp=function(e,t){let r=this;return null==e||isNaN(e)||(r=Math.max(r,e)),null==t||isNaN(t)||(r=Math.min(r,t)),r},Number.prototype.toBase62=function(){for(var e=this,t="";0!=e;){t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".charAt(e%62)+t,e=Math.floor(e/62)}return t},Number.prototype.toBase36=function(){return this.toString(36)},function(e){e.Numbers=class Numbers{static round(e,t=1){return Math.round(e/t)*t}static log(e,t){return Math.log10(e)/Math.log10(t)}static rebase(e,t,r){const n=e.toString(),a=parseInt(n,t);return n.endsWith(a.toString(t))?parseInt(e.toString(),t).toString(r):Number.NaN.toString()}}}(Pacem||(Pacem={})),function(e){function t(e,t){const r=function(e,t){const r=e.length,n=t.length,a=Array.from({length:r+1},(()=>Array(n+1).fill(0)));for(let s=1;s<=r;s++)for(let r=1;r<=n;r++)e[s-1]===t[r-1]?a[s][r]=a[s-1][r-1]+1:a[s][r]=Math.max(a[s-1][r],a[s][r-1]);return a}(e,t),n=e.length,a=t.length,s=[];let i=n,o=a,c=null;const l=(e,t,r)=>{const n=c?.type===e?c:{type:e,end:t,start:t,value:""};return n.value=r+n.value,n.start=t,n.start===n.end&&s.push(n),c=n};for(;i>0&&o>0;)e[i-1]===t[o-1]?(l("=",i-1,e[i-1]),i--,o--):r[i-1][o]>r[i][o-1]?(l("-",i-1,e[i-1]),i--):(l("+",o-1,t[o-1]),o--);for(;i>0;)l("-",i-1,e[i-1]),i--;for(;o>0;)l("+",o-1,t[o-1]),o--;return s.reverse()}e.Strings=class Strings{static leftPad(e,t,r){let n=e.toString();for(;n.length<t;)n=r+n;return n}static format(t,...r){const n=Array.from(r);let a=t;for(let e=0;e<n.length;e++){const t=new RegExp("(^|[^\\{])\\{"+e+"\\}($|[^\\}])","g");a=a.replaceAll(t,((t,...r)=>t.replace("{"+e+"}",n[e])))}const s=/(^|[^\{}])\{(\d+)\}($|[^\}])/.exec(a);if(!e.NullChecker.isNullOrEmpty(s))throw new Error(`Missing argument at index ${s[2]}.`);return a}static diff(e,r){return t(e,r)}}}(Pacem||(Pacem={})),function(e){!function(e){class LexerClass{tokenize(e,t){const r=[];for(;e;){const n=e.length;for(let n of t){const t=n.exec(e,this),a=t?.length;if(a>0){Array.prototype.push.apply(r,t);const n=t[a-1];e=e.substr((n.index||0)+n.raw.length);break}}if(e.length>=n)throw new Error(`Cannot parse\n"${e}"\n using the provided grammar.`)}return r}}e.Parser=class Parser{_lexer;constructor(e=new LexerClass){this._lexer=e}parse(e,t,r){const n=this._lexer.tokenize(e,t);return r.render(n)}}}(e.Compile||(e.Compile={}))}(Pacem||(Pacem={})),function(e){!function(t){!function(t){function r(e){return(e??"").replace(/</g,"&lt;")}function n(e){return e?.index||void 0}function a(e){return e?.replace(/[^\w]+/g," ").trim().replace(/ +/g,"-").toLowerCase()}function s(e,t,r){const n=t.exec(e);return n&&n.length?r(n):null}const i=/(<!--)([\s\S]*?)(-->|$)/,o=/^ {0,3}(={3,}|_{3,}|-{3,})(\r?\n|$)/,c=/^ {0,3}(#{1,6})\s+([^\n]+)(\r?\n|$)+/,l=/^ {0,3}([^\n]+)(\r?\n=+(\r?\n|$))+/,u=/^ {0,3}([^\n]+)(\r?\n-+(\r?\n|$))+/,h=/^ {4,}.+(\r?\n {4,}.+)*(\r?\n|$)+/,d=/^ {0,3}``` *([^\n]*)\r?\n(([\s\S](?!\r?\n {0,3}```))*.(\r?\n)+) {0,3}```(\r?\n|$)+/,g=/^ {0,3}> *([^\n]+)(\r?\n {0,3}> *([^\n]*))*(\r?\n|$)+/,f=/^( {0,3}([-+]).*\r?\n|$)((?!(?: {0,3}(?:\d+[.\)]|\r?\n\S))).*(\r?\n|$))*/,p=/^( {0,3}(\d+[.\)]).*\r?\n|$)((?!(?: {0,3}(?:[+-]|\r?\n\S))).*(\r?\n|$))*/,m=/^(?:[-+*]|\d+[.\)])/m,y=/^(?! {4,})(.+(\n(?! {0,3}```)(?! {0,3}([-+]|\d+[.\)]))(?! {4,})(?! {0,3}>).+)*)/,x=/^ {0,3}(!?)\[([^\]]+)\]: +(\S+)(?: +['"\(](.+)['"\)])?(\r?\n|$)+/,b=/!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?(\[[^\[\]]*\]|\([^\(\)]*\))?/,w=/(\*\*?|__?)(\[[^\]]*]\([^\)]+\))\1/,k=/(?:(?<!\\)`)(.+?)(?:(?<!\\)`)/,C=/(\*\*?|__?)((?!\1\s?)(?:(?!\1)[\S\s])*[^\s])\1/,$=/(~~?|__?)(?!\1\s?)([^\s][\s\S]*?(?!\1)[^\s])\1/,N=/(:")(?!":\s?)([^\s][\s\S]*?(?!":)[^\s])":/,R=/^\s+/,I=/ {2,}\r?\n/,P=/^[^\r\n]+/;let M,L;function B(t=[]){const B={[L.Comment]:{exec:(e,t)=>s(e,i,(r=>{const a=n(r),s=[{type:M.Html,index:a,raw:r[0],text:r[2]}];if(a>0){const r=e.substr(0,a),n=t.tokenize(r,U);Array.prototype.unshift.apply(s,n)}return s}))},[L.Reference]:{exec:e=>s(e,x,(e=>{const t=n(e),r=e[0],a=r,s="!"===e[1],i=e[2],o=e[3],c=e[4];return[{type:M.Reference,index:t,raw:r,text:a,id:i,image:s,url:o,title:c}]}))}},S=[],v=[],z={};for(let e of t){let t,r="inline";switch("type"in e?(r=e.type,t=e.rule):t=e,r){case"block":S.push(t);break;case"code":if("lang"in e){const r=e.lang.toLowerCase();(z[r]=z[r]||[]).push(t)}break;default:const r={exec:(e,r)=>{const n=t.exec(e,r);return _(e,n,r),n}};v.push(r)}}const E={[L.Text]:{exec:e=>s(e,P,(e=>{const t=e[0],r=t;return[{index:n(e),raw:t,text:r,type:M.Text}]}))},[L.Space]:{exec:e=>s(e,R,(e=>{const t=e[0];return[{type:M.Space,raw:t,text:t}]}))}},O={[L.ImageOrLink]:{exec:(t,r)=>T(t,b,r,(t=>{const s=n(t),i=t[0],o="!"===i.charAt(0),c=t[1],l=function(t){if(!(e.NullChecker.isNullOrEmpty(t)||/^\[/.test(t)&&/\]$/.test(t)))return/^\(/.test(t)&&/\)$/.test(t)&&(t=t.substr(1,t.length-2)),t}(t[2]),u=a(function(t){if(!(e.NullChecker.isNullOrEmpty(t)||/^\(/.test(t)&&/\)$/.test(t)))return/^\[/.test(t)&&/\]$/.test(t)&&(t=t.substr(1,t.length-2)),t}(t[2])??c);return o?[{index:s,type:l?M.Image:M.ImageLike,raw:i,text:c,src:l,ref:u,tokens:r.tokenize(c,A)}]:[{index:s,type:l?M.Link:M.LinkLike,raw:i,text:c,href:l,ref:u,tokens:r.tokenize(c,A)}]}))},[L.Code]:{exec:(e,t)=>T(e,k,t,(e=>{const t=r(e[1]);return[{type:M.Code,raw:e[0],text:t,index:n(e)}]}))},[L.EmphasizedLink]:{exec:(t,r)=>T(t,w,r,(t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=t[1].length>1?M.Bold:M.Italic,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,A)}]}))},[L.Emphasize]:{exec:(t,r)=>T(t,C,r,(t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=t[1].length>1?M.Bold:M.Italic,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,A)}]}))},[L.StrikeThrough]:{exec:(t,r)=>T(t,$,r,(t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=M.StrikeThrough,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,A)}]}))},[L.Quote]:{exec:(t,r)=>T(t,N,r,(t=>{if(t.length<3||e.NullChecker.isNullOrEmpty(t[2]))return null;const a=M.Quote,s=t[2];return[{index:n(t),type:a,raw:t[0],text:s,tokens:r.tokenize(s,A)}]}))},[L.LineBreak]:{exec:(e,t)=>T(e,I,t,(e=>{const t=e[0],r=t;return[{index:n(e),raw:t,text:r,type:M.LineBreak}]}))}},_=(e,t,r)=>{const n=t?.length>0&&t[0].index;if(n>0){const a=e.substr(0,n),s=r.tokenize(a,A)||[];Array.prototype.unshift.apply(t,s)}},T=(e,t,r,n)=>{const a=s(e,t,(r=>{if(t!=k){const t=k.exec(e);if(t&&t.length&&t.index<r.index)return null}return n(r)}));return _(e,a,r),a},A=Object.values(O);Array.prototype.push.apply(A,v),A.push(E[L.Text],E[L.Space]);const D=e=>{const t=[E[L.Text],E[L.Space]],r=e?.toLowerCase()||"";return r&&r in z&&Array.prototype.unshift.apply(t,z[r]),t},H={[L.Paragraph]:{exec:(e,t)=>s(e,y,(e=>{const r=e[0],n=r;return[{type:M.Paragraph,raw:r,text:n,tokens:t.tokenize(n,A)}]}))},[L.Space]:E[L.Space]},j=(e,t)=>{const r=/^ {0,3}(`{3,}|$|>|[+-]\s|\d+[.\)])/m.test(e)?U:A;return t.tokenize(e,r)},F={[L.HorizontalRule]:{exec:(e,t)=>s(e,o,(e=>{const t=e[0],r=t;return[{type:M.HorizontalRule,raw:t,text:r}]}))},[L.Heading]:{exec:(e,t)=>s(e,c,(e=>{const r=e[2];return[{type:M.Heading,raw:e[0],text:r,level:e[1].length,ref:a(r),tokens:t.tokenize(r,A)}]}))},[L.Heading1]:{exec:(e,t)=>s(e,l,(e=>{const r=e[1];return[{type:M.Heading,raw:e[0],text:r,level:1,ref:a(r),tokens:t.tokenize(r,A)}]}))},[L.Heading2]:{exec:(e,t)=>s(e,u,(e=>{const r=e[1];return[{type:M.Heading,raw:e[0],text:r,level:2,ref:a(r),tokens:t.tokenize(r,A)}]}))},[L.CodeBlock]:{exec:(e,t)=>s(e,h,(e=>{const n=e[0],a=r(n);return[{type:M.CodeBlock,raw:n,text:a,tokens:t.tokenize(a,[])}]}))},[L.Fences]:{exec:(e,t)=>s(e,d,(e=>{const n=r(e[2]),a=e[1]?.toLowerCase();return[{type:M.CodeBlock,raw:e[0],text:n,lang:a,tokens:t.tokenize(n,D(a))}]}))},[L.BlockQuote]:{exec:(e,t)=>s(e,g,(e=>{const r=e[0],n=r.replace(/^ {0,3}> */gm,"");return[{type:M.BlockQuote,raw:r,text:n,tokens:t.tokenize(n,[H[L.Paragraph],H[L.Space]])}]}))},[L.OrderedList]:{exec:(t,r)=>s(t,p,(t=>{const n=t[0],a=n.replace(/^ {0,3}/gm,"").split(m).filter((t=>!e.NullChecker.isNullOrEmpty(t))).map((e=>e.trim()));return[{type:M.OrderedList,start:parseInt(/\d/.exec(t[0])[0]),raw:n,text:n,tokens:a.map((e=>({type:M.ListItem,raw:e,text:e,tokens:j(e,r)})))}]}))},[L.UnorderedList]:{exec:(t,r)=>s(t,f,(t=>{const n=t[0],a=n.replace(/^ {0,3}/gm,"").split(m).filter((t=>!e.NullChecker.isNullOrEmpty(t))).map((e=>e.trim()));return[{type:M.UnorderedList,raw:n,text:n,tokens:a.map((e=>({type:M.ListItem,raw:e,text:e,tokens:j(e,r)})))}]}))}},U=Object.values(F);return Array.prototype.push.apply(U,S),U.push(H[L.Paragraph],H[L.Space]),[B[L.Comment],B[L.Reference]].concat(U)}!function(e){e.Html="html",e.Text="text",e.Paragraph="paragraph",e.BlockQuote="blockquote",e.Space="space",e.Heading="heading",e.Bold="bold",e.Italic="italic",e.CodeBlock="codeblock",e.Code="code",e.Image="img",e.ImageLike="imglike",e.Link="link",e.LinkLike="linklike",e.LineBreak="br",e.StrikeThrough="strike",e.Quote="quote",e.HorizontalRule="hr",e.OrderedList="ol",e.UnorderedList="ul",e.ListItem="listitem",e.Reference="ref"}(M||(M={})),function(e){e[e.Comment=0]="Comment",e[e.Reference=1]="Reference",e[e.HorizontalRule=2]="HorizontalRule",e[e.Heading=3]="Heading",e[e.Heading1=4]="Heading1",e[e.Heading2=5]="Heading2",e[e.CodeBlock=6]="CodeBlock",e[e.Fences=7]="Fences",e[e.BlockQuote=8]="BlockQuote",e[e.OrderedList=9]="OrderedList",e[e.UnorderedList=10]="UnorderedList",e[e.Paragraph=11]="Paragraph",e[e.EmphasizedLink=12]="EmphasizedLink",e[e.ImageOrLink=13]="ImageOrLink",e[e.Emphasize=14]="Emphasize",e[e.StrikeThrough=15]="StrikeThrough",e[e.Quote=16]="Quote",e[e.Code=17]="Code",e[e.LineBreak=18]="LineBreak",e[e.Text=254]="Text",e[e.Space=255]="Space"}(L||(L={}));const S=/[ \r\n]*\0+[ \r\n]*/g;class HtmlRenderer{_extraItemRender;constructor(e=(e,t)=>e?.text||""){this._extraItemRender=e}_renderContent=t=>{const r=t.tokens;return e.NullChecker.isNullOrEmpty(r)?t.text:this._render(r)};_rendeItem(e,t){const r=this._renderContent,n="\0";switch(e?.type){case M.Reference:return"";case M.Html:return e.raw;case M.BlockQuote:return`<blockquote>\n${r(e)}</blockquote>${n}`;case M.Bold:return`<b>${r(e)}</b>`;case M.CodeBlock:const a=e.lang;return`<pre>${n}<code${a?' class="'+a+'"':""}>${r(e)}</code>${n}</pre>${n}`;case M.Code:return`<code>${r(e)}</code>`;case M.HorizontalRule:return`<hr />${n}`;case M.Heading:const s=e.level;return`<h${s} id="${e.ref}">${r(e)}</h${s}>${n}`;case M.Image:case M.ImageLike:const i=e;let o=i.src,c="";const l=i.text,u=i.ref;if(!o&&u){const e=t.find((e=>e.type===M.Reference&&!0===e.image&&e.id?.toLowerCase()===u.toLowerCase()));e&&(o=e.url,c=e.title??"")}return o?`<img src="${o}" alt="${l}"${c?' title="'+c+'"':""} />`:`![${r(e)}]`;case M.Italic:return`<i>${r(e)}</i>`;case M.StrikeThrough:return`<s>${r(e)}</s>`;case M.Quote:return`<q>${r(e)}</q>`;case M.LineBreak:return"<br />\0";case M.OrderedList:return`<ol start="${e.start}">\n${r(e)}</ol>${n}`;case M.UnorderedList:return`<ul>\n${r(e)}</ul>${n}`;case M.ListItem:return`\t<li>${r(e)}</li>${n}`;case M.Link:case M.LinkLike:const h=e;let d=h.href,g="";const f=h.ref;if(!d&&f){const e=t.find((e=>e.type===M.Reference&&!0!==e.image&&e.id?.toLowerCase()===f.toLowerCase()));e&&(d=e.url,g=e.title??"")}return d?`<a href="${d}"${g?' title="'+g+'"':""}>${r(e)}</a>`:`[${r(e)}]`;case M.Paragraph:return`<p>${r(e)}</p>${n}`;case M.Text:case M.Space:return e.text}return this._extraItemRender(e,t)}_render(e){let t="";for(let r of e||[])t+=this._rendeItem(r,e);return t}render(e){return t=this._render(e),t?.replace(S,"\n").trim();var t}}class TokenRenderer{_render(t){return e.NullChecker.isNullOrEmpty(t)?"":JSON.stringify(t)}render(t){return"["+t.filter((t=>!e.NullChecker.isNullOrEmpty(t))).map(this._render).join(",")+"]"}}class Parser extends e.Compile.Parser{toHtml(t,r,n){const a=new HtmlRenderer(n);return e.NullChecker.isNullOrEmpty(r)?this.parse(t,a):this.parse(t,B(r),a)}tokenize(e,t){const r=this.parse(e,B(t),new TokenRenderer);return JSON.parse(r)}parse(e,t=B(),r=new HtmlRenderer){return(n=t)&&"object"==typeof n&&"function"==typeof n.render?super.parse(e,B(),t):super.parse(e,t,r);var n}}t.Parser=Parser}(t.Markdown||(t.Markdown={}))}(e.Compile||(e.Compile={}))}(Pacem||(Pacem={}));
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pacem v0.51.3 (https://js.pacem.it)
2
+ * pacem v0.51.4-abel (https://js.pacem.it)
3
3
  * Copyright 2025 Pacem (https://pacem.it)
4
4
  * Licensed under Apache-2.0
5
5
  */
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.51.3",
2
+ "version": "0.51.4-abel",
3
3
  "name": "pacem",
4
4
  "homepage": "https://js.pacem.it",
5
5
  "repository": {