@kyndryl-design-system/shidoka-charts 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../../src/components/chart/chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAKvC,OAAO,0BAA0B,CAAC;AA0ClC;;;;;;GAMG;AACH,qBACa,OAAQ,SAAQ,UAAU;IACrC,OAAgB,MAAM,+BAAa;IAEnC,mBAAmB;IAEnB,UAAU,SAAM;IAEhB,yBAAyB;IAEzB,WAAW,SAAM;IAEjB,2BAA2B;IAE3B,IAAI,EAAE,GAAG,CAAM;IAEf,4BAA4B;IAE5B,MAAM,EAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAEvB,8BAA8B;IAE9B,QAAQ,EAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtB,uDAAuD;IAEvD,OAAO,EAAE,GAAG,CAAM;IAElB,yHAAyH;IAEzH,OAAO,EAAE,GAAG,CAAM;IAElB,wEAAwE;IAExE,MAAM,EAAE,GAAG,CAAQ;IAEnB,uEAAuE;IAEvE,KAAK,EAAE,GAAG,CAAQ;IAElB,sCAAsC;IAEtC,eAAe,UAAS;IAExB,0CAA0C;IAE1C,YAAY,UAAS;IAErB,qCAAqC;IAErC,UAAU,UAAS;IAEnB,0BAA0B;IAE1B,YAAY,UAAS;IAErB,4CAA4C;IAE5C,QAAQ,UAAS;IAEjB,gCAAgC;IAEhC,YAAY;;;;;;;MAOV;IAEF;;OAEG;IAEH,UAAU,UAAS;IAEnB;;;OAGG;IAEH,SAAS,EAAG,iBAAiB,CAAC;IAE9B;;;OAGG;IAEH,MAAM,EAAG,iBAAiB,CAAC;IAE3B;;;OAGG;IAEH,KAAK,EAAG,cAAc,CAAC;IAEvB;;OAEG;IAEH,KAAK,EAAE,GAAG,CAAQ;IAElB;;OAEG;IAEH,SAAS,UAAS;IAElB;;OAEG;IAEH,aAAa,UAAS;IAEtB;;OAEG;IAEH,aAAa,EAAE,GAAG,CAAM;IAExB;;OAEG;IAEH,cAAc,EAAE,GAAG,CAAM;IAEzB;;OAEG;IAEH,OAAO,UAAS;IAEhB;;OAEG;IACH,eAAe,EAAE,GAAG,CAIlB;IAEF,cAAc,EAAE,GAAG,CAMhB;IAEM,MAAM;IAkSf,OAAO,CAAC,YAAY;IAMX,iBAAiB;IASjB,oBAAoB;IAOpB,YAAY;IAKZ,OAAO,CAAC,YAAY,EAAE,GAAG;IAqFlC;;;OAGG;IACH,OAAO,CAAC,SAAS;IA+CjB;;;OAGG;YACW,YAAY;IAmE1B,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,sBAAsB;CAG/B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
1
+ {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../../src/components/chart/chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAKvC,OAAO,0BAA0B,CAAC;AA0ClC;;;;;;GAMG;AACH,qBACa,OAAQ,SAAQ,UAAU;IACrC,OAAgB,MAAM,+BAAa;IAEnC,mBAAmB;IAEnB,UAAU,SAAM;IAEhB,yBAAyB;IAEzB,WAAW,SAAM;IAEjB,2BAA2B;IAE3B,IAAI,EAAE,GAAG,CAAM;IAEf,4BAA4B;IAE5B,MAAM,EAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAEvB,8BAA8B;IAE9B,QAAQ,EAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtB,uDAAuD;IAEvD,OAAO,EAAE,GAAG,CAAM;IAElB,yHAAyH;IAEzH,OAAO,EAAE,GAAG,CAAM;IAElB,wEAAwE;IAExE,MAAM,EAAE,GAAG,CAAQ;IAEnB,uEAAuE;IAEvE,KAAK,EAAE,GAAG,CAAQ;IAElB,sCAAsC;IAEtC,eAAe,UAAS;IAExB,0CAA0C;IAE1C,YAAY,UAAS;IAErB,qCAAqC;IAErC,UAAU,UAAS;IAEnB,0BAA0B;IAE1B,YAAY,UAAS;IAErB,4CAA4C;IAE5C,QAAQ,UAAS;IAEjB,gCAAgC;IAEhC,YAAY;;;;;;;MAOV;IAEF;;OAEG;IAEH,UAAU,UAAS;IAEnB;;;OAGG;IAEH,SAAS,EAAG,iBAAiB,CAAC;IAE9B;;;OAGG;IAEH,MAAM,EAAG,iBAAiB,CAAC;IAE3B;;;OAGG;IAEH,KAAK,EAAG,cAAc,CAAC;IAEvB;;OAEG;IAEH,KAAK,EAAE,GAAG,CAAQ;IAElB;;OAEG;IAEH,SAAS,UAAS;IAElB;;OAEG;IAEH,aAAa,UAAS;IAEtB;;OAEG;IAEH,aAAa,EAAE,GAAG,CAAM;IAExB;;OAEG;IAEH,cAAc,EAAE,GAAG,CAAM;IAEzB;;OAEG;IAEH,OAAO,UAAS;IAEhB;;OAEG;IACH,eAAe,EAAE,GAAG,CAIlB;IAEF,cAAc,EAAE,GAAG,CAMhB;IAEM,MAAM;IAkSf,OAAO,CAAC,YAAY;IAMX,iBAAiB;IASjB,oBAAoB;IAOpB,YAAY;IAKZ,OAAO,CAAC,YAAY,EAAE,GAAG;IA0FlC;;;OAGG;IACH,OAAO,CAAC,SAAS;IA+CjB;;;OAGG;YACW,YAAY;IAmE1B,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,sBAAsB;CAG/B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
@@ -1,4 +1,4 @@
1
- import{__decorate as t}from"../../_virtual/_tslib.js";import'./../../external/@lit/reactive-element/reactive-element.js';import{html as e}from'./../../external/lit-html/lit-html.js';import{LitElement as s}from'./../../external/lit-element/lit-element.js';import{customElement as o}from'./../../external/@lit/reactive-element/decorators/custom-element.js';import{property as i}from'./../../external/@lit/reactive-element/decorators/property.js';import{state as a}from'./../../external/@lit/reactive-element/decorators/state.js';import{query as r}from'./../../external/@lit/reactive-element/decorators/query.js';import'./../../external/@lit/reactive-element/decorators/query-assigned-elements.js';import{classMap as n}from'./../../external/lit-html/directives/class-map.js';import{deepmerge as l,deepmergeCustom as c}from'./../../external/deepmerge-ts/dist/node/index.js';import'./../../external/chart.js/auto/auto.js';import'./../../external/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js';import{ChoroplethController as d,BubbleMapController as h,GeoFeature as m,ColorScale as p,SizeScale as u,ProjectionScale as g}from'./../../external/chartjs-chart-geo/build/index.js';import{TreemapController as y,TreemapElement as v}from'./../../external/chartjs-chart-treemap/dist/chartjs-chart-treemap.esm.js';import b from"../../common/plugins/canvasBackground.js";import f from"../../common/plugins/doughnutLabel.js";import j from"../../common/plugins/meterGaugeNeedle.js";import T from'./../../external/chartjs-plugin-a11y-legend/dist/plugin.js';import w from'./../../external/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.esm.js';import $ from'./../../external/chartjs-plugin-annotation/dist/chartjs-plugin-annotation.esm.js';import{debounce as k,convertChartDataToCSV as _}from"../../common/helpers/helpers.js";import D from"./chart.scss.js";import O from"../../common/config/globalOptions.js";import x from"../../common/config/globalOptionsNonRadial.js";import C from"../../common/config/globalOptionsRadial.js";import A from'./../../external/@kyndryl-design-system/shidoka-icons/svg/monochrome/16/analytics.svg.js';import L from'./../../external/@kyndryl-design-system/shidoka-icons/svg/monochrome/16/table-view.svg.js';import M from'./../../external/@kyndryl-design-system/shidoka-icons/svg/monochrome/16/download.svg.js';import E from'./../../external/@kyndryl-design-system/shidoka-icons/svg/monochrome/16/expand.svg.js';import V from'./../../external/@kyndryl-design-system/shidoka-icons/svg/monochrome/16/shrink.svg.js';import{unsafeSVG as S}from'./../../external/lit-html/directives/unsafe-svg.js';import{getTokenThemeVal as B}from'./../../external/@kyndryl-design-system/shidoka-foundation/common/helpers/color.js';import{Chart as q}from'./../../external/chart.js/dist/chart.js';function F(t){switch(t){case"../../common/config/chartTypes/bar.js":return import("../../common/config/chartTypes/bar.js");case"../../common/config/chartTypes/bubble.js":return import("../../common/config/chartTypes/bubble.js");case"../../common/config/chartTypes/bubbleMap.js":return import("../../common/config/chartTypes/bubbleMap.js");case"../../common/config/chartTypes/choropleth.js":return import("../../common/config/chartTypes/choropleth.js");case"../../common/config/chartTypes/doughnut.js":return import("../../common/config/chartTypes/doughnut.js");case"../../common/config/chartTypes/line.js":return import("../../common/config/chartTypes/line.js");case"../../common/config/chartTypes/meter.js":return import("../../common/config/chartTypes/meter.js");case"../../common/config/chartTypes/pie.js":return import("../../common/config/chartTypes/pie.js");case"../../common/config/chartTypes/polarArea.js":return import("../../common/config/chartTypes/polarArea.js");case"../../common/config/chartTypes/radar.js":return import("../../common/config/chartTypes/radar.js");case"../../common/config/chartTypes/scatter.js":return import("../../common/config/chartTypes/scatter.js");case"../../common/config/chartTypes/treemap.js":return import("../../common/config/chartTypes/treemap.js");default:return new Promise((function(e,s){("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(s.bind(null,new Error("Unknown variable dynamic import: "+t)))}))}}q.register(d,h,m,p,u,g,y,v,$,w);let z=class extends s{constructor(){super(...arguments),this.chartTitle="",this.description="",this.type="",this.options={},this.plugins=[],this.height=null,this.width=null,this.hideDescription=!1,this.hideCaptions=!1,this.hideHeader=!1,this.hideControls=!1,this.noBorder=!1,this.customLabels={toggleView:"Toggle View Mode",toggleFullscreen:"Toggle Fullscreen",downloadMenu:"Download Menu",downloadCsv:"Download as CSV",downloadPng:"Download as PNG",downloadJpg:"Download as JPG"},this.fullscreen=!1,this.chart=null,this.tableView=!1,this.tableDisabled=!1,this.mergedOptions={},this.mergedDatasets={},this._widget=!1,this._resizeObserver=new ResizeObserver(k((()=>{this._resizeChart()}))),this._themeObserver=new MutationObserver((()=>{this.chart&&this.mergeOptions().then((()=>{this.initChart()}))}))}render(){var t;const s={container:!0,fullscreen:this.fullscreen,"no-border":this.noBorder||this._widget,widget:this._widget};return e`
1
+ import{__decorate as t}from"../../_virtual/_tslib.js";import'./../../external/@lit/reactive-element/reactive-element.js';import{html as e}from'./../../external/lit-html/lit-html.js';import{LitElement as s}from'./../../external/lit-element/lit-element.js';import{customElement as o}from'./../../external/@lit/reactive-element/decorators/custom-element.js';import{property as i}from'./../../external/@lit/reactive-element/decorators/property.js';import{state as a}from'./../../external/@lit/reactive-element/decorators/state.js';import{query as r}from'./../../external/@lit/reactive-element/decorators/query.js';import'./../../external/@lit/reactive-element/decorators/query-assigned-elements.js';import{classMap as n}from'./../../external/lit-html/directives/class-map.js';import{deepmerge as l,deepmergeCustom as c}from'./../../external/deepmerge-ts/dist/node/index.js';import'./../../external/chart.js/auto/auto.js';import'./../../external/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js';import{ChoroplethController as d,BubbleMapController as h,GeoFeature as m,ColorScale as p,SizeScale as u,ProjectionScale as g}from'./../../external/chartjs-chart-geo/build/index.js';import{TreemapController as y,TreemapElement as v}from'./../../external/chartjs-chart-treemap/dist/chartjs-chart-treemap.esm.js';import b from"../../common/plugins/canvasBackground.js";import f from"../../common/plugins/doughnutLabel.js";import j from"../../common/plugins/meterGaugeNeedle.js";import T from'./../../external/chartjs-plugin-a11y-legend/dist/plugin.js';import w from'./../../external/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.esm.js';import $ from'./../../external/chartjs-plugin-annotation/dist/chartjs-plugin-annotation.esm.js';import{debounce as k,convertChartDataToCSV as _}from"../../common/helpers/helpers.js";import D from"./chart.scss.js";import O from"../../common/config/globalOptions.js";import x from"../../common/config/globalOptionsNonRadial.js";import C from"../../common/config/globalOptionsRadial.js";import A from'./../../external/@kyndryl-design-system/shidoka-icons/svg/monochrome/16/analytics.svg.js';import M from'./../../external/@kyndryl-design-system/shidoka-icons/svg/monochrome/16/table-view.svg.js';import L from'./../../external/@kyndryl-design-system/shidoka-icons/svg/monochrome/16/download.svg.js';import V from'./../../external/@kyndryl-design-system/shidoka-icons/svg/monochrome/16/expand.svg.js';import E from'./../../external/@kyndryl-design-system/shidoka-icons/svg/monochrome/16/shrink.svg.js';import{unsafeSVG as S}from'./../../external/lit-html/directives/unsafe-svg.js';import{getTokenThemeVal as B}from'./../../external/@kyndryl-design-system/shidoka-foundation/common/helpers/color.js';import{Chart as q}from'./../../external/chart.js/dist/chart.js';function F(t){switch(t){case"../../common/config/chartTypes/bar.js":return import("../../common/config/chartTypes/bar.js");case"../../common/config/chartTypes/bubble.js":return import("../../common/config/chartTypes/bubble.js");case"../../common/config/chartTypes/bubbleMap.js":return import("../../common/config/chartTypes/bubbleMap.js");case"../../common/config/chartTypes/choropleth.js":return import("../../common/config/chartTypes/choropleth.js");case"../../common/config/chartTypes/doughnut.js":return import("../../common/config/chartTypes/doughnut.js");case"../../common/config/chartTypes/line.js":return import("../../common/config/chartTypes/line.js");case"../../common/config/chartTypes/meter.js":return import("../../common/config/chartTypes/meter.js");case"../../common/config/chartTypes/pie.js":return import("../../common/config/chartTypes/pie.js");case"../../common/config/chartTypes/polarArea.js":return import("../../common/config/chartTypes/polarArea.js");case"../../common/config/chartTypes/radar.js":return import("../../common/config/chartTypes/radar.js");case"../../common/config/chartTypes/scatter.js":return import("../../common/config/chartTypes/scatter.js");case"../../common/config/chartTypes/treemap.js":return import("../../common/config/chartTypes/treemap.js");default:return new Promise((function(e,s){("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(s.bind(null,new Error("Unknown variable dynamic import: "+t)))}))}}q.register(d,h,m,p,u,g,y,v,$,w);let z=class extends s{constructor(){super(...arguments),this.chartTitle="",this.description="",this.type="",this.options={},this.plugins=[],this.height=null,this.width=null,this.hideDescription=!1,this.hideCaptions=!1,this.hideHeader=!1,this.hideControls=!1,this.noBorder=!1,this.customLabels={toggleView:"Toggle View Mode",toggleFullscreen:"Toggle Fullscreen",downloadMenu:"Download Menu",downloadCsv:"Download as CSV",downloadPng:"Download as PNG",downloadJpg:"Download as JPG"},this.fullscreen=!1,this.chart=null,this.tableView=!1,this.tableDisabled=!1,this.mergedOptions={},this.mergedDatasets={},this._widget=!1,this._resizeObserver=new ResizeObserver(k((()=>{this._resizeChart()}))),this._themeObserver=new MutationObserver((()=>{this.chart&&this.mergeOptions().then((()=>{this.initChart()}))}))}render(){var t;const s={container:!0,fullscreen:this.fullscreen,"no-border":this.noBorder||this._widget,widget:this._widget};return e`
2
2
  <div
3
3
  class=${n(s)}
4
4
  @fullscreenchange=${()=>this.handleFullscreenChange()}
@@ -30,7 +30,7 @@ import{__decorate as t}from"../../_virtual/_tslib.js";import'./../../external/@l
30
30
  title=${this.customLabels.toggleView}
31
31
  >
32
32
  <span slot="icon">
33
- ${this.tableView?S(A):S(L)}
33
+ ${this.tableView?S(A):S(M)}
34
34
  </span>
35
35
  </button>
36
36
  `}
@@ -42,7 +42,7 @@ import{__decorate as t}from"../../_virtual/_tslib.js";import'./../../external/@l
42
42
  title=${this.customLabels.toggleFullscreen}
43
43
  >
44
44
  <span slot="icon">
45
- ${this.fullscreen?S(V):S(E)}
45
+ ${this.fullscreen?S(E):S(V)}
46
46
  </span>
47
47
  </button>
48
48
 
@@ -53,7 +53,7 @@ import{__decorate as t}from"../../_virtual/_tslib.js";import'./../../external/@l
53
53
  title=${this.customLabels.downloadMenu}
54
54
  >
55
55
  <span slot="icon">
56
- ${S(M)}
56
+ ${S(L)}
57
57
  </span>
58
58
  </button>
59
59
 
@@ -168,5 +168,5 @@ import{__decorate as t}from"../../_virtual/_tslib.js";import'./../../external/@l
168
168
  </div>
169
169
  `:null}
170
170
  </div>
171
- `}_resizeChart(){this.chart&&this.chart.resize()}connectedCallback(){super.connectedCallback(),this._themeObserver.observe(document.querySelector('meta[name="color-scheme"]'),{attributes:!0})}disconnectedCallback(){this._resizeObserver.disconnect(),this._themeObserver.disconnect(),super.disconnectedCallback()}firstUpdated(){var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".canvas-container");this._resizeObserver.observe(e)}updated(t){this.chart&&(t.has("labels")||t.has("datasets")||t.has("options"))&&this.mergeOptions().then((()=>{this.chart.data.labels=this.labels,this.chart.options=this.mergedOptions,this.chart.data.datasets.forEach(((t,e)=>{this.mergedDatasets.find((e=>e.label===t.label))||this.chart.data.datasets.splice(e,1)})),this.mergedDatasets.forEach((t=>{const e=this.chart.data.datasets.find((e=>e.label===t.label));e?Object.keys(t).forEach((s=>{e[s]=t[s]})):this.chart.data.datasets.push(t)})),this.chart.update()}));let e=!1;this.datasets&&this.datasets.length&&this.datasets.forEach((t=>{var s,o;e=(null===(s=t.data)||void 0===s?void 0:s.length)||(null===(o=t.tree)||void 0===o?void 0:o.length)||Object.keys(t.tree).length})),!this.chart&&this.type&&t.has("datasets")&&e&&(this.mergeOptions().then((()=>{this.initChart()})),this.checkType()),this.chart&&(t.has("type")||t.has("plugins")||t.has("width")||t.has("height"))&&(this.mergeOptions().then((()=>{this.initChart()})),this.checkType()),this.chart&&t.has("noBorder")&&this.chart.resize()}initChart(){q.defaults.color=B("--kd-color-text-level-primary");const t="meter"===this.type?j:f;let e=[b,t,...this.plugins];["choropleth","treemap","bubbleMap"].includes(this.type)||(e=[...e,T]),this.chart&&this.chart.destroy(),this.chart=new q(this.canvas,{type:"meter"===this.type?"doughnut":this.type,data:{labels:this.labels,datasets:this.mergedDatasets},options:this.mergedOptions,plugins:e})}async mergeOptions(){const t=[];this.datasets.forEach((e=>{e.type&&t.push(function(t){switch(t){case"../../common/config/chartTypes/bar.js":return import("../../common/config/chartTypes/bar.js");case"../../common/config/chartTypes/bubble.js":return import("../../common/config/chartTypes/bubble.js");case"../../common/config/chartTypes/bubbleMap.js":return import("../../common/config/chartTypes/bubbleMap.js");case"../../common/config/chartTypes/choropleth.js":return import("../../common/config/chartTypes/choropleth.js");case"../../common/config/chartTypes/doughnut.js":return import("../../common/config/chartTypes/doughnut.js");case"../../common/config/chartTypes/line.js":return import("../../common/config/chartTypes/line.js");case"../../common/config/chartTypes/meter.js":return import("../../common/config/chartTypes/meter.js");case"../../common/config/chartTypes/pie.js":return import("../../common/config/chartTypes/pie.js");case"../../common/config/chartTypes/polarArea.js":return import("../../common/config/chartTypes/polarArea.js");case"../../common/config/chartTypes/radar.js":return import("../../common/config/chartTypes/radar.js");case"../../common/config/chartTypes/scatter.js":return import("../../common/config/chartTypes/scatter.js");case"../../common/config/chartTypes/treemap.js":return import("../../common/config/chartTypes/treemap.js");default:return new Promise((function(e,s){("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(s.bind(null,new Error("Unknown variable dynamic import: "+t)))}))}}(`../../common/config/chartTypes/${e.type}.js`))}));const e=await Promise.all([F(`../../common/config/chartTypes/${this.type}.js`),...t]);let s=O(this);["pie","doughnut","radar","polarArea","meter"].includes(this.type)?s=l(s,C()):["choropleth","treemap","bubbleMap"].includes(this.type)||(s=l(s,x(this)));const o=JSON.parse(JSON.stringify(this.datasets));e.forEach((t=>{s=l(s,t.options(this)),o.forEach(((e,s)=>{(!e.type&&t.type===this.type||e.type===t.type)&&(o[s]=l(e,t.datasetOptions(this,s)))}))})),this.options&&(s=l(s,this.options)),this.mergedOptions=s,o.forEach(((t,e)=>{const s=c({mergeArrays:!1});o[e]=s(t,this.datasets[e])})),this.mergedDatasets=o}getTableAxisLabel(){var t,e,s,o,i,a,r,n,l,c,d;let h="";return h="y"===(null===(t=this.options)||void 0===t?void 0:t.indexAxis)?(null===(i=null===(o=null===(s=null===(e=this.options)||void 0===e?void 0:e.scales)||void 0===s?void 0:s.y)||void 0===o?void 0:o.title)||void 0===i?void 0:i.text)?null===(a=this.options)||void 0===a?void 0:a.scales.y.title.text:"Y Axis":(null===(c=null===(l=null===(n=null===(r=this.options)||void 0===r?void 0:r.scales)||void 0===n?void 0:n.x)||void 0===l?void 0:l.title)||void 0===c?void 0:c.text)?null===(d=this.options)||void 0===d?void 0:d.scales.x.title.text:"X Axis",h}handleViewToggle(){this.tableView=!this.tableView}checkType(){this.tableDisabled=[].includes(this.type)}handleDownloadImage(t,e){t.preventDefault();const s=e?"image/jpeg":"image/png",o=e?"jpg":"png",i=document.createElement("a");i.href=this.chart.toBase64Image(s,1),i.download=this.chartTitle+"."+o,i.click()}handleDownloadCsv(t){t.preventDefault();let e="";for(let t=0;t<this.chart.data.datasets.length;t++)e+=_({data:this.chart.data.datasets[t],labels:this.labels});if(null==e)return;const s=this.chartTitle+".csv";e.match(/^data:text\/csv/i)||(e="data:text/csv;charset=utf-8,"+e);const o=encodeURI(e),i=document.createElement("a");i.setAttribute("href",o),i.setAttribute("download",s),document.body.appendChild(i),i.click(),document.body.removeChild(i)}handleFullscreen(){var t;(null===(t=this.shadowRoot)||void 0===t?void 0:t.fullscreenElement)?document.exitFullscreen():this.container.requestFullscreen()}handleFullscreenChange(){var t;this.fullscreen=null!==(null===(t=this.shadowRoot)||void 0===t?void 0:t.fullscreenElement)}};z.styles=D,t([i({type:String})],z.prototype,"chartTitle",void 0),t([i({type:String})],z.prototype,"description",void 0),t([i({type:String})],z.prototype,"type",void 0),t([i({type:Array})],z.prototype,"labels",void 0),t([i({type:Array})],z.prototype,"datasets",void 0),t([i({type:Object})],z.prototype,"options",void 0),t([i({type:Array})],z.prototype,"plugins",void 0),t([i({type:Number})],z.prototype,"height",void 0),t([i({type:Number})],z.prototype,"width",void 0),t([i({type:Boolean})],z.prototype,"hideDescription",void 0),t([i({type:Boolean})],z.prototype,"hideCaptions",void 0),t([i({type:Boolean})],z.prototype,"hideHeader",void 0),t([i({type:Boolean})],z.prototype,"hideControls",void 0),t([i({type:Boolean})],z.prototype,"noBorder",void 0),t([i({type:Object})],z.prototype,"customLabels",void 0),t([a()],z.prototype,"fullscreen",void 0),t([r(".container")],z.prototype,"container",void 0),t([r("canvas")],z.prototype,"canvas",void 0),t([r(".closed-caption")],z.prototype,"ccDiv",void 0),t([a()],z.prototype,"chart",void 0),t([a()],z.prototype,"tableView",void 0),t([a()],z.prototype,"tableDisabled",void 0),t([a()],z.prototype,"mergedOptions",void 0),t([a()],z.prototype,"mergedDatasets",void 0),t([a()],z.prototype,"_widget",void 0),z=t([o("kd-chart")],z);export{z as KDChart};
171
+ `}_resizeChart(){this.chart&&this.chart.resize()}connectedCallback(){super.connectedCallback(),this._themeObserver.observe(document.querySelector('meta[name="color-scheme"]'),{attributes:!0})}disconnectedCallback(){this._resizeObserver.disconnect(),this._themeObserver.disconnect(),super.disconnectedCallback()}firstUpdated(){var t;const e=null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".canvas-container");this._resizeObserver.observe(e)}updated(t){var e,s;this.chart&&(t.has("labels")||t.has("datasets")||t.has("options"))&&this.mergeOptions().then((()=>{this.chart.data.labels=this.labels,this.chart.options=this.mergedOptions,this.chart.data.datasets.forEach(((t,e)=>{this.mergedDatasets.find((e=>e.label===t.label))||this.chart.data.datasets.splice(e,1)})),this.mergedDatasets.forEach((t=>{const e=this.chart.data.datasets.find((e=>e.label===t.label));e?Object.keys(t).forEach((s=>{e[s]=t[s]})):this.chart.data.datasets.push(t)})),this.chart.update()}));let o=!1;if(this.datasets&&this.datasets.length)for(const t of this.datasets)if(o=(null===(e=t.data)||void 0===e?void 0:e.length)>0||(null===(s=t.tree)||void 0===s?void 0:s.length)>0||t.tree&&Object.keys(t.tree).length>0,!o){console.error("Missing data for one or more chart datasets.");break}!this.chart&&this.type&&t.has("datasets")&&o&&(this.mergeOptions().then((()=>{this.initChart()})),this.checkType()),this.chart&&(t.has("type")||t.has("plugins")||t.has("width")||t.has("height"))&&(this.mergeOptions().then((()=>{this.initChart()})),this.checkType()),this.chart&&t.has("noBorder")&&this.chart.resize()}initChart(){q.defaults.color=B("--kd-color-text-level-primary");const t="meter"===this.type?j:f;let e=[b,t,...this.plugins];["choropleth","treemap","bubbleMap"].includes(this.type)||(e=[...e,T]),this.chart&&this.chart.destroy(),this.chart=new q(this.canvas,{type:"meter"===this.type?"doughnut":this.type,data:{labels:this.labels,datasets:this.mergedDatasets},options:this.mergedOptions,plugins:e})}async mergeOptions(){const t=[];this.datasets.forEach((e=>{e.type&&t.push(function(t){switch(t){case"../../common/config/chartTypes/bar.js":return import("../../common/config/chartTypes/bar.js");case"../../common/config/chartTypes/bubble.js":return import("../../common/config/chartTypes/bubble.js");case"../../common/config/chartTypes/bubbleMap.js":return import("../../common/config/chartTypes/bubbleMap.js");case"../../common/config/chartTypes/choropleth.js":return import("../../common/config/chartTypes/choropleth.js");case"../../common/config/chartTypes/doughnut.js":return import("../../common/config/chartTypes/doughnut.js");case"../../common/config/chartTypes/line.js":return import("../../common/config/chartTypes/line.js");case"../../common/config/chartTypes/meter.js":return import("../../common/config/chartTypes/meter.js");case"../../common/config/chartTypes/pie.js":return import("../../common/config/chartTypes/pie.js");case"../../common/config/chartTypes/polarArea.js":return import("../../common/config/chartTypes/polarArea.js");case"../../common/config/chartTypes/radar.js":return import("../../common/config/chartTypes/radar.js");case"../../common/config/chartTypes/scatter.js":return import("../../common/config/chartTypes/scatter.js");case"../../common/config/chartTypes/treemap.js":return import("../../common/config/chartTypes/treemap.js");default:return new Promise((function(e,s){("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(s.bind(null,new Error("Unknown variable dynamic import: "+t)))}))}}(`../../common/config/chartTypes/${e.type}.js`))}));const e=await Promise.all([F(`../../common/config/chartTypes/${this.type}.js`),...t]);let s=O(this);["pie","doughnut","radar","polarArea","meter"].includes(this.type)?s=l(s,C()):["choropleth","treemap","bubbleMap"].includes(this.type)||(s=l(s,x(this)));const o=JSON.parse(JSON.stringify(this.datasets));e.forEach((t=>{s=l(s,t.options(this)),o.forEach(((e,s)=>{(!e.type&&t.type===this.type||e.type===t.type)&&(o[s]=l(e,t.datasetOptions(this,s)))}))})),this.options&&(s=l(s,this.options)),this.mergedOptions=s,o.forEach(((t,e)=>{const s=c({mergeArrays:!1});o[e]=s(t,this.datasets[e])})),this.mergedDatasets=o}getTableAxisLabel(){var t,e,s,o,i,a,r,n,l,c,d;let h="";return h="y"===(null===(t=this.options)||void 0===t?void 0:t.indexAxis)?(null===(i=null===(o=null===(s=null===(e=this.options)||void 0===e?void 0:e.scales)||void 0===s?void 0:s.y)||void 0===o?void 0:o.title)||void 0===i?void 0:i.text)?null===(a=this.options)||void 0===a?void 0:a.scales.y.title.text:"Y Axis":(null===(c=null===(l=null===(n=null===(r=this.options)||void 0===r?void 0:r.scales)||void 0===n?void 0:n.x)||void 0===l?void 0:l.title)||void 0===c?void 0:c.text)?null===(d=this.options)||void 0===d?void 0:d.scales.x.title.text:"X Axis",h}handleViewToggle(){this.tableView=!this.tableView}checkType(){this.tableDisabled=[].includes(this.type)}handleDownloadImage(t,e){t.preventDefault();const s=e?"image/jpeg":"image/png",o=e?"jpg":"png",i=document.createElement("a");i.href=this.chart.toBase64Image(s,1),i.download=this.chartTitle+"."+o,i.click()}handleDownloadCsv(t){t.preventDefault();let e="";for(let t=0;t<this.chart.data.datasets.length;t++)e+=_({data:this.chart.data.datasets[t],labels:this.labels});if(null==e)return;const s=this.chartTitle+".csv";e.match(/^data:text\/csv/i)||(e="data:text/csv;charset=utf-8,"+e);const o=encodeURI(e),i=document.createElement("a");i.setAttribute("href",o),i.setAttribute("download",s),document.body.appendChild(i),i.click(),document.body.removeChild(i)}handleFullscreen(){var t;(null===(t=this.shadowRoot)||void 0===t?void 0:t.fullscreenElement)?document.exitFullscreen():this.container.requestFullscreen()}handleFullscreenChange(){var t;this.fullscreen=null!==(null===(t=this.shadowRoot)||void 0===t?void 0:t.fullscreenElement)}};z.styles=D,t([i({type:String})],z.prototype,"chartTitle",void 0),t([i({type:String})],z.prototype,"description",void 0),t([i({type:String})],z.prototype,"type",void 0),t([i({type:Array})],z.prototype,"labels",void 0),t([i({type:Array})],z.prototype,"datasets",void 0),t([i({type:Object})],z.prototype,"options",void 0),t([i({type:Array})],z.prototype,"plugins",void 0),t([i({type:Number})],z.prototype,"height",void 0),t([i({type:Number})],z.prototype,"width",void 0),t([i({type:Boolean})],z.prototype,"hideDescription",void 0),t([i({type:Boolean})],z.prototype,"hideCaptions",void 0),t([i({type:Boolean})],z.prototype,"hideHeader",void 0),t([i({type:Boolean})],z.prototype,"hideControls",void 0),t([i({type:Boolean})],z.prototype,"noBorder",void 0),t([i({type:Object})],z.prototype,"customLabels",void 0),t([a()],z.prototype,"fullscreen",void 0),t([r(".container")],z.prototype,"container",void 0),t([r("canvas")],z.prototype,"canvas",void 0),t([r(".closed-caption")],z.prototype,"ccDiv",void 0),t([a()],z.prototype,"chart",void 0),t([a()],z.prototype,"tableView",void 0),t([a()],z.prototype,"tableDisabled",void 0),t([a()],z.prototype,"mergedOptions",void 0),t([a()],z.prototype,"mergedDatasets",void 0),t([a()],z.prototype,"_widget",void 0),z=t([o("kd-chart")],z);export{z as KDChart};
172
172
  //# sourceMappingURL=chart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chart.js","sources":["../../../src/components/chart/chart.ts"],"sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { deepmerge, deepmergeCustom } from 'deepmerge-ts';\nimport Chart from 'chart.js/auto';\nimport 'chartjs-adapter-date-fns';\nimport {\n ChoroplethController,\n BubbleMapController,\n GeoFeature,\n ColorScale,\n SizeScale,\n ProjectionScale,\n} from 'chartjs-chart-geo';\nimport { TreemapController, TreemapElement } from 'chartjs-chart-treemap';\nimport canvasBackgroundPlugin from '../../common/plugins/canvasBackground';\nimport doughnutLabelPlugin from '../../common/plugins/doughnutLabel';\nimport meterGaugePlugin from '../../common/plugins/meterGaugeNeedle';\nimport a11yPlugin from 'chartjs-plugin-a11y-legend';\nimport datalabelsPlugin from 'chartjs-plugin-datalabels';\nimport annotationPlugin from 'chartjs-plugin-annotation';\nimport { convertChartDataToCSV, debounce } from '../../common/helpers/helpers';\nimport ChartScss from './chart.scss';\nimport globalOptions from '../../common/config/globalOptions';\nimport globalOptionsNonRadial from '../../common/config/globalOptionsNonRadial';\nimport globalOptionsRadial from '../../common/config/globalOptionsRadial';\nimport chartIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/analytics.svg';\nimport tableIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/table-view.svg';\nimport downloadIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/download.svg';\nimport maximizeIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/expand.svg';\nimport minimizeIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/shrink.svg';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { getTokenThemeVal } from '@kyndryl-design-system/shidoka-foundation/common/helpers/color';\n\nChart.register(\n ChoroplethController,\n BubbleMapController,\n GeoFeature,\n ColorScale,\n SizeScale,\n ProjectionScale,\n TreemapController,\n TreemapElement,\n annotationPlugin,\n datalabelsPlugin\n);\n\n/**\n * Chart.js wrapper component.\n * @slot unnamed - Slot for custom content between header and chart.\n * @slot controls - Slot for custom controls such as an overflow menu.\n * @slot tooltip - Slot for tooltip in header.\n * @slot draghandle - Slot for widget drag handle.\n */\n@customElement('kd-chart')\nexport class KDChart extends LitElement {\n static override styles = ChartScss;\n\n /** Chart title. */\n @property({ type: String })\n chartTitle = '';\n\n /** Chart description. */\n @property({ type: String })\n description = '';\n\n /** Chart.js chart type. */\n @property({ type: String })\n type: any = '';\n\n /** Chart.js data.labels. */\n @property({ type: Array })\n labels!: Array<string>;\n\n /** Chart.js data.datasets. */\n @property({ type: Array })\n datasets!: Array<any>;\n\n /** Chart.js options. Can override Shidoka defaults. */\n @property({ type: Object })\n options: any = {};\n\n /** Chart.js additional plugins. Must be registerable inline via Chart.plugins array, not globally via Chart.register. */\n @property({ type: Array })\n plugins: any = [];\n\n /** Chart.js canvas height (px). Disables maintainAspectRatio option. */\n @property({ type: Number })\n height: any = null;\n\n /** Chart.js canvas width (px). Disables maintainAspectRatio option. */\n @property({ type: Number })\n width: any = null;\n\n /** Hides the description visually. */\n @property({ type: Boolean })\n hideDescription = false;\n\n /** Hides the closed captions visually. */\n @property({ type: Boolean })\n hideCaptions = false;\n\n /** Hides the title & description. */\n @property({ type: Boolean })\n hideHeader = false;\n\n /** Hides the controls. */\n @property({ type: Boolean })\n hideControls = false;\n\n /** Removes the outer border and padding. */\n @property({ type: Boolean })\n noBorder = false;\n\n /** Customizable text labels. */\n @property({ type: Object })\n customLabels = {\n toggleView: 'Toggle View Mode',\n toggleFullscreen: 'Toggle Fullscreen',\n downloadMenu: 'Download Menu',\n downloadCsv: 'Download as CSV',\n downloadPng: 'Download as PNG',\n downloadJpg: 'Download as JPG',\n };\n\n /** Fullscreen state.\n * @ignore\n */\n @state()\n fullscreen = false;\n\n /**\n * Queries the container element.\n * @ignore\n */\n @query('.container')\n container!: HTMLCanvasElement;\n\n /**\n * Queries the canvas element.\n * @ignore\n */\n @query('canvas')\n canvas!: HTMLCanvasElement;\n\n /**\n * Queries the closed caption div.\n * @ignore\n */\n @query('.closed-caption')\n ccDiv!: HTMLDivElement;\n\n /** The chart instance.\n * @ignore\n */\n @state()\n chart: any = null;\n\n /** Table view mode.\n * @ignore\n */\n @state()\n tableView = false;\n\n /** Disable table view feature.\n * @ignore\n */\n @state()\n tableDisabled = false;\n\n /** Merged options.\n * @ignore\n */\n @state()\n mergedOptions: any = {};\n\n /** Merged datasets.\n * @ignore\n */\n @state()\n mergedDatasets: any = {};\n\n /** Is Widget. Inherited from kyn-widget.\n * @internal\n */\n @state()\n _widget = false;\n\n /** ResizeObserver for canvas-container.\n * @internal\n */\n _resizeObserver: any = new ResizeObserver(\n debounce(() => {\n this._resizeChart();\n })\n );\n\n _themeObserver: any = new MutationObserver(() => {\n if (this.chart) {\n this.mergeOptions().then(() => {\n this.initChart();\n });\n }\n });\n\n override render() {\n const Classes = {\n container: true,\n fullscreen: this.fullscreen,\n 'no-border': this.noBorder || this._widget,\n widget: this._widget,\n };\n\n return html`\n <div\n class=${classMap(Classes)}\n @fullscreenchange=${() => this.handleFullscreenChange()}\n >\n ${!this.hideHeader || !this.hideControls\n ? html`\n <div class=\"header\">\n ${!this.hideHeader\n ? html`\n <slot name=\"draghandle\"></slot>\n\n <div id=\"titleDesc\">\n <div class=\"title\">\n ${this.chartTitle}\n <slot name=\"tooltip\"></slot>\n </div>\n <div\n class=\"description ${this.hideDescription\n ? 'hidden-visually'\n : ''}\"\n >\n ${this.description}\n </div>\n </div>\n `\n : null}\n ${!this.hideControls\n ? html`\n <div class=\"controls\">\n ${!this.tableDisabled\n ? html`\n <button\n class=\"control-button\"\n @click=${() => this.handleViewToggle()}\n aria-label=${this.customLabels.toggleView}\n title=${this.customLabels.toggleView}\n >\n <span slot=\"icon\">\n ${this.tableView\n ? unsafeSVG(chartIcon)\n : unsafeSVG(tableIcon)}\n </span>\n </button>\n `\n : null}\n\n <button\n class=\"control-button\"\n @click=${() => this.handleFullscreen()}\n aria-label=${this.customLabels.toggleFullscreen}\n title=${this.customLabels.toggleFullscreen}\n >\n <span slot=\"icon\">\n ${this.fullscreen\n ? unsafeSVG(minimizeIcon)\n : unsafeSVG(maximizeIcon)}\n </span>\n </button>\n\n <div class=\"download\">\n <button\n class=\"control-button\"\n aria-label=${this.customLabels.downloadMenu}\n title=${this.customLabels.downloadMenu}\n >\n <span slot=\"icon\">\n ${unsafeSVG(downloadIcon)}\n </span>\n </button>\n\n <div class=\"download-menu\">\n ${!this.tableDisabled\n ? html`\n <button\n @click=${(e: Event) =>\n this.handleDownloadCsv(e)}\n >\n ${this.customLabels.downloadCsv}\n </button>\n `\n : null}\n <button\n @click=${(e: Event) =>\n this.handleDownloadImage(e, false)}\n >\n ${this.customLabels.downloadPng}\n </button>\n <button\n @click=${(e: Event) =>\n this.handleDownloadImage(e, true)}\n >\n ${this.customLabels.downloadJpg}\n </button>\n </div>\n </div>\n\n <slot name=\"controls\"></slot>\n </div>\n `\n : null}\n </div>\n `\n : null}\n\n <div>\n <slot></slot>\n </div>\n\n <figure class=\"${this.tableView ? 'hidden' : ''}\">\n <div\n class=\"canvas-container\"\n style=\"${this.width ? `width: ${this.width}px;` : ''}\n ${this.height ? `height: ${this.height}px;` : ''}\"\n >\n <canvas role=\"img\" aria-labelledby=\"titleDesc\"></canvas>\n </div>\n <figcaption>\n <div\n class=\"closed-caption ${this.hideCaptions\n ? 'hidden-visually'\n : ''}\"\n ></div>\n </figcaption>\n </figure>\n\n ${!this.tableDisabled && this.tableView\n ? html`\n <div class=\"table\">\n <table>\n <thead>\n <tr>\n ${this.labels?.length || this.type === 'treemap'\n ? html`<th>${this.getTableAxisLabel()}</th>`\n : null}\n ${this.datasets.map((dataset) => {\n return html`<th>${dataset.label}</th>`;\n })}\n </tr>\n </thead>\n\n <tbody>\n ${this.type === 'treemap'\n ? Array.isArray(this.datasets[0].tree)\n ? this.datasets[0].tree.map((_value: any) => {\n return html`\n <tr>\n <td>${_value[this.datasets[0].labelKey]}</td>\n <td>${_value[this.datasets[0].key]}</td>\n </tr>\n `;\n })\n : Object.entries(this.datasets[0].tree).map(\n (_value: any) => {\n const HtmlStrings = [];\n\n if (_value[1].value) {\n HtmlStrings.push(html`\n <tr>\n <td>${_value[0]}</td>\n <td>${_value[1].value}</td>\n </tr>\n `);\n } else {\n Object.entries(_value[1]).map(\n (_subValue: any) => {\n if (_subValue[1].value) {\n HtmlStrings.push(html`\n <tr>\n <td>${_subValue[0]}</td>\n <td>${_subValue[1].value}</td>\n </tr>\n `);\n } else {\n Object.entries(_subValue[1]).map(\n (_subSubValue: any) => {\n HtmlStrings.push(html`\n <tr>\n <td>${_subSubValue[0]}</td>\n <td>${_subSubValue[1].value}</td>\n </tr>\n `);\n }\n );\n }\n }\n );\n }\n\n return HtmlStrings;\n }\n )\n : this.datasets[0].data.map((_value: any, i: number) => {\n const IndexAxis = this.options.indexAxis || 'x';\n const NonIndexAxis = IndexAxis === 'x' ? 'y' : 'x';\n\n return html`\n <tr>\n ${this.labels.length\n ? html`\n ${this.options?.scales[IndexAxis]?.type ===\n 'time'\n ? html`\n <td>\n ${new Date(\n this.labels[i]\n ).toLocaleString()}\n </td>\n `\n : html`<td>${this.labels[i]}</td>`}\n `\n : null}\n ${this.datasets.map((dataset) => {\n const dataPoint = dataset.data[i];\n\n if (\n this.type === 'bubbleMap' ||\n this.type === 'choropleth'\n ) {\n return html`\n <td>${dataset.data[i].value}</td>\n `;\n } else if (\n this.options?.scales[NonIndexAxis]?.type ===\n 'time'\n ) {\n return html`\n <td>\n ${new Date(dataPoint).toLocaleString()}\n </td>\n `;\n } else if (Array.isArray(dataPoint)) {\n // handle data in array format\n return html`\n <td>${dataPoint[0]}, ${dataPoint[1]}</td>\n `;\n } else if (\n typeof dataPoint === 'object' &&\n !Array.isArray(dataPoint) &&\n dataPoint !== null\n ) {\n // handle data in object format\n return html`\n <td>\n ${Object.keys(dataPoint).map((key) => {\n const Label =\n this.options.scales[key]?.title\n .text || key;\n const DisplayData =\n this.options.scales[key]?.type ===\n 'time'\n ? new Date(\n dataPoint[key]\n ).toLocaleString()\n : dataPoint[key];\n\n return html`\n <div>\n <strong>${Label}:</strong>\n ${DisplayData}\n </div>\n `;\n })}\n </td>\n `;\n } else {\n // handle data in number/basic format\n return html`<td>${dataset.data[i]}</td>`;\n }\n })}\n </tr>\n `;\n })}\n </tbody>\n </table>\n </div>\n `\n : null}\n </div>\n `;\n }\n\n private _resizeChart() {\n if (this.chart) {\n this.chart.resize();\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n this._themeObserver.observe(\n document.querySelector('meta[name=\"color-scheme\"]'),\n { attributes: true }\n );\n }\n\n override disconnectedCallback() {\n this._resizeObserver.disconnect();\n this._themeObserver.disconnect();\n\n super.disconnectedCallback();\n }\n\n override firstUpdated() {\n const el = this.shadowRoot?.querySelector('.canvas-container');\n this._resizeObserver.observe(el);\n }\n\n override updated(changedProps: any) {\n // Update chart instance when data changes.\n if (\n this.chart &&\n (changedProps.has('labels') ||\n changedProps.has('datasets') ||\n changedProps.has('options'))\n ) {\n this.mergeOptions().then(() => {\n this.chart.data.labels = this.labels;\n this.chart.options = this.mergedOptions;\n\n // remove datasets not in mergedDatasets\n this.chart.data.datasets.forEach((dataset: any, index: number) => {\n const NewDataset = this.mergedDatasets.find(\n (newDataset: any) => newDataset.label === dataset.label\n );\n\n if (!NewDataset) {\n // remove\n this.chart.data.datasets.splice(index, 1);\n }\n });\n\n // update datasets, add new ones\n this.mergedDatasets.forEach((dataset: any) => {\n const OldDataset = this.chart.data.datasets.find(\n (oldDataset: any) => oldDataset.label === dataset.label\n );\n\n if (!OldDataset) {\n // add new dataset\n this.chart.data.datasets.push(dataset);\n } else {\n // update each key/entry in the dataset object\n Object.keys(dataset).forEach((key) => {\n OldDataset[key] = dataset[key];\n });\n }\n });\n\n this.chart.update();\n });\n }\n\n // init chart\n // check to make sure initial datasets + data have been provided\n let hasData = false;\n if (this.datasets && this.datasets.length) {\n this.datasets.forEach((dataset) => {\n hasData =\n dataset.data?.length ||\n dataset.tree?.length ||\n Object.keys(dataset.tree).length;\n });\n }\n\n if (!this.chart && this.type && changedProps.has('datasets') && hasData) {\n this.mergeOptions().then(() => {\n this.initChart();\n });\n\n this.checkType();\n }\n\n // Re-init chart instance when type, plugins, colorPalette, width, or height change.\n if (\n this.chart &&\n (changedProps.has('type') ||\n changedProps.has('plugins') ||\n changedProps.has('width') ||\n changedProps.has('height'))\n ) {\n this.mergeOptions().then(() => {\n this.initChart();\n });\n\n this.checkType();\n }\n\n if (this.chart && changedProps.has('noBorder')) {\n this.chart.resize();\n }\n }\n\n /**\n * Initializes a bar chart using the Chart.js library with provided labels, datasets,\n * and options.\n */\n private initChart() {\n const ignoredTypes = ['choropleth', 'treemap', 'bubbleMap'];\n\n // Chart.defaults.font.family = getComputedStyle(\n // document.documentElement\n // ).getPropertyValue('--kd-font-family-secondary');\n Chart.defaults.color = getTokenThemeVal('--kd-color-text-level-primary');\n\n // let plugins = [\n // canvasBackgroundPlugin,\n // doughnutLabelPlugin,\n // meterGaugePlugin,\n // ...this.plugins,\n // ];\n\n // Select plugin when type='meter'. Otherwise both plugins (meterGaugePlugin & doughnutLabelPlugin) are called\n const pluginSelectForDoghnutMeter =\n this.type === 'meter' ? meterGaugePlugin : doughnutLabelPlugin;\n\n let plugins = [\n canvasBackgroundPlugin,\n pluginSelectForDoghnutMeter,\n ...this.plugins,\n ];\n\n // only add certain plugins for standard chart types\n if (!ignoredTypes.includes(this.type)) {\n // plugins = [...plugins, a11yPlugin, musicPlugin];\n plugins = [...plugins, a11yPlugin];\n }\n\n if (this.chart) {\n this.chart.destroy();\n }\n\n this.chart = new Chart(this.canvas, {\n //type: this.type,\n type: this.type === 'meter' ? 'doughnut' : this.type,\n data: {\n labels: this.labels,\n datasets: this.mergedDatasets,\n },\n options: this.mergedOptions,\n plugins: plugins,\n });\n }\n\n /**\n * Merges various chart type options and dataset options to create a\n * final set of options for a chart.\n */\n private async mergeOptions() {\n const radialTypes = ['pie', 'doughnut', 'radar', 'polarArea', 'meter'];\n const ignoredTypes = ['choropleth', 'treemap', 'bubbleMap'];\n\n const additionalTypeImports: any = [];\n this.datasets.forEach((dataset) => {\n // get chart types from datasets so we can import additional configs\n if (dataset.type) {\n additionalTypeImports.push(\n import(`../../common/config/chartTypes/${dataset.type}.js`)\n );\n }\n });\n\n // import main and additional chart type configs\n const chartTypeConfigs = await Promise.all([\n import(`../../common/config/chartTypes/${this.type}.js`),\n ...additionalTypeImports,\n ]);\n\n // start with global options\n let mergedOptions: any = globalOptions(this);\n\n // merge global type options\n if (radialTypes.includes(this.type)) {\n mergedOptions = deepmerge(mergedOptions, globalOptionsRadial(this));\n } else if (!ignoredTypes.includes(this.type)) {\n mergedOptions = deepmerge(mergedOptions, globalOptionsNonRadial(this));\n }\n\n const mergedDatasets: any = JSON.parse(JSON.stringify(this.datasets));\n\n chartTypeConfigs.forEach((chartTypeConfig: any) => {\n // merge all of the imported chart type options with the global options\n mergedOptions = deepmerge(mergedOptions, chartTypeConfig.options(this));\n\n // merge all of the imported chart type dataset options\n mergedDatasets.forEach((dataset: any, index: number) => {\n if (\n (!dataset.type && chartTypeConfig.type === this.type) ||\n dataset.type === chartTypeConfig.type\n ) {\n mergedDatasets[index] = deepmerge(\n dataset,\n chartTypeConfig.datasetOptions(this, index)\n );\n }\n });\n });\n\n if (this.options) {\n // merge any consumer supplied options with defaults\n mergedOptions = deepmerge(mergedOptions, this.options);\n }\n this.mergedOptions = mergedOptions;\n\n // merge default chart type dataset options with consumer supplied datasets\n mergedDatasets.forEach((dataset: object, index: number) => {\n const customDeepmerge = deepmergeCustom({\n mergeArrays: false,\n });\n mergedDatasets[index] = customDeepmerge(dataset, this.datasets[index]);\n });\n\n this.mergedDatasets = mergedDatasets;\n }\n\n private getTableAxisLabel() {\n let label = '';\n\n if (this.options?.indexAxis === 'y') {\n if (this.options?.scales?.y?.title?.text) {\n label = this.options?.scales.y.title.text;\n } else {\n label = 'Y Axis';\n }\n } else {\n if (this.options?.scales?.x?.title?.text) {\n label = this.options?.scales.x.title.text;\n } else {\n label = 'X Axis';\n }\n }\n\n return label;\n }\n\n private handleViewToggle() {\n this.tableView = !this.tableView;\n }\n\n private checkType() {\n // chart types that can't have a data table view\n const blacklist: any = [];\n this.tableDisabled = blacklist.includes(this.type);\n }\n\n private handleDownloadImage(e: Event, jpeg: boolean) {\n e.preventDefault();\n\n const imgFormat = jpeg ? 'image/jpeg' : 'image/png';\n const fileExt = jpeg ? 'jpg' : 'png';\n const a = document.createElement('a');\n\n a.href = this.chart.toBase64Image(imgFormat, 1);\n a.download = this.chartTitle + '.' + fileExt;\n\n // trigger the download\n a.click();\n }\n\n private handleDownloadCsv(e: Event) {\n e.preventDefault();\n let csv = '';\n\n for (let i = 0; i < this.chart.data.datasets.length; i++) {\n csv += convertChartDataToCSV({\n data: this.chart.data.datasets[i],\n labels: this.labels,\n });\n }\n if (csv == null) return;\n\n const filename = this.chartTitle + '.csv';\n if (!csv.match(/^data:text\\/csv/i)) {\n csv = 'data:text/csv;charset=utf-8,' + csv;\n }\n\n // not sure if anything below this comment works\n const data = encodeURI(csv);\n const link = document.createElement('a');\n link.setAttribute('href', data);\n link.setAttribute('download', filename);\n document.body.appendChild(link); // Required for FF\n link.click();\n document.body.removeChild(link);\n }\n\n private handleFullscreen() {\n if (this.shadowRoot?.fullscreenElement) {\n document.exitFullscreen();\n } else {\n this.container.requestFullscreen();\n }\n }\n\n private handleFullscreenChange() {\n this.fullscreen = this.shadowRoot?.fullscreenElement !== null;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kd-chart': KDChart;\n }\n}\n"],"names":["Chart","register","ChoroplethController","BubbleMapController","GeoFeature","ColorScale","SizeScale","ProjectionScale","TreemapController","TreemapElement","annotationPlugin","datalabelsPlugin","KDChart","LitElement","constructor","this","chartTitle","description","type","options","plugins","height","width","hideDescription","hideCaptions","hideHeader","hideControls","noBorder","customLabels","toggleView","toggleFullscreen","downloadMenu","downloadCsv","downloadPng","downloadJpg","fullscreen","chart","tableView","tableDisabled","mergedOptions","mergedDatasets","_widget","_resizeObserver","ResizeObserver","debounce","_resizeChart","_themeObserver","MutationObserver","mergeOptions","then","initChart","render","Classes","container","widget","html","classMap","handleFullscreenChange","handleViewToggle","unsafeSVG","chartIcon","tableIcon","handleFullscreen","minimizeIcon","maximizeIcon","downloadIcon","e","handleDownloadCsv","handleDownloadImage","_a","labels","length","getTableAxisLabel","datasets","map","dataset","label","Array","isArray","tree","_value","labelKey","key","Object","entries","HtmlStrings","value","push","_subValue","_subSubValue","data","i","IndexAxis","indexAxis","NonIndexAxis","_b","scales","Date","toLocaleString","dataPoint","keys","Label","title","text","DisplayData","resize","connectedCallback","super","observe","document","querySelector","attributes","disconnectedCallback","disconnect","firstUpdated","el","shadowRoot","updated","changedProps","has","forEach","index","find","newDataset","splice","OldDataset","oldDataset","update","hasData","checkType","defaults","color","getTokenThemeVal","pluginSelectForDoghnutMeter","meterGaugePlugin","doughnutLabelPlugin","canvasBackgroundPlugin","includes","a11yPlugin","destroy","canvas","additionalTypeImports","__variableDynamicImportRuntime0__","chartTypeConfigs","Promise","all","__variableDynamicImportRuntime1__","globalOptions","deepmerge","globalOptionsRadial","globalOptionsNonRadial","JSON","parse","stringify","chartTypeConfig","datasetOptions","customDeepmerge","deepmergeCustom","mergeArrays","_e","_d","_c","y","_f","_k","_j","_h","_g","x","_l","jpeg","preventDefault","imgFormat","fileExt","a","createElement","href","toBase64Image","download","click","csv","convertChartDataToCSV","filename","match","encodeURI","link","setAttribute","body","appendChild","removeChild","fullscreenElement","exitFullscreen","requestFullscreen","styles","ChartScss","__decorate","property","String","prototype","Number","Boolean","state","query","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"chart.js","sources":["../../../src/components/chart/chart.ts"],"sourcesContent":["import { LitElement, html } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { deepmerge, deepmergeCustom } from 'deepmerge-ts';\nimport Chart from 'chart.js/auto';\nimport 'chartjs-adapter-date-fns';\nimport {\n ChoroplethController,\n BubbleMapController,\n GeoFeature,\n ColorScale,\n SizeScale,\n ProjectionScale,\n} from 'chartjs-chart-geo';\nimport { TreemapController, TreemapElement } from 'chartjs-chart-treemap';\nimport canvasBackgroundPlugin from '../../common/plugins/canvasBackground';\nimport doughnutLabelPlugin from '../../common/plugins/doughnutLabel';\nimport meterGaugePlugin from '../../common/plugins/meterGaugeNeedle';\nimport a11yPlugin from 'chartjs-plugin-a11y-legend';\nimport datalabelsPlugin from 'chartjs-plugin-datalabels';\nimport annotationPlugin from 'chartjs-plugin-annotation';\nimport { convertChartDataToCSV, debounce } from '../../common/helpers/helpers';\nimport ChartScss from './chart.scss';\nimport globalOptions from '../../common/config/globalOptions';\nimport globalOptionsNonRadial from '../../common/config/globalOptionsNonRadial';\nimport globalOptionsRadial from '../../common/config/globalOptionsRadial';\nimport chartIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/analytics.svg';\nimport tableIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/table-view.svg';\nimport downloadIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/download.svg';\nimport maximizeIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/expand.svg';\nimport minimizeIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/shrink.svg';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { getTokenThemeVal } from '@kyndryl-design-system/shidoka-foundation/common/helpers/color';\n\nChart.register(\n ChoroplethController,\n BubbleMapController,\n GeoFeature,\n ColorScale,\n SizeScale,\n ProjectionScale,\n TreemapController,\n TreemapElement,\n annotationPlugin,\n datalabelsPlugin\n);\n\n/**\n * Chart.js wrapper component.\n * @slot unnamed - Slot for custom content between header and chart.\n * @slot controls - Slot for custom controls such as an overflow menu.\n * @slot tooltip - Slot for tooltip in header.\n * @slot draghandle - Slot for widget drag handle.\n */\n@customElement('kd-chart')\nexport class KDChart extends LitElement {\n static override styles = ChartScss;\n\n /** Chart title. */\n @property({ type: String })\n chartTitle = '';\n\n /** Chart description. */\n @property({ type: String })\n description = '';\n\n /** Chart.js chart type. */\n @property({ type: String })\n type: any = '';\n\n /** Chart.js data.labels. */\n @property({ type: Array })\n labels!: Array<string>;\n\n /** Chart.js data.datasets. */\n @property({ type: Array })\n datasets!: Array<any>;\n\n /** Chart.js options. Can override Shidoka defaults. */\n @property({ type: Object })\n options: any = {};\n\n /** Chart.js additional plugins. Must be registerable inline via Chart.plugins array, not globally via Chart.register. */\n @property({ type: Array })\n plugins: any = [];\n\n /** Chart.js canvas height (px). Disables maintainAspectRatio option. */\n @property({ type: Number })\n height: any = null;\n\n /** Chart.js canvas width (px). Disables maintainAspectRatio option. */\n @property({ type: Number })\n width: any = null;\n\n /** Hides the description visually. */\n @property({ type: Boolean })\n hideDescription = false;\n\n /** Hides the closed captions visually. */\n @property({ type: Boolean })\n hideCaptions = false;\n\n /** Hides the title & description. */\n @property({ type: Boolean })\n hideHeader = false;\n\n /** Hides the controls. */\n @property({ type: Boolean })\n hideControls = false;\n\n /** Removes the outer border and padding. */\n @property({ type: Boolean })\n noBorder = false;\n\n /** Customizable text labels. */\n @property({ type: Object })\n customLabels = {\n toggleView: 'Toggle View Mode',\n toggleFullscreen: 'Toggle Fullscreen',\n downloadMenu: 'Download Menu',\n downloadCsv: 'Download as CSV',\n downloadPng: 'Download as PNG',\n downloadJpg: 'Download as JPG',\n };\n\n /** Fullscreen state.\n * @ignore\n */\n @state()\n fullscreen = false;\n\n /**\n * Queries the container element.\n * @ignore\n */\n @query('.container')\n container!: HTMLCanvasElement;\n\n /**\n * Queries the canvas element.\n * @ignore\n */\n @query('canvas')\n canvas!: HTMLCanvasElement;\n\n /**\n * Queries the closed caption div.\n * @ignore\n */\n @query('.closed-caption')\n ccDiv!: HTMLDivElement;\n\n /** The chart instance.\n * @ignore\n */\n @state()\n chart: any = null;\n\n /** Table view mode.\n * @ignore\n */\n @state()\n tableView = false;\n\n /** Disable table view feature.\n * @ignore\n */\n @state()\n tableDisabled = false;\n\n /** Merged options.\n * @ignore\n */\n @state()\n mergedOptions: any = {};\n\n /** Merged datasets.\n * @ignore\n */\n @state()\n mergedDatasets: any = {};\n\n /** Is Widget. Inherited from kyn-widget.\n * @internal\n */\n @state()\n _widget = false;\n\n /** ResizeObserver for canvas-container.\n * @internal\n */\n _resizeObserver: any = new ResizeObserver(\n debounce(() => {\n this._resizeChart();\n })\n );\n\n _themeObserver: any = new MutationObserver(() => {\n if (this.chart) {\n this.mergeOptions().then(() => {\n this.initChart();\n });\n }\n });\n\n override render() {\n const Classes = {\n container: true,\n fullscreen: this.fullscreen,\n 'no-border': this.noBorder || this._widget,\n widget: this._widget,\n };\n\n return html`\n <div\n class=${classMap(Classes)}\n @fullscreenchange=${() => this.handleFullscreenChange()}\n >\n ${!this.hideHeader || !this.hideControls\n ? html`\n <div class=\"header\">\n ${!this.hideHeader\n ? html`\n <slot name=\"draghandle\"></slot>\n\n <div id=\"titleDesc\">\n <div class=\"title\">\n ${this.chartTitle}\n <slot name=\"tooltip\"></slot>\n </div>\n <div\n class=\"description ${this.hideDescription\n ? 'hidden-visually'\n : ''}\"\n >\n ${this.description}\n </div>\n </div>\n `\n : null}\n ${!this.hideControls\n ? html`\n <div class=\"controls\">\n ${!this.tableDisabled\n ? html`\n <button\n class=\"control-button\"\n @click=${() => this.handleViewToggle()}\n aria-label=${this.customLabels.toggleView}\n title=${this.customLabels.toggleView}\n >\n <span slot=\"icon\">\n ${this.tableView\n ? unsafeSVG(chartIcon)\n : unsafeSVG(tableIcon)}\n </span>\n </button>\n `\n : null}\n\n <button\n class=\"control-button\"\n @click=${() => this.handleFullscreen()}\n aria-label=${this.customLabels.toggleFullscreen}\n title=${this.customLabels.toggleFullscreen}\n >\n <span slot=\"icon\">\n ${this.fullscreen\n ? unsafeSVG(minimizeIcon)\n : unsafeSVG(maximizeIcon)}\n </span>\n </button>\n\n <div class=\"download\">\n <button\n class=\"control-button\"\n aria-label=${this.customLabels.downloadMenu}\n title=${this.customLabels.downloadMenu}\n >\n <span slot=\"icon\">\n ${unsafeSVG(downloadIcon)}\n </span>\n </button>\n\n <div class=\"download-menu\">\n ${!this.tableDisabled\n ? html`\n <button\n @click=${(e: Event) =>\n this.handleDownloadCsv(e)}\n >\n ${this.customLabels.downloadCsv}\n </button>\n `\n : null}\n <button\n @click=${(e: Event) =>\n this.handleDownloadImage(e, false)}\n >\n ${this.customLabels.downloadPng}\n </button>\n <button\n @click=${(e: Event) =>\n this.handleDownloadImage(e, true)}\n >\n ${this.customLabels.downloadJpg}\n </button>\n </div>\n </div>\n\n <slot name=\"controls\"></slot>\n </div>\n `\n : null}\n </div>\n `\n : null}\n\n <div>\n <slot></slot>\n </div>\n\n <figure class=\"${this.tableView ? 'hidden' : ''}\">\n <div\n class=\"canvas-container\"\n style=\"${this.width ? `width: ${this.width}px;` : ''}\n ${this.height ? `height: ${this.height}px;` : ''}\"\n >\n <canvas role=\"img\" aria-labelledby=\"titleDesc\"></canvas>\n </div>\n <figcaption>\n <div\n class=\"closed-caption ${this.hideCaptions\n ? 'hidden-visually'\n : ''}\"\n ></div>\n </figcaption>\n </figure>\n\n ${!this.tableDisabled && this.tableView\n ? html`\n <div class=\"table\">\n <table>\n <thead>\n <tr>\n ${this.labels?.length || this.type === 'treemap'\n ? html`<th>${this.getTableAxisLabel()}</th>`\n : null}\n ${this.datasets.map((dataset) => {\n return html`<th>${dataset.label}</th>`;\n })}\n </tr>\n </thead>\n\n <tbody>\n ${this.type === 'treemap'\n ? Array.isArray(this.datasets[0].tree)\n ? this.datasets[0].tree.map((_value: any) => {\n return html`\n <tr>\n <td>${_value[this.datasets[0].labelKey]}</td>\n <td>${_value[this.datasets[0].key]}</td>\n </tr>\n `;\n })\n : Object.entries(this.datasets[0].tree).map(\n (_value: any) => {\n const HtmlStrings = [];\n\n if (_value[1].value) {\n HtmlStrings.push(html`\n <tr>\n <td>${_value[0]}</td>\n <td>${_value[1].value}</td>\n </tr>\n `);\n } else {\n Object.entries(_value[1]).map(\n (_subValue: any) => {\n if (_subValue[1].value) {\n HtmlStrings.push(html`\n <tr>\n <td>${_subValue[0]}</td>\n <td>${_subValue[1].value}</td>\n </tr>\n `);\n } else {\n Object.entries(_subValue[1]).map(\n (_subSubValue: any) => {\n HtmlStrings.push(html`\n <tr>\n <td>${_subSubValue[0]}</td>\n <td>${_subSubValue[1].value}</td>\n </tr>\n `);\n }\n );\n }\n }\n );\n }\n\n return HtmlStrings;\n }\n )\n : this.datasets[0].data.map((_value: any, i: number) => {\n const IndexAxis = this.options.indexAxis || 'x';\n const NonIndexAxis = IndexAxis === 'x' ? 'y' : 'x';\n\n return html`\n <tr>\n ${this.labels.length\n ? html`\n ${this.options?.scales[IndexAxis]?.type ===\n 'time'\n ? html`\n <td>\n ${new Date(\n this.labels[i]\n ).toLocaleString()}\n </td>\n `\n : html`<td>${this.labels[i]}</td>`}\n `\n : null}\n ${this.datasets.map((dataset) => {\n const dataPoint = dataset.data[i];\n\n if (\n this.type === 'bubbleMap' ||\n this.type === 'choropleth'\n ) {\n return html`\n <td>${dataset.data[i].value}</td>\n `;\n } else if (\n this.options?.scales[NonIndexAxis]?.type ===\n 'time'\n ) {\n return html`\n <td>\n ${new Date(dataPoint).toLocaleString()}\n </td>\n `;\n } else if (Array.isArray(dataPoint)) {\n // handle data in array format\n return html`\n <td>${dataPoint[0]}, ${dataPoint[1]}</td>\n `;\n } else if (\n typeof dataPoint === 'object' &&\n !Array.isArray(dataPoint) &&\n dataPoint !== null\n ) {\n // handle data in object format\n return html`\n <td>\n ${Object.keys(dataPoint).map((key) => {\n const Label =\n this.options.scales[key]?.title\n .text || key;\n const DisplayData =\n this.options.scales[key]?.type ===\n 'time'\n ? new Date(\n dataPoint[key]\n ).toLocaleString()\n : dataPoint[key];\n\n return html`\n <div>\n <strong>${Label}:</strong>\n ${DisplayData}\n </div>\n `;\n })}\n </td>\n `;\n } else {\n // handle data in number/basic format\n return html`<td>${dataset.data[i]}</td>`;\n }\n })}\n </tr>\n `;\n })}\n </tbody>\n </table>\n </div>\n `\n : null}\n </div>\n `;\n }\n\n private _resizeChart() {\n if (this.chart) {\n this.chart.resize();\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n this._themeObserver.observe(\n document.querySelector('meta[name=\"color-scheme\"]'),\n { attributes: true }\n );\n }\n\n override disconnectedCallback() {\n this._resizeObserver.disconnect();\n this._themeObserver.disconnect();\n\n super.disconnectedCallback();\n }\n\n override firstUpdated() {\n const el = this.shadowRoot?.querySelector('.canvas-container');\n this._resizeObserver.observe(el);\n }\n\n override updated(changedProps: any) {\n // Update chart instance when data changes.\n if (\n this.chart &&\n (changedProps.has('labels') ||\n changedProps.has('datasets') ||\n changedProps.has('options'))\n ) {\n this.mergeOptions().then(() => {\n this.chart.data.labels = this.labels;\n this.chart.options = this.mergedOptions;\n\n // remove datasets not in mergedDatasets\n this.chart.data.datasets.forEach((dataset: any, index: number) => {\n const NewDataset = this.mergedDatasets.find(\n (newDataset: any) => newDataset.label === dataset.label\n );\n\n if (!NewDataset) {\n // remove\n this.chart.data.datasets.splice(index, 1);\n }\n });\n\n // update datasets, add new ones\n this.mergedDatasets.forEach((dataset: any) => {\n const OldDataset = this.chart.data.datasets.find(\n (oldDataset: any) => oldDataset.label === dataset.label\n );\n\n if (!OldDataset) {\n // add new dataset\n this.chart.data.datasets.push(dataset);\n } else {\n // update each key/entry in the dataset object\n Object.keys(dataset).forEach((key) => {\n OldDataset[key] = dataset[key];\n });\n }\n });\n\n this.chart.update();\n });\n }\n\n // init chart\n // check to make sure initial datasets + data have been provided\n let hasData = false;\n if (this.datasets && this.datasets.length) {\n for (const dataset of this.datasets) {\n hasData =\n dataset.data?.length > 0 ||\n dataset.tree?.length > 0 ||\n (dataset.tree && Object.keys(dataset.tree).length > 0);\n\n if (!hasData) {\n console.error('Missing data for one or more chart datasets.');\n break;\n }\n }\n }\n\n if (!this.chart && this.type && changedProps.has('datasets') && hasData) {\n this.mergeOptions().then(() => {\n this.initChart();\n });\n\n this.checkType();\n }\n\n // Re-init chart instance when type, plugins, colorPalette, width, or height change.\n if (\n this.chart &&\n (changedProps.has('type') ||\n changedProps.has('plugins') ||\n changedProps.has('width') ||\n changedProps.has('height'))\n ) {\n this.mergeOptions().then(() => {\n this.initChart();\n });\n\n this.checkType();\n }\n\n if (this.chart && changedProps.has('noBorder')) {\n this.chart.resize();\n }\n }\n\n /**\n * Initializes a bar chart using the Chart.js library with provided labels, datasets,\n * and options.\n */\n private initChart() {\n const ignoredTypes = ['choropleth', 'treemap', 'bubbleMap'];\n\n // Chart.defaults.font.family = getComputedStyle(\n // document.documentElement\n // ).getPropertyValue('--kd-font-family-secondary');\n Chart.defaults.color = getTokenThemeVal('--kd-color-text-level-primary');\n\n // let plugins = [\n // canvasBackgroundPlugin,\n // doughnutLabelPlugin,\n // meterGaugePlugin,\n // ...this.plugins,\n // ];\n\n // Select plugin when type='meter'. Otherwise both plugins (meterGaugePlugin & doughnutLabelPlugin) are called\n const pluginSelectForDoghnutMeter =\n this.type === 'meter' ? meterGaugePlugin : doughnutLabelPlugin;\n\n let plugins = [\n canvasBackgroundPlugin,\n pluginSelectForDoghnutMeter,\n ...this.plugins,\n ];\n\n // only add certain plugins for standard chart types\n if (!ignoredTypes.includes(this.type)) {\n // plugins = [...plugins, a11yPlugin, musicPlugin];\n plugins = [...plugins, a11yPlugin];\n }\n\n if (this.chart) {\n this.chart.destroy();\n }\n\n this.chart = new Chart(this.canvas, {\n //type: this.type,\n type: this.type === 'meter' ? 'doughnut' : this.type,\n data: {\n labels: this.labels,\n datasets: this.mergedDatasets,\n },\n options: this.mergedOptions,\n plugins: plugins,\n });\n }\n\n /**\n * Merges various chart type options and dataset options to create a\n * final set of options for a chart.\n */\n private async mergeOptions() {\n const radialTypes = ['pie', 'doughnut', 'radar', 'polarArea', 'meter'];\n const ignoredTypes = ['choropleth', 'treemap', 'bubbleMap'];\n\n const additionalTypeImports: any = [];\n this.datasets.forEach((dataset) => {\n // get chart types from datasets so we can import additional configs\n if (dataset.type) {\n additionalTypeImports.push(\n import(`../../common/config/chartTypes/${dataset.type}.js`)\n );\n }\n });\n\n // import main and additional chart type configs\n const chartTypeConfigs = await Promise.all([\n import(`../../common/config/chartTypes/${this.type}.js`),\n ...additionalTypeImports,\n ]);\n\n // start with global options\n let mergedOptions: any = globalOptions(this);\n\n // merge global type options\n if (radialTypes.includes(this.type)) {\n mergedOptions = deepmerge(mergedOptions, globalOptionsRadial(this));\n } else if (!ignoredTypes.includes(this.type)) {\n mergedOptions = deepmerge(mergedOptions, globalOptionsNonRadial(this));\n }\n\n const mergedDatasets: any = JSON.parse(JSON.stringify(this.datasets));\n\n chartTypeConfigs.forEach((chartTypeConfig: any) => {\n // merge all of the imported chart type options with the global options\n mergedOptions = deepmerge(mergedOptions, chartTypeConfig.options(this));\n\n // merge all of the imported chart type dataset options\n mergedDatasets.forEach((dataset: any, index: number) => {\n if (\n (!dataset.type && chartTypeConfig.type === this.type) ||\n dataset.type === chartTypeConfig.type\n ) {\n mergedDatasets[index] = deepmerge(\n dataset,\n chartTypeConfig.datasetOptions(this, index)\n );\n }\n });\n });\n\n if (this.options) {\n // merge any consumer supplied options with defaults\n mergedOptions = deepmerge(mergedOptions, this.options);\n }\n this.mergedOptions = mergedOptions;\n\n // merge default chart type dataset options with consumer supplied datasets\n mergedDatasets.forEach((dataset: object, index: number) => {\n const customDeepmerge = deepmergeCustom({\n mergeArrays: false,\n });\n mergedDatasets[index] = customDeepmerge(dataset, this.datasets[index]);\n });\n\n this.mergedDatasets = mergedDatasets;\n }\n\n private getTableAxisLabel() {\n let label = '';\n\n if (this.options?.indexAxis === 'y') {\n if (this.options?.scales?.y?.title?.text) {\n label = this.options?.scales.y.title.text;\n } else {\n label = 'Y Axis';\n }\n } else {\n if (this.options?.scales?.x?.title?.text) {\n label = this.options?.scales.x.title.text;\n } else {\n label = 'X Axis';\n }\n }\n\n return label;\n }\n\n private handleViewToggle() {\n this.tableView = !this.tableView;\n }\n\n private checkType() {\n // chart types that can't have a data table view\n const blacklist: any = [];\n this.tableDisabled = blacklist.includes(this.type);\n }\n\n private handleDownloadImage(e: Event, jpeg: boolean) {\n e.preventDefault();\n\n const imgFormat = jpeg ? 'image/jpeg' : 'image/png';\n const fileExt = jpeg ? 'jpg' : 'png';\n const a = document.createElement('a');\n\n a.href = this.chart.toBase64Image(imgFormat, 1);\n a.download = this.chartTitle + '.' + fileExt;\n\n // trigger the download\n a.click();\n }\n\n private handleDownloadCsv(e: Event) {\n e.preventDefault();\n let csv = '';\n\n for (let i = 0; i < this.chart.data.datasets.length; i++) {\n csv += convertChartDataToCSV({\n data: this.chart.data.datasets[i],\n labels: this.labels,\n });\n }\n if (csv == null) return;\n\n const filename = this.chartTitle + '.csv';\n if (!csv.match(/^data:text\\/csv/i)) {\n csv = 'data:text/csv;charset=utf-8,' + csv;\n }\n\n // not sure if anything below this comment works\n const data = encodeURI(csv);\n const link = document.createElement('a');\n link.setAttribute('href', data);\n link.setAttribute('download', filename);\n document.body.appendChild(link); // Required for FF\n link.click();\n document.body.removeChild(link);\n }\n\n private handleFullscreen() {\n if (this.shadowRoot?.fullscreenElement) {\n document.exitFullscreen();\n } else {\n this.container.requestFullscreen();\n }\n }\n\n private handleFullscreenChange() {\n this.fullscreen = this.shadowRoot?.fullscreenElement !== null;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kd-chart': KDChart;\n }\n}\n"],"names":["Chart","register","ChoroplethController","BubbleMapController","GeoFeature","ColorScale","SizeScale","ProjectionScale","TreemapController","TreemapElement","annotationPlugin","datalabelsPlugin","KDChart","LitElement","constructor","this","chartTitle","description","type","options","plugins","height","width","hideDescription","hideCaptions","hideHeader","hideControls","noBorder","customLabels","toggleView","toggleFullscreen","downloadMenu","downloadCsv","downloadPng","downloadJpg","fullscreen","chart","tableView","tableDisabled","mergedOptions","mergedDatasets","_widget","_resizeObserver","ResizeObserver","debounce","_resizeChart","_themeObserver","MutationObserver","mergeOptions","then","initChart","render","Classes","container","widget","html","classMap","handleFullscreenChange","handleViewToggle","unsafeSVG","chartIcon","tableIcon","handleFullscreen","minimizeIcon","maximizeIcon","downloadIcon","e","handleDownloadCsv","handleDownloadImage","_a","labels","length","getTableAxisLabel","datasets","map","dataset","label","Array","isArray","tree","_value","labelKey","key","Object","entries","HtmlStrings","value","push","_subValue","_subSubValue","data","i","IndexAxis","indexAxis","NonIndexAxis","_b","scales","Date","toLocaleString","dataPoint","keys","Label","title","text","DisplayData","resize","connectedCallback","super","observe","document","querySelector","attributes","disconnectedCallback","disconnect","firstUpdated","el","shadowRoot","updated","changedProps","has","forEach","index","find","newDataset","splice","OldDataset","oldDataset","update","hasData","console","error","checkType","defaults","color","getTokenThemeVal","pluginSelectForDoghnutMeter","meterGaugePlugin","doughnutLabelPlugin","canvasBackgroundPlugin","includes","a11yPlugin","destroy","canvas","additionalTypeImports","__variableDynamicImportRuntime0__","chartTypeConfigs","Promise","all","__variableDynamicImportRuntime1__","globalOptions","deepmerge","globalOptionsRadial","globalOptionsNonRadial","JSON","parse","stringify","chartTypeConfig","datasetOptions","customDeepmerge","deepmergeCustom","mergeArrays","_e","_d","_c","y","_f","_k","_j","_h","_g","x","_l","jpeg","preventDefault","imgFormat","fileExt","a","createElement","href","toBase64Image","download","click","csv","convertChartDataToCSV","filename","match","encodeURI","link","setAttribute","body","appendChild","removeChild","fullscreenElement","exitFullscreen","requestFullscreen","styles","ChartScss","__decorate","property","String","prototype","Number","Boolean","state","query","customElement"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kyndryl-design-system/shidoka-charts",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "Shidoka Charts",
5
5
  "main": "index.js",
6
6
  "type": "module",