@operato/chart 7.0.4 → 7.0.6

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 (39) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/src/chartjs/config-converter.js +1 -1
  3. package/dist/src/chartjs/config-converter.js.map +1 -1
  4. package/dist/src/chartjs/ox-chart-js.js +1 -1
  5. package/dist/src/chartjs/ox-chart-js.js.map +1 -1
  6. package/dist/src/editors/input-chart-abstract.d.ts +1 -1
  7. package/dist/src/editors/input-chart-abstract.js +5 -8
  8. package/dist/src/editors/input-chart-abstract.js.map +1 -1
  9. package/dist/src/editors/input-chart-multi-series-abstract.js +1 -1
  10. package/dist/src/editors/input-chart-multi-series-abstract.js.map +1 -1
  11. package/dist/src/editors/input-chart-styles.js +1 -1
  12. package/dist/src/editors/input-chart-styles.js.map +1 -1
  13. package/dist/src/editors/ox-input-chart-hbar.js +1 -1
  14. package/dist/src/editors/ox-input-chart-hbar.js.map +1 -1
  15. package/dist/src/editors/ox-property-editor-chart.js +1 -1
  16. package/dist/src/editors/ox-property-editor-chart.js.map +1 -1
  17. package/dist/src/progress/ox-progress-circle.d.ts +1 -1
  18. package/dist/src/progress/ox-progress-circle.js +1 -1
  19. package/dist/src/progress/ox-progress-circle.js.map +1 -1
  20. package/dist/src/scichart/ox-scichart.d.ts +0 -2
  21. package/dist/src/scichart/ox-scichart.js +3 -11
  22. package/dist/src/scichart/ox-scichart.js.map +1 -1
  23. package/dist/src/scichart/scichart-builder.js.map +1 -1
  24. package/dist/tsconfig.tsbuildinfo +1 -1
  25. package/package.json +10 -4
  26. package/src/chartjs/config-converter.ts +1 -1
  27. package/src/chartjs/ox-chart-js.ts +1 -1
  28. package/src/editors/input-chart-abstract.ts +6 -9
  29. package/src/editors/input-chart-multi-series-abstract.ts +1 -1
  30. package/src/editors/input-chart-styles.ts +1 -1
  31. package/src/editors/ox-input-chart-hbar.ts +1 -1
  32. package/src/editors/ox-property-editor-chart.ts +1 -1
  33. package/src/progress/ox-progress-circle.ts +1 -1
  34. package/src/scichart/ox-scichart.ts +3 -5
  35. package/src/scichart/scichart-builder.ts +1 -1
  36. package/dist/src/utils/text-formatter.d.ts +0 -1
  37. package/dist/src/utils/text-formatter.js +0 -78
  38. package/dist/src/utils/text-formatter.js.map +0 -1
  39. package/src/utils/text-formatter.ts +0 -106
