@sd-angular/core 1.3.132 → 1.3.133
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sd-angular-core-chart.umd.js +2 -0
- package/bundles/sd-angular-core-chart.umd.js.map +1 -1
- package/bundles/sd-angular-core-chart.umd.min.js +1 -1
- package/bundles/sd-angular-core-chart.umd.min.js.map +1 -1
- package/esm2015/chart/src/lib/chart.component.js +3 -1
- package/fesm2015/sd-angular-core-chart.js +2 -0
- package/fesm2015/sd-angular-core-chart.js.map +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.3.132.tgz → sd-angular-core-1.3.133.tgz} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-chart.js","sources":["../../../../projects/sd-core/chart/src/lib/chart.model.ts","../../../../projects/sd-core/chart/src/lib/chart.component.ts","../../../../projects/sd-core/chart/src/lib/chart.module.ts","../../../../projects/sd-core/chart/sd-angular-core-chart.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const ChartColors = {\r\n Red: 'rgb(255, 99, 132)',\r\n Orange: 'rgb(255, 159, 64)',\r\n Yellow: 'rgb(255, 205, 86)',\r\n Green: 'rgb(75, 192, 192)',\r\n Blue: 'rgb(54, 162, 235)',\r\n Purple: 'rgb(153, 102, 255)',\r\n Grey: 'rgb(201, 203, 207)',\r\n Purple700: '#2E224C',\r\n Purple600: '#453372',\r\n Purple500: '#574191',\r\n Purple400: '#7356BF',\r\n Purple300: '#957FCE',\r\n Purple200: '#C1B4E2',\r\n Purple100: '#E3DDF2',\r\n Purple50: '#F3F1F9',\r\n Blue700: '#0F2C60',\r\n Blue600: '#174291',\r\n Blue500: '#1D53B7',\r\n Blue400: '#276EF1',\r\n Blue300: '#5A90F4',\r\n Blue200: '#9FBFF8',\r\n Blue100: '#D4E2FC',\r\n Blue50: '#EDF3FD',\r\n Green700: '#0D4020',\r\n Green600: '#156A36',\r\n Green500: '#09863D',\r\n Green400: '#21A453',\r\n Green300: '#43BF75',\r\n Green200: '#9EE2B8',\r\n Green100: '#CFF3DD',\r\n Green50: '#F0FAF3',\r\n Yellow700: '#664C1A',\r\n Yellow600: '#997328',\r\n Yellow500: '#C19132',\r\n Yellow400: '#FFC043',\r\n Yellow300: '#FFCF70',\r\n Yellow200: '#FFE3AC',\r\n Yellow100: '#FFF2D9',\r\n Yellow50: '#FFF9EF',\r\n Orange700: '#5F2C14',\r\n Orange600: '#8E421E',\r\n Orange500: '#B45326',\r\n Orange400: '#ED6E33',\r\n Orange300: '#F19063',\r\n Orange200: '#F7BFA5',\r\n Orange100: '#FBE2D6',\r\n Orange50: '#FDF3EE',\r\n Red700: '#541A14',\r\n Red600: '#7F281E',\r\n Red500: '#A13226',\r\n Red400: '#D44333',\r\n Red300: '#DE7063',\r\n Red200: '#ECACA5',\r\n Red100: '#F6D9D6',\r\n Red50: '#FBEFEE',\r\n Brown700: '#3D281E',\r\n Brown600: '#5B3C2D',\r\n Brown500: '#744C39',\r\n Brown400: '#99644C',\r\n Brown300: '#B18976',\r\n Brown200: '#D2BAB0',\r\n Brown100: '#EBE0DB',\r\n Brown50: '#F6F2F0',\r\n Gray900: '#141414',\r\n Gray800: '#1F1F1F',\r\n Gray700: '#333333',\r\n Gray600: '#545454',\r\n Gray500: '#757575',\r\n Gray400: '#AFAFAF',\r\n Gray300: '#CBCBCB',\r\n Gray200: '#E2E2E2',\r\n Gray100: '#EEEEEE',\r\n Gray50: '#F6F6F6',\r\n Platinum700: '#394145',\r\n Platinum600: '#556268',\r\n Platinum500: '#6C7C83',\r\n Platinum400: '#8EA3AD',\r\n Platinum300: '#A1BDCA',\r\n Platinum200: '#CCDFE5',\r\n Platinum100: '#EBF5F7',\r\n Platinum50: '#F4FAFB',\r\n EatsGreen400: '#21A453',\r\n FreightBlue400: '#21A453',\r\n JumpRed400: '#FF0A2D',\r\n Black: '#000000',\r\n White: '#FFFFFF',\r\n};\r\n\r\nexport type SdChartOption = DoughnutChartOption | PieChartOption |\r\n BarChartOption |\r\n HorizontalBarChartOption |\r\n LineChartOption |\r\n StackAreaChartOption |\r\n BarLineChartOption;\r\n\r\ninterface BaseChartOption {\r\n title?: string;\r\n height?: string;\r\n hideLegend?: boolean;\r\n legendPosition?:'left' | 'right' | 'top' | 'bottom' | 'chartArea'\r\n tooltips?: {\r\n label: (params: { datasetLabel?: string, label?: string, value?: number,datasetIndex?:number,dataIndex?:number; }) => string | string[];\r\n };\r\n}\r\n\r\nexport interface PieChartOption extends BaseChartOption {\r\n type: 'pie';\r\n title?: string;\r\n datasets: {\r\n label: string,\r\n value: number,\r\n backgroundColor: string\r\n }[];\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface DoughnutChartOption extends BaseChartOption {\r\n type: 'doughnut';\r\n title?: string;\r\n datasets: {\r\n label: string,\r\n value: number,\r\n backgroundColor: string\r\n }[];\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface BarChartOption extends BaseChartOption {\r\n type: 'bar';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n stack?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface HorizontalBarChartOption extends BaseChartOption {\r\n type: 'horizontalBar';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n stack?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n showTotalStack?:boolean;\r\n}\r\n\r\nexport interface LineChartOption extends BaseChartOption {\r\n type: 'line';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface StackAreaChartOption extends BaseChartOption {\r\n type: 'stackArea';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface BarLineChartOption extends BaseChartOption {\r\n type: 'barline';\r\n xTitle?: string;\r\n xStacked?:boolean;\r\n yTitle?: string;\r\n yStacked?:boolean;\r\n yRightTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n type: 'bar' | 'line',\r\n yAlign?: 'left' | 'right',\r\n label: string;\r\n data: number[];\r\n order?:number;\r\n borderColor?: string;\r\n backgroundColor?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string,\r\n yRightLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n showTotalStack?:boolean\r\n}\r\n\r\n\r\nexport interface IChartConfiguration {\r\n defaultColors?: {\r\n backgroundColor?: string,\r\n borderColor?: string\r\n }[];\r\n}\r\n\r\n\r\nexport const CHART_CONFIG = new InjectionToken<IChartConfiguration>('chart.configuration');\r\n","import { Component, OnInit, AfterViewInit, ViewChild, ElementRef, Input, ChangeDetectorRef, Optional, Inject } from '@angular/core';\r\nimport * as Chart from 'chart.js';\r\nimport {\r\n SdChartOption,\r\n BarChartOption,\r\n LineChartOption,\r\n PieChartOption,\r\n BarLineChartOption,\r\n StackAreaChartOption,\r\n HorizontalBarChartOption,\r\n IChartConfiguration,\r\n CHART_CONFIG,\r\n DoughnutChartOption\r\n} from './chart.model';\r\nimport $ from 'jquery';\r\nimport * as uuid from 'uuid';\r\n\r\n@Component({\r\n selector: 'sd-chart',\r\n templateUrl: './chart.component.html',\r\n styleUrls: ['./chart.component.scss']\r\n})\r\nexport class SdChart implements OnInit, AfterViewInit {\r\n private initialized = false;\r\n private pChartOption: SdChartOption;\r\n isLoading = false;\r\n\r\n @Input() set chartOption(chartOption: SdChartOption) {\r\n this.pChartOption = chartOption;\r\n if (this.initialized) {\r\n this.renderChart();\r\n }\r\n }\r\n\r\n @ViewChild('chart') chartRef: ElementRef;\r\n @ViewChild('chartWrapper') chartWrapperRef: ElementRef;\r\n @ViewChild('chartAxis') chartAxisRef: ElementRef;\r\n @ViewChild('chartAreaWrapperExtend') chartAreaWrapperExtendRef: ElementRef;\r\n chart: Chart;\r\n visible = true;\r\n height = '300px';\r\n private ctx: CanvasRenderingContext2D;\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Optional() @Inject(CHART_CONFIG) private chartConfiguration: IChartConfiguration\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.renderChart(true);\r\n this.initialized = true;\r\n this.ref.detectChanges();\r\n }\r\n\r\n private async renderChart(firstRender?: boolean) {\r\n this.height = this.pChartOption?.height || '300px';\r\n if (!firstRender) {\r\n this.visible = false;\r\n await new Promise(resolve => setTimeout(resolve, 200));\r\n this.visible = true;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 200));\r\n if (this.chartRef?.nativeElement) {\r\n const canvas = this.chartRef.nativeElement as HTMLCanvasElement;\r\n this.ctx = canvas.getContext('2d');\r\n switch (this.pChartOption.type) {\r\n case 'pie':\r\n this.renderPieChart(this.pChartOption);\r\n break;\r\n case 'bar':\r\n this.renderBarChart(this.pChartOption);\r\n break;\r\n case 'horizontalBar':\r\n this.renderHorizontalBarChart(this.pChartOption);\r\n break;\r\n case 'line':\r\n this.renderLineChart(this.pChartOption);\r\n break;\r\n case 'stackArea':\r\n this.renderStackAreaChart(this.pChartOption);\r\n break;\r\n case 'barline':\r\n this.renderBarLineChart(this.pChartOption);\r\n break;\r\n case 'doughnut':\r\n this.renderDoughnutChart(this.pChartOption);\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private renderPieChart(option: PieChartOption) {\r\n const configuration: Chart.ChartConfiguration = {\r\n type: 'pie',\r\n options: {\r\n responsive: true,\r\n title: {\r\n display: true,\r\n text: option.title\r\n },\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel ? `[${datasetLabel}] ` : ''}${label} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n data: {\r\n labels: option.datasets?.map(e => e.label) || [],\r\n datasets: [{\r\n data: option.datasets?.map(e => e.value) || [],\r\n backgroundColor: option.datasets?.map((e, idx) => e.backgroundColor\r\n || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor\r\n || this.dynamicColor) || []\r\n }]\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderDoughnutChart(option:DoughnutChartOption){\r\n const configuration: Chart.ChartConfiguration = {\r\n type: 'doughnut',\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio:false,\r\n title: {\r\n display: true,\r\n text: option.title\r\n },\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel ? `[${datasetLabel}] ` : ''}${label} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n data: {\r\n labels: option.datasets?.map(e => e.label) || [],\r\n datasets: [{\r\n data: option.datasets?.map(e => e.value) || [],\r\n backgroundColor: option.datasets?.map((e, idx) => e.backgroundColor\r\n || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor\r\n || this.dynamicColor) || []\r\n }]\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderBarChart(option: BarChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * option.datasets.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * option.datasets.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n }\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'bar',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n data: e.data,\r\n stack: e.stack\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderHorizontalBarChart(option: HorizontalBarChartOption) {\r\n // const labelWidth = option.labelWidth ?? 50;\r\n // if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * option.datasets.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n // }\r\n const plugins:Chart.PluginServiceRegistrationOptions[] = [];\r\n if (option.showTotalStack){\r\n plugins.push(this.#drawTotalOfStackedBar(option.type))\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend,\r\n onClick: (event, legendItem) => {\r\n let index = legendItem.datasetIndex;\r\n let ci = this.chart;\r\n let meta = ci.getDatasetMeta(index);\r\n if (option.showTotalStack){\r\n event.stopPropagation()\r\n } \r\n else{\r\n // See controller.isDatasetVisible comment\r\n meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\r\n \r\n // We hid a dataset ... rerender the chart\r\n ci.update(); \r\n }\r\n },\r\n },\r\n layout:{\r\n padding:{\r\n right:20\r\n }\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || '',\r\n },\r\n stacked:true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n }],\r\n yAxes: [{\r\n display: true,\r\n stacked:true,\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'horizontalBar',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n data: e.data,\r\n stack: e.stack\r\n };\r\n return result;\r\n })\r\n },\r\n plugins:plugins\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderLineChart(option: LineChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'line',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n borderColor: e.borderColor || this.chartConfiguration?.defaultColors?.[idx]?.borderColor || dynamicColor,\r\n data: e.data,\r\n lineTension: 0,\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderStackAreaChart(option: StackAreaChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n \r\n if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n stacked: true,\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'line',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n // fill: e.backgroundColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n borderColor: e.borderColor || this.chartConfiguration?.defaultColors?.[idx]?.borderColor || dynamicColor,\r\n data: e.data,\r\n lineTension: 0,\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderBarLineChart(option: BarLineChartOption) {\r\n const plugins:Chart.PluginServiceRegistrationOptions[] = [];\r\n if (option.showTotalStack){\r\n plugins.push(this.#drawTotalOfStackedBar(option.type))\r\n }\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n const numberOfBars = option.datasets.filter(e => e.type === 'bar').length;\r\n if (numberOfBars <= 1) {\r\n // const newwidth = Math.max(option.labels.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n } else {\r\n // const newwidth = Math.max(option.labels.length * numberOfBars * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * numberOfBars * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n }\r\n const leftId = `I${uuid.v4()}`;\r\n const rightId = `I${uuid.v4()}`;\r\n const yAxes = [{\r\n type: 'linear',\r\n display: true,\r\n position: 'left',\r\n id: leftId,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n suggestedMin: 0,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || '',\r\n },\r\n stacked:!!option.yStacked,\r\n }];\r\n if (option.datasets.some(e => e.yAlign === 'right')) {\r\n yAxes.push({\r\n type: 'linear',\r\n display: true,\r\n position: 'right',\r\n id: rightId,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n suggestedMin: 0,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yRightLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yRightTitle,\r\n labelString: option.yRightTitle || ''\r\n },\r\n stacked:!!option.yStacked,\r\n });\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend,\r\n onClick: (event, legendItem) => {\r\n let index = legendItem.datasetIndex;\r\n let ci = this.chart;\r\n let meta = ci.getDatasetMeta(index);\r\n if (option.showTotalStack){\r\n event.stopPropagation()\r\n } \r\n else{\r\n // See controller.isDatasetVisible comment\r\n meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\r\n \r\n // We hid a dataset ... rerender the chart\r\n ci.update(); \r\n }\r\n },\r\n position: option?.legendPosition ?? 'top'\r\n },\r\n layout:{\r\n padding:10\r\n },\r\n title: {\r\n display: true,\r\n text: option.title\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n stacked: !!option.xStacked\r\n }],\r\n yAxes\r\n },\r\n tooltips: { \r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value,\r\n datasetIndex: tooltipItem.datasetIndex,\r\n dataIndex:tooltipItem.index\r\n }) || `${datasetLabel ? `[${datasetLabel}] ` : ''} ${label} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n type: e.type,\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n borderColor: e.borderColor || this.chartConfiguration?.defaultColors?.[idx]?.borderColor || dynamicColor,\r\n data: e.data,\r\n yAxisID: e.yAlign === 'right' ? rightId : leftId,\r\n lineTension: 0,\r\n order:e.order ?? 1\r\n };\r\n return result;\r\n }),\r\n },\r\n plugins: plugins\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n loadingStart = () => {\r\n this.isLoading = true;\r\n }\r\n\r\n private get dynamicColor() {\r\n const r = Math.floor(Math.random() * 255);\r\n const g = Math.floor(Math.random() * 255);\r\n const b = Math.floor(Math.random() * 255);\r\n return 'rgb(' + r + ',' + g + ',' + b + ')';\r\n }\r\n\r\n #drawTotalOfStackedBar = (chartType:'barline' | 'bar' | 'horizontalBar'):Chart.PluginServiceRegistrationOptions => {\r\n return {\r\n afterDraw(chartInstance, easing, options) {\r\n if (chartInstance?.data?.datasets?.length){\r\n const ctx = chartInstance.ctx;\r\n chartInstance.data.datasets[0].data.forEach( (dataPoint,index) => {\r\n let curLastIndex = 0;\r\n let curTotal = 0;\r\n chartInstance.data.datasets.forEach( (dataset,setIndex) => {\r\n if (dataset.data[index] != 0 && (!dataset.hidden) && dataset.type !== 'line'){\r\n curLastIndex = setIndex;\r\n if (Number.isNumber(dataset.data[index])){\r\n curTotal += Number(dataset.data[index]);\r\n }\r\n else curTotal += 0;\r\n }\r\n })\r\n const {x,y} = chartInstance.getDatasetMeta(curLastIndex).data[index]._model;\r\n const textWidth = ctx.measureText(curTotal.toString()).width;\r\n ctx.fillStyle= 'black';\r\n let xTextPosition = (x-textWidth/2 ) - textWidth > 0 ? (x-textWidth/2 ) : 0;\r\n if (index == 0){\r\n xTextPosition = x + 10;\r\n }\r\n else if (index === chartInstance.data.datasets[0].data.length - 1 ){\r\n xTextPosition = x - textWidth - 10;\r\n }\r\n ctx.font = '300 10px'\r\n ctx.fillText(curTotal.toString(), chartType === 'horizontalBar' ? x + 10 : xTextPosition, chartType === 'horizontalBar' ? y : y-10);\r\n });\r\n } \r\n },\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdChart } from './chart.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n SdChart\r\n ],\r\n exports: [\r\n SdChart\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdChartModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-chart.js","sources":["../../../../projects/sd-core/chart/src/lib/chart.model.ts","../../../../projects/sd-core/chart/src/lib/chart.component.ts","../../../../projects/sd-core/chart/src/lib/chart.module.ts","../../../../projects/sd-core/chart/sd-angular-core-chart.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport const ChartColors = {\r\n Red: 'rgb(255, 99, 132)',\r\n Orange: 'rgb(255, 159, 64)',\r\n Yellow: 'rgb(255, 205, 86)',\r\n Green: 'rgb(75, 192, 192)',\r\n Blue: 'rgb(54, 162, 235)',\r\n Purple: 'rgb(153, 102, 255)',\r\n Grey: 'rgb(201, 203, 207)',\r\n Purple700: '#2E224C',\r\n Purple600: '#453372',\r\n Purple500: '#574191',\r\n Purple400: '#7356BF',\r\n Purple300: '#957FCE',\r\n Purple200: '#C1B4E2',\r\n Purple100: '#E3DDF2',\r\n Purple50: '#F3F1F9',\r\n Blue700: '#0F2C60',\r\n Blue600: '#174291',\r\n Blue500: '#1D53B7',\r\n Blue400: '#276EF1',\r\n Blue300: '#5A90F4',\r\n Blue200: '#9FBFF8',\r\n Blue100: '#D4E2FC',\r\n Blue50: '#EDF3FD',\r\n Green700: '#0D4020',\r\n Green600: '#156A36',\r\n Green500: '#09863D',\r\n Green400: '#21A453',\r\n Green300: '#43BF75',\r\n Green200: '#9EE2B8',\r\n Green100: '#CFF3DD',\r\n Green50: '#F0FAF3',\r\n Yellow700: '#664C1A',\r\n Yellow600: '#997328',\r\n Yellow500: '#C19132',\r\n Yellow400: '#FFC043',\r\n Yellow300: '#FFCF70',\r\n Yellow200: '#FFE3AC',\r\n Yellow100: '#FFF2D9',\r\n Yellow50: '#FFF9EF',\r\n Orange700: '#5F2C14',\r\n Orange600: '#8E421E',\r\n Orange500: '#B45326',\r\n Orange400: '#ED6E33',\r\n Orange300: '#F19063',\r\n Orange200: '#F7BFA5',\r\n Orange100: '#FBE2D6',\r\n Orange50: '#FDF3EE',\r\n Red700: '#541A14',\r\n Red600: '#7F281E',\r\n Red500: '#A13226',\r\n Red400: '#D44333',\r\n Red300: '#DE7063',\r\n Red200: '#ECACA5',\r\n Red100: '#F6D9D6',\r\n Red50: '#FBEFEE',\r\n Brown700: '#3D281E',\r\n Brown600: '#5B3C2D',\r\n Brown500: '#744C39',\r\n Brown400: '#99644C',\r\n Brown300: '#B18976',\r\n Brown200: '#D2BAB0',\r\n Brown100: '#EBE0DB',\r\n Brown50: '#F6F2F0',\r\n Gray900: '#141414',\r\n Gray800: '#1F1F1F',\r\n Gray700: '#333333',\r\n Gray600: '#545454',\r\n Gray500: '#757575',\r\n Gray400: '#AFAFAF',\r\n Gray300: '#CBCBCB',\r\n Gray200: '#E2E2E2',\r\n Gray100: '#EEEEEE',\r\n Gray50: '#F6F6F6',\r\n Platinum700: '#394145',\r\n Platinum600: '#556268',\r\n Platinum500: '#6C7C83',\r\n Platinum400: '#8EA3AD',\r\n Platinum300: '#A1BDCA',\r\n Platinum200: '#CCDFE5',\r\n Platinum100: '#EBF5F7',\r\n Platinum50: '#F4FAFB',\r\n EatsGreen400: '#21A453',\r\n FreightBlue400: '#21A453',\r\n JumpRed400: '#FF0A2D',\r\n Black: '#000000',\r\n White: '#FFFFFF',\r\n};\r\n\r\nexport type SdChartOption = DoughnutChartOption | PieChartOption |\r\n BarChartOption |\r\n HorizontalBarChartOption |\r\n LineChartOption |\r\n StackAreaChartOption |\r\n BarLineChartOption;\r\n\r\ninterface BaseChartOption {\r\n title?: string;\r\n height?: string;\r\n hideLegend?: boolean;\r\n legendPosition?:'left' | 'right' | 'top' | 'bottom' | 'chartArea'\r\n tooltips?: {\r\n label: (params: { datasetLabel?: string, label?: string, value?: number,datasetIndex?:number,dataIndex?:number; }) => string | string[];\r\n };\r\n}\r\n\r\nexport interface PieChartOption extends BaseChartOption {\r\n type: 'pie';\r\n title?: string;\r\n datasets: {\r\n label: string,\r\n value: number,\r\n backgroundColor: string\r\n }[];\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface DoughnutChartOption extends BaseChartOption {\r\n type: 'doughnut';\r\n title?: string;\r\n datasets: {\r\n label: string,\r\n value: number,\r\n backgroundColor: string\r\n }[];\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface BarChartOption extends BaseChartOption {\r\n type: 'bar';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n stack?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface HorizontalBarChartOption extends BaseChartOption {\r\n type: 'horizontalBar';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n stack?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n showTotalStack?:boolean;\r\n}\r\n\r\nexport interface LineChartOption extends BaseChartOption {\r\n type: 'line';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface StackAreaChartOption extends BaseChartOption {\r\n type: 'stackArea';\r\n xTitle?: string;\r\n yTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n label: string;\r\n data: number[];\r\n borderColor?: string,\r\n backgroundColor?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n}\r\n\r\nexport interface BarLineChartOption extends BaseChartOption {\r\n type: 'barline';\r\n xTitle?: string;\r\n xStacked?:boolean;\r\n yTitle?: string;\r\n yStacked?:boolean;\r\n yRightTitle?: string;\r\n labels: string[];\r\n datasets: {\r\n type: 'bar' | 'line',\r\n yAlign?: 'left' | 'right',\r\n label: string;\r\n data: number[];\r\n order?:number;\r\n borderColor?: string;\r\n backgroundColor?: string;\r\n }[];\r\n beginAtZero?: boolean;\r\n labelWidth?: number;\r\n ticks?: {\r\n xLabel?: (value: number | string, index: number) => string,\r\n yLabel?: (value: number | string, index: number) => string,\r\n yRightLabel?: (value: number | string, index: number) => string\r\n };\r\n hover?: 'ShowAll';\r\n showTotalStack?:boolean\r\n}\r\n\r\n\r\nexport interface IChartConfiguration {\r\n defaultColors?: {\r\n backgroundColor?: string,\r\n borderColor?: string\r\n }[];\r\n}\r\n\r\n\r\nexport const CHART_CONFIG = new InjectionToken<IChartConfiguration>('chart.configuration');\r\n","import { Component, OnInit, AfterViewInit, ViewChild, ElementRef, Input, ChangeDetectorRef, Optional, Inject } from '@angular/core';\r\nimport * as Chart from 'chart.js';\r\nimport {\r\n SdChartOption,\r\n BarChartOption,\r\n LineChartOption,\r\n PieChartOption,\r\n BarLineChartOption,\r\n StackAreaChartOption,\r\n HorizontalBarChartOption,\r\n IChartConfiguration,\r\n CHART_CONFIG,\r\n DoughnutChartOption\r\n} from './chart.model';\r\nimport $ from 'jquery';\r\nimport * as uuid from 'uuid';\r\n\r\n@Component({\r\n selector: 'sd-chart',\r\n templateUrl: './chart.component.html',\r\n styleUrls: ['./chart.component.scss']\r\n})\r\nexport class SdChart implements OnInit, AfterViewInit {\r\n private initialized = false;\r\n private pChartOption: SdChartOption;\r\n isLoading = false;\r\n\r\n @Input() set chartOption(chartOption: SdChartOption) {\r\n this.pChartOption = chartOption;\r\n if (this.initialized) {\r\n this.renderChart();\r\n }\r\n }\r\n\r\n @ViewChild('chart') chartRef: ElementRef;\r\n @ViewChild('chartWrapper') chartWrapperRef: ElementRef;\r\n @ViewChild('chartAxis') chartAxisRef: ElementRef;\r\n @ViewChild('chartAreaWrapperExtend') chartAreaWrapperExtendRef: ElementRef;\r\n chart: Chart;\r\n visible = true;\r\n height = '300px';\r\n private ctx: CanvasRenderingContext2D;\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Optional() @Inject(CHART_CONFIG) private chartConfiguration: IChartConfiguration\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.renderChart(true);\r\n this.initialized = true;\r\n this.ref.detectChanges();\r\n }\r\n\r\n private async renderChart(firstRender?: boolean) {\r\n this.height = this.pChartOption?.height || '300px';\r\n if (!firstRender) {\r\n this.visible = false;\r\n await new Promise(resolve => setTimeout(resolve, 200));\r\n this.visible = true;\r\n }\r\n await new Promise(resolve => setTimeout(resolve, 200));\r\n if (this.chartRef?.nativeElement) {\r\n const canvas = this.chartRef.nativeElement as HTMLCanvasElement;\r\n this.ctx = canvas.getContext('2d');\r\n switch (this.pChartOption.type) {\r\n case 'pie':\r\n this.renderPieChart(this.pChartOption);\r\n break;\r\n case 'bar':\r\n this.renderBarChart(this.pChartOption);\r\n break;\r\n case 'horizontalBar':\r\n this.renderHorizontalBarChart(this.pChartOption);\r\n break;\r\n case 'line':\r\n this.renderLineChart(this.pChartOption);\r\n break;\r\n case 'stackArea':\r\n this.renderStackAreaChart(this.pChartOption);\r\n break;\r\n case 'barline':\r\n this.renderBarLineChart(this.pChartOption);\r\n break;\r\n case 'doughnut':\r\n this.renderDoughnutChart(this.pChartOption);\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private renderPieChart(option: PieChartOption) {\r\n const configuration: Chart.ChartConfiguration = {\r\n type: 'pie',\r\n options: {\r\n responsive: true,\r\n title: {\r\n display: true,\r\n text: option.title\r\n },\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel ? `[${datasetLabel}] ` : ''}${label} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n data: {\r\n labels: option.datasets?.map(e => e.label) || [],\r\n datasets: [{\r\n data: option.datasets?.map(e => e.value) || [],\r\n backgroundColor: option.datasets?.map((e, idx) => e.backgroundColor\r\n || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor\r\n || this.dynamicColor) || []\r\n }]\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderDoughnutChart(option:DoughnutChartOption){\r\n const configuration: Chart.ChartConfiguration = {\r\n type: 'doughnut',\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio:false,\r\n title: {\r\n display: true,\r\n text: option.title\r\n },\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel ? `[${datasetLabel}] ` : ''}${label} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n data: {\r\n labels: option.datasets?.map(e => e.label) || [],\r\n datasets: [{\r\n data: option.datasets?.map(e => e.value) || [],\r\n backgroundColor: option.datasets?.map((e, idx) => e.backgroundColor\r\n || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor\r\n || this.dynamicColor) || []\r\n }]\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderBarChart(option: BarChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * option.datasets.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * option.datasets.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n }\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'bar',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n data: e.data,\r\n stack: e.stack\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderHorizontalBarChart(option: HorizontalBarChartOption) {\r\n // const labelWidth = option.labelWidth ?? 50;\r\n // if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * option.datasets.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n // }\r\n const plugins:Chart.PluginServiceRegistrationOptions[] = [];\r\n if (option.showTotalStack){\r\n plugins.push(this.#drawTotalOfStackedBar(option.type))\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend,\r\n onClick: (event, legendItem) => {\r\n let index = legendItem.datasetIndex;\r\n let ci = this.chart;\r\n let meta = ci.getDatasetMeta(index);\r\n if (option.showTotalStack){\r\n event.stopPropagation()\r\n } \r\n else{\r\n // See controller.isDatasetVisible comment\r\n meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\r\n \r\n // We hid a dataset ... rerender the chart\r\n ci.update(); \r\n }\r\n },\r\n },\r\n layout:{\r\n padding:{\r\n right:20\r\n }\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || '',\r\n },\r\n stacked:true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n }],\r\n yAxes: [{\r\n display: true,\r\n stacked:true,\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n mode:'nearest',\r\n axis:'y',\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'horizontalBar',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n data: e.data,\r\n stack: e.stack\r\n };\r\n return result;\r\n })\r\n },\r\n plugins:plugins\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderLineChart(option: LineChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'line',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n borderColor: e.borderColor || this.chartConfiguration?.defaultColors?.[idx]?.borderColor || dynamicColor,\r\n data: e.data,\r\n lineTension: 0,\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderStackAreaChart(option: StackAreaChartOption) {\r\n const labelWidth = option.labelWidth ?? 50;\r\n \r\n if (option.datasets.length) {\r\n // const newwidth = Math.max(option.labels.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n }],\r\n yAxes: [{\r\n display: true,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n stacked: true,\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || ''\r\n }\r\n }]\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value\r\n }) || `${datasetLabel} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n type: 'line',\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n label: e.label,\r\n // fill: e.backgroundColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n borderColor: e.borderColor || this.chartConfiguration?.defaultColors?.[idx]?.borderColor || dynamicColor,\r\n data: e.data,\r\n lineTension: 0,\r\n };\r\n return result;\r\n })\r\n }\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n private renderBarLineChart(option: BarLineChartOption) {\r\n const plugins:Chart.PluginServiceRegistrationOptions[] = [];\r\n if (option.showTotalStack){\r\n plugins.push(this.#drawTotalOfStackedBar(option.type))\r\n }\r\n const labelWidth = option.labelWidth ?? 50;\r\n if (option.datasets.length) {\r\n const numberOfBars = option.datasets.filter(e => e.type === 'bar').length;\r\n if (numberOfBars <= 1) {\r\n // const newwidth = Math.max(option.labels.length * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n } else {\r\n // const newwidth = Math.max(option.labels.length * numberOfBars * labelWidth, $(this.chartWrapperRef.nativeElement).width());\r\n // $(this.chartAreaWrapperExtendRef.nativeElement).width(newwidth);\r\n const newwidth = option.labels.length * numberOfBars * labelWidth;\r\n $(this.chartAreaWrapperExtendRef.nativeElement).css('width', `max(100%,${newwidth}px)`);\r\n }\r\n }\r\n const leftId = `I${uuid.v4()}`;\r\n const rightId = `I${uuid.v4()}`;\r\n const yAxes = [{\r\n type: 'linear',\r\n display: true,\r\n position: 'left',\r\n id: leftId,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n suggestedMin: 0,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yTitle,\r\n labelString: option.yTitle || '',\r\n },\r\n stacked:!!option.yStacked,\r\n }];\r\n if (option.datasets.some(e => e.yAlign === 'right')) {\r\n yAxes.push({\r\n type: 'linear',\r\n display: true,\r\n position: 'right',\r\n id: rightId,\r\n ticks: {\r\n beginAtZero: option.beginAtZero ?? true,\r\n suggestedMin: 0,\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.yRightLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n scaleLabel: {\r\n display: !!option.yRightTitle,\r\n labelString: option.yRightTitle || ''\r\n },\r\n stacked:!!option.yStacked,\r\n });\r\n }\r\n const configuration: Chart.ChartConfiguration = {\r\n options: {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n legend: {\r\n display: !option.hideLegend,\r\n onClick: (event, legendItem) => {\r\n let index = legendItem.datasetIndex;\r\n let ci = this.chart;\r\n let meta = ci.getDatasetMeta(index);\r\n if (option.showTotalStack){\r\n event.stopPropagation()\r\n } \r\n else{\r\n // See controller.isDatasetVisible comment\r\n meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\r\n \r\n // We hid a dataset ... rerender the chart\r\n ci.update(); \r\n }\r\n },\r\n position: option?.legendPosition ?? 'top'\r\n },\r\n layout:{\r\n padding:10\r\n },\r\n title: {\r\n display: true,\r\n text: option.title\r\n },\r\n scales: {\r\n xAxes: [{\r\n display: true,\r\n scaleLabel: {\r\n display: !!option.xTitle,\r\n labelString: option.xTitle || ''\r\n },\r\n ticks: {\r\n callback: (value: number | string, index: number) => {\r\n return option.ticks?.xLabel(value, index) || (Number.isNumber(value) ? Number.toVNCurrency(value) : value);\r\n }\r\n },\r\n stacked: !!option.xStacked\r\n }],\r\n yAxes\r\n },\r\n tooltips: { \r\n callbacks: {\r\n label: (tooltipItem, data) => {\r\n const datasetLabel = data?.datasets[tooltipItem.datasetIndex]?.label;\r\n const label = data?.labels[tooltipItem.index] as string;\r\n const value = data?.datasets[tooltipItem.datasetIndex]?.data[tooltipItem.index] as number;\r\n return option.tooltips?.label({\r\n datasetLabel,\r\n label,\r\n value,\r\n datasetIndex: tooltipItem.datasetIndex,\r\n dataIndex:tooltipItem.index\r\n }) || `${datasetLabel ? `[${datasetLabel}] ` : ''} ${label} : ${Number.toVNCurrency(value)}`;\r\n }\r\n }\r\n }\r\n },\r\n data: {\r\n labels: option.labels,\r\n datasets: option.datasets.map((e, idx) => {\r\n const dynamicColor = this.dynamicColor;\r\n const result: Chart.ChartDataSets = {\r\n type: e.type,\r\n label: e.label,\r\n fill: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n backgroundColor: e.backgroundColor || this.chartConfiguration?.defaultColors?.[idx]?.backgroundColor || dynamicColor,\r\n borderColor: e.borderColor || this.chartConfiguration?.defaultColors?.[idx]?.borderColor || dynamicColor,\r\n data: e.data,\r\n yAxisID: e.yAlign === 'right' ? rightId : leftId,\r\n lineTension: 0,\r\n order:e.order ?? 1\r\n };\r\n return result;\r\n }),\r\n },\r\n plugins: plugins\r\n };\r\n\r\n if (option.hover === 'ShowAll') {\r\n configuration.options.tooltips = {\r\n ...configuration.options.tooltips,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n configuration.options.hover = {\r\n ...configuration.options.hover,\r\n mode: 'index',\r\n intersect: false\r\n };\r\n }\r\n\r\n this.chart = new Chart(this.ctx, configuration);\r\n this.isLoading = false;\r\n }\r\n\r\n loadingStart = () => {\r\n this.isLoading = true;\r\n }\r\n\r\n private get dynamicColor() {\r\n const r = Math.floor(Math.random() * 255);\r\n const g = Math.floor(Math.random() * 255);\r\n const b = Math.floor(Math.random() * 255);\r\n return 'rgb(' + r + ',' + g + ',' + b + ')';\r\n }\r\n\r\n #drawTotalOfStackedBar = (chartType:'barline' | 'bar' | 'horizontalBar'):Chart.PluginServiceRegistrationOptions => {\r\n return {\r\n afterDraw(chartInstance, easing, options) {\r\n if (chartInstance?.data?.datasets?.length){\r\n const ctx = chartInstance.ctx;\r\n chartInstance.data.datasets[0].data.forEach( (dataPoint,index) => {\r\n let curLastIndex = 0;\r\n let curTotal = 0;\r\n chartInstance.data.datasets.forEach( (dataset,setIndex) => {\r\n if (dataset.data[index] != 0 && (!dataset.hidden) && dataset.type !== 'line'){\r\n curLastIndex = setIndex;\r\n if (Number.isNumber(dataset.data[index])){\r\n curTotal += Number(dataset.data[index]);\r\n }\r\n else curTotal += 0;\r\n }\r\n })\r\n const {x,y} = chartInstance.getDatasetMeta(curLastIndex).data[index]._model;\r\n const textWidth = ctx.measureText(curTotal.toString()).width;\r\n ctx.fillStyle= 'black';\r\n let xTextPosition = (x-textWidth/2 ) - textWidth > 0 ? (x-textWidth/2 ) : 0;\r\n if (index == 0){\r\n xTextPosition = x + 10;\r\n }\r\n else if (index === chartInstance.data.datasets[0].data.length - 1 ){\r\n xTextPosition = x - textWidth - 10;\r\n }\r\n ctx.font = '300 10px'\r\n ctx.fillText(curTotal.toString(), chartType === 'horizontalBar' ? x + 10 : xTextPosition, chartType === 'horizontalBar' ? y : y-10);\r\n });\r\n } \r\n },\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdChart } from './chart.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n SdChart\r\n ],\r\n exports: [\r\n SdChart\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdChartModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":";;;;;;;;MAEa,WAAW,GAAG;IACzB,GAAG,EAAE,mBAAmB;IACxB,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,mBAAmB;IAC3B,KAAK,EAAE,mBAAmB;IAC1B,IAAI,EAAE,mBAAmB;IACzB,MAAM,EAAE,oBAAoB;IAC5B,IAAI,EAAE,oBAAoB;IAC1B,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;EAChB;MAiKW,YAAY,GAAG,IAAI,cAAc,CAAsB,qBAAqB;;;MCpO5E,OAAO;IAqBlB,YACU,GAAsB,EACY,kBAAuC;QADzE,QAAG,GAAH,GAAG,CAAmB;QACY,uBAAkB,GAAlB,kBAAkB,CAAqB;QAtB3E,gBAAW,GAAG,KAAK,CAAC;QAE5B,cAAS,GAAG,KAAK,CAAC;QAclB,YAAO,GAAG,IAAI,CAAC;QACf,WAAM,GAAG,OAAO,CAAC;QAmtBjB,iBAAY,GAAG;YACb,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB,CAAA;QASD,iCAAyB,CAAC,SAA6C;YACrE,OAAQ;gBACN,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO;;oBACtC,gBAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,0CAAE,QAAQ,0CAAE,MAAM,EAAC;wBACxC,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;wBAC9B,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAG,CAAC,SAAS,EAAC,KAAK;4BAC1D,IAAI,YAAY,GAAG,CAAC,CAAC;4BACrB,IAAI,QAAQ,GAAG,CAAC,CAAC;4BACjB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC,OAAO,EAAC,QAAQ;gCACpD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAC;oCAC3E,YAAY,GAAG,QAAQ,CAAC;oCACxB,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAC;wCACvC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;qCACzC;;wCACI,QAAQ,IAAI,CAAC,CAAC;iCACpB;6BACF,CAAC,CAAA;4BACF,MAAM,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,aAAa,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;4BAC5E,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC;4BAC7D,GAAG,CAAC,SAAS,GAAE,OAAO,CAAC;4BACvB,IAAI,aAAa,GAAG,CAAC,CAAC,GAAC,SAAS,GAAC,CAAC,IAAK,SAAS,GAAG,CAAC,IAAI,CAAC,GAAC,SAAS,GAAC,CAAC,IAAK,CAAC,CAAC;4BAC5E,IAAI,KAAK,IAAI,CAAC,EAAC;gCACb,aAAa,GAAG,CAAC,GAAG,EAAE,CAAC;6BACxB;iCACI,IAAI,KAAK,KAAK,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gCACjE,aAAa,GAAG,CAAC,GAAG,SAAS,GAAG,EAAE,CAAC;6BACpC;4BACD,GAAG,CAAC,IAAI,GAAG,UAAU,CAAA;4BACrB,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,SAAS,KAAK,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,aAAa,EAAE,SAAS,KAAK,eAAe,GAAG,CAAC,GAAG,CAAC,GAAC,EAAE,CAAC,CAAC;yBACvI,CAAC,CAAC;qBACJ;iBACF;aACF,CAAA;SACF,EAAA;KAxvBA;IApBD,IAAa,WAAW,CAAC,WAA0B;QACjD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;KACF;IAiBD,QAAQ;KACP;IAED,eAAe;QACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;IAEa,WAAW,CAAC,WAAqB;;;YAC7C,IAAI,CAAC,MAAM,GAAG,OAAA,IAAI,CAAC,YAAY,0CAAE,MAAM,KAAI,OAAO,CAAC;YACnD,IAAI,CAAC,WAAW,EAAE;gBAChB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACrB;YACD,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,UAAI,IAAI,CAAC,QAAQ,0CAAE,aAAa,EAAE;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAkC,CAAC;gBAChE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACnC,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI;oBAC5B,KAAK,KAAK;wBACR,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACvC,MAAM;oBACR,KAAK,KAAK;wBACR,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACvC,MAAM;oBACR,KAAK,eAAe;wBAClB,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACjD,MAAM;oBACR,KAAK,MAAM;wBACT,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBACxC,MAAM;oBACR,KAAK,WAAW;wBACd,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBAC7C,MAAM;oBACR,KAAK,SAAS;wBACZ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBAC3C,MAAM;oBACR,KAAK,UAAU;wBACb,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC9C;wBACE,MAAM;iBACT;aACF;;KACF;IAEO,cAAc,CAAC,MAAsB;;QAC3C,MAAM,aAAa,GAA6B;YAC9C,IAAI,EAAE,KAAK;YACX,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE;oBACL,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,MAAM,CAAC,KAAK;iBACnB;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU;iBAC5B;gBACD,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI;;4BACvB,MAAM,YAAY,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,KAAK,CAAC;4BACrE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BACxD,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BAC1F,OAAO,OAAA,MAAM,CAAC,QAAQ,0CAAE,KAAK,CAAC;gCAC5B,YAAY;gCACZ,KAAK;gCACL,KAAK;6BACN,MAAK,GAAG,YAAY,GAAG,IAAI,YAAY,IAAI,GAAG,EAAE,GAAG,KAAK,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;yBAC7F;qBACF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ,MAAM,EAAE,OAAA,MAAM,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,MAAK,EAAE;gBAChD,QAAQ,EAAE,CAAC;wBACT,IAAI,EAAE,OAAA,MAAM,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,MAAK,EAAE;wBAC9C,eAAe,EAAE,OAAA,MAAM,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;;4BAAK,OAAA,CAAC,CAAC,eAAe;sDAC9D,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA;mCAC9D,IAAI,CAAC,YAAY,CAAA;yBAAA,MAAK,EAAE;qBAC9B,CAAC;aACH;SACF,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,aAAa,CAAC,OAAO,CAAC,QAAQ,mCACzB,aAAa,CAAC,OAAO,CAAC,QAAQ,KACjC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;YACF,aAAa,CAAC,OAAO,CAAC,KAAK,mCACtB,aAAa,CAAC,OAAO,CAAC,KAAK,KAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;SACH;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEO,mBAAmB,CAAC,MAA0B;;QACpD,MAAM,aAAa,GAA6B;YAC9C,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAC,KAAK;gBACzB,KAAK,EAAE;oBACL,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,MAAM,CAAC,KAAK;iBACnB;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU;iBAC5B;gBACD,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI;;4BACvB,MAAM,YAAY,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,KAAK,CAAC;4BACrE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BACxD,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BAC1F,OAAO,OAAA,MAAM,CAAC,QAAQ,0CAAE,KAAK,CAAC;gCAC5B,YAAY;gCACZ,KAAK;gCACL,KAAK;6BACN,MAAK,GAAG,YAAY,GAAG,IAAI,YAAY,IAAI,GAAG,EAAE,GAAG,KAAK,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;yBAC7F;qBACF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ,MAAM,EAAE,OAAA,MAAM,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,MAAK,EAAE;gBAChD,QAAQ,EAAE,CAAC;wBACT,IAAI,EAAE,OAAA,MAAM,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,MAAK,EAAE;wBAC9C,eAAe,EAAE,OAAA,MAAM,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;;4BAAK,OAAA,CAAC,CAAC,eAAe;sDAC9D,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA;mCAC9D,IAAI,CAAC,YAAY,CAAA;yBAAA,MAAK,EAAE;qBAC9B,CAAC;aACH;SACF,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,aAAa,CAAC,OAAO,CAAC,QAAQ,mCACzB,aAAa,CAAC,OAAO,CAAC,QAAQ,KACjC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;YACF,aAAa,CAAC,OAAO,CAAC,KAAK,mCACtB,aAAa,CAAC,OAAO,CAAC,KAAK,KAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;SACH;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEO,cAAc,CAAC,MAAsB;;QAC3C,MAAM,UAAU,SAAG,MAAM,CAAC,UAAU,mCAAI,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;YAG1B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;YAC5E,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,QAAQ,KAAK,CAAC,CAAC;SACzF;QACD,MAAM,aAAa,GAA6B;YAC9C,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAE,KAAK;gBAC1B,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU;iBAC5B;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;4BACD,KAAK,EAAE;gCACL,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;yBACF,CAAC;oBACF,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE;gCACL,WAAW,QAAE,MAAM,CAAC,WAAW,mCAAI,IAAI;gCACvC,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;4BACD,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;yBACF,CAAC;iBACH;gBACD,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI;;4BACvB,MAAM,YAAY,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,KAAK,CAAC;4BACrE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BACxD,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BAC1F,OAAO,OAAA,MAAM,CAAC,QAAQ,0CAAE,KAAK,CAAC;gCAC5B,YAAY;gCACZ,KAAK;gCACL,KAAK;6BACN,MAAK,GAAG,YAAY,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;yBACzD;qBACF;iBACF;aACF;YACD,IAAI,EAAE,KAAK;YACX,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;;oBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;oBACvC,MAAM,MAAM,GAAwB;wBAClC,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,IAAI,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACzG,eAAe,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACpH,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;qBACf,CAAC;oBACF,OAAO,MAAM,CAAC;iBACf,CAAC;aACH;SACF,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,aAAa,CAAC,OAAO,CAAC,QAAQ,mCACzB,aAAa,CAAC,OAAO,CAAC,QAAQ,KACjC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;YACF,aAAa,CAAC,OAAO,CAAC,KAAK,mCACtB,aAAa,CAAC,OAAO,CAAC,KAAK,KAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;SACH;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEO,wBAAwB,CAAC,MAAgC;;;;;;;QAM/D,MAAM,OAAO,GAA4C,EAAE,CAAC;QAC5D,IAAI,MAAM,CAAC,cAAc,EAAC;YACxB,OAAO,CAAC,IAAI,CAAC,0DAAA,IAAI,EAAwB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;SACvD;QACD,MAAM,aAAa,GAA6B;YAC9C,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAE,KAAK;gBAC1B,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU;oBAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU;wBACzB,IAAI,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC;wBACpC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;wBACpB,IAAI,IAAI,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBACpC,IAAI,MAAM,CAAC,cAAc,EAAC;4BACxB,KAAK,CAAC,eAAe,EAAE,CAAA;yBACxB;6BACG;;4BAEJ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;;4BAG5E,EAAE,CAAC,MAAM,EAAE,CAAC;yBACX;qBACF;iBACF;gBACD,MAAM,EAAC;oBACL,OAAO,EAAC;wBACN,KAAK,EAAC,EAAE;qBACT;iBACF;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;4BACD,OAAO,EAAC,IAAI;4BACZ,KAAK,EAAE;gCACL,WAAW,QAAE,MAAM,CAAC,WAAW,mCAAI,IAAI;gCACvC,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;yBACF,CAAC;oBACF,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,OAAO,EAAC,IAAI;4BACZ,KAAK,EAAE;gCACL,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;4BACD,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;yBACF,CAAC;iBACH;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAC,SAAS;oBACd,IAAI,EAAC,GAAG;oBACR,SAAS,EAAE;wBACT,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI;;4BACvB,MAAM,YAAY,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,KAAK,CAAC;4BACrE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BACxD,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BAC1F,OAAO,OAAA,MAAM,CAAC,QAAQ,0CAAE,KAAK,CAAC;gCAC5B,YAAY;gCACZ,KAAK;gCACL,KAAK;6BACN,MAAK,GAAG,YAAY,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;yBACzD;qBACF;iBACF;aACF;YACD,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;;oBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;oBACvC,MAAM,MAAM,GAAwB;wBAClC,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,IAAI,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACzG,eAAe,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACpH,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;qBACf,CAAC;oBACF,OAAO,MAAM,CAAC;iBACf,CAAC;aACH;YACD,OAAO,EAAC,OAAO;SAChB,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,aAAa,CAAC,OAAO,CAAC,QAAQ,mCACzB,aAAa,CAAC,OAAO,CAAC,QAAQ,KACjC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;YACF,aAAa,CAAC,OAAO,CAAC,KAAK,mCACtB,aAAa,CAAC,OAAO,CAAC,KAAK,KAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;SACH;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEO,eAAe,CAAC,MAAuB;;QAC7C,MAAM,UAAU,SAAG,MAAM,CAAC,UAAU,mCAAI,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;YAG1B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,QAAQ,KAAK,CAAC,CAAC;SACzF;QACD,MAAM,aAAa,GAA6B;YAC9C,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAE,KAAK;gBAC1B,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU;iBAC5B;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;4BACD,KAAK,EAAE;gCACL,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;yBACF,CAAC;oBACF,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE;gCACL,WAAW,QAAE,MAAM,CAAC,WAAW,mCAAI,IAAI;gCACvC,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;4BACD,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;yBACF,CAAC;iBACH;gBACD,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI;;4BACvB,MAAM,YAAY,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,KAAK,CAAC;4BACrE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BACxD,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BAC1F,OAAO,OAAA,MAAM,CAAC,QAAQ,0CAAE,KAAK,CAAC;gCAC5B,YAAY;gCACZ,KAAK;gCACL,KAAK;6BACN,MAAK,GAAG,YAAY,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;yBACzD;qBACF;iBACF;aACF;YACD,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;;oBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;oBACvC,MAAM,MAAM,GAAwB;wBAClC,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,IAAI,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACzG,eAAe,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACpH,WAAW,EAAE,CAAC,CAAC,WAAW,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,WAAW,CAAA,IAAI,YAAY;wBACxG,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,WAAW,EAAE,CAAC;qBACf,CAAC;oBACF,OAAO,MAAM,CAAC;iBACf,CAAC;aACH;SACF,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,aAAa,CAAC,OAAO,CAAC,QAAQ,mCACzB,aAAa,CAAC,OAAO,CAAC,QAAQ,KACjC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;YACF,aAAa,CAAC,OAAO,CAAC,KAAK,mCACtB,aAAa,CAAC,OAAO,CAAC,KAAK,KAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;SACH;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEO,oBAAoB,CAAC,MAA4B;;QACvD,MAAM,UAAU,SAAG,MAAM,CAAC,UAAU,mCAAI,EAAE,CAAC;QAE3C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;;;YAG1B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,QAAQ,KAAK,CAAC,CAAC;SACzF;QACD,MAAM,aAAa,GAA6B;YAC9C,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAE,KAAK;gBAC1B,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU;iBAC5B;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;4BACD,KAAK,EAAE;gCACL,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;yBACF,CAAC;oBACF,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,KAAK,EAAE;gCACL,WAAW,QAAE,MAAM,CAAC,WAAW,mCAAI,IAAI;gCACvC,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;4BACD,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;yBACF,CAAC;iBACH;gBACD,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI;;4BACvB,MAAM,YAAY,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,KAAK,CAAC;4BACrE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BACxD,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BAC1F,OAAO,OAAA,MAAM,CAAC,QAAQ,0CAAE,KAAK,CAAC;gCAC5B,YAAY;gCACZ,KAAK;gCACL,KAAK;6BACN,MAAK,GAAG,YAAY,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;yBACzD;qBACF;iBACF;aACF;YACD,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;;oBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;oBACvC,MAAM,MAAM,GAAwB;wBAClC,KAAK,EAAE,CAAC,CAAC,KAAK;;wBAEd,eAAe,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACpH,WAAW,EAAE,CAAC,CAAC,WAAW,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,WAAW,CAAA,IAAI,YAAY;wBACxG,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,WAAW,EAAE,CAAC;qBACf,CAAC;oBACF,OAAO,MAAM,CAAC;iBACf,CAAC;aACH;SACF,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,aAAa,CAAC,OAAO,CAAC,QAAQ,mCACzB,aAAa,CAAC,OAAO,CAAC,QAAQ,KACjC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;YACF,aAAa,CAAC,OAAO,CAAC,KAAK,mCACtB,aAAa,CAAC,OAAO,CAAC,KAAK,KAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;SACH;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEO,kBAAkB,CAAC,MAA0B;;QACnD,MAAM,OAAO,GAA4C,EAAE,CAAC;QAC5D,IAAI,MAAM,CAAC,cAAc,EAAC;YACxB,OAAO,CAAC,IAAI,CAAC,0DAAA,IAAI,EAAwB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;SACvD;QACD,MAAM,UAAU,SAAG,MAAM,CAAC,UAAU,mCAAI,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC1B,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC;YAC1E,IAAI,YAAY,IAAI,CAAC,EAAE;;;gBAGrB,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;gBACnD,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,QAAQ,KAAK,CAAC,CAAC;aACzF;iBAAM;;;gBAGL,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;gBAClE,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,QAAQ,KAAK,CAAC,CAAC;aACzF;SACF;QACD,MAAM,MAAM,GAAG,IAAIA,EAAO,EAAE,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAIA,EAAO,EAAE,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,CAAC;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,MAAM;gBAChB,EAAE,EAAE,MAAM;gBACV,KAAK,EAAE;oBACL,WAAW,QAAE,MAAM,CAAC,WAAW,mCAAI,IAAI;oBACvC,YAAY,EAAE,CAAC;oBACf,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;wBAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;qBAC5G;iBACF;gBACD,UAAU,EAAE;oBACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;oBACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;iBACjC;gBACD,OAAO,EAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,EAAE;YACnD,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,OAAO;gBACjB,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE;oBACL,WAAW,QAAE,MAAM,CAAC,WAAW,mCAAI,IAAI;oBACvC,YAAY,EAAE,CAAC;oBACf,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;wBAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,WAAW,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;qBACjH;iBACF;gBACD,UAAU,EAAE;oBACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW;oBAC7B,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;iBACtC;gBACD,OAAO,EAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;SACJ;QACD,MAAM,aAAa,GAA6B;YAC9C,OAAO,EAAE;gBACP,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAE,KAAK;gBAC1B,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU;oBAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU;wBACzB,IAAI,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC;wBACpC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;wBACpB,IAAI,IAAI,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;wBACpC,IAAI,MAAM,CAAC,cAAc,EAAC;4BACxB,KAAK,CAAC,eAAe,EAAE,CAAA;yBACxB;6BACG;;4BAEJ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;;4BAG5E,EAAE,CAAC,MAAM,EAAE,CAAC;yBACX;qBACF;oBACD,QAAQ,QAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,mCAAI,KAAK;iBAC1C;gBACD,MAAM,EAAC;oBACL,OAAO,EAAC,EAAE;iBACX;gBACD,KAAK,EAAE;oBACL,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,MAAM,CAAC,KAAK;iBACnB;gBACD,MAAM,EAAE;oBACN,KAAK,EAAE,CAAC;4BACN,OAAO,EAAE,IAAI;4BACb,UAAU,EAAE;gCACV,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;gCACxB,WAAW,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;6BACjC;4BACD,KAAK,EAAE;gCACL,QAAQ,EAAE,CAAC,KAAsB,EAAE,KAAa;;oCAC9C,OAAO,OAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,EAAE,KAAK,OAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;iCAC5G;6BACF;4BACD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ;yBAC3B,CAAC;oBACF,KAAK;iBACN;gBACD,QAAQ,EAAE;oBACR,SAAS,EAAE;wBACT,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI;;4BACvB,MAAM,YAAY,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,KAAK,CAAC;4BACrE,MAAM,KAAK,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BACxD,MAAM,KAAK,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,2CAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAW,CAAC;4BAC1F,OAAO,OAAA,MAAM,CAAC,QAAQ,0CAAE,KAAK,CAAC;gCAC5B,YAAY;gCACZ,KAAK;gCACL,KAAK;gCACL,YAAY,EAAE,WAAW,CAAC,YAAY;gCACtC,SAAS,EAAC,WAAW,CAAC,KAAK;6BAC5B,MAAK,GAAG,YAAY,GAAG,IAAI,YAAY,IAAI,GAAG,EAAE,IAAI,KAAK,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;yBAC9F;qBACF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;;oBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;oBACvC,MAAM,MAAM,GAAwB;wBAClC,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,IAAI,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACzG,eAAe,EAAE,CAAC,CAAC,eAAe,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,eAAe,CAAA,IAAI,YAAY;wBACpH,WAAW,EAAE,CAAC,CAAC,WAAW,uBAAI,IAAI,CAAC,kBAAkB,0CAAE,aAAa,0CAAG,GAAG,2CAAG,WAAW,CAAA,IAAI,YAAY;wBACxG,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM;wBAChD,WAAW,EAAE,CAAC;wBACd,KAAK,QAAC,CAAC,CAAC,KAAK,mCAAI,CAAC;qBACnB,CAAC;oBACF,OAAO,MAAM,CAAC;iBACf,CAAC;aACH;YACD,OAAO,EAAE,OAAO;SACjB,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;YAC9B,aAAa,CAAC,OAAO,CAAC,QAAQ,mCACzB,aAAa,CAAC,OAAO,CAAC,QAAQ,KACjC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;YACF,aAAa,CAAC,OAAO,CAAC,KAAK,mCACtB,aAAa,CAAC,OAAO,CAAC,KAAK,KAC9B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,KAAK,GACjB,CAAC;SACH;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAMD,IAAY,YAAY;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QAC1C,OAAO,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;KAC7C;;;;YAnvBF,SAAS,SAAC;gBACT,QAAQ,EAAE,UAAU;gBACpB,mgBAAqC;;aAEtC;;;YArBwE,iBAAiB;4CA6CrF,QAAQ,YAAI,MAAM,SAAC,YAAY;;;0BAlBjC,KAAK;uBAOL,SAAS,SAAC,OAAO;8BACjB,SAAS,SAAC,cAAc;2BACxB,SAAS,SAAC,WAAW;wCACrB,SAAS,SAAC,wBAAwB;;;MCpBxB,aAAa;;;YAbzB,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;iBACb;gBACD,YAAY,EAAE;oBACZ,OAAO;iBACR;gBACD,OAAO,EAAE;oBACP,OAAO;iBACR;gBACD,SAAS,EAAE,EACV;aACF;;;AChBD;;;;;;"}
|
package/package.json
CHANGED
|
index 7edf903..61600bf 100644
|
|
|
Binary file
|