@@ -1 +1 @@
1
- {"version":3,"file":"ox-property-editor-chart.js","sourceRoot":"","sources":["../../../src/editors/ox-property-editor-chart.ts"],"names":[],"mappings":";AAAA,OAAO,0BAA0B,CAAA;AAEjC,OAAO,uBAAuB,CAAA;AAC9B,OAAO,wBAAwB,CAAA;AAC/B,OAAO,sBAAsB,CAAA;AAC7B,OAAO,wBAAwB,CAAA;AAE/B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAW,MAAM,KAAK,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,gBAAgB,EAAgB,MAAM,0BAA0B,CAAA;AAGlE,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,gBAAgB;aACxC,WAAM,GAAG;QACd,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+BF;KACF,AAjCY,CAiCZ;IAED,cAAc,CAAC,KAAU,EAAE,IAAkB;QAC3C,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,MAAM,CAAC;YACZ,KAAK,KAAK;gBACR,OAAO,IAAI,CAAA,iCAAiC,KAAK,eAAe,KAAK,qCAAqC,CAAA;YAC5G,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAA,gCAAgC,KAAK,eAAe,KAAK,oCAAoC,CAAA;YAC1G,KAAK,KAAK,CAAC;YACX,KAAK,UAAU,CAAC;YAChB,KAAK,WAAW;gBACd,OAAO,IAAI,CAAA,+BAA+B,KAAK,eAAe,KAAK,mCAAmC,CAAA;YACxG,KAAK,OAAO;gBACV,OAAO,IAAI,CAAA,iCAAiC,KAAK,eAAe,KAAK,qCAAqC,CAAA;YAC5G,KAAK,YAAY;gBACf,OAAO,IAAI,CAAA;8CAC2B,KAAK,eAAe,KAAK;SAC9D,CAAA;QACL,CAAC;QAED,OAAO,IAAI,CAAA,EAAE,CAAA;IACf,CAAC;;AAxDU,WAAW;IADvB,aAAa,CAAC,0BAA0B,CAAC;GAC7B,WAAW,CAyDvB","sourcesContent":["import '@operato/i18n/ox-i18n.js'\n\nimport './ox-input-chart-hbar'\nimport './ox-input-chart-mixed'\nimport './ox-input-chart-pie'\nimport './ox-input-chart-radar'\n\nimport { css, html, nothing } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { OxPropertyEditor, PropertySpec } from '@operato/property-editor'\n\n@customElement('ox-property-editor-chart')\nexport class ChartEditor extends OxPropertyEditor {\n static styles = [\n css`\n :host {\n display: block;\n padding: 5px;\n\n --md-elevated-button-container-height: 20px;\n }\n\n #chart-type {\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n grid-gap: 5px;\n }\n\n #chart-type > label {\n box-sizing: border-box;\n grid-column: span 3;\n\n text-align: right;\n\n color: var(--md-sys-color-on-secondary-container);\n font-size: 0.8em;\n line-height: 2;\n text-transform: capitalize;\n }\n\n #chart-type > input {\n box-sizing: border-box;\n grid-column: span 7;\n border: 1px solid rgba(0, 0, 0, 0.2);\n }\n `\n ]\n\n editorTemplate(value: any, spec: PropertySpec) {\n switch (value) {\n case 'line':\n case 'bar':\n return html` <ox-input-chart-mixed .value=${value} chart-type=${value} fullwidth></ox-input-chart-mixed> `\n case 'horizontalBar':\n return html` <ox-input-chart-hbar .value=${value} chart-type=${value} fullwidth></ox-input-chart-hbar> `\n case 'pie':\n case 'doughnut':\n case 'polarArea':\n return html` <ox-input-chart-pie .value=${value} chart-type=${value} fullwidth></ox-input-chart-pie> `\n case 'radar':\n return html` <ox-input-chart-radar .value=${value} chart-type=${value} fullwidth></ox-input-chart-radar> `\n case 'timeseries':\n return html`\n <ox-input-chart-timeseries .value=${value} chart-type=${value} fullwidth></ox-input-chart-timeseries>\n `\n }\n\n return html``\n }\n}\n"]}
1
+ {"version":3,"file":"ox-property-editor-chart.js","sourceRoot":"","sources":["../../../src/editors/ox-property-editor-chart.ts"],"names":[],"mappings":";AAAA,OAAO,0BAA0B,CAAA;AAEjC,OAAO,uBAAuB,CAAA;AAC9B,OAAO,wBAAwB,CAAA;AAC/B,OAAO,sBAAsB,CAAA;AAC7B,OAAO,wBAAwB,CAAA;AAE/B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAW,MAAM,KAAK,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,gBAAgB,EAAgB,MAAM,0BAA0B,CAAA;AAGlE,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,gBAAgB;aACxC,WAAM,GAAG;QACd,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+BF;KACF,AAjCY,CAiCZ;IAED,cAAc,CAAC,KAAU,EAAE,IAAkB;QAC3C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC;YACZ,KAAK,KAAK;gBACR,OAAO,IAAI,CAAA,iCAAiC,KAAK,eAAe,KAAK,qCAAqC,CAAA;YAC5G,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAA,gCAAgC,KAAK,eAAe,KAAK,oCAAoC,CAAA;YAC1G,KAAK,KAAK,CAAC;YACX,KAAK,UAAU,CAAC;YAChB,KAAK,WAAW;gBACd,OAAO,IAAI,CAAA,+BAA+B,KAAK,eAAe,KAAK,mCAAmC,CAAA;YACxG,KAAK,OAAO;gBACV,OAAO,IAAI,CAAA,iCAAiC,KAAK,eAAe,KAAK,qCAAqC,CAAA;YAC5G,KAAK,YAAY;gBACf,OAAO,IAAI,CAAA;8CAC2B,KAAK,eAAe,KAAK;SAC9D,CAAA;QACL,CAAC;QAED,OAAO,IAAI,CAAA,EAAE,CAAA;IACf,CAAC;;AAxDU,WAAW;IADvB,aAAa,CAAC,0BAA0B,CAAC;GAC7B,WAAW,CAyDvB","sourcesContent":["import '@operato/i18n/ox-i18n.js'\n\nimport './ox-input-chart-hbar'\nimport './ox-input-chart-mixed'\nimport './ox-input-chart-pie'\nimport './ox-input-chart-radar'\n\nimport { css, html, nothing } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\nimport { OxPropertyEditor, PropertySpec } from '@operato/property-editor'\n\n@customElement('ox-property-editor-chart')\nexport class ChartEditor extends OxPropertyEditor {\n static styles = [\n css`\n :host {\n display: block;\n padding: 5px;\n\n --md-elevated-button-container-height: 20px;\n }\n\n #chart-type {\n display: grid;\n grid-template-columns: repeat(10, 1fr);\n grid-gap: 5px;\n }\n\n #chart-type > label {\n box-sizing: border-box;\n grid-column: span 3;\n\n text-align: right;\n\n color: var(--md-sys-color-on-secondary-container);\n font-size: 0.8em;\n line-height: 2;\n text-transform: capitalize;\n }\n\n #chart-type > input {\n box-sizing: border-box;\n grid-column: span 7;\n border: 1px solid rgba(0, 0, 0, 0.2);\n }\n `\n ]\n\n editorTemplate(value: any, spec: PropertySpec) {\n switch (value.type) {\n case 'line':\n case 'bar':\n return html` <ox-input-chart-mixed .value=${value} chart-type=${value} fullwidth></ox-input-chart-mixed> `\n case 'horizontalBar':\n return html` <ox-input-chart-hbar .value=${value} chart-type=${value} fullwidth></ox-input-chart-hbar> `\n case 'pie':\n case 'doughnut':\n case 'polarArea':\n return html` <ox-input-chart-pie .value=${value} chart-type=${value} fullwidth></ox-input-chart-pie> `\n case 'radar':\n return html` <ox-input-chart-radar .value=${value} chart-type=${value} fullwidth></ox-input-chart-radar> `\n case 'timeseries':\n return html`\n <ox-input-chart-timeseries .value=${value} chart-type=${value} fullwidth></ox-input-chart-timeseries>\n `\n }\n\n return html``\n }\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { PropertyValues, LitElement } from 'lit';
5
5
  /**
6
- WEB Component for code-mirror code editor.
6
+ A lightweight progress-circle WebComponent
7
7
 
8
8
  Example:
9
9
  <ox-progress-circle
@@ -6,7 +6,7 @@ import { LitElement, css, html } from 'lit';
6
6
  import { customElement, property, query } from 'lit/decorators.js';
7
7
  import { ScrollbarStyles } from '@operato/styles';
8
8
  /**
9
- WEB Component for code-mirror code editor.
9
+ A lightweight progress-circle WebComponent
10
10
 
11
11
  Example:
12
12
  <ox-progress-circle
@@ -1 +1 @@
1
- {"version":3,"file":"ox-progress-circle.js","sourceRoot":"","sources":["../../../src/progress/ox-progress-circle.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { PropertyValues, LitElement, css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ScrollbarStyles } from '@operato/styles'\n\n/**\nWEB Component for code-mirror code editor.\n\nExample:\n <ox-progress-circle\n .value=${70}\n titleText=\"전체\"\n suffix=\"%\"\n fontSize=\"29px\"\n fontColor=\"#4E5055\"\n borderStyle=\"none\"\n innerCircleSize=\"28%\"\n circleColor=\"#0595E5\"\n shadow=\"#00000026 4px 4px 4px\"\n background=\"#eaf5fd\"\n ></ox-progress-circle>\n*/\n@customElement('ox-progress-circle')\nexport class OxProgressCircle extends LitElement {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n }\n\n div[circle] {\n font-size: 29px;\n font-weight: bold;\n width: 100%;\n aspect-ratio: 1;\n display: flex;\n border-radius: 50%;\n border: 1px solid #353b48;\n position: relative;\n background: conic-gradient(yellowgreen 0deg, white 0deg);\n box-shadow: #00000026 5px 5px 5px;\n }\n div[inner-circle] {\n width: 90%;\n aspect-ratio: 1;\n border-radius: inherit;\n background-color: #353b48;\n margin: auto;\n display: flex;\n flex-direction: column;\n align-items: center;\n color: white;\n justify-content: center;\n box-shadow: inset #00000026 -2px 2px 8px;\n }\n\n div[inner-circle] span {\n display: flex;\n align-items: center;\n }\n\n span[progress-title] {\n font-size: 0.65em;\n margin-bottom: -5%;\n }\n `\n ]\n\n @property({ type: Number }) value: number = 0\n @property({ type: String }) suffix: string = ''\n @property({ type: String }) titleText: string = ''\n @property({ type: String }) fontSize: string = '10px'\n @property({ type: String }) fontColor: string = ''\n @property({ type: String }) borderStyle: string = ''\n @property({ type: String }) innerCircleSize: string = '10%'\n @property({ type: String }) shadow: string = ''\n @property({ type: String }) circleColor: string = 'yellowgreen'\n @property({ type: String }) background: string = ''\n\n @query('div[circle]') circle!: HTMLDivElement\n @query('div[inner-circle]') innerCircle!: HTMLDivElement\n @query('span[progress-title]') progressTitle?: HTMLSpanElement\n\n firstUpdated() {\n if (this.fontSize) {\n this.circle.style.fontSize = this.fontSize\n }\n if (this.fontColor) {\n this.innerCircle.style.color = this.fontColor\n }\n if (this.borderStyle) {\n this.circle.style.border = this.borderStyle\n }\n if (this.innerCircleSize) {\n this.innerCircle.style.width = `calc(100% - ${this.innerCircleSize})`\n }\n if (this.shadow) {\n this.circle.style.boxShadow = this.shadow\n }\n if (this.background) {\n this.innerCircle.style.background = this.background\n }\n if (this.progressTitle && this.circleColor) {\n this.progressTitle.style.color = this.circleColor\n }\n }\n\n updated(changes: PropertyValues<this>) {\n if (changes.has('value')) {\n this.updateCircleBackground()\n }\n }\n\n updateCircleBackground() {\n const position = this.value * 3.6 // 360 = 100%\n this.circle.style.background = `conic-gradient(${this.circleColor} ${position}deg, ${this.background} 0deg)`\n }\n\n render() {\n return html`\n <div circle>\n <div inner-circle>\n ${this.titleText ? html`<span progress-title>${this.titleText}</span>` : ''}\n <span>${this.value}${this.suffix}</span>\n </div>\n </div>\n `\n }\n}\n"]}
1
+ {"version":3,"file":"ox-progress-circle.js","sourceRoot":"","sources":["../../../src/progress/ox-progress-circle.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { PropertyValues, LitElement, css, html } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { ScrollbarStyles } from '@operato/styles'\n\n/**\nA lightweight progress-circle WebComponent\n\nExample:\n <ox-progress-circle\n .value=${70}\n titleText=\"전체\"\n suffix=\"%\"\n fontSize=\"29px\"\n fontColor=\"#4E5055\"\n borderStyle=\"none\"\n innerCircleSize=\"28%\"\n circleColor=\"#0595E5\"\n shadow=\"#00000026 4px 4px 4px\"\n background=\"#eaf5fd\"\n ></ox-progress-circle>\n*/\n@customElement('ox-progress-circle')\nexport class OxProgressCircle extends LitElement {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n }\n\n div[circle] {\n font-size: 29px;\n font-weight: bold;\n width: 100%;\n aspect-ratio: 1;\n display: flex;\n border-radius: 50%;\n border: 1px solid #353b48;\n position: relative;\n background: conic-gradient(yellowgreen 0deg, white 0deg);\n box-shadow: #00000026 5px 5px 5px;\n }\n div[inner-circle] {\n width: 90%;\n aspect-ratio: 1;\n border-radius: inherit;\n background-color: #353b48;\n margin: auto;\n display: flex;\n flex-direction: column;\n align-items: center;\n color: white;\n justify-content: center;\n box-shadow: inset #00000026 -2px 2px 8px;\n }\n\n div[inner-circle] span {\n display: flex;\n align-items: center;\n }\n\n span[progress-title] {\n font-size: 0.65em;\n margin-bottom: -5%;\n }\n `\n ]\n\n @property({ type: Number }) value: number = 0\n @property({ type: String }) suffix: string = ''\n @property({ type: String }) titleText: string = ''\n @property({ type: String }) fontSize: string = '10px'\n @property({ type: String }) fontColor: string = ''\n @property({ type: String }) borderStyle: string = ''\n @property({ type: String }) innerCircleSize: string = '10%'\n @property({ type: String }) shadow: string = ''\n @property({ type: String }) circleColor: string = 'yellowgreen'\n @property({ type: String }) background: string = ''\n\n @query('div[circle]') circle!: HTMLDivElement\n @query('div[inner-circle]') innerCircle!: HTMLDivElement\n @query('span[progress-title]') progressTitle?: HTMLSpanElement\n\n firstUpdated() {\n if (this.fontSize) {\n this.circle.style.fontSize = this.fontSize\n }\n if (this.fontColor) {\n this.innerCircle.style.color = this.fontColor\n }\n if (this.borderStyle) {\n this.circle.style.border = this.borderStyle\n }\n if (this.innerCircleSize) {\n this.innerCircle.style.width = `calc(100% - ${this.innerCircleSize})`\n }\n if (this.shadow) {\n this.circle.style.boxShadow = this.shadow\n }\n if (this.background) {\n this.innerCircle.style.background = this.background\n }\n if (this.progressTitle && this.circleColor) {\n this.progressTitle.style.color = this.circleColor\n }\n }\n\n updated(changes: PropertyValues<this>) {\n if (changes.has('value')) {\n this.updateCircleBackground()\n }\n }\n\n updateCircleBackground() {\n const position = this.value * 3.6 // 360 = 100%\n this.circle.style.background = `conic-gradient(${this.circleColor} ${position}deg, ${this.background} 0deg)`\n }\n\n render() {\n return html`\n <div circle>\n <div inner-circle>\n ${this.titleText ? html`<span progress-title>${this.titleText}</span>` : ''}\n <span>${this.value}${this.suffix}</span>\n </div>\n </div>\n `\n }\n}\n"]}
@@ -10,8 +10,6 @@ declare class OxSciChart extends LitElement {
10
10
  data: {
11
11
  [attr: string]: any;
12
12
  }[];
13
- attrX: string;
14
- attrY: string;
15
13
  private chart;
16
14
  private dataSeries;
17
15
  container: HTMLDivElement;
@@ -7,8 +7,6 @@ let OxSciChart = class OxSciChart extends LitElement {
7
7
  super(...arguments);
8
8
  this.config = null;
9
9
  this.data = [];
10
- this.attrX = 'x';
11
- this.attrY = 'y';
12
10
  this.chart = null;
13
11
  this.dataSeries = [];
14
12
  }
@@ -79,9 +77,9 @@ let OxSciChart = class OxSciChart extends LitElement {
79
77
  this.chart?.sciChartSurface.invalidateElement();
80
78
  }
81
79
  get dataSet() {
82
- const { attrX, data } = this;
83
- const datasets = this.config?.data?.datasets || [];
84
- if (!(data instanceof Array)) {
80
+ const { config, data } = this;
81
+ const { datasets = [], labelDataKey: attrX } = config?.data || {};
82
+ if (!(data instanceof Array) || !attrX) {
85
83
  return [];
86
84
  }
87
85
  return datasets.map(dataset => {
@@ -113,12 +111,6 @@ __decorate([
113
111
  __decorate([
114
112
  property({ type: Array })
115
113
  ], OxSciChart.prototype, "data", void 0);
116
- __decorate([
117
- property({ type: String, attribute: 'attr-x' })
118
- ], OxSciChart.prototype, "attrX", void 0);
119
- __decorate([
120
- property({ type: String, attribute: 'attr-y' })
121
- ], OxSciChart.prototype, "attrY", void 0);
122
114
  __decorate([
123
115
  query('div#container')
124
116
  ], OxSciChart.prototype, "container", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"ox-scichart.js","sourceRoot":"","sources":["../../../src/scichart/ox-scichart.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css } from 'lit'\nimport { property, query, customElement } from 'lit/decorators.js'\nimport { buildSciChart } from './scichart-builder'\n\ndeclare global {\n interface Window {\n sciChartLoaded: boolean\n sciChartLoadingPromise: Promise<void>\n }\n}\n\n@customElement('ox-scichart')\nclass OxSciChart extends LitElement {\n @property({ type: Object }) config: OperatoChart.ChartConfig | null = null\n @property({ type: Array }) data: { [attr: string]: any }[] = []\n @property({ type: String, attribute: 'attr-x' }) attrX: string = 'x'\n @property({ type: String, attribute: 'attr-y' }) attrY: string = 'y'\n\n private chart: any = null\n private dataSeries: any[] = []\n\n @query('div#container') container!: HTMLDivElement\n\n static styles = css`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .chart-container {\n display: flex;\n width: 100%;\n height: 100%;\n }\n\n .chart-content {\n flex: 1;\n position: relative;\n }\n `\n\n firstUpdated() {\n this.loadSciChart()\n }\n\n async loadSciChart() {\n if (!window.sciChartLoaded) {\n if (!window.sciChartLoadingPromise) {\n window.sciChartLoadingPromise = new Promise<void>(resolve => {\n const script = document.createElement('script')\n script.src = 'https://cdn.jsdelivr.net/npm/scichart/index.min.js'\n script.crossOrigin = 'anonymous'\n script.onload = () => {\n window.sciChartLoaded = true\n\n SciChart.SciChartSurface.UseCommunityLicense()\n\n resolve()\n }\n document.head.appendChild(script)\n })\n }\n\n await window.sciChartLoadingPromise\n }\n\n this.initializeSciChart()\n }\n\n async initializeSciChart() {\n const { chart, dataSeries } = (await buildSciChart(this.config, this.container, {})) || {}\n\n this.chart = chart\n this.dataSeries = dataSeries!\n\n this.updateDataSeries()\n }\n\n async updated(changedProperties: Map<string | number | symbol, unknown>) {\n if (changedProperties.has('config') && this.config) {\n await this.initializeSciChart()\n }\n\n if (changedProperties.has('data')) {\n this.updateDataSeries()\n this.chart?.sciChartSurface.zoomExtents()\n }\n }\n\n updateDataSeries() {\n if (!this.dataSeries?.length) return\n\n this.dataSeries.forEach(ds => ds.clear())\n const newData = this.dataSet\n\n newData.forEach((data, index) => {\n this.dataSeries[index].appendRange(\n data.map(d => d.xValue),\n data.map(d => d.yValue)\n )\n })\n\n this.chart?.sciChartSurface.zoomExtents()\n this.chart?.sciChartSurface.invalidateElement()\n }\n\n get dataSet(): { xValue: number; yValue: number }[][] {\n const { attrX, data } = this\n const datasets = this.config?.data?.datasets || []\n\n if (!(data instanceof Array)) {\n return []\n }\n\n return datasets.map(dataset => {\n return data\n .map(item => {\n if (!item || typeof item !== 'object') {\n return\n }\n\n const xValue = new Date(item[attrX])\n if (isNaN(xValue.getTime())) {\n console.error('Invalid date:', item[attrX])\n return\n }\n\n return {\n xValue: xValue.getTime() / 1000,\n yValue: item[dataset.dataKey!]\n }\n })\n .filter(Boolean) as { xValue: number; yValue: number }[]\n })\n }\n\n render() {\n return html` <div id=\"container\" class=\"chart-container\"></div> `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ox-scichart': OxSciChart\n }\n}\n"]}
1
+ {"version":3,"file":"ox-scichart.js","sourceRoot":"","sources":["../../../src/scichart/ox-scichart.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAUlD,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAAnC;;QAC8B,WAAM,GAAoC,IAAI,CAAA;QAC/C,SAAI,GAA8B,EAAE,CAAA;QAEvD,UAAK,GAAQ,IAAI,CAAA;QACjB,eAAU,GAAU,EAAE,CAAA;IAyHhC,CAAC;aArHQ,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;GAiBlB,AAjBY,CAiBZ;IAED,YAAY;QACV,IAAI,CAAC,YAAY,EAAE,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;gBACnC,MAAM,CAAC,sBAAsB,GAAG,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;oBAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;oBAC/C,MAAM,CAAC,GAAG,GAAG,oDAAoD,CAAA;oBACjE,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA;oBAChC,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;wBACnB,MAAM,CAAC,cAAc,GAAG,IAAI,CAAA;wBAE5B,QAAQ,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAA;wBAE9C,OAAO,EAAE,CAAA;oBACX,CAAC,CAAA;oBACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;gBACnC,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,MAAM,MAAM,CAAC,sBAAsB,CAAA;QACrC,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAE1F,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,UAAU,GAAG,UAAW,CAAA;QAE7B,IAAI,CAAC,gBAAgB,EAAE,CAAA;IACzB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,iBAAyD;QACrE,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACnD,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACjC,CAAC;QAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACvB,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,CAAA;QAC3C,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM;YAAE,OAAM;QAEpC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC9B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,CAChC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EACvB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CACxB,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,CAAA;QACzC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,iBAAiB,EAAE,CAAA;IACjD,CAAC;IAED,IAAI,OAAO;QACT,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;QAC7B,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,IAAI,IAAI,EAAE,CAAA;QAEjE,IAAI,CAAC,CAAC,IAAI,YAAY,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,OAAO,EAAE,CAAA;QACX,CAAC;QAED,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC5B,OAAO,IAAI;iBACR,GAAG,CAAC,IAAI,CAAC,EAAE;gBACV,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtC,OAAM;gBACR,CAAC;gBAED,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;gBACpC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;oBAC3C,OAAM;gBACR,CAAC;gBAED,OAAO;oBACL,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI;oBAC/B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAQ,CAAC;iBAC/B,CAAA;YACH,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAyC,CAAA;QAC5D,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA,sDAAsD,CAAA;IACnE,CAAC;;AA5H2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAA+C;AAC/C;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;wCAAqC;AAKvC;IAAvB,KAAK,CAAC,eAAe,CAAC;6CAA2B;AAP9C,UAAU;IADf,aAAa,CAAC,aAAa,CAAC;GACvB,UAAU,CA8Hf","sourcesContent":["import { LitElement, html, css } from 'lit'\nimport { property, query, customElement } from 'lit/decorators.js'\nimport { buildSciChart } from './scichart-builder'\n\ndeclare global {\n interface Window {\n sciChartLoaded: boolean\n sciChartLoadingPromise: Promise<void>\n }\n}\n\n@customElement('ox-scichart')\nclass OxSciChart extends LitElement {\n @property({ type: Object }) config: OperatoChart.ChartConfig | null = null\n @property({ type: Array }) data: { [attr: string]: any }[] = []\n\n private chart: any = null\n private dataSeries: any[] = []\n\n @query('div#container') container!: HTMLDivElement\n\n static styles = css`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n\n .chart-container {\n display: flex;\n width: 100%;\n height: 100%;\n }\n\n .chart-content {\n flex: 1;\n position: relative;\n }\n `\n\n firstUpdated() {\n this.loadSciChart()\n }\n\n async loadSciChart() {\n if (!window.sciChartLoaded) {\n if (!window.sciChartLoadingPromise) {\n window.sciChartLoadingPromise = new Promise<void>(resolve => {\n const script = document.createElement('script')\n script.src = 'https://cdn.jsdelivr.net/npm/scichart/index.min.js'\n script.crossOrigin = 'anonymous'\n script.onload = () => {\n window.sciChartLoaded = true\n\n SciChart.SciChartSurface.UseCommunityLicense()\n\n resolve()\n }\n document.head.appendChild(script)\n })\n }\n\n await window.sciChartLoadingPromise\n }\n\n this.initializeSciChart()\n }\n\n async initializeSciChart() {\n const { chart, dataSeries } = (await buildSciChart(this.config, this.container, {})) || {}\n\n this.chart = chart\n this.dataSeries = dataSeries!\n\n this.updateDataSeries()\n }\n\n async updated(changedProperties: Map<string | number | symbol, unknown>) {\n if (changedProperties.has('config') && this.config) {\n await this.initializeSciChart()\n }\n\n if (changedProperties.has('data')) {\n this.updateDataSeries()\n this.chart?.sciChartSurface.zoomExtents()\n }\n }\n\n updateDataSeries() {\n if (!this.dataSeries?.length) return\n\n this.dataSeries.forEach(ds => ds.clear())\n const newData = this.dataSet\n\n newData.forEach((data, index) => {\n this.dataSeries[index].appendRange(\n data.map(d => d.xValue),\n data.map(d => d.yValue)\n )\n })\n\n this.chart?.sciChartSurface.zoomExtents()\n this.chart?.sciChartSurface.invalidateElement()\n }\n\n get dataSet(): { xValue: number; yValue: number }[][] {\n const { config, data } = this\n const { datasets = [], labelDataKey: attrX } = config?.data || {}\n\n if (!(data instanceof Array) || !attrX) {\n return []\n }\n\n return datasets.map(dataset => {\n return data\n .map(item => {\n if (!item || typeof item !== 'object') {\n return\n }\n\n const xValue = new Date(item[attrX])\n if (isNaN(xValue.getTime())) {\n console.error('Invalid date:', item[attrX])\n return\n }\n\n return {\n xValue: xValue.getTime() / 1000,\n yValue: item[dataset.dataKey!]\n }\n })\n .filter(Boolean) as { xValue: number; yValue: number }[]\n })\n }\n\n render() {\n return html` <div id=\"container\" class=\"chart-container\"></div> `\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ox-scichart': OxSciChart\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"scichart-builder.js","sourceRoot":"","sources":["../../../src/scichart/scichart-builder.ts"],"names":[],"mappings":"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","sourcesContent":["import { TinyColor } from '@ctrl/tinycolor'\nimport { format as formatText } from '../utils/text-formatter'\n\nfunction getBaseColorFromTheme(theme?: 'light' | 'dark' | 'auto') {\n return new TinyColor(theme == 'dark' ? '#fff' : '#000')\n}\n\nfunction getThemeFromBrowser() {\n return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n}\n\nexport async function buildSciChart(\n config: OperatoChart.ChartConfig | undefined | null,\n container: any,\n { fontSize, fontFamily, fontColor }: { fontSize?: number; fontFamily?: string; fontColor?: string }\n): Promise<{ chart: any; dataSeries: any[] } | undefined> {\n if (!config) {\n return\n }\n\n const {\n SciChartSurface,\n SciChartJSLightTheme,\n SciChartJSDarkv2Theme,\n XyDataSeries,\n FastLineRenderableSeries,\n SplineLineRenderableSeries,\n FastColumnRenderableSeries,\n StackedColumnRenderableSeries,\n StackedMountainRenderableSeries,\n StackedColumnCollection,\n StackedMountainCollection,\n NumericAxis,\n DateTimeNumericAxis,\n EAutoRange,\n EAxisAlignment,\n NumberRange,\n MouseWheelZoomModifier,\n RubberBandXyZoomModifier,\n ZoomExtentsModifier,\n RolloverModifier,\n SmartDateLabelProvider,\n EllipsePointMarker,\n SquarePointMarker,\n TrianglePointMarker,\n CrossPointMarker,\n XPointMarker,\n WaveAnimation,\n LegendModifier\n } = SciChart\n\n const { type: chartType, options, data: fromData } = config\n const { datasets = [] } = fromData || {}\n var {\n theme,\n tooltip,\n animation,\n legend,\n scales: fromScales,\n xGridLine,\n yGridLine,\n y2ndGridLine,\n stacked\n } = options || {}\n\n var baseColor = getBaseColorFromTheme(theme)\n\n if (theme === 'auto') {\n theme = getThemeFromBrowser()\n }\n\n fontColor = fontColor || baseColor.clone().toString()\n\n const { xAxes = [], yAxes = [] } = fromScales || {}\n\n const chart = await SciChartSurface.create(container, {\n theme: theme == 'dark' ? new SciChartJSDarkv2Theme() : new SciChartJSLightTheme()\n })\n const { sciChartSurface, wasmContext } = chart\n\n // X 축 설정\n xAxes.forEach((axis, index) => {\n const { axisTitle, ticks } = axis\n const {\n autoMax,\n autoMin,\n min,\n max,\n stepSize,\n beginAtZero,\n color = fontColor,\n textStrokeColor = fontColor,\n display = !!axisTitle\n } = ticks || {}\n\n const xAxis = new DateTimeNumericAxis(wasmContext, {\n axisTitle,\n autoRange: autoMin || autoMax ? EAutoRange.Always : undefined,\n axisAlignment: EAxisAlignment.Bottom,\n visibleRange: min !== undefined && max !== undefined ? new NumberRange(min, max) : undefined,\n majorDelta: stepSize,\n growBy: beginAtZero ? new NumberRange(0.1, 0.1) : undefined,\n labelStyle: {\n fontFamily,\n fontSize,\n color\n },\n axisTitleStyle: {\n fontFamily,\n fontSize,\n color: textStrokeColor\n },\n labelProvider: new SmartDateLabelProvider()\n })\n\n sciChartSurface.xAxes.add(xAxis)\n })\n\n // Y 축 설정\n yAxes.forEach((axis, index) => {\n const { axisTitle, ticks } = axis\n const { autoMax, autoMin, min, max, stepSize, beginAtZero } = ticks || {}\n\n const yAxis = new NumericAxis(wasmContext, {\n id: `yAxis${index}`,\n axisTitle,\n autoRange: autoMin || autoMax ? EAutoRange.Always : undefined,\n axisAlignment: index === 0 ? EAxisAlignment.Left : EAxisAlignment.Right,\n visibleRange: min !== undefined && max !== undefined ? new NumberRange(min, max) : undefined,\n majorDelta: stepSize,\n growBy: beginAtZero ? new NumberRange(0.1, 0.1) : undefined,\n labelStyle: {\n fontFamily,\n fontSize,\n color: fontColor\n },\n axisTitleStyle: {\n fontFamily,\n fontSize,\n color: fontColor\n }\n })\n\n sciChartSurface.yAxes.add(yAxis)\n })\n\n // 시리즈 설정\n const dataSeriesArray = datasets.map((dataset, index) => {\n const dataSeries = new XyDataSeries(wasmContext, {\n dataSeriesName: dataset.label,\n containsNaN: false\n })\n\n const yAxisId = dataset.yAxisID || 'yAxis0'\n const stackGroupId = dataset.stack || `__stack${index}__`\n\n let series: any\n if (dataset.type === 'bar') {\n if (stacked) {\n series = new StackedColumnRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: dataset.borderWidth || 2,\n fill: dataset.backgroundColor || '#FF6600',\n yAxisId,\n stackedGroupId: stackGroupId\n })\n } else {\n series = new FastColumnRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: dataset.borderWidth || 2,\n fill: dataset.backgroundColor || '#FF6600',\n animation: animation && new WaveAnimation({ duration: 1000, fadeEffect: true }),\n yAxisId\n })\n }\n } else {\n const { pointStyle, lineTension } = dataset\n let pointMarker\n\n switch (pointStyle) {\n case 'circle':\n pointMarker = new EllipsePointMarker(wasmContext, {\n width: 10,\n height: 10,\n strokeThickness: 2,\n fill: dataset.color || '#FF6600',\n stroke: '#000000'\n })\n break\n case 'triangle':\n pointMarker = new TrianglePointMarker(wasmContext, {\n width: 10,\n height: 10,\n strokeThickness: 2,\n fill: dataset.color || '#FF6600',\n stroke: '#000000'\n })\n break\n case 'rect':\n pointMarker = new SquarePointMarker(wasmContext, {\n width: 10,\n height: 10,\n strokeThickness: 2,\n fill: dataset.color || '#FF6600',\n stroke: '#000000'\n })\n break\n case 'cross':\n pointMarker = new CrossPointMarker(wasmContext, {\n width: 10,\n height: 10,\n strokeThickness: 2,\n fill: dataset.color || '#FF6600',\n stroke: '#000000'\n })\n break\n case 'crossRot':\n pointMarker = new XPointMarker(wasmContext, {\n width: 10,\n height: 10,\n strokeThickness: 2,\n fill: dataset.color || '#FF6600',\n stroke: '#000000'\n })\n break\n default:\n pointMarker = new EllipsePointMarker(wasmContext, {\n width: 10,\n height: 10,\n strokeThickness: 2,\n fill: dataset.color || '#FF6600',\n stroke: '#000000'\n })\n }\n\n if (stacked) {\n series = new StackedMountainRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: dataset.borderWidth || 2,\n stroke: dataset.color || '#FF6600',\n fill: dataset.backgroundColor || '#FF6600',\n yAxisId,\n stackedGroupId: stackGroupId\n })\n } else {\n series =\n !!lineTension && lineTension > 0\n ? new SplineLineRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: dataset.borderWidth || 2,\n stroke: dataset.color || '#FF6600',\n pointMarker,\n animation: animation && new WaveAnimation({ duration: 1000, fadeEffect: true }),\n yAxisId\n })\n : new FastLineRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: dataset.borderWidth || 2,\n stroke: dataset.color || '#FF6600',\n pointMarker,\n animation: animation && new WaveAnimation({ duration: 1000, fadeEffect: true }),\n yAxisId\n })\n }\n }\n\n sciChartSurface.renderableSeries.add(series)\n\n if (tooltip) {\n const rolloverModifier = new RolloverModifier({\n showTooltip: true,\n showAxisLabels: true,\n tooltipColor: 'white',\n tooltipBackgroundColor: 'rgba(0, 0, 0, 0.7)',\n rollOverDataSeries: dataSeries\n })\n\n sciChartSurface.chartModifiers.add(rolloverModifier)\n }\n\n return dataSeries\n })\n\n // Stacked collections 추가\n if (stacked) {\n const stackedColumnCollection = new StackedColumnCollection(wasmContext)\n const stackedMountainCollection = new StackedMountainCollection(wasmContext)\n\n sciChartSurface.renderableSeries.asArray().forEach((series: any) => {\n if (series instanceof StackedColumnRenderableSeries) {\n stackedColumnCollection.add(series)\n } else if (series instanceof StackedMountainRenderableSeries) {\n stackedMountainCollection.add(series)\n }\n })\n\n if (stackedColumnCollection.size() > 0) {\n sciChartSurface.renderableSeries.add(stackedColumnCollection)\n }\n\n if (stackedMountainCollection.size() > 0) {\n sciChartSurface.renderableSeries.add(stackedMountainCollection)\n }\n }\n\n // 줌인/줌아웃 모디파이어 추가\n sciChartSurface.chartModifiers.add(\n new RubberBandXyZoomModifier(),\n new MouseWheelZoomModifier(),\n new ZoomExtentsModifier()\n )\n\n // Legend 설정\n if (legend?.display) {\n const legendModifier = new LegendModifier({\n showCheckboxes: true,\n showSeriesMarkers: true,\n showLegend: true,\n placement: legend.position || 'bottom-right'\n })\n sciChartSurface.chartModifiers.add(legendModifier)\n }\n\n return { chart, dataSeries: dataSeriesArray }\n}\n"]}
1
+ {"version":3,"file":"scichart-builder.js","sourceRoot":"","sources":["../../../src/scichart/scichart-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAG3C,SAAS,qBAAqB,CAAC,KAAiC;IAC9D,OAAO,IAAI,SAAS,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AACzD,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;AAC1G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAmD,EACnD,SAAc,EACd,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAkE;IAEnG,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAM;IACR,CAAC;IAED,MAAM,EACJ,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,6BAA6B,EAC7B,+BAA+B,EAC/B,uBAAuB,EACvB,yBAAyB,EACzB,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,cAAc,EACf,GAAG,QAAQ,CAAA;IAEZ,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;IAC3D,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAA;IACxC,IAAI,EACF,KAAK,EACL,OAAO,EACP,SAAS,EACT,MAAM,EACN,MAAM,EAAE,UAAU,EAClB,SAAS,EACT,SAAS,EACT,YAAY,EACZ,OAAO,EACR,GAAG,OAAO,IAAI,EAAE,CAAA;IAEjB,IAAI,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;IAE5C,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,KAAK,GAAG,mBAAmB,EAAE,CAAA;IAC/B,CAAC;IAED,SAAS,GAAG,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAA;IAErD,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,UAAU,IAAI,EAAE,CAAA;IAEnD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE;QACpD,KAAK,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC,CAAC,IAAI,oBAAoB,EAAE;KAClF,CAAC,CAAA;IACF,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAE9C,SAAS;IACT,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;QACjC,MAAM,EACJ,OAAO,EACP,OAAO,EACP,GAAG,EACH,GAAG,EACH,QAAQ,EACR,WAAW,EACX,KAAK,GAAG,SAAS,EACjB,eAAe,GAAG,SAAS,EAC3B,OAAO,GAAG,CAAC,CAAC,SAAS,EACtB,GAAG,KAAK,IAAI,EAAE,CAAA;QAEf,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC,WAAW,EAAE;YACjD,SAAS;YACT,SAAS,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC7D,aAAa,EAAE,cAAc,CAAC,MAAM;YACpC,YAAY,EAAE,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YAC5F,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3D,UAAU,EAAE;gBACV,UAAU;gBACV,QAAQ;gBACR,KAAK;aACN;YACD,cAAc,EAAE;gBACd,UAAU;gBACV,QAAQ;gBACR,KAAK,EAAE,eAAe;aACvB;YACD,aAAa,EAAE,IAAI,sBAAsB,EAAE;SAC5C,CAAC,CAAA;QAEF,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,SAAS;IACT,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAA;QACjC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,KAAK,IAAI,EAAE,CAAA;QAEzE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE;YACzC,EAAE,EAAE,QAAQ,KAAK,EAAE;YACnB,SAAS;YACT,SAAS,EAAE,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YAC7D,aAAa,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK;YACvE,YAAY,EAAE,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YAC5F,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;YAC3D,UAAU,EAAE;gBACV,UAAU;gBACV,QAAQ;gBACR,KAAK,EAAE,SAAS;aACjB;YACD,cAAc,EAAE;gBACd,UAAU;gBACV,QAAQ;gBACR,KAAK,EAAE,SAAS;aACjB;SACF,CAAC,CAAA;QAEF,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,SAAS;IACT,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtD,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,WAAW,EAAE;YAC/C,cAAc,EAAE,OAAO,CAAC,KAAK;YAC7B,WAAW,EAAE,KAAK;SACnB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAA;QAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,KAAK,IAAI,CAAA;QAEzD,IAAI,MAAW,CAAA;QACf,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,GAAG,IAAI,6BAA6B,CAAC,WAAW,EAAE;oBACtD,UAAU;oBACV,eAAe,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC;oBACzC,IAAI,EAAE,OAAO,CAAC,eAAe,IAAI,SAAS;oBAC1C,OAAO;oBACP,cAAc,EAAE,YAAY;iBAC7B,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,IAAI,0BAA0B,CAAC,WAAW,EAAE;oBACnD,UAAU;oBACV,eAAe,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC;oBACzC,IAAI,EAAE,OAAO,CAAC,eAAe,IAAI,SAAS;oBAC1C,SAAS,EAAE,SAAS,IAAI,IAAI,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;oBAC/E,OAAO;iBACR,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,OAAO,CAAA;YAC3C,IAAI,WAAW,CAAA;YAEf,QAAQ,UAAU,EAAE,CAAC;gBACnB,KAAK,QAAQ;oBACX,WAAW,GAAG,IAAI,kBAAkB,CAAC,WAAW,EAAE;wBAChD,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,EAAE;wBACV,eAAe,EAAE,CAAC;wBAClB,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;wBAChC,MAAM,EAAE,SAAS;qBAClB,CAAC,CAAA;oBACF,MAAK;gBACP,KAAK,UAAU;oBACb,WAAW,GAAG,IAAI,mBAAmB,CAAC,WAAW,EAAE;wBACjD,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,EAAE;wBACV,eAAe,EAAE,CAAC;wBAClB,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;wBAChC,MAAM,EAAE,SAAS;qBAClB,CAAC,CAAA;oBACF,MAAK;gBACP,KAAK,MAAM;oBACT,WAAW,GAAG,IAAI,iBAAiB,CAAC,WAAW,EAAE;wBAC/C,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,EAAE;wBACV,eAAe,EAAE,CAAC;wBAClB,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;wBAChC,MAAM,EAAE,SAAS;qBAClB,CAAC,CAAA;oBACF,MAAK;gBACP,KAAK,OAAO;oBACV,WAAW,GAAG,IAAI,gBAAgB,CAAC,WAAW,EAAE;wBAC9C,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,EAAE;wBACV,eAAe,EAAE,CAAC;wBAClB,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;wBAChC,MAAM,EAAE,SAAS;qBAClB,CAAC,CAAA;oBACF,MAAK;gBACP,KAAK,UAAU;oBACb,WAAW,GAAG,IAAI,YAAY,CAAC,WAAW,EAAE;wBAC1C,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,EAAE;wBACV,eAAe,EAAE,CAAC;wBAClB,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;wBAChC,MAAM,EAAE,SAAS;qBAClB,CAAC,CAAA;oBACF,MAAK;gBACP;oBACE,WAAW,GAAG,IAAI,kBAAkB,CAAC,WAAW,EAAE;wBAChD,KAAK,EAAE,EAAE;wBACT,MAAM,EAAE,EAAE;wBACV,eAAe,EAAE,CAAC;wBAClB,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;wBAChC,MAAM,EAAE,SAAS;qBAClB,CAAC,CAAA;YACN,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,GAAG,IAAI,+BAA+B,CAAC,WAAW,EAAE;oBACxD,UAAU;oBACV,eAAe,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC;oBACzC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;oBAClC,IAAI,EAAE,OAAO,CAAC,eAAe,IAAI,SAAS;oBAC1C,OAAO;oBACP,cAAc,EAAE,YAAY;iBAC7B,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM;oBACJ,CAAC,CAAC,WAAW,IAAI,WAAW,GAAG,CAAC;wBAC9B,CAAC,CAAC,IAAI,0BAA0B,CAAC,WAAW,EAAE;4BAC1C,UAAU;4BACV,eAAe,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC;4BACzC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;4BAClC,WAAW;4BACX,SAAS,EAAE,SAAS,IAAI,IAAI,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;4BAC/E,OAAO;yBACR,CAAC;wBACJ,CAAC,CAAC,IAAI,wBAAwB,CAAC,WAAW,EAAE;4BACxC,UAAU;4BACV,eAAe,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC;4BACzC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;4BAClC,WAAW;4BACX,SAAS,EAAE,SAAS,IAAI,IAAI,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;4BAC/E,OAAO;yBACR,CAAC,CAAA;YACV,CAAC;QACH,CAAC;QAED,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAE5C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;gBAC5C,WAAW,EAAE,IAAI;gBACjB,cAAc,EAAE,IAAI;gBACpB,YAAY,EAAE,OAAO;gBACrB,sBAAsB,EAAE,oBAAoB;gBAC5C,kBAAkB,EAAE,UAAU;aAC/B,CAAC,CAAA;YAEF,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QACtD,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,yBAAyB;IACzB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,CAAC,WAAW,CAAC,CAAA;QACxE,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,CAAC,WAAW,CAAC,CAAA;QAE5E,eAAe,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,MAAW,EAAE,EAAE;YACjE,IAAI,MAAM,YAAY,6BAA6B,EAAE,CAAC;gBACpD,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACrC,CAAC;iBAAM,IAAI,MAAM,YAAY,+BAA+B,EAAE,CAAC;gBAC7D,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACvC,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,uBAAuB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACvC,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;QAC/D,CAAC;QAED,IAAI,yBAAyB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACzC,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,eAAe,CAAC,cAAc,CAAC,GAAG,CAChC,IAAI,wBAAwB,EAAE,EAC9B,IAAI,sBAAsB,EAAE,EAC5B,IAAI,mBAAmB,EAAE,CAC1B,CAAA;IAED,YAAY;IACZ,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;YACxC,cAAc,EAAE,IAAI;YACpB,iBAAiB,EAAE,IAAI;YACvB,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,MAAM,CAAC,QAAQ,IAAI,cAAc;SAC7C,CAAC,CAAA;QACF,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IACpD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,CAAA;AAC/C,CAAC","sourcesContent":["import { TinyColor } from '@ctrl/tinycolor'\nimport { format as formatText } from '@operato/utils/format.js'\n\nfunction getBaseColorFromTheme(theme?: 'light' | 'dark' | 'auto') {\n return new TinyColor(theme == 'dark' ? '#fff' : '#000')\n}\n\nfunction getThemeFromBrowser() {\n return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n}\n\nexport async function buildSciChart(\n config: OperatoChart.ChartConfig | undefined | null,\n container: any,\n { fontSize, fontFamily, fontColor }: { fontSize?: number; fontFamily?: string; fontColor?: string }\n): Promise<{ chart: any; dataSeries: any[] } | undefined> {\n if (!config) {\n return\n }\n\n const {\n SciChartSurface,\n SciChartJSLightTheme,\n SciChartJSDarkv2Theme,\n XyDataSeries,\n FastLineRenderableSeries,\n SplineLineRenderableSeries,\n FastColumnRenderableSeries,\n StackedColumnRenderableSeries,\n StackedMountainRenderableSeries,\n StackedColumnCollection,\n StackedMountainCollection,\n NumericAxis,\n DateTimeNumericAxis,\n EAutoRange,\n EAxisAlignment,\n NumberRange,\n MouseWheelZoomModifier,\n RubberBandXyZoomModifier,\n ZoomExtentsModifier,\n RolloverModifier,\n SmartDateLabelProvider,\n EllipsePointMarker,\n SquarePointMarker,\n TrianglePointMarker,\n CrossPointMarker,\n XPointMarker,\n WaveAnimation,\n LegendModifier\n } = SciChart\n\n const { type: chartType, options, data: fromData } = config\n const { datasets = [] } = fromData || {}\n var {\n theme,\n tooltip,\n animation,\n legend,\n scales: fromScales,\n xGridLine,\n yGridLine,\n y2ndGridLine,\n stacked\n } = options || {}\n\n var baseColor = getBaseColorFromTheme(theme)\n\n if (theme === 'auto') {\n theme = getThemeFromBrowser()\n }\n\n fontColor = fontColor || baseColor.clone().toString()\n\n const { xAxes = [], yAxes = [] } = fromScales || {}\n\n const chart = await SciChartSurface.create(container, {\n theme: theme == 'dark' ? new SciChartJSDarkv2Theme() : new SciChartJSLightTheme()\n })\n const { sciChartSurface, wasmContext } = chart\n\n // X 축 설정\n xAxes.forEach((axis, index) => {\n const { axisTitle, ticks } = axis\n const {\n autoMax,\n autoMin,\n min,\n max,\n stepSize,\n beginAtZero,\n color = fontColor,\n textStrokeColor = fontColor,\n display = !!axisTitle\n } = ticks || {}\n\n const xAxis = new DateTimeNumericAxis(wasmContext, {\n axisTitle,\n autoRange: autoMin || autoMax ? EAutoRange.Always : undefined,\n axisAlignment: EAxisAlignment.Bottom,\n visibleRange: min !== undefined && max !== undefined ? new NumberRange(min, max) : undefined,\n majorDelta: stepSize,\n growBy: beginAtZero ? new NumberRange(0.1, 0.1) : undefined,\n labelStyle: {\n fontFamily,\n fontSize,\n color\n },\n axisTitleStyle: {\n fontFamily,\n fontSize,\n color: textStrokeColor\n },\n labelProvider: new SmartDateLabelProvider()\n })\n\n sciChartSurface.xAxes.add(xAxis)\n })\n\n // Y 축 설정\n yAxes.forEach((axis, index) => {\n const { axisTitle, ticks } = axis\n const { autoMax, autoMin, min, max, stepSize, beginAtZero } = ticks || {}\n\n const yAxis = new NumericAxis(wasmContext, {\n id: `yAxis${index}`,\n axisTitle,\n autoRange: autoMin || autoMax ? EAutoRange.Always : undefined,\n axisAlignment: index === 0 ? EAxisAlignment.Left : EAxisAlignment.Right,\n visibleRange: min !== undefined && max !== undefined ? new NumberRange(min, max) : undefined,\n majorDelta: stepSize,\n growBy: beginAtZero ? new NumberRange(0.1, 0.1) : undefined,\n labelStyle: {\n fontFamily,\n fontSize,\n color: fontColor\n },\n axisTitleStyle: {\n fontFamily,\n fontSize,\n color: fontColor\n }\n })\n\n sciChartSurface.yAxes.add(yAxis)\n })\n\n // 시리즈 설정\n const dataSeriesArray = datasets.map((dataset, index) => {\n const dataSeries = new XyDataSeries(wasmContext, {\n dataSeriesName: dataset.label,\n containsNaN: false\n })\n\n const yAxisId = dataset.yAxisID || 'yAxis0'\n const stackGroupId = dataset.stack || `__stack${index}__`\n\n let series: any\n if (dataset.type === 'bar') {\n if (stacked) {\n series = new StackedColumnRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: dataset.borderWidth || 2,\n fill: dataset.backgroundColor || '#FF6600',\n yAxisId,\n stackedGroupId: stackGroupId\n })\n } else {\n series = new FastColumnRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: dataset.borderWidth || 2,\n fill: dataset.backgroundColor || '#FF6600',\n animation: animation && new WaveAnimation({ duration: 1000, fadeEffect: true }),\n yAxisId\n })\n }\n } else {\n const { pointStyle, lineTension } = dataset\n let pointMarker\n\n switch (pointStyle) {\n case 'circle':\n pointMarker = new EllipsePointMarker(wasmContext, {\n width: 10,\n height: 10,\n strokeThickness: 2,\n fill: dataset.color || '#FF6600',\n stroke: '#000000'\n })\n break\n case 'triangle':\n pointMarker = new TrianglePointMarker(wasmContext, {\n width: 10,\n height: 10,\n strokeThickness: 2,\n fill: dataset.color || '#FF6600',\n stroke: '#000000'\n })\n break\n case 'rect':\n pointMarker = new SquarePointMarker(wasmContext, {\n width: 10,\n height: 10,\n strokeThickness: 2,\n fill: dataset.color || '#FF6600',\n stroke: '#000000'\n })\n break\n case 'cross':\n pointMarker = new CrossPointMarker(wasmContext, {\n width: 10,\n height: 10,\n strokeThickness: 2,\n fill: dataset.color || '#FF6600',\n stroke: '#000000'\n })\n break\n case 'crossRot':\n pointMarker = new XPointMarker(wasmContext, {\n width: 10,\n height: 10,\n strokeThickness: 2,\n fill: dataset.color || '#FF6600',\n stroke: '#000000'\n })\n break\n default:\n pointMarker = new EllipsePointMarker(wasmContext, {\n width: 10,\n height: 10,\n strokeThickness: 2,\n fill: dataset.color || '#FF6600',\n stroke: '#000000'\n })\n }\n\n if (stacked) {\n series = new StackedMountainRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: dataset.borderWidth || 2,\n stroke: dataset.color || '#FF6600',\n fill: dataset.backgroundColor || '#FF6600',\n yAxisId,\n stackedGroupId: stackGroupId\n })\n } else {\n series =\n !!lineTension && lineTension > 0\n ? new SplineLineRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: dataset.borderWidth || 2,\n stroke: dataset.color || '#FF6600',\n pointMarker,\n animation: animation && new WaveAnimation({ duration: 1000, fadeEffect: true }),\n yAxisId\n })\n : new FastLineRenderableSeries(wasmContext, {\n dataSeries,\n strokeThickness: dataset.borderWidth || 2,\n stroke: dataset.color || '#FF6600',\n pointMarker,\n animation: animation && new WaveAnimation({ duration: 1000, fadeEffect: true }),\n yAxisId\n })\n }\n }\n\n sciChartSurface.renderableSeries.add(series)\n\n if (tooltip) {\n const rolloverModifier = new RolloverModifier({\n showTooltip: true,\n showAxisLabels: true,\n tooltipColor: 'white',\n tooltipBackgroundColor: 'rgba(0, 0, 0, 0.7)',\n rollOverDataSeries: dataSeries\n })\n\n sciChartSurface.chartModifiers.add(rolloverModifier)\n }\n\n return dataSeries\n })\n\n // Stacked collections 추가\n if (stacked) {\n const stackedColumnCollection = new StackedColumnCollection(wasmContext)\n const stackedMountainCollection = new StackedMountainCollection(wasmContext)\n\n sciChartSurface.renderableSeries.asArray().forEach((series: any) => {\n if (series instanceof StackedColumnRenderableSeries) {\n stackedColumnCollection.add(series)\n } else if (series instanceof StackedMountainRenderableSeries) {\n stackedMountainCollection.add(series)\n }\n })\n\n if (stackedColumnCollection.size() > 0) {\n sciChartSurface.renderableSeries.add(stackedColumnCollection)\n }\n\n if (stackedMountainCollection.size() > 0) {\n sciChartSurface.renderableSeries.add(stackedMountainCollection)\n }\n }\n\n // 줌인/줌아웃 모디파이어 추가\n sciChartSurface.chartModifiers.add(\n new RubberBandXyZoomModifier(),\n new MouseWheelZoomModifier(),\n new ZoomExtentsModifier()\n )\n\n // Legend 설정\n if (legend?.display) {\n const legendModifier = new LegendModifier({\n showCheckboxes: true,\n showSeriesMarkers: true,\n showLegend: true,\n placement: legend.position || 'bottom-right'\n })\n sciChartSurface.chartModifiers.add(legendModifier)\n }\n\n return { chart, dataSeries: dataSeriesArray }\n}\n"]}