stz-chart-maker 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/chart-toolbox.min.js +1 -1
- package/dist/index.d.ts +46 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/utils/Logger.ts","../src/Error/ErrorMsg.ts","../src/Error/GlobalErrorHandler.ts","../src/ChartWrapper.ts","../node_modules/stz-util/dist/stzUtil.min.js","../src/defaults/options/Cartesian.ts","../src/registry/ChartInstance.ts","../src/defaults/plugins/index.ts","../src/defaults/options/Bar.ts","../src/defaults/options/Line.ts","../src/CartesianChartWrapper.ts","../src/types/chart/ChartTypes.ts","../src/registry/ChartFactory.ts","../src/BarChartWrapper.ts","../src/LineChartWrapper.ts","../src/index.ts"],"sourcesContent":["/**\n * ═════════════════════════════════════════════════════════════\n * 📄 FILE : Logger.ts\n * 📁 PACKAGE : chartjs-toolbox-\n * 👤 AUTHOR : stz\n * 🕒 CREATED : 25. 7. 18.\n * ═════════════════════════════════════════════════════════════\n * ═════════════════════════════════════════════════════════════\n * 📝 DESCRIPTION\n * -\n * ═════════════════════════════════════════════════════════════\n * ═════════════════════════════════════════════════════════════\n * 🔄 CHANGE LOG\n * - DATE : 2025/07/18 | Author : stz | 최초 생성\n * ═════════════════════════════════════════════════════════════\n */\n\n/** ■■■■■■■■■■■■■■■■ GLOBAL Logging contr ■■■■■■■■■■■■■■■■*/\nexport const LoggerConfig = {\n\terrorLogging: true,\n\tdebugLogging: true,\n};\n/** ■■■■■■■■■■■■■■■■ Apple System Default Color ■■■■■■■■■■■■■■■■*/\nexport const CHART_COLOR = [\n\t'#FF3B30', // System Red\n\t'#FF9500', // System Orange\n\t'#FFCC00', // System Yellow\n\t'#34C759', // System Green\n\t'#00C7BE', // System Mint\n\t'#30B0C7', // System Teal\n\t'#32ADE6', // System Cyan\n\t'#007AFF', // System Blue\n\t'#5856D6', // System Indigo\n\t'#AF52DE', // System Purple\n];\n\nexport const CHART_COLOR_DARK = [\n\t'#FF4245', // System Red\n\t'#FF9230', // System Orange\n\t'#FFD600', // System Yellow\n\t'#30D158', // System Green\n\t'#00DAC3', // System Mint\n\t'#00D2E0', // System Cyan\n\t'#3CD3FE', // System Blue Light\n\t'#0091FF', // System Blue\n\t'#6B5DFF', // System Indigo\n\t'#DB34F2', // System Purple\n\t'#FF375F', // System Pink\n\t'#B7855C', // System Brown\n];\n\nconst originalConsoleLog = console.log;\n\nconsole.log = (...args: any[]) => {\n\tif (LoggerConfig.debugLogging) {\n\t\toriginalConsoleLog.apply(console, args);\n\t}\n};","export enum ErrorMsg {\n\t// 공통 에러\n\tCHART_TYPE_REQUIRED = 'Chart type is required.', // 차트 타입이 필요합니다.\n\tINVALID_CHART_TYPE = 'Invalid chart type. Supported types are bar, line, scatter, bubble, etc.', // 지원하지 않는 차트 타입입니다.\n\tDATASET_REQUIRED = 'Datasets cannot be empty.', // 데이터셋이 비어있을 수 없습니다.\n\tNOT_SUPPORTED_OPTION = 'It does not support that option.',\n\tLABELS_REQUIRED = 'Labels cannot be empty.', // 라벨이 비어있을 수 없습니다.\n\tOPTIONS_REQUIRED = 'Options cannot be null or undefined.', // 옵션이 null 또는 undefined일 수 없습니다.\n\tNOT_REGISTERED_CHART_TYPE = 'This chart type is not registered. Please call ChartWrapper.register().', // 해당 차트 타입이 등록되지 않았습니다. ChartWrapper.register()를 호출하세요.\n\n\t// 데이터 관련 에러\n\tEMPTY_REQUIRED_PROPERTY = 'A required property is missing in the dataset or options.', // 필수 속성이 누락되었습니다. 데이터셋이나 옵션을 확인하세요.\n\tINVALID_DATA_STRUCTURE = 'Invalid data structure. Please check the dataset or labels format.', // 데이터 구조가 잘못되었습니다. 데이터셋과 라벨의 형식을 확인하세요.\n\tAXIS_KEY_REQUIRED = 'xAxisKey or yAxisKey is required for parsing.', // xAxisKey 또는 yAxisKey가 필요합니다.\n\tDATA_LENGTH_MISMATCH = 'Labels length does not match datasets data length.', // 라벨과 데이터셋의 데이터 길이가 일치하지 않습니다.\n\tIMAGE_PROPERTY_MISSING = 'Image property is missing in the dataset. Please provide a valid image URL.', // 데이터셋에 이미지 속성이 없습니다. 유효한 이미지 URL을 제공하세요.\n\n\t// 플러그인 관련 에러\n\tPLUGIN_NOT_FOUND = 'Plugin not found in options.plugins.', // 옵션의 plugins에 해당 플러그인이 없습니다.\n\tPLUGIN_ALREADY_EXISTS = 'Plugin already exists. Use setPlugin() to override.', // 해당 플러그인이 이미 존재합니다. setPlugin()을 사용하세요.\n\tPLUGIN_REMOVE_FAILED = 'Cannot remove a non-existing plugin.', // 존재하지 않는 플러그인을 삭제할 수 없습니다.\n\n\t// Chart 인스턴스 관련 에러\n\tCHART_INSTANCE_NOT_FOUND = 'Chart instance is not initialized.', // 차트 인스턴스가 초기화되지 않았습니다.\n\tCHART_ALREADY_INITIALIZED = 'Chart instance is already initialized.', // 차트 인스턴스가 이미 초기화되어 있습니다.\n\n\t// BarChart 전용 에러\n\tINVALID_BAR_THICKNESS = 'Bar thickness must be a positive number.', // 바 두께는 0보다 큰 숫자여야 합니다.\n\tINVALID_BAR_PERCENTAGE = 'Bar percentage must be between 0 and 1.', // 바 퍼센트는 0과 1 사이의 값이어야 합니다.\n\tINVALID_CATEGORY_PERCENTAGE = 'Category percentage must be between 0 and 1.', // 카테고리 퍼센트는 0과 1 사이의 값이어야 합니다.\n\n\t// 기타\n\tUNKNOWN_ERROR = 'An unknown error has occurred.', // 알 수 없는 에러가 발생했습니다.\n\n\t//스케일 관련 에러\n\tINVALID_AXIS_KEY = 'Invalid axis key provided. Please check the axis configuration.', // 잘못된 축 키가 제공되었습니다. 축 구성을 확인하세요.\n}\n\nexport enum ErrorCode {\n\t// 공통 (1200)\n\tCHART_TYPE_REQUIRED = 1200,\n\tINVALID_CHART_TYPE = 1201,\n\tOPTIONS_REQUIRED = 1202,\n\tNOT_REGISTERED_CHART_TYPE = 1203,\n\n\t// 데이터 관련 (2200)\n\tDATASET_REQUIRED = 2200,\n\tLABELS_REQUIRED = 2211,\n\tEMPTY_REQUIRED_PROPERTY = 2212,\n\tINVALID_DATA_STRUCTURE = 2213,\n\tAXIS_KEY_REQUIRED = 2214,\n\tDATA_LENGTH_MISMATCH = 2215,\n\tNOT_SUPPORTED_OPTION = 2216,\n\tIMAGE_PROPERTY_MISSING = 2217,\n\n\t// 플러그인 관련 (3220)\n\tPLUGIN_NOT_FOUND = 3220,\n\tPLUGIN_ALREADY_EXISTS = 3221,\n\tPLUGIN_REMOVE_FAILED = 3222,\n\n\t// 인스턴스 관련 (4230)\n\tCHART_INSTANCE_NOT_FOUND = 4230,\n\tCHART_ALREADY_INITIALIZED = 4231,\n\n\t// 기타 (5240)\n\tINVALID_BAR_THICKNESS = 5240,\n\tINVALID_BAR_PERCENTAGE = 5241,\n\tINVALID_CATEGORY_PERCENTAGE = 5242,\n\tUNKNOWN_ERROR = 5249,\n\n\t// 스케일 관련 (6250)\n\tINVALID_AXIS_KEY = 6250,\n}\n\nexport const ErrorMessage: Record<ErrorCode, string> = {\n\t// 공통\n\t[ErrorCode.CHART_TYPE_REQUIRED]: ErrorMsg.CHART_TYPE_REQUIRED,\n\t[ErrorCode.INVALID_CHART_TYPE]: ErrorMsg.INVALID_CHART_TYPE,\n\t[ErrorCode.OPTIONS_REQUIRED]: ErrorMsg.OPTIONS_REQUIRED,\n\t[ErrorCode.NOT_REGISTERED_CHART_TYPE]: ErrorMsg.NOT_REGISTERED_CHART_TYPE,\n\n\t// 데이터 관련\n\t[ErrorCode.DATASET_REQUIRED]: ErrorMsg.DATASET_REQUIRED,\n\t[ErrorCode.LABELS_REQUIRED]: ErrorMsg.LABELS_REQUIRED,\n\t[ErrorCode.EMPTY_REQUIRED_PROPERTY]: ErrorMsg.EMPTY_REQUIRED_PROPERTY,\n\t[ErrorCode.INVALID_DATA_STRUCTURE]: ErrorMsg.INVALID_DATA_STRUCTURE,\n\t[ErrorCode.AXIS_KEY_REQUIRED]: ErrorMsg.AXIS_KEY_REQUIRED,\n\t[ErrorCode.DATA_LENGTH_MISMATCH]: ErrorMsg.DATA_LENGTH_MISMATCH,\n\t[ErrorCode.NOT_SUPPORTED_OPTION]: ErrorMsg.NOT_SUPPORTED_OPTION,\n\n\t// 플러그인 관련\n\t[ErrorCode.PLUGIN_NOT_FOUND]: ErrorMsg.PLUGIN_NOT_FOUND,\n\t[ErrorCode.PLUGIN_ALREADY_EXISTS]: ErrorMsg.PLUGIN_ALREADY_EXISTS,\n\t[ErrorCode.PLUGIN_REMOVE_FAILED]: ErrorMsg.PLUGIN_REMOVE_FAILED,\n\n\t// 인스턴스 관련\n\t[ErrorCode.CHART_INSTANCE_NOT_FOUND]: ErrorMsg.CHART_INSTANCE_NOT_FOUND,\n\t[ErrorCode.CHART_ALREADY_INITIALIZED]: ErrorMsg.CHART_ALREADY_INITIALIZED,\n\n\t// 기타\n\t[ErrorCode.INVALID_BAR_THICKNESS]: ErrorMsg.INVALID_BAR_THICKNESS,\n\t[ErrorCode.INVALID_BAR_PERCENTAGE]: ErrorMsg.INVALID_BAR_PERCENTAGE,\n\t[ErrorCode.INVALID_CATEGORY_PERCENTAGE]: ErrorMsg.INVALID_CATEGORY_PERCENTAGE,\n\t[ErrorCode.UNKNOWN_ERROR]: ErrorMsg.UNKNOWN_ERROR,\n\t[ErrorCode.IMAGE_PROPERTY_MISSING]: ErrorMsg.IMAGE_PROPERTY_MISSING,\n\n\t// 스케일 관련\n\t[ErrorCode.INVALID_AXIS_KEY]: ErrorMsg.INVALID_AXIS_KEY,\n};\n","import { ErrorCode, ErrorMessage } from './ErrorMsg';\nimport { LoggerConfig } from '../utils/Logger';\n\nexport class CustomError extends Error {\n\tconstructor(\n\t\tpublic code: ErrorCode,\n\t\tpublic detail?: string\n\t) {\n\t\tconst ErrMsg = detail ? `${ErrorMessage[code]} - ${detail}` : ErrorMessage[code];\n\t\tsuper(ErrMsg);\n\n\t\tthis.name = 'CustomError';\n\n\t\tif (LoggerConfig.errorLogging) {\n\t\t\tconst codeStyle = 'color: green; font-weight: bold;';\n\t\t\tconst messageStyle = 'color: orange;';\n\t\t\tconsole.error(`%c[${code}] %c${ErrMsg}`, codeStyle, messageStyle);\n\t\t}\n\t}\n}\n\nexport class GlobalErrorHandler {\n\tstatic handle(e: unknown) {\n\t\tif (e instanceof CustomError) {\n\t\t\treturn {\n\t\t\t\tstatus: e.code,\n\t\t\t\tmessage: e.message,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tcode: ErrorCode.UNKNOWN_ERROR,\n\t\t\tmessage: ErrorMessage[ErrorCode.UNKNOWN_ERROR],\n\t\t};\n\t}\n}\n","import { Chart, ChartData, ChartDataset, ChartOptions, ChartType, Plugin, PluginOptionsByType } from 'chart.js';\nimport { CartesianChartType, CommonAxesSacels, Constructor, CustomChartOptions } from './types/commonTypes';\nimport { CustomError } from './Error/GlobalErrorHandler';\nimport { ErrorCode } from './Error/ErrorMsg';\nimport { PartialDataLabels } from './types/plugins/DataLabels';\nexport interface ChartConfig {\n\t_chartId: string;\n\ttype: ChartType;\n\tdata: any;\n\toptions: any;\n\tplugins?: any;\n}\ninterface ChartBuilder<TType extends ChartType> {\n\tsetPlugin(plugins: any): this;\n\tremovePlugin(pluginId: string): this;\n\tbuild(id?: string): ChartConfig;\n}\nexport abstract class ChartWrapper<TType extends ChartType> implements ChartBuilder<TType> {\n\tstatic registry = new Map<string, Constructor<any, any>>();\n\n\tconstructor(\n\t\tprotected type: TType,\n\t\tprotected labels: (string | number)[],\n\t\tprotected datasets: ChartDataset<TType, (number | null)[]>[],\n\t\tprotected options: CustomChartOptions<TType>,\n\t\tprotected plugins?: any\n\t) {}\n\t//TODO : factory pattern dynamic method for maintenance sex sex big ass doggy styleQWA?. MN\n\tstatic create<TType extends ChartType>(\n\t\ttype: TType,\n\t\tlabels: (string | number)[],\n\t\tdatasets: ChartDataset<TType, (number | null)[]>[],\n\t\toptions?: CustomChartOptions<TType>,\n\t\tplugins?: any\n\t): ChartBuilder<TType> {\n\t\tconst WrapperClass = this.registry.get(type);\n\t\tif (!WrapperClass) {\n\t\t\tthrow new CustomError(ErrorCode.NOT_REGISTERED_CHART_TYPE, `type=${type}`);\n\t\t}\n\t\treturn new WrapperClass(type, labels, datasets, options, plugins) as ChartBuilder<TType>;\n\t}\n\n\tprotected abstract normalize(): void;\n\tprotected abstract configAop(config: any): any;\n\n\tstatic register<TType extends ChartType, TInstance>(type: TType, wrapperClass: Constructor<TType, TInstance>) {\n\t\tthis.registry.set(type, wrapperClass);\n\t}\n\n\t/**\n\t * 플러그인을 추가합니다.\n\t * @param plugin\n\t * @param replaceIfExists\n\t *\n\t */\n\tpublic setPlugin(plugin: any, replaceIfExists: boolean = true): this {\n\t\tif (!this.plugins) {\n\t\t\tthis.plugins = [];\n\t\t}\n\n\t\tif (plugin.id && replaceIfExists) {\n\t\t\tconst existingIndex = this.plugins.findIndex((p: any) => p.id === plugin.id);\n\t\t\tif (existingIndex !== -1) {\n\t\t\t\tthis.plugins[existingIndex] = plugin;\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\n\t\tthis.plugins.push(plugin);\n\t\treturn this;\n\t}\n\n\t/**\n\t * 차트 설정 객체를 생성합니다.\n\t * @param {string} id\n\t * @returns {ChartConfig}\n\t * @Description 레거시 지원용\n\t */\n\tpublic makeConfig(id?: string): ChartConfig {\n\t\treturn this.build(id);\n\t}\n\n\t/**\n\t * 플러그인을 제거합니다.\n\t * @param pluginId\n\t */\n\tpublic removePlugin(pluginId: string): this {\n\t\tif (!this.plugins || !Array.isArray(this.plugins)) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst initialLength = this.plugins.length;\n\t\tthis.plugins = this.plugins.filter((p: any) => p.id !== pluginId);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * 플러그인이 존재하는지 확인합니다.\n\t * @param pluginId\n\t */\n\tpublic hasPlugin(pluginId: string): boolean {\n\t\tif (!this.plugins || !Array.isArray(this.plugins)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this.plugins.some((p: any) => p.id === pluginId);\n\t}\n\n\tpublic build(id?: string): ChartConfig {\n\t\tthis.normalize();\n\t\tconst chartId = id || `${this.type}_${Math.random()}`;\n\n\t\tconst config = {\n\t\t\t_chartId: chartId,\n\t\t\ttype: this.type,\n\t\t\tdata: { labels: this.labels, datasets: this.datasets },\n\t\t\toptions: { ...this.options, _chartId: chartId },\n\t\t\tplugins: this.plugins,\n\t\t};\n\n\t\treturn this.configAop(config);\n\t}\n}\n","function a0_0x4af2(_0x4297ef,_0x3c4d84){const _0x5eed3d=a0_0x5eed();return a0_0x4af2=function(_0x4af297,_0x1d0aaf){_0x4af297=_0x4af297-0x195;let _0x2ac4f5=_0x5eed3d[_0x4af297];if(a0_0x4af2['cnrCGs']===undefined){var _0x2f632c=function(_0x4e29ba){const _0x3cc3f0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x19591f='',_0x2d1ac1='';for(let _0x3bddd5=0x0,_0x2b03c7,_0x34d1c4,_0xa8194c=0x0;_0x34d1c4=_0x4e29ba['charAt'](_0xa8194c++);~_0x34d1c4&&(_0x2b03c7=_0x3bddd5%0x4?_0x2b03c7*0x40+_0x34d1c4:_0x34d1c4,_0x3bddd5++%0x4)?_0x19591f+=String['fromCharCode'](0xff&_0x2b03c7>>(-0x2*_0x3bddd5&0x6)):0x0){_0x34d1c4=_0x3cc3f0['indexOf'](_0x34d1c4);}for(let _0x2672da=0x0,_0x5a9dfe=_0x19591f['length'];_0x2672da<_0x5a9dfe;_0x2672da++){_0x2d1ac1+='%'+('00'+_0x19591f['charCodeAt'](_0x2672da)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2d1ac1);};a0_0x4af2['sZUXQc']=_0x2f632c,_0x4297ef=arguments,a0_0x4af2['cnrCGs']=!![];}const _0x4ea7a7=_0x5eed3d[0x0],_0x399fa1=_0x4af297+_0x4ea7a7,_0x1caf89=_0x4297ef[_0x399fa1];return!_0x1caf89?(_0x2ac4f5=a0_0x4af2['sZUXQc'](_0x2ac4f5),_0x4297ef[_0x399fa1]=_0x2ac4f5):_0x2ac4f5=_0x1caf89,_0x2ac4f5;},a0_0x4af2(_0x4297ef,_0x3c4d84);}function a0_0x5eed(){const _0x4c3bf0=['rxPzCwq','BwfW','AuHMCLK','Dg9mB2nHBgvtDhjPBMC','mJy3odKXnLviDvvpyW','DMPiAKO','yxbWzw5Kq2HPBgq','zxjYB3i','Bg9N','rfLQquu','tNvSBa','cGRIOidIOidIOzxIOzxIOzxIOzxIOzxIOzxIOzxIOzxIOzxIOzxIOzxIOzxIOyxIOidIOPdIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOidIOiak4Qgh4Qgh4Qgh4Qgh4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qkh4Qkh4Qkp4Qko4Qko4Qcg4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4QkO4QkQ4QkQ4QgQ4Qgc4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4QkQ4QkQ4QkQ4QcgcUkHH+kHH+kGGokGGokGGokGQokHQUkHQUkHQUkHJUkHRUkGGokGGokGGokIGokIH+kIH+kIH+kIH+kIH+kIL+kILEkGHokGGokGGokGGokHH+kJH+kIH+kIH+kIH+kIH+kIH+kIH+kIH+kIH+kIL+kILEkILEkILEkIHEkGGokGGokGGokGGokGGokIQUkIQUkIQUkHGWRIOyFIOyFIOydIOidIOidIOkJIOARIOBRIOBJIOBJIOBJIOBhIOO3IOOFIOOFIOOFIOQFIOQpIOipIOidIOQJIOQRIOidIOidIOidIOidIOyFIOyFIOyFIOAFIOzpIOzxIORxIOidIOidIOPZIOPZIOPZIOOZIOidIOidIOidIOidIOidIOQJIOQpIORpIORhIORhIOOuk4Qgo4Qgo4Qgo4Qgh4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4QgJ4QgJ4QgZ4QgX4QgX4Qgb4Qca4QkO4QkQ4Qca4Qca4Qca4Qca4Qgh4Qgh4Qgh4Qgh4Qca4Qca4Qca4Qg44Qg54Qg44Qg44Qca4Qca4Qca4Qca4Qca4QkO4Qk54Qk44Qg44QkC4QkC4QkC4QcgcUkIH+kIH+kIH+kIH+kIJ+kIJUkIH+kIJ+kIJUkIRUkIQUkGGokGGokGGokGGokHH+kHH+kHP+kHGEkGGokGUokHUokGGokGGokGGokGGokHH+kHH+kHH+kHH+kGGokGUokHUokHUokHUokGGokGGokGGokGGokGGokGOokHO+kHO+kHO+kHS+kHUokHSEkHSEkGGokGGaRIOOFIOOFIOidIOidIOidIOkJIOARIOARIOARIOARIOARIOidIOidIOidIOidIO4FIOOFIOQFIOihIOidIORJIORJIOidIOidIOidIOidIOyFIOyFIOyFIOyFIOidIORJIORJIOidIOidIOidIOidIOidIOidIOyFIOyFIOyFIOzFIOzxIOzxIOzxIO5xIOPxIOidIOiak4QkJ4QkJ4QkR4Qkk4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qga4QgD4QgC4QgC4QgC4QgC4Qcm4Qca4QkO4QkQ4Qca4Qca4Qca4Qca4Qgh4Qgh4Qgh4Qgh4Qca4QkW4QkX4Qcb4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qg44Qg44QgX4QgXcUkGGokGGokIH+kIH+kIH+kIJ+kIJUkIH+kIJ+kGRUkHUEkHUokHSokILEkILEkGTEkHSEkHUEkGKokGGokGQokHQUkHQUkHO+kHQ+kHQUkHQUkHQUkIJUkGHUkGGokIMokINokINokILEkINEkINokILEkINEkINokILEkINEkINokILEkINEkINokINokINokINokGRaRIOidIOidIOidIOidIOyFIOyFIOyFIOyFIOyFIOyFIO4FIOOFIOQFIOQpIOQpIOQVIOylIOidIOidIOidIOidIOidIOQRIOQRIOQRIOQRIOQRIOQRIOQpIOipIOidIOidIOidIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIOzekcG','B21PDa','BKD6u2q','yM9KEq','A0LUs1O','ChjVDg90ExbL','w29IAMvJDcbpyMPLy3rD','Dgv4DenVBNrLBNq','y2HPBgrYzw4','zxzLCNK','AxnpyMPLy3q','oty4nte1B0TWEvD6','y29UC3rYDwn0B3i','t2jQzwn0','CMvKDwnL','C2vQCe0','C2XPy2u','DgfIBgvFzgf0ys5JC3y','AgfZ','uK9JAxq','DujQAwO','DMfSDwvZ','u3rYAw5N','zNjVBq','mJm2odmWngXpufHsva','AxriyNe','zM9YrwfJAa','zLHzqvi','uvHmBgy','Dg9tDhjPBMC','quzxz04','ChvZAa','BgvUz3rO','yLHKBMi','C2v0','C3rYAw5N','z2v0vhLWzq','mtq1mgLMqxbHAW','y3jLyxrLt2jQzwn0vvjm','CMvTB3zLq2HPBgq','qxjYyxK','z2v0','mtu1mZK2nMLIDgXoBW','zg93BMXVywq','y2XPy2S','B1zLwMi','s1jZv2O','odKYmZiYmNzJAMTKCq','mtq1nKfTEhnYzG','Aw5JBhvKzxm','x19WCM90B19F','DNfRze0','nLzhDK1xva','BwvYz2u','mti4n0jmtKrxqG','AgfZt3DUuhjVCgvYDhK','mwfRseXsDG','C3vIC3rYAw5N','y2fSBa','CxvLCNLtzwXLy3rVCKfSBa','twP6DMW','Bhj6DeC','q1PmAvG','DgGSihrK','y2XVBMvezwvW','mJm3odrwELfADhK','AurjAg0'];a0_0x5eed=function(){return _0x4c3bf0;};return a0_0x5eed();}const a0_0xd09b08=a0_0x4af2;(function(_0xaa0e9,_0x539ed9){const _0x351f8d=a0_0x4af2,_0x3c349f=_0xaa0e9();while(!![]){try{const _0x288d21=-parseInt(_0x351f8d(0x1d2))/0x1*(-parseInt(_0x351f8d(0x1c4))/0x2)+-parseInt(_0x351f8d(0x1e1))/0x3+-parseInt(_0x351f8d(0x1b2))/0x4+parseInt(_0x351f8d(0x1a5))/0x5*(-parseInt(_0x351f8d(0x1ce))/0x6)+-parseInt(_0x351f8d(0x1ca))/0x7*(-parseInt(_0x351f8d(0x1db))/0x8)+-parseInt(_0x351f8d(0x1d0))/0x9*(parseInt(_0x351f8d(0x1bf))/0xa)+parseInt(_0x351f8d(0x1c9))/0xb;if(_0x288d21===_0x539ed9)break;else _0x3c349f['push'](_0x3c349f['shift']());}catch(_0x2df080){_0x3c349f['push'](_0x3c349f['shift']());}}}(a0_0x5eed,0x7bccb));export const stzUtil={'dateFormatTs':_0x85e1ea=>{const _0x288fee=a0_0x4af2;if(_0x85e1ea&&_0x85e1ea[_0x288fee(0x1cb)]('T')){let _0x134ad2=_0x85e1ea['split']('T');return _0x134ad2[0x0];}return _0x85e1ea;},'dateFormatDots':_0x32aa25=>{const _0x5e3afc=a0_0x4af2;let _0x193aac=_0x32aa25[_0x5e3afc(0x1d3)](0x0,0x4),_0x2a7e63=_0x32aa25['substring'](0x4,0x6),_0x3ac482=_0x32aa25['substring'](0x6,0x8);return _0x193aac+'.'+_0x2a7e63+'.'+_0x3ac482;},'dateFormatDash':_0x586b61=>{const _0xb1e10f=a0_0x4af2;let _0xcb3bd2=_0x586b61[_0xb1e10f(0x1d3)](0x0,0x4),_0x2ea8be=_0x586b61[_0xb1e10f(0x1d3)](0x4,0x6),_0x5cc03f=_0x586b61[_0xb1e10f(0x1d3)](0x6,0x8);return _0xcb3bd2+'-'+_0x2ea8be+'-'+_0x5cc03f;},'dateFormatSlashes':_0x2ca74b=>{const _0x44fbf9=a0_0x4af2;let _0x44b021=_0x2ca74b[_0x44fbf9(0x1d3)](0x0,0x4),_0x48e045=_0x2ca74b['substring'](0x4,0x6),_0x2af2ea=_0x2ca74b[_0x44fbf9(0x1d3)](0x6,0x8);return _0x44b021+'/'+_0x48e045+'/'+_0x2af2ea;},'arrSumByLength':(_0x5becdf,_0x5e70be)=>{const _0x348eb0=a0_0x4af2,_0x442bfb={'iDIhm':function(_0x5a4d9d,_0x2e9d7a){return _0x5a4d9d<_0x2e9d7a;}};let _0x1b5b88=[];for(let _0x5e7b3c=0x0;_0x442bfb[_0x348eb0(0x1dc)](_0x5e7b3c,_0x5becdf['length']);_0x5e7b3c+=_0x5e70be){const _0x9d212f=_0x5becdf['slice'](_0x5e7b3c,_0x5e7b3c+_0x5e70be),_0x3ec6d9=_0x9d212f[_0x348eb0(0x1a3)](_0x21e5c6=>typeof _0x21e5c6==='string'),_0x35e28d=_0x9d212f[_0x348eb0(0x1a8)]((_0x40fa79,_0x49de3c)=>_0x40fa79+Number(_0x49de3c),0x0);_0x1b5b88[_0x348eb0(0x1b9)](_0x3ec6d9?_0x35e28d[_0x348eb0(0x1e0)]():_0x35e28d);}return _0x1b5b88;},'buildTree':(_0x39cc17,_0x40f58c,_0x420ae5,_0x8ab128=a0_0xd09b08(0x1a2))=>{const _0x38822e=a0_0xd09b08,_0x1e580e=[],_0x234ccc={};return _0x39cc17[_0x38822e(0x1b4)](_0x288ff0=>{const _0x2d0c7d=_0x38822e,_0x430707={..._0x288ff0,[_0x8ab128]:[]};_0x234ccc[_0x288ff0[_0x40f58c]]=_0x430707;if(!_0x288ff0[_0x420ae5])_0x1e580e[_0x2d0c7d(0x1b9)](_0x430707);else{const _0x337c30=_0x234ccc[_0x288ff0[_0x420ae5]];_0x337c30&&_0x337c30[_0x8ab128][_0x2d0c7d(0x1b9)](_0x430707);}}),_0x1e580e;},'downloadTableByCSV':(_0x3faa4d,_0x577d4b=a0_0xd09b08(0x1ab))=>{const _0x596efb=a0_0xd09b08,_0x17dfbc={'vjHjJ':_0x596efb(0x1d9),'uBjij':'Table\\x20element\\x20not\\x20found.','lttCc':function(_0x2a42db,_0x141873){return _0x2a42db+_0x141873;},'QXLlf':'text/csv;charset=utf-8;'};if(!_0x3faa4d){console[_0x596efb(0x196)](_0x17dfbc[_0x596efb(0x1ae)]);return;}const _0x310786=Array[_0x596efb(0x1b1)](_0x3faa4d[_0x596efb(0x1d5)]('tr')),_0x4e06d1=_0x310786[_0x596efb(0x1de)](_0x2f58f2=>{const _0x46e239=_0x596efb,_0x3413c3=Array[_0x46e239(0x1b1)](_0x2f58f2[_0x46e239(0x1d5)](_0x17dfbc[_0x46e239(0x1e2)]));return _0x3413c3['map'](_0x4a314a=>'\\x22'+_0x4a314a[_0x46e239(0x1a1)]+'\\x22')['join'](',');})['join']('\\x0a'),_0x5077d1='\\ufeff',_0x5c0d92=new Blob([_0x17dfbc['lttCc'](_0x5077d1,_0x4e06d1)],{'type':_0x17dfbc[_0x596efb(0x1b6)]}),_0x22d411=URL[_0x596efb(0x1c0)](_0x5c0d92),_0x2817b6=document['createElement']('a');_0x2817b6['href']=_0x22d411,_0x2817b6[_0x596efb(0x1c5)]=_0x577d4b,document[_0x596efb(0x19d)][_0x596efb(0x195)](_0x2817b6),_0x2817b6[_0x596efb(0x1c6)](),document[_0x596efb(0x19d)][_0x596efb(0x1c1)](_0x2817b6),URL['revokeObjectURL'](_0x22d411);},'getType':_0x346b8e=>{const _0x150281=a0_0xd09b08;return Object[_0x150281(0x19f)][_0x150281(0x1b7)][_0x150281(0x1d4)](_0x346b8e)[_0x150281(0x1aa)](0x8,-0x1);},'isObject':_0x3313e8=>{const _0x29558f=a0_0xd09b08,_0x4ecb18={'Mjzvl':function(_0x10e4c2,_0x339ae6){return _0x10e4c2===_0x339ae6;},'DYjAE':_0x29558f(0x1a0)};return _0x4ecb18[_0x29558f(0x1d6)](Object[_0x29558f(0x19f)][_0x29558f(0x1b7)][_0x29558f(0x1d4)](_0x3313e8),_0x4ecb18[_0x29558f(0x198)]);},'omit':(_0x33a8fd,_0x3ec703)=>{const _0x520bfa=a0_0xd09b08,_0x1732ba={'AFWgN':'Null','sejpM':_0x520bfa(0x1a7),'CZLiX':function(_0x42d7f0,_0x6ca0f){return _0x42d7f0!==_0x6ca0f;},'iHfrY':'Array'},_0x1e6eba=stzUtil[_0x520bfa(0x1be)](_0x33a8fd);if(_0x1e6eba===_0x1732ba[_0x520bfa(0x1b8)]||_0x1e6eba!==_0x1732ba[_0x520bfa(0x1a9)]&&_0x1732ba[_0x520bfa(0x1d8)](_0x1e6eba,_0x1732ba[_0x520bfa(0x1df)]))return _0x33a8fd;if(_0x1e6eba===_0x1732ba['iHfrY'])return _0x33a8fd['map'](_0x26e6e7=>stzUtil[_0x520bfa(0x19b)](_0x26e6e7,_0x3ec703));const _0x572ff3={};for(const _0x32f743 in _0x33a8fd){if(_0x3ec703[_0x520bfa(0x1cb)](_0x32f743))continue;const _0x235037=_0x33a8fd[_0x32f743];_0x572ff3[_0x32f743]=stzUtil['omit'](_0x235037,_0x3ec703);}return _0x572ff3;},'pick':(_0x4d5b5a,_0x41324b)=>{const _0x4cdc29=a0_0xd09b08;if(Object[_0x4cdc29(0x19f)][_0x4cdc29(0x1d1)][_0x4cdc29(0x1d4)](_0x4d5b5a,_0x41324b)){const {[_0x41324b]:_0x48b65d,..._0x192d8}=_0x4d5b5a;return _0x192d8;}else throw new Error('Object\\x20does\\x20not\\x20have\\x20PROPERTY');},'makeComboItems':(_0x2bf4dd,_0x10cf0f,_0x5aa188)=>{return _0x2bf4dd['map'](_0x5b9720=>{return{'key':_0x5b9720[_0x10cf0f],'value':_0x5b9720[_0x5aa188],'label':_0x5b9720[_0x10cf0f]};});},'isEmpty':_0xbba018=>{const _0x2d7ca4=a0_0xd09b08,_0x2daf87={'EzYqd':function(_0x12a027,_0x52ab36){return _0x12a027===_0x52ab36;},'nGzSd':function(_0x1c7e3a,_0x40ee63){return _0x1c7e3a===_0x40ee63;},'lrztG':_0x2d7ca4(0x1b0),'dOTDE':function(_0x58d2d1,_0x472f29){return _0x58d2d1===_0x472f29;},'bXdnb':_0x2d7ca4(0x1c2),'oVeZb':function(_0x1b6e6f,_0x4dc17e){return _0x1b6e6f===_0x4dc17e;},'vqkdM':_0x2d7ca4(0x1a7),'mbXkC':function(_0x2a456a,_0x4880e7){return _0x2a456a===_0x4880e7;}},_0x45b94f=stzUtil[_0x2d7ca4(0x1be)](_0xbba018);if(_0x2daf87[_0x2d7ca4(0x1dd)](_0xbba018,null)||_0x2daf87[_0x2d7ca4(0x19c)](_0xbba018,undefined))return!![];if(_0x2daf87[_0x2d7ca4(0x1dd)](_0x45b94f,_0x2daf87[_0x2d7ca4(0x1d7)])&&_0x2daf87['dOTDE'](_0xbba018['trim'](),''))return!![];if(_0x2daf87['dOTDE'](_0x45b94f,_0x2daf87[_0x2d7ca4(0x1bb)])&&_0x2daf87[_0x2d7ca4(0x19c)](_0xbba018[_0x2d7ca4(0x1ba)],0x0))return!![];if(_0x2daf87[_0x2d7ca4(0x1c7)](_0x45b94f,_0x2daf87[_0x2d7ca4(0x1cd)])){if(_0x2daf87['mbXkC'](Object['keys'](_0xbba018)[_0x2d7ca4(0x1ba)],0x0))return!![];const _0x40c3bf=Object[_0x2d7ca4(0x1af)](_0xbba018)['every'](_0x2299b8=>_0x2299b8===null||_0x2299b8===undefined||_0x2299b8==='');if(_0x40c3bf)return!![];}return![];},'cloneDeep':(_0x2f1be6,_0x1d152e=new Map())=>{const _0x222a3d=a0_0xd09b08,_0x43240e={'dHCBz':function(_0xf2259f,_0x4fb9aa){return _0xf2259f===_0x4fb9aa;},'fXYAR':'Object','AOIOq':function(_0x45bc52,_0x19aa0a){return _0x45bc52!==_0x19aa0a;},'kInKZ':'Array'},_0xb53aa8=stzUtil['getType'](_0x2f1be6);if(_0x43240e['dHCBz'](_0xb53aa8,_0x222a3d(0x199))||_0xb53aa8!==_0x43240e[_0x222a3d(0x1b5)]&&_0x43240e['AOIOq'](_0xb53aa8,_0x43240e[_0x222a3d(0x19e)]))return _0x2f1be6;if(_0x1d152e[_0x222a3d(0x1ac)](_0x2f1be6))return _0x1d152e[_0x222a3d(0x1c3)](_0x2f1be6);if(_0x43240e['dHCBz'](_0xb53aa8,_0x43240e['kInKZ'])){const _0x5372fe=[];_0x1d152e[_0x222a3d(0x1bc)](_0x2f1be6,_0x5372fe);for(const _0x27d990 of _0x2f1be6){_0x5372fe[_0x222a3d(0x1b9)](stzUtil[_0x222a3d(0x1da)](_0x27d990,_0x1d152e));}return _0x5372fe;}else{const _0x4e0e15={};for(const _0x576268 in _0x2f1be6){Object[_0x222a3d(0x19f)]['hasOwnProperty'][_0x222a3d(0x1d4)](_0x2f1be6,_0x576268)&&(_0x4e0e15[_0x576268]=stzUtil['cloneDeep'](_0x2f1be6[_0x576268],_0x1d152e));}return _0x4e0e15;}},'merge':(_0x2045d4,_0x4b8739)=>{const _0x40c934=a0_0xd09b08,_0x4e8801={'ROcit':_0x40c934(0x1cc),'itHbq':function(_0x5326b3,_0x3f28f9){return _0x5326b3===_0x3f28f9;},'KRsWj':_0x40c934(0x1bd)},_0x5b3116=new Set([_0x4e8801[_0x40c934(0x1ad)],_0x40c934(0x1a6),'prototype']);if(!stzUtil[_0x40c934(0x1a4)](_0x2045d4)||!stzUtil[_0x40c934(0x1a4)](_0x4b8739))return _0x4b8739;const _0x55f676={..._0x2045d4};for(const _0x35d05e of Reflect['ownKeys'](_0x4b8739)){if(_0x4e8801[_0x40c934(0x1b3)](typeof _0x35d05e,_0x4e8801[_0x40c934(0x1c8)])&&_0x5b3116[_0x40c934(0x1ac)](_0x35d05e))continue;const _0x2dc3ec=Reflect[_0x40c934(0x1c3)](_0x4b8739,_0x35d05e),_0x2e0688=Reflect[_0x40c934(0x1c3)](_0x2045d4,_0x35d05e);if(stzUtil[_0x40c934(0x1a4)](_0x2dc3ec)&&stzUtil[_0x40c934(0x1a4)](_0x2e0688)){const _0x37ae9f=stzUtil[_0x40c934(0x1cf)](_0x2e0688,_0x2dc3ec);Reflect[_0x40c934(0x1bc)](_0x55f676,_0x35d05e,_0x37ae9f);}else Reflect[_0x40c934(0x1bc)](_0x55f676,_0x35d05e,_0x2dc3ec);}return _0x55f676;}};export const stz=()=>{const _0x16aaed=a0_0xd09b08;console[_0x16aaed(0x197)](_0x16aaed(0x19a));};","/**\n * ═════════════════════════════════════════════════════════════\n * 📄 FILE : Cartesian.ts\n * 📁 PACKAGE : chartjs-toolbox-\n * 👤 AUTHOR : stz\n * 🕒 CREATED : 25. 7. 24.\n * ═════════════════════════════════════════════════════════════\n * ═════════════════════════════════════════════════════════════\n * 📝 DESCRIPTION\n * -\n * ═════════════════════════════════════════════════════════════\n * ═════════════════════════════════════════════════════════════\n * 🔄 CHANGE LOG\n * - DATE : 2025/07/24 | Author : stz | 최초 생성\n * ═════════════════════════════════════════════════════════════\n */\nexport const DefaultZoomOptions = {\n\tzoom: {\n\t\tdrag: {\n\t\t\tenabled: true,\n\t\t\tborderColor: 'rgba(0, 123, 255, 1)',\n\t\t\tborderWidth: 1,\n\t\t\tbackgroundColor: 'rgba(0, 123, 255, 0.1)',\n\t\t},\n\t\tmode: 'xy',\n\t\toverScaleMode: null,\n\t},\n\tpan: {\n\t\tenabled: false,\n\t},\n};\n\nconst defaultDeferredOptions = {\n\tdeferred: {\n\t\txOffset: 300,\n\t\tyOffset: 300,\n\t\tdelay: 500,\n\t\tanimateScale: false,\n\t\tanimateRotate: false,\n\t},\n};\nexport const DefaultDataLabelsOptions = {\n\tformatter: function (value, context) {\n\t\treturn value;\n\t},\n\tdisplay: function (context) {\n\t\treturn true;\n\t},\n\tcolor: function (context) {\n\t\treturn '#000';\n\t},\n\tfont: {\n\t\tsize: 13,\n\t\tweight: 'bold',\n\t},\n\tanchor: 'end',\n\talign: 'center',\n};\n","// registry/ChartInstanceRegistry.ts\nimport { Chart } from 'chart.js';\nimport { stzUtil } from 'stz-util';\nimport { CustomError } from '../Error/GlobalErrorHandler';\nimport { ErrorCode } from '../Error/ErrorMsg';\nimport { Mode } from '../types/commonTypes';\n\nclass ChartInstance {\n\tprivate static map = new Map<string, Chart>();\n\n\tstatic register(id: string, instance: Chart) {\n\t\tthis.map.set(id, instance);\n\t}\n\tstatic get(id: string): Chart | undefined {\n\t\treturn this.map.get(id);\n\t}\n\tstatic getChart(id: string): Chart {\n\t\tconst chart = this.get(id);\n\t\tif (stzUtil.isEmpty(chart)) {\n\t\t\tthrow new CustomError(ErrorCode.UNKNOWN_ERROR);\n\t\t}\n\t\treturn chart;\n\t}\n\tstatic unregister(id: string): boolean {\n\t\treturn this.map.delete(id);\n\t}\n\tstatic has(id: string): boolean {\n\t\treturn this.map.has(id);\n\t}\n\tstatic clear(): void {\n\t\tthis.map.clear();\n\t}\n\tstatic update(id: string, instance: Chart, mode: Mode = 'default'): void {\n\t\tconst chart = this.get(id);\n\t\tif (stzUtil.isEmpty(chart)) {\n\t\t\tthis.register(id, instance);\n\t\t\tinstance.update(mode);\n\t\t} else {\n\t\t\tthrow new CustomError(ErrorCode.UNKNOWN_ERROR);\n\t\t}\n\t}\n\tstatic resize(id: string): void {\n\t\tconst chart = this.get(id);\n\t\tif (stzUtil.isEmpty(chart)) {\n\t\t\tthrow new CustomError(ErrorCode.UNKNOWN_ERROR);\n\t\t}\n\t\tchart.resize();\n\t}\n}\n\nexport { ChartInstance };\n","// 기본 Chart.js 플러그인들\n\nimport { BarElement, Chart, ChartArea, ChartConfiguration, ChartType, Plugin, PointElement } from 'chart.js';\nimport { ChartInstance } from '../../registry/ChartInstance';\nimport { stzUtil } from 'stz-util';\nimport { SettingOptions } from '../../types/commonTypes';\nimport { ZoomRangeSliderColors, ZoomRangeSliderPlugin } from '../../types/util/utilType';\n\nexport const noDataPlugin = {\n\tid: 'noDataPlugin',\n\tbeforeUpdate: function (chart: any) {\n\t\t// 필요시 구현\n\t},\n\tafterDraw: function (chart: any) {\n\t\tconst type = chart.config.type;\n\t\tlet hasNoData = false;\n\n\t\tif (type === 'treemap') {\n\t\t\tconst treeData = chart.data.datasets?.[0]?.tree;\n\t\t\thasNoData = !Array.isArray(treeData) || treeData.length === 0;\n\t\t} else {\n\t\t\thasNoData = !chart.data.datasets || !Array.isArray(chart.data.datasets[0]?.data) || chart.data.datasets[0].data.length === 0;\n\t\t}\n\n\t\tif (hasNoData) {\n\t\t\tconst ctx = chart.ctx;\n\t\t\tconst width = chart.width;\n\t\t\tconst height = chart.height;\n\t\t\tctx.save();\n\t\t\tctx.textAlign = 'center';\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.font = '30px Arial';\n\t\t\tctx.fillText('No data available', width / 2, height / 2);\n\t\t\tctx.restore();\n\t\t}\n\t},\n\tbeforeDestroy(chart: any) {\n\t\tconsole.log(`차트 사라짐 , ${chart.canvas.id}`);\n\t\tchart._initVisible = false;\n\t\tif (chart._initVisibleComp) {\n\t\t\tdelete chart._initVisibleComp;\n\t\t}\n\t},\n};\n\n// 줌 리셋 플러그인\nexport const zoomResetPlugin = {\n\tid: 'zoomResetButton',\n\tafterDraw(chart: any, args: any, options: any) {\n\t\tconst canvas = chart.canvas;\n\t\tconst parent = canvas.parentNode;\n\n\t\tif (chart._zoomResetBtnDom) return;\n\n\t\tif (getComputedStyle(parent).position === 'static') {\n\t\t\tparent.style.position = 'relative';\n\t\t}\n\n\t\tconst button = document.createElement('button');\n\t\tbutton.innerText = 'Zoom Reset';\n\t\tbutton.className = 'chart-zoom-reset-btn';\n\t\tObject.assign(button.style, {\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '10',\n\t\t\tpadding: '4px 8px',\n\t\t\tfontSize: '12px',\n\t\t\tbackground: 'rgba(0,0,0,0.7)',\n\t\t\tcolor: '#fff',\n\t\t\tborder: '1px solid #fff',\n\t\t\tborderRadius: '4px',\n\t\t\tcursor: 'pointer',\n\t\t\tdisplay: 'none',\n\t\t});\n\n\t\tbutton.onclick = () => {\n\t\t\tif (chart.resetZoom) {\n\t\t\t\tchart.resetZoom();\n\t\t\t}\n\t\t\tbutton.style.display = 'none';\n\t\t};\n\n\t\tparent.appendChild(button);\n\t\tchart._zoomResetBtnDom = button;\n\t},\n\tafterEvent(chart: any, args: any) {\n\t\tconst button = chart._zoomResetBtnDom;\n\t\tif (!button) return;\n\n\t\tconst isZoomed = chart.isZoomedOrPanned?.();\n\t\tif (!isZoomed) {\n\t\t\tbutton.style.display = 'none';\n\t\t\treturn;\n\t\t}\n\n\t\tconst { chartArea } = chart;\n\t\tconst x = chartArea.right - 90;\n\t\tconst y = chartArea.top + 10;\n\n\t\tbutton.style.left = `${x}px`;\n\t\tbutton.style.top = `${y}px`;\n\t\tbutton.style.display = 'block';\n\t},\n};\n\n// 도넛 차트 중앙 텍스트 플러그인\nexport const doughnutCenterTextPlugin = {\n\tid: 'doughnutCenterTextPlugin',\n\tafterDraw(chart: any) {\n\t\tconst parent = chart.canvas.parentNode;\n\t\tif (chart.config.type !== 'doughnut') return;\n\t\tchart.canvas.style.zIndex = '1';\n\t\tchart.canvas.style.position = 'relative';\n\n\t\tconst totalData = chart.config.data.datasets[0].data.reduce((a: number, b: number) => (Number(a) || 0) + (Number(b) || 0), 0);\n\t\tif (totalData === 0) {\n\t\t\tconst textDiv = parent.querySelector('.chart-center-text');\n\t\t\tif (textDiv) textDiv.remove();\n\t\t\treturn;\n\t\t}\n\n\t\tif (getComputedStyle(parent).position === 'static') {\n\t\t\tparent.style.position = 'relative';\n\t\t}\n\n\t\tlet textDiv = parent.querySelector('.chart-center-text');\n\n\t\tif (!textDiv) {\n\t\t\ttextDiv = document.createElement('div');\n\t\t\ttextDiv.className = 'chart-center-text d-flex flex-column justify-content-center align-items-center';\n\t\t\tObject.assign(textDiv.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: '50%',\n\t\t\t\tleft: '50%',\n\t\t\t\ttransform: 'translate(-50%, -50%)',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tcolor: '#fff',\n\t\t\t\tfontFamily: 'sans-serif',\n\t\t\t\ttextAlign: 'center',\n\t\t\t});\n\t\t\tparent.appendChild(textDiv);\n\t\t}\n\n\t\t// 중앙 HTML 설정 (외부에서 설정 가능)\n\t\tconst centerHtml = (chart as any)._centerHtml || '';\n\t\t(textDiv as HTMLElement).innerHTML = centerHtml;\n\t},\n};\n\n// 로딩 애니메이션 플러그인\nexport const loadingPlugin = {\n\tid: 'loadingPlugin',\n\tbeforeInit(chart: any, args: any, options: any) {\n\t\tchart._startLoading = true;\n\t},\n\tbeforeDraw(chart: any) {\n\t\t// 로딩 상태가 설정되어 있으면 애니메이션 시작\n\t\tif (chart._startLoading) {\n\t\t\tchart._startLoading = false;\n\t\t\tthis.startLoadingAnimation(chart);\n\t\t}\n\t},\n\tstartLoadingAnimation(chart: any) {\n\t\tconst canvas = chart.canvas;\n\t\tconst ctx = chart.ctx;\n\t\tconst dpr = window.devicePixelRatio || 1;\n\n\t\tif (!canvas) return;\n\n\t\tconst rect = canvas.getBoundingClientRect();\n\t\tconst width = rect.width;\n\t\tconst height = rect.height;\n\n\t\tcanvas.width = width * dpr;\n\t\tcanvas.height = height * dpr;\n\n\t\tctx.setTransform(1, 0, 0, 1, 0, 0);\n\t\tctx.scale(dpr, dpr);\n\n\t\tlet percentage = 0;\n\t\tconst centerX = width / 2;\n\t\tconst centerY = height / 2;\n\t\tconst radius = Math.min(width, height) * 0.25;\n\n\t\tconst animate = () => {\n\t\t\tif (chart._cancelLoading) {\n\t\t\t\tchart._cancelLoading = false;\n\t\t\t\tchart.update();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.clearRect(0, 0, width, height);\n\n\t\t\t// 반투명 배경\n\t\t\tctx.fillStyle = 'rgba(255,255,255,0.85)';\n\t\t\tctx.fillRect(0, 0, width, height);\n\n\t\t\t// 퍼센티지 텍스트\n\t\t\tctx.fillStyle = '#007bff';\n\t\t\tctx.font = `bold ${Math.floor(height * 0.1)}px Arial`;\n\t\t\tctx.textAlign = 'center';\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.fillText(`${percentage} %`, centerX, centerY);\n\n\t\t\t// 원형 프로그레스 바\n\t\t\tctx.beginPath();\n\t\t\tctx.lineWidth = 6;\n\t\t\tctx.strokeStyle = '#007bff';\n\t\t\tconst start = -Math.PI / 2;\n\t\t\tconst end = start + (percentage / 100) * 2 * Math.PI;\n\t\t\tctx.arc(centerX, centerY, radius, start, end);\n\t\t\tctx.stroke();\n\n\t\t\tif (percentage >= 100 && chart) {\n\t\t\t\t// 로딩 완료 후 차트 업데이트\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tchart.update();\n\t\t\t\t}, 500);\n\t\t\t} else {\n\t\t\t\tpercentage++;\n\t\t\t\trequestAnimationFrame(animate);\n\t\t\t}\n\t\t};\n\n\t\trequestAnimationFrame(animate);\n\t},\n};\n\nexport const customLegend = {\n\tid: 'htmlLegend',\n\t_Default: {\n\t\tcontainerID: '',\n\t\tclassName: {\n\t\t\tlist: 'list-container',\n\t\t\titem: 'legend-item',\n\t\t\tbox: 'legend-box',\n\t\t\ttext: 'text-container',\n\t\t},\n\t\tstyles: {\n\t\t\ttext: { textDecoration: 'none', color: '#111827' },\n\t\t\ttextHidden: { textDecoration: 'line-through', color: '#9ca3af' },\n\t\t\tbox: (item, type) => ({\n\t\t\t\twidth: '12px',\n\t\t\t\theight: '12px',\n\t\t\t\tborderRadius: type === 'line' ? '50%' : '4px',\n\t\t\t\tborderWidth: '2px',\n\t\t\t\tbackgroundColor: item.fillStyle,\n\t\t\t\tborderColor: item.strokeStyle,\n\t\t\t}),\n\t\t},\n\t\tgetItemText: item => item.text,\n\t\tgetDatasetType: (chart: Chart, item: Record<string, any>): ChartType | undefined => {\n\t\t\tconst ds = chart.config.data?.datasets?.[item.datasetIndex] as { type?: ChartType } | undefined;\n\t\t\tif (ds?.type) return ds.type;\n\t\t\tconst config = chart.config as ChartConfiguration<ChartType>;\n\t\t\treturn 'type' in config ? config.type : undefined;\n\t\t},\n\t},\n\t_fnc: (chart: Chart, id: string, options: { className: { list: string } }) => {\n\t\tif (!id) return;\n\t\tconst legendContainer = document.getElementById(id) as HTMLElement;\n\n\t\tlet listContainer = legendContainer?.querySelector('div');\n\n\t\tif (!listContainer) {\n\t\t\tlistContainer = document.createElement('div') as HTMLDivElement;\n\t\t\tlistContainer.className = options.className.list;\n\t\t\tlegendContainer.appendChild(listContainer);\n\t\t}\n\n\t\treturn listContainer;\n\t},\n\tafterUpdate(chart, args, options) {\n\t\tif (!options || !options.containerID) return;\n\n\t\tconst plainOptions = JSON.parse(JSON.stringify(options));\n\t\tconst merge = stzUtil.merge(this._Default, plainOptions) as {\n\t\t\tcontainerID: string;\n\t\t\tclassName: { list: string; item: string; box: string; text: string };\n\t\t};\n\n\t\tconst ul = this._fnc(chart, merge.containerID, merge);\n\t\tif (!ul) return console.error('none customLegend');\n\t\twhile (ul?.firstChild) {\n\t\t\tul.firstChild.remove();\n\t\t}\n\t\tconst items = chart.options.plugins.legend.labels.generateLabels(chart);\n\n\t\titems.forEach(item => {\n\t\t\tconst li = document.createElement('div') as HTMLDivElement;\n\t\t\tli.className = merge.className.item;\n\t\t\tconst boxSpan = document.createElement('div') as HTMLDivElement;\n\t\t\tboxSpan.className = merge.className.box;\n\t\t\tboxSpan.style.backgroundColor = item.fillStyle;\n\t\t\tboxSpan.style.borderColor = item.strokeStyle;\n\t\t\tconst textContainer = document.createElement('div') as HTMLDivElement;\n\t\t\ttextContainer.className = merge.className.text;\n\t\t\ttextContainer.style.color = item.fontColor;\n\n\t\t\tli.addEventListener('click', () => {\n\t\t\t\tconst { type } = chart.config;\n\t\t\t\tif (type === 'pie' || type === 'doughnut') {\n\t\t\t\t\tchart.toggleDataVisibility(item.index);\n\t\t\t\t} else {\n\t\t\t\t\tchart.setDatasetVisibility(item.datasetIndex, !chart.isDatasetVisible(item.datasetIndex));\n\t\t\t\t}\n\t\t\t\tchart.update();\n\t\t\t});\n\t\t\tconst text = document.createTextNode(item.text);\n\t\t\ttextContainer.appendChild(text);\n\t\t\ttextContainer.style.textDecoration = item.hidden ? 'line-through' : '';\n\t\t\tli.appendChild(boxSpan);\n\t\t\tli.appendChild(textContainer);\n\t\t\tul?.appendChild(li);\n\t\t});\n\t},\n};\n\nexport const chartMountPlugin = {\n\tid: 'chartMountedPlugin',\n\tafterDraw(chart, args, options) {\n\t\tif (!chart._mountedCalled) {\n\t\t\tchart._mountedCalled = true;\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tif (typeof chart.config.options._mounted === 'function') {\n\t\t\t\t\tchart.config.options._mounted(chart);\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst chartId = (chart.options as Record<string, any>)._chartId;\n\t\t\tif (chartId) {\n\t\t\t\tconsole.log('차트 인스턴스 바인드 성공');\n\t\t\t\tChartInstance.register(chartId, chart);\n\t\t\t}\n\t\t}\n\t},\n};\nexport const blinkPlugin: Plugin = {\n\tid: `highlightThresholdPlugin`,\n\tafterDatasetDraw(chart, args) {\n\t\tconst datasetMeta = chart.getDatasetMeta(args.index);\n\t\tconst dataset = chart.data.datasets[args.index];\n\t\tconst ctx = chart.ctx;\n\n\t\tdatasetMeta.data.forEach((element, i) => {\n\t\t\tconst value = dataset.data[i];\n\t\t\tconst threshold = 1120;\n\n\t\t\tconst numericValue = 0;\n\t\t\tif (numericValue >= threshold) {\n\t\t\t\tctx.save();\n\t\t\t\tctx.strokeStyle = `rgba(255, 0, 0, ${Math.abs(Math.sin(Date.now() / 300))})`;\n\t\t\t\tctx.lineWidth = 2;\n\n\t\t\t\tif (dataset.type === 'line') {\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(element.x, element.y, 6, 0, 2 * Math.PI);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t} else {\n\t\t\t\t\t//ctx.strokeRect(element.x - element.width / 2, element.y, element.width, element.height);\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t}\n\t\t});\n\t},\n};\n\n// 도넛 차트 중앙 HTML 생성 함수\nexport const makeCenterHtml = (percent: number, ok?: number, warn?: number, ng?: number) => {\n\tconst warnHtml = warn ? `<span class=\"text-warning\">${warn.toLocaleString()}</span><span class=\"text-white\">/</span>` : '';\n\treturn `\n <div class=\"fs-6 text-white\">${percent.toLocaleString()}%</div>\n ${\n\t\t\tok !== undefined\n\t\t\t\t? `\n <div>\n <span class=\"text-success\">${ok.toLocaleString()}</span>\n <span class=\"text-white\">/</span>\n ${warnHtml}\n <span class=\"text-danger\">${ng?.toLocaleString() || 0}</span>\n </div>`\n\t\t\t\t: ''\n\t\t}\n `;\n};\n\nexport const barScaleImgPlugin = {\n\tid: 'scaleImg',\n\tbeforeDatasetsDraw(chart, args, options) {\n\t\tconst {\n\t\t\tctx,\n\t\t\tdata,\n\t\t\tscales: { x, y },\n\t\t} = chart;\n\t\tconst imgSize = 30;\n\t\tconst isHorizontal = chart.options.indexAxis === 'y';\n\t\tctx.save();\n\t\tdata.datasets.forEach((dataset, idx) => {\n\t\t\tconst img = new Image();\n\t\t\timg.src = dataset.image;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tctx.drawImage(img, 0, y.getPixelForValue(idx) - imgSize / 2, imgSize, imgSize);\n\t\t\t} else {\n\t\t\t\tctx.drawImage(img, x.getPixelForValue(idx) - imgSize / 2, x.top, imgSize, imgSize);\n\t\t\t}\n\t\t});\n\t\tctx.restore();\n\t},\n};\n\nexport const changeSetting = {\n\tid: 'setting',\n\t_Default: {\n\t\timg: '/img/setting.svg',\n\t\ticonSize: { w: 30, h: 30 },\n\t\tradiusExtra: 2,\n\t\toffset: { right: 10, top: 10 },\n\t\tcolors: {\n\t\t\tfill: 'rgba(0,123,255,0.5)',\n\t\t\tfillHover: 'rgba(0,150,255,0.8)',\n\t\t\tstroke: 'rgba(0,123,255,1)',\n\t\t\tstrokeHover: 'rgba(0,150,255,1)',\n\t\t},\n\t\tborderWidth: { normal: 2, hover: 3 },\n\t\tcursor: 'pointer',\n\t\tonClick: ({ chart, event }): void => {\n\t\t\talert('클릭');\n\t\t},\n\t} as SettingOptions,\n\tafterInit(chart, args, options) {\n\t\tconst canvas = chart.canvas;\n\t\tconst opts = stzUtil.merge(this._Default, options);\n\t\tchart.T$opts = opts as SettingOptions;\n\t\tif (!canvas) return;\n\n\t\tif (chart.T$settingClickHandler) return;\n\n\t\tconst getXy = e => {\n\t\t\tconst rect = canvas.getBoundingClientRect();\n\t\t\tconst scaleX = canvas.width / rect.width;\n\t\t\tconst scaleY = canvas.height / rect.height;\n\t\t\treturn {\n\t\t\t\tx: (e.clientX - rect.left) * scaleX,\n\t\t\t\ty: (e.clientY - rect.top) * scaleY,\n\t\t\t};\n\t\t};\n\n\t\tconst handleClick = (e: MouseEvent) => {\n\t\t\tconst { x, y } = getXy(e);\n\n\t\t\tconst r = chart.T$settingBtnRect;\n\t\t\tif (!r) return;\n\n\t\t\tif (x >= r.left && x <= r.right && y >= r.top && y <= r.bottom) {\n\t\t\t\ttry {\n\t\t\t\t\t((opts as SettingOptions).onClick || this._Default.onClick)({ chart, event: e });\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconsole.error('error', err);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst handleMove = e => {\n\t\t\tconst { x, y } = getXy(e);\n\n\t\t\tconst r = chart.T$settingBtnCircle;\n\t\t\tif (!r) return;\n\n\t\t\tconst dx = x - r.cx;\n\t\t\tconst dy = y - r.cy;\n\t\t\tconst isHover = dx * dx + dy * dy <= r.radius * r.radius;\n\n\t\t\tif (chart.T$isHover !== isHover) {\n\t\t\t\tchart.T$isHover = isHover;\n\t\t\t\tcanvas.style.cursor = isHover ? (opts as SettingOptions).cursor || 'pointer' : 'default';\n\t\t\t\tchart.update('none');\n\t\t\t}\n\t\t};\n\t\tcanvas.addEventListener('mousemove', handleMove);\n\t\tcanvas.addEventListener('click', handleClick);\n\n\t\tchart._settingClickHandler = handleClick;\n\t\tchart._settingMoveHandler = handleMove;\n\n\t\tchart.T$settingImg = new Image();\n\t\tchart.T$settingImg.src = (opts as SettingOptions).img;\n\t},\n\n\tbeforeDraw(chart) {\n\t\tconst {\n\t\t\tctx,\n\t\t\tchartArea: { right },\n\t\t} = chart;\n\t\tctx.save();\n\n\t\tconst opts = (chart.T$opts as SettingOptions) || (this._Default as SettingOptions);\n\t\tconst img = chart.T$settingImg;\n\t\tconst w = opts.iconSize?.w ?? 30;\n\t\tconst h = opts.iconSize?.h ?? 30;\n\t\tconst x = right - (w + (opts.offset?.right ?? 10));\n\t\tconst y = opts.offset?.top ?? 10;\n\n\t\tconst radius = Math.max(w, h) / 2 + (opts.radiusExtra ?? 0);\n\t\tconst centerX = x + w / 2;\n\t\tconst centerY = y + h / 2;\n\n\t\tconst isHover = !!chart.T$isHover;\n\n\t\tctx.lineWidth = isHover ? (opts.borderWidth?.hover ?? 3) : (opts.borderWidth?.normal ?? 2);\n\t\tctx.strokeStyle = isHover ? (opts.colors?.strokeHover ?? 'rgba(0,150,255,1)') : (opts.colors?.stroke ?? 'rgba(0,123,255,1)');\n\t\tctx.beginPath();\n\t\tctx.arc(centerX, centerY, radius, 0, Math.PI * 2);\n\t\tctx.stroke();\n\t\tctx.closePath();\n\n\t\tctx.beginPath();\n\t\tctx.arc(centerX, centerY, radius, 0, Math.PI * 2);\n\t\tctx.fillStyle = isHover ? (opts.colors?.fillHover ?? 'rgba(0,150,255,0.8)') : (opts.colors?.fill ?? 'rgba(0,123,255,0.5)');\n\t\tctx.fill();\n\t\tctx.closePath();\n\n\t\tif (img) {\n\t\t\tctx.drawImage(img, x, y, w, h);\n\t\t}\n\n\t\tchart.T$settingBtnCircle = { cx: centerX, cy: centerY, radius };\n\n\t\tchart.T$settingBtnRect = {\n\t\t\ttop: y,\n\t\t\tbottom: y + h,\n\t\t\tleft: x,\n\t\t\tright: x + w,\n\t\t};\n\n\t\tctx.restore();\n\t},\n\n\tafterDestroy(chart) {\n\t\tconst canvas = chart.canvas;\n\t\tif (canvas && chart.T$settingClickHandler) {\n\t\t\tcanvas.removeEventListener('click', chart._settingClickHandler);\n\t\t}\n\t\tif (canvas && chart._settingMoveHandler) {\n\t\t\tcanvas.removeEventListener('mousemove', chart._settingMoveHandler);\n\t\t}\n\t\tchart.T$settingClickHandler = null;\n\t\tchart.T$settingBtnRect = null;\n\t\tchart.T$settingImg = null;\n\t},\n};\nexport const zoomRangeSlider = {\n\tid: 'zoomRangeSlider',\n\tvar: {\n\t\tmin: 0,\n\t\tisDragging: false,\n\t\tcirclePosition: null,\n\t} as { min: number; isDragging: boolean; circlePosition: number | null },\n\tafterDatasetDraw(chart, args, options) {\n\t\tconst {\n\t\t\tctx,\n\t\t\tchartArea: { left, right, top, bottom, width, height },\n\t\t} = chart;\n\n\t\tthis.var.circlePosition = this.var.circlePosition || left;\n\n\t\tctx.beginPath();\n\t\tctx.fillStyle = '#e0e0e0';\n\t\tctx.roundRect(left, bottom + 40, width, 6, 3);\n\t\tctx.fill();\n\n\t\tconst activeWidth = (this.var.circlePosition as number) - left;\n\t\tif (activeWidth > 0) {\n\t\t\tctx.beginPath();\n\t\t\tctx.fillStyle = '#4285f4';\n\t\t\tctx.roundRect(left, bottom + 40, activeWidth, 6, 3);\n\t\t\tctx.fill();\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.fillStyle = '#ffffff';\n\t\tctx.arc(this.var.circlePosition, bottom + 40, 8, 0, Math.PI * 2);\n\t\tctx.fill();\n\n\t\tctx.beginPath();\n\t\tctx.strokeStyle = '#4285f4';\n\t\tctx.lineWidth = 2;\n\t\tctx.arc(this.var.circlePosition, bottom + 40, 8, 0, Math.PI * 2);\n\t\tctx.stroke();\n\n\t\tif (this.var.isDragging) {\n\t\t\tctx.beginPath();\n\t\t\tctx.fillStyle = 'rgba(66, 133, 244, 0.2)';\n\t\t\tctx.arc(this.var.circlePosition, bottom + 40, 12, 0, Math.PI * 2);\n\t\t\tctx.fill();\n\t\t}\n\t},\n\tafterUpdate(chart, args, options) {\n\t\tchart.options.scales.x.min = this.var.min;\n\t},\n\tafterEvent(chart, args, options) {\n\t\tconst {\n\t\t\tctx,\n\t\t\tcanvas,\n\t\t\tchartArea: { left, top, right, width },\n\t\t} = chart;\n\n\t\tcanvas.addEventListener('mousedown', e => {\n\t\t\tthis.var.isDragging = true;\n\t\t});\n\t\tcanvas.addEventListener('mouseup', e => {\n\t\t\tthis.var.isDragging = false;\n\t\t});\n\t\tif (args.event.type === 'mousemove' && this.var.isDragging) {\n\t\t\tconst val = args.event.x / (width + left);\n\t\t\tthis.var.min = val * chart.config.data.labels.length - 1;\n\t\t\targs.changed = true;\n\t\t\tthis.var.circlePosition = args.event.x < left ? left : args.event.x > right ? right : args.event.x;\n\t\t\tchart.update();\n\t\t}\n\t},\n};\n\nexport const CreateZoomRangeSlider = (colors: ZoomRangeSliderColors = {}): ZoomRangeSliderPlugin => {\n\tconst {\n\t\tsliderTrackColor = '#e0e0e0',\n\t\tsliderActiveColor = '#4285f4',\n\t\tsliderHandleColor = '#ffffff',\n\t\tsliderHandleBorderColor = '#4285f4',\n\t\tsliderHandleHoverColor = 'rgba(66, 133, 244, 0.2)',\n\t} = colors;\n\n\treturn {\n\t\tid: 'zoomRangeSlider',\n\t\tvar: {\n\t\t\tmin: 0,\n\t\t\tisDragging: false,\n\t\t\tcirclePosition: null,\n\t\t},\n\t\tafterDatasetDraw(chart: Chart, args: any, options: any): void {\n\t\t\tconst {\n\t\t\t\tctx,\n\t\t\t\tchartArea: { left, right, top, bottom, width, height },\n\t\t\t}: { ctx: CanvasRenderingContext2D; chartArea: ChartArea } = chart;\n\n\t\t\tthis.var.circlePosition = this.var.circlePosition || left;\n\n\t\t\tctx.beginPath();\n\t\t\tctx.fillStyle = sliderTrackColor;\n\t\t\tctx.roundRect(left, bottom + 40, width, 6, 3);\n\t\t\tctx.fill();\n\n\t\t\tconst activeWidth: number = (this.var.circlePosition as number) - left;\n\t\t\tif (activeWidth > 0) {\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.fillStyle = sliderActiveColor;\n\t\t\t\tctx.roundRect(left, bottom + 40, activeWidth, 6, 3);\n\t\t\t\tctx.fill();\n\t\t\t}\n\n\t\t\tctx.beginPath();\n\t\t\tctx.fillStyle = sliderHandleColor;\n\t\t\tctx.arc(this.var.circlePosition as number, bottom + 40, 8, 0, Math.PI * 2);\n\t\t\tctx.fill();\n\n\t\t\tctx.beginPath();\n\t\t\tctx.strokeStyle = sliderHandleBorderColor;\n\t\t\tctx.lineWidth = 2;\n\t\t\tctx.arc(this.var.circlePosition as number, bottom + 40, 8, 0, Math.PI * 2);\n\t\t\tctx.stroke();\n\n\t\t\tif (this.var.isDragging) {\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.fillStyle = sliderHandleHoverColor;\n\t\t\t\tctx.arc(this.var.circlePosition as number, bottom + 40, 12, 0, Math.PI * 2);\n\t\t\t\tctx.fill();\n\t\t\t}\n\t\t},\n\t\tafterUpdate(chart: Chart, args: any, options: any): void {\n\t\t\tchart.options.scales!.x!.min = this.var.min;\n\t\t},\n\t\tafterEvent(chart: Chart, args: any, options: any): void {\n\t\t\tconst {\n\t\t\t\tctx,\n\t\t\t\tcanvas,\n\t\t\t\tchartArea: { left, top, right, width },\n\t\t\t}: { ctx: CanvasRenderingContext2D; canvas: HTMLCanvasElement; chartArea: ChartArea } = chart;\n\n\t\t\tcanvas.addEventListener('mousedown', (e: MouseEvent): void => {\n\t\t\t\tthis.var.isDragging = true;\n\t\t\t});\n\t\t\tcanvas.addEventListener('mouseup', (e: MouseEvent): void => {\n\t\t\t\tthis.var.isDragging = false;\n\t\t\t});\n\t\t\tif (args.event.type === 'mousemove' && this.var.isDragging) {\n\t\t\t\tconst val: number = args.event.x / (width + left);\n\t\t\t\tthis.var.min = val * chart.config.data!.labels!.length - 1;\n\t\t\t\targs.changed = true;\n\t\t\t\tthis.var.circlePosition = args.event.x < left ? left : args.event.x > right ? right : args.event.x;\n\t\t\t\tchart.update();\n\t\t\t}\n\t\t},\n\t};\n};\n","import { CommonAxesSacels, CustomBarChartOptions, CustomLineChartOptions } from '../../types/commonTypes';\nimport { stzUtil } from 'stz-util';\nimport { TooltipItem } from 'chart.js';\n// Bar 차트 기본 툴팁 콜백\n// 기존 (src/defaults/options/Bar.ts)\n\nexport const defaultBarTooltipCallback = (context: TooltipItem<'bar'>) => {\n\tconst datasetLabel = context.dataset.label || '';\n\tconst value = context.parsed?.y ?? context.raw ?? 'No Data';\n\n\tconst formattedValue = typeof value === 'number' ? value.toLocaleString() : value;\n\n\treturn `${datasetLabel}: ${formattedValue}`;\n};\n\n// Bar 차트 기본 스케일 설정\nexport const defaultBarScales: CommonAxesSacels = {\n\tx: {\n\t\ttype: 'category',\n\t\tdisplay: true,\n\t\tticks: {\n\t\t\tdisplay: true,\n\t\t\tcolor: '#000',\n\t\t\tautoSkip: true,\n\t\t\talign: 'center',\n\t\t},\n\t\tgrid: {\n\t\t\tdisplay: true,\n\t\t},\n\t},\n\ty: {\n\t\ttype: 'linear',\n\t\tdisplay: true,\n\t\tticks: {\n\t\t\tdisplay: true,\n\t\t\tcolor: '#000',\n\t\t\talign: 'end',\n\t\t\tautoSkip: true,\n\t\t},\n\t\tgrid: {\n\t\t\tdisplay: true,\n\t\t},\n\t},\n};\n\n// Bar 차트 기본 옵션 생성 함수\nexport const createDefaultBarOptions = (\n\tuserOptions: CustomBarChartOptions = {},\n\tdefaultScales: CommonAxesSacels = defaultBarScales\n): CustomBarChartOptions => {\n\tconst userScales = userOptions.scales || {};\n\tconst mergedScales: CommonAxesSacels = {\n\t\t...defaultScales,\n\t\t...userScales,\n\t};\n\n\treturn {\n\t\t_mounted: userOptions._mounted ?? (() => {}),\n\t\tindexAxis: userOptions?.indexAxis ?? 'x',\n\t\tresponsive: true,\n\t\tmaintainAspectRatio: false,\n\t\tplugins: {\n\t\t\ttooltip: {\n\t\t\t\tenabled: userOptions.plugins?.tooltip?.enabled ?? true,\n\t\t\t\tmode: userOptions.plugins?.tooltip?.mode ?? 'index',\n\t\t\t\tintersect: userOptions.plugins?.tooltip?.intersect ?? false,\n\t\t\t\tcallbacks: {\n\t\t\t\t\tlabel: defaultBarTooltipCallback,\n\t\t\t\t\t...(userOptions?.plugins?.tooltip?.callbacks ?? {}),\n\t\t\t\t},\n\t\t\t},\n\t\t\t...(userOptions?.plugins ?? {}),\n\t\t},\n\t\tscales: mergedScales,\n\t\t...stzUtil.omit(userOptions, ['scales', 'plugins', 'indexAxis']),\n\t};\n};\n","import { CommonAxesSacels, CustomLineChartOptions, DeepPartial } from '../../types/commonTypes';\nimport { stzUtil } from 'stz-util';\nimport { TooltipCallbacks, TooltipItem } from 'chart.js';\n\n// Line 차트 기본 툴팁 콜백\nexport const defaultLineTooltipCallback = (context: TooltipItem<'line'>) => {\n\tconst dataset = context.dataset;\n\tconst parsed = context.parsed;\n\tconst raw = context.raw;\n\n\tlet value: any;\n\n\tif (parsed && stzUtil.getType(parsed) === 'object') {\n\t\tvalue = parsed.y ?? parsed.x;\n\t} else if (raw && stzUtil.getType(raw) === 'object' && dataset?.parsing) {\n\t\tconst parsing = dataset.parsing as any;\n\t\tconst yKey = parsing.yAxisKey;\n\t\tvalue = (raw as any)[yKey];\n\t} else {\n\t\tvalue = raw;\n\t}\n\tlet formatted: string;\n\tif (stzUtil.getType(value) === 'number') {\n\t\tformatted = value.toFixed(2);\n\t} else if (value !== null && value !== undefined) {\n\t\tformatted = String(value);\n\t} else {\n\t\tformatted = 'No Data';\n\t}\n\n\tconst label = dataset?.label ?? '값';\n\treturn `${label}: ${formatted}`;\n};\n\n// Line 차트 기본 스케일 설정\nexport const defaultLineScales: CommonAxesSacels = {\n\tx: {\n\t\ttype: 'category',\n\t\tdisplay: true,\n\t\tticks: {\n\t\t\tdisplay: true,\n\t\t\tcolor: '#000',\n\t\t\tautoSkip: true,\n\t\t\talign: 'center',\n\t\t},\n\t\tgrid: {\n\t\t\tdisplay: true,\n\t\t},\n\t},\n\ty: {\n\t\ttype: 'linear',\n\t\tdisplay: true,\n\t\tticks: {\n\t\t\tdisplay: true,\n\t\t\tcolor: '#000',\n\t\t\talign: 'end',\n\t\t\tautoSkip: true,\n\t\t},\n\t\tgrid: {\n\t\t\tdisplay: true,\n\t\t},\n\t},\n};\n\nexport const createDefaultLineOptions = (\n\tuserOptions: CustomLineChartOptions = {},\n\tdefaultScales: CommonAxesSacels = defaultLineScales\n): CustomLineChartOptions => {\n\tconsole.log('createDefaultLineOptions called with userOptions:', userOptions);\n\tconst userScales = userOptions.scales || {};\n\treturn {\n\t\thover: undefined,\n\t\tindexAxis: undefined,\n\t\t_mounted: userOptions._mounted ?? (() => {}),\n\t\tresponsive: userOptions.responsive ?? true,\n\t\tmaintainAspectRatio: userOptions.maintainAspectRatio ?? false,\n\n\t\tinteraction: {\n\t\t\tmode: userOptions.interaction?.mode ?? 'index',\n\t\t\tintersect: userOptions.interaction?.intersect ?? false,\n\t\t},\n\n\t\tplugins: {\n\t\t\t...(userOptions.plugins || {}),\n\t\t\ttooltip: {\n\t\t\t\tenabled: userOptions.plugins?.tooltip?.enabled ?? true,\n\t\t\t\tmode: userOptions.plugins?.tooltip?.mode ?? 'index',\n\t\t\t\tintersect: userOptions.plugins?.tooltip?.intersect ?? false,\n\t\t\t\t...userOptions.plugins?.tooltip,\n\t\t\t\tcallbacks: {\n\t\t\t\t\tlabel: defaultLineTooltipCallback,\n\t\t\t\t\t...userOptions?.plugins?.tooltip?.callbacks,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\telements: {\n\t\t\tpoint: {\n\t\t\t\tradius: userOptions.elements?.point?.radius ?? 0,\n\t\t\t\thoverRadius: userOptions.elements?.point?.hoverRadius ?? 0,\n\t\t\t},\n\t\t\tline: {\n\t\t\t\ttension: userOptions.elements?.line?.tension ?? 0.1,\n\t\t\t},\n\t\t},\n\n\t\tscales: stzUtil.merge(defaultScales, userScales) as CommonAxesSacels,\n\t} as CustomLineChartOptions;\n};\n","import { ChartConfig, ChartWrapper } from './ChartWrapper';\nimport {\n\tCartesianChartBuilder,\n\tCartesianChartType,\n\tChartBuilder,\n\tCommonAxesSacels,\n\tCommonCartesianTitleConfig,\n\tCustomCartesianDataset,\n\tCustomChartOptions,\n\tCustomOptionPlugins,\n\tHtmlLegendOptions,\n} from './types/commonTypes';\nimport { CustomError } from './Error/GlobalErrorHandler';\nimport { ErrorCode } from './Error/ErrorMsg';\nimport { stzUtil } from 'stz-util';\nimport { DefaultDataLabelsOptions, DefaultZoomOptions } from './defaults/options/Cartesian';\nimport { CustomZoomType } from './types/plugins/zoomType';\nimport { CHART_COLOR } from './utils/Logger';\nimport { chartMountPlugin, CreateZoomRangeSlider, customLegend, loadingPlugin, zoomRangeSlider, zoomResetPlugin } from './defaults';\nimport { PartialDataLabels } from './types/plugins/DataLabels';\nimport { ZoomRangeSliderColors } from './types/util/utilType';\n\nexport abstract class CartesianChartWrapper<TType extends CartesianChartType> extends ChartWrapper<TType> implements CartesianChartBuilder<TType> {\n\tprivate _chartId?: string;\n\tprotected constructor(\n\t\treadonly type: TType,\n\t\tlabels: (string | number)[],\n\t\tdatasets: CustomCartesianDataset<TType>[],\n\t\toptions?: CustomChartOptions<TType>,\n\t\tplugins?: Plugin\n\t) {\n\t\tsuper(type, labels, datasets, options as CustomChartOptions<TType>, plugins);\n\t}\n\n\tpublic get chartId(): string {\n\t\tif (!this._chartId) {\n\t\t\tthis._chartId = `${this.type}_${Math.random()}`;\n\t\t}\n\t\treturn this._chartId;\n\t}\n\n\tpublic set chartId(value: string) {\n\t\tthis._chartId = value;\n\t\tif (this.options && typeof this.options === 'object') {\n\t\t\t(this.options as CustomChartOptions)._chartId = value;\n\t\t}\n\t}\n\n\t// 데이터 라벨 설정 메소드\n\tprotected requireLabels(): boolean {\n\t\treturn false;\n\t}\n\t// 데이터셋을 장식하는 메소드\n\tprotected decorateDataset(ds: any, idx: number) {\n\t\tconst c = CHART_COLOR[idx % CHART_COLOR.length];\n\t\tds.backgroundColor ??= c;\n\t\tds.borderColor ??= c;\n\t\tds.yAxisID ??= 'y';\n\t}\n\n\tprotected mustHavePlugins() {\n\t\treturn [chartMountPlugin];\n\t}\n\n\tprotected isLine() {\n\t\treturn this.type === 'line';\n\t}\n\n\tprotected isScatter() {\n\t\treturn this.type === 'scatter';\n\t}\n\n\tprotected isBar() {\n\t\treturn this.type === 'bar';\n\t}\n\n\tprotected normalize(): void {\n\t\t// 필수 플러그인 주입\n\t\tconst must = this.mustHavePlugins();\n\t\tif (!this.plugins) this.plugins = [...must];\n\t\telse if (Array.isArray(this.plugins)) {\n\t\t\tconst ids = new Set(this.plugins.map((p: any) => p.id));\n\t\t\tmust.forEach(p => {\n\t\t\t\tif (!ids.has(p.id)) this.plugins!.push(p);\n\t\t\t});\n\t\t} else this.plugins = [...must];\n\n\t\t// 라벨 검증 + 데이터셋 기본값\n\t\tif (this.requireLabels() && (!this.labels || this.labels.length === 0)) {\n\t\t\tthrow new CustomError(ErrorCode.LABELS_REQUIRED);\n\t\t}\n\t}\n\n\tprotected configAop(config: any) {\n\t\tconst handler = {\n\t\t\tget: (target: any, prop: string, receiver: any) => {\n\t\t\t\tif (prop === 'data') {\n\t\t\t\t\tconst data = target.data;\n\t\t\t\t\tif (this.requireLabels() && (!data?.labels || data.labels.length === 0)) {\n\t\t\t\t\t\tthrow new CustomError(ErrorCode.LABELS_REQUIRED);\n\t\t\t\t\t}\n\t\t\t\t\tif (data && Array.isArray(data.datasets) && data.datasets.length > 0) {\n\t\t\t\t\t\tdata.datasets = data.datasets.map((ds: any, idx: number) => {\n\t\t\t\t\t\t\tif (!ds || stzUtil.getType(ds) !== 'object') return ds;\n\t\t\t\t\t\t\tthis.decorateDataset(ds, idx);\n\t\t\t\t\t\t\treturn ds;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (prop === 'plugins') {\n\t\t\t\t\tconst must = this.mustHavePlugins();\n\t\t\t\t\tif (!target.plugins) target.plugins = [...must];\n\t\t\t\t\telse if (target.options._loading) target.plugins.push(loadingPlugin);\n\t\t\t\t\telse if (stzUtil.getType(target.plugins) === 'Array') {\n\t\t\t\t\t\tconst ids = new Set(target.plugins.map((p: any) => p.id));\n\t\t\t\t\t\tmust.forEach(p => {\n\t\t\t\t\t\t\tif (!ids.has(p.id)) target.plugins.push(p);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else target.plugins = [...must];\n\t\t\t\t}\n\t\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t\t},\n\t\t};\n\t\treturn new Proxy(config, handler);\n\t}\n\n\tpublic makeConfig(id = '') {\n\t\tthis.normalize();\n\t\tif (id) this.chartId = id;\n\t\tconst resolvedId = this.chartId;\n\n\t\tconst config = {\n\t\t\t_chartId: resolvedId,\n\t\t\ttype: this.type,\n\t\t\tdata: { labels: this.labels, datasets: this.datasets },\n\t\t\toptions: {\n\t\t\t\t...this.options,\n\t\t\t\t_chartId: id || `${this.type}_${Math.random()}`,\n\t\t\t},\n\t\t\tplugins: this.plugins,\n\t\t};\n\n\t\tconst proxied = this.configAop(config);\n\n\t\tvoid proxied.data;\n\t\tvoid proxied.plugins;\n\n\t\treturn {\n\t\t\t_chartId: proxied._chartId,\n\t\t\ttype: proxied.type,\n\t\t\tdata: proxied.data,\n\t\t\toptions: proxied.options,\n\t\t\tplugins: proxied.plugins,\n\t\t};\n\t}\n\n\t//카테시안 차트 타입인지 확인하는 메소드\n\t/**\n\t * Cartesian chart type을 체크 합니다.\n\t * @private\n\t * *\n\t * @remarks cartesina 차트의 타입인지 확인합니다\n\t * @example\n\t * @since 1.0.0\n\t * @category Chart\n\t * @defaultValue\n\t *\n\t */\n\tprivate isCartesianChartType(): this is ChartWrapper<CartesianChartType> {\n\t\treturn ['line', 'bar', 'scatter', 'bubble'].includes(this.type);\n\t}\n\n\t// 스케일 설정 메소드\n\t/**\n\t * 카테시안 차트의 스케일을 설정합니다.\n\t * @param scales\n\t * *\n\t * @remarks 카테시안 차트의 스케일을 설정합니다. 이 메소드는 차트의 축을 정의하는데 사용됩니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tpublic setScales(scales: CommonAxesSacels): this {\n\t\tif (this.options && typeof this.options === 'object') {\n\t\t\t(this.options as CustomChartOptions<TType>).scales = scales;\n\t\t}\n\t\treturn this;\n\t}\n\n\t// 축 제목 설정 메소드\n\t/**\n\t * 카테시안 차트의 축 제목을 설정합니다.\n\t * @param axis\n\t * @param titleConfig\n\t * *\n\t * @remarks 원하는 축의 제목을 설정합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tpublic setAxisTitle(axis: 'x' | 'y', titleConfig: CommonCartesianTitleConfig): this {\n\t\tif (this.options && typeof this.options === 'object') {\n\t\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\t\t\tif (!customOptions.scales) {\n\t\t\t\tcustomOptions.scales = {};\n\t\t\t}\n\t\t\tif (!customOptions.scales[axis]) {\n\t\t\t\tcustomOptions.scales[axis] = {};\n\t\t\t}\n\t\t\tif (customOptions.scales[axis]) {\n\t\t\t\tcustomOptions.scales[axis]!.title = titleConfig;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t// 그리드 옵션 설정 메소드\n\t/**\n\t * 카테시안 차트의 그리드 옵션을 설정합니다.\n\t * @param axis\n\t * @param gridOptions\n\t * *\n\t * @remarks 차트 뒷 배경의 그리드(선) 옵션을 설정합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tpublic setGridOptions(axis: 'x' | 'y', gridOptions: { display?: boolean; color?: string; lineWidth?: number }): this {\n\t\tif (this.options && typeof this.options === 'object') {\n\t\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\t\t\tif (!customOptions.scales) {\n\t\t\t\tcustomOptions.scales = {};\n\t\t\t}\n\t\t\tif (!customOptions.scales[axis]) {\n\t\t\t\tcustomOptions.scales[axis] = {};\n\t\t\t}\n\t\t\tif (customOptions.scales[axis]) {\n\t\t\t\tcustomOptions.scales[axis]!.grid = {\n\t\t\t\t\t...customOptions.scales[axis]!.grid,\n\t\t\t\t\t...gridOptions,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\t/**\n\t * 줌 기능을 추가합니다.\n\t * @param defaultZoom\n\t * @param zoomOption\n\t * *\n\t * @remarks 차트의 줌 기능을 추가합니다. 해당 기능은 플러그인 설치가 필요합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Plugins\n\t * @defaultValue defaultZoom = false\n\t *\n\t */\n\tpublic addZoom(defaultZoom: boolean = false, zoomOption?: object): this {\n\t\tif (stzUtil.isEmpty(this.options)) return this;\n\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\n\t\tif (stzUtil.isEmpty(customOptions.plugins)) {\n\t\t\tcustomOptions.plugins = {} as CustomOptionPlugins<TType>;\n\t\t}\n\n\t\tconst zoomConfig: CustomZoomType<TType> = defaultZoom ? stzUtil.cloneDeep(DefaultZoomOptions) : stzUtil.cloneDeep(zoomOption);\n\n\t\tcustomOptions.plugins!.zoom = stzUtil.merge(customOptions.plugins!.zoom || {}, zoomConfig);\n\n\t\tif (!this.plugins) {\n\t\t\tthis.plugins = [zoomResetPlugin];\n\t\t} else if (Array.isArray(this.plugins)) {\n\t\t\tconst exists = this.plugins.some((p: any) => p && p.id === zoomResetPlugin.id);\n\t\t\tif (!exists) this.plugins.push(zoomResetPlugin);\n\t\t} else {\n\t\t\tthis.plugins = [zoomResetPlugin];\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * 데이터 라벨 플러그인을 추가합니다.\n\t * @param defultDataLabels\n\t * @param dataLabelsOptions\n\t * @Description 차트에 데이터 라벨을 추가합니다. 기본 옵션을 사용하거나 사용자 정의 옵션을 적용할 수 있습니다.\n\t * @Category Plugins\n\t * @since 1.0.0\n\t * @defaultValue defultDataLabels = false\n\t */\n\tpublic addDataLabels(defultDataLabels: boolean = false, dataLabelsOptions: PartialDataLabels): this {\n\t\tif (stzUtil.isEmpty(this.options)) return this;\n\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\n\t\tif (stzUtil.isEmpty(customOptions.plugins)) {\n\t\t\tcustomOptions.plugins = {} as CustomOptionPlugins<TType>;\n\t\t}\n\n\t\tconst dataLabelsConfig: PartialDataLabels = defultDataLabels\n\t\t\t? stzUtil.cloneDeep(DefaultDataLabelsOptions)\n\t\t\t: stzUtil.cloneDeep(dataLabelsOptions);\n\t\tcustomOptions.plugins!.datalabels = dataLabelsConfig;\n\t\treturn this;\n\t}\n\n\t/**\n\t * 데이터셋에 y축을 설정합니다.\n\t * @param datasetIndex\n\t * @param axisId\n\t * *\n\t * @remarks 각 데이터셋의 축을 설정합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue axisId = 'y'\n\t *\n\t */\n\tpublic setYAxisForDataset(datasetIndex: number, axisId: string = 'y'): this {\n\t\tif (!this.datasets || !this.datasets[datasetIndex]) return this;\n\n\t\tif (this.isCartesianChartType()) {\n\t\t\t(this.datasets[datasetIndex] as any).yAxisID = axisId;\n\n\t\t\tif (axisId === 'y1') {\n\t\t\t\tthis.ensureY1AxisExists();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t// y1 스케일이 없으면 기본 구조로 추가\n\t/**\n\t * y1 축을 보장합니다.\n\t * @private\n\t * *\n\t * @remarks y1 축이 없을 경우 기본 구조를 추가합니다. 이 메소드는 y1 축을 사용하는 차트에서 필요합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tprivate ensureY1AxisExists(): void {\n\t\tconst options = this.options;\n\t\tif (typeof options !== 'object') return;\n\t\tif (!options.scales) options.scales = {};\n\n\t\tif (!('y1' in options.scales)) {\n\t\t\t(options.scales as CommonAxesSacels)['y1'] = {\n\t\t\t\ttype: 'linear',\n\t\t\t\tdisplay: true,\n\t\t\t\tposition: 'right',\n\t\t\t\tgrid: {\n\t\t\t\t\tdrawOnChartArea: false,\n\t\t\t\t},\n\t\t\t\tticks: {\n\t\t\t\t\tcolor: '#000',\n\t\t\t\t\talign: 'start',\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\t// 축 범위 설정 메소드\n\t/**\n\t * 카테시안 차트의 축 범위를 설정합니다.\n\t * @param axis\n\t * @param min\n\t * @param max\n\t *\n\t * *\n\t * @remarks 해당 차트의 스케일을 min, max 를 입력 받은 값으로 고정합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tpublic setAxisRange(axis: 'x' | 'y', min?: number, max?: number): this {\n\t\tif (this.options && typeof this.options === 'object') {\n\t\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\t\t\tif (!customOptions.scales) {\n\t\t\t\tcustomOptions.scales = {};\n\t\t\t}\n\t\t\tif (!customOptions.scales[axis]) {\n\t\t\t\tcustomOptions.scales[axis] = {};\n\t\t\t}\n\t\t\tif (customOptions.scales[axis]) {\n\t\t\t\tif (min !== undefined) {\n\t\t\t\t\tcustomOptions.scales[axis]!.min = min;\n\t\t\t\t}\n\t\t\t\tif (max !== undefined) {\n\t\t\t\t\tcustomOptions.scales[axis]!.max = max;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * 데이터셋의 yAxisID를 설정합니다.\n\t * @param datasetIndex\n\t * @param axisID\n\t * *\n\t * @remarks 각 데이터셋의 축 아이디를 변경합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tpublic setYAxisID(datasetIndex: number, axisID: string): this {\n\t\tconst Y_AXIS_SUPPORTED_TYPES = ['bar', 'line', 'scatter', 'bubble'];\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\tif (Y_AXIS_SUPPORTED_TYPES.includes(this.type)) {\n\t\t\t\t(this.datasets[datasetIndex] as any).yAxisID = axisID;\n\t\t\t} else {\n\t\t\t\tthrow new CustomError(ErrorCode.NOT_SUPPORTED_OPTION, `${this.type} support yAxisId option`);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * 축의 위치를 설정합니다.\n\t * @param axis\n\t * @param position\n\t * *\n\t * @remarks 해당하는 축의 위치를 변경합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tpublic setAxisPosition(axis: string, position: 'left' | 'right'): this {\n\t\tif (this.options && this.options.scales && this.options.scales[axis]) {\n\t\t\tconst scale = this.options.scales[axis];\n\n\t\t\tif ('position' in scale) {\n\t\t\t\t(scale as { position: 'left' | 'right' }).position = position;\n\t\t\t} else {\n\t\t\t\tthrow new CustomError(ErrorCode.NOT_SUPPORTED_OPTION, `${this.options.scales} not support scales position `);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * 축에 이미지를 추가합니다.\n\t * @param {string} axis\n\t * @Deprecated\n\t */\n\tpublic setAddImg(axis: string): this {\n\t\tif (!this.options) {\n\t\t\tthis.options = {} as CustomChartOptions<TType>;\n\t\t}\n\n\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\n\t\tif (!customOptions.scales) {\n\t\t\tcustomOptions.scales = {};\n\t\t}\n\n\t\tif (customOptions.scales[axis]) {\n\t\t\tconsole.warn(`Axis \"${axis}\" already exists`);\n\t\t\treturn this;\n\t\t}\n\n\t\tif (!this.datasets || this.datasets.length === 0) {\n\t\t\tthrow new CustomError(ErrorCode.DATASET_REQUIRED);\n\t\t}\n\n\t\tconst customDatasets = this.datasets as unknown as CustomCartesianDataset<TType>[];\n\n\t\tfor (let i = 0; i < customDatasets.length; i++) {\n\t\t\tconst dataset = customDatasets[i];\n\n\t\t\tif (!dataset) {\n\t\t\t\tthrow new CustomError(ErrorCode.EMPTY_REQUIRED_PROPERTY, `Dataset at index ${i} is null or undefined`);\n\t\t\t}\n\n\t\t\tif (!dataset.image && (!dataset.images || dataset.images.length === 0)) {\n\t\t\t\tthrow new CustomError(ErrorCode.IMAGE_PROPERTY_MISSING, `Dataset \"${dataset.label || `#${i}`}\" has no image property`);\n\t\t\t}\n\t\t}\n\n\t\tconst isXAxis = axis.startsWith('x');\n\n\t\tif (isXAxis) {\n\t\t\tconst xImagePlugin = {\n\t\t\t\t//...xScalesImage,\n\t\t\t\tid: `${axis}ScalesImage-${this._chartId}`,\n\t\t\t};\n\t\t\tthis.setPlugin(xImagePlugin);\n\t\t} else {\n\t\t\tconst yImagePlugin = {\n\t\t\t\t//...yScalesImage,\n\t\t\t\tid: `${axis}ScalesImage-${this._chartId}`,\n\t\t\t};\n\t\t\tthis.setPlugin(yImagePlugin);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * 범위 슬라이더를 추가합니다.\n\t * @param options - 슬라이더 커스터마이징 옵션\n\t * @Deprecated\n\t */\n\tpublic addRangeSlider(colors?: ZoomRangeSliderColors): this {\n\t\tconst rangeSliderPlugin = CreateZoomRangeSlider(colors);\n\n\t\tthis.setPlugin(rangeSliderPlugin);\n\t\treturn this;\n\t}\n\n\tpublic setPadding(padding): this {\n\t\tif (!this.options) {\n\t\t\tthis.options = {} as CustomChartOptions<TType>;\n\t\t}\n\n\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\n\t\tif (!customOptions.layout) {\n\t\t\tcustomOptions.layout = {};\n\t\t}\n\n\t\tcustomOptions.layout.padding = padding;\n\t\treturn this;\n\t}\n\n\tpublic setBackgroundAlpha(alpha: number): this {\n\t\tif (alpha < 0 || alpha > 1) {\n\t\t\tthrow new CustomError(ErrorCode.UNKNOWN_ERROR, 'Alpha value must be between 0.0 and 1.0');\n\t\t}\n\n\t\tif (!this.datasets || this.datasets.length === 0) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.datasets.forEach(dataset => {\n\t\t\tif (dataset) {\n\t\t\t\tif (!dataset.backgroundColor && dataset.borderColor) {\n\t\t\t\t\tdataset.backgroundColor = dataset.borderColor;\n\t\t\t\t}\n\n\t\t\t\tif (dataset.backgroundColor) {\n\t\t\t\t\tif (typeof dataset.backgroundColor === 'string') {\n\t\t\t\t\t\tdataset.backgroundColor = this.addAlphaToColor(dataset.backgroundColor, alpha);\n\t\t\t\t\t} else if (Array.isArray(dataset.backgroundColor)) {\n\t\t\t\t\t\tdataset.backgroundColor = dataset.backgroundColor.map(color =>\n\t\t\t\t\t\t\ttypeof color === 'string' ? this.addAlphaToColor(color, alpha) : color\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * 색상에 알파 값을 추가합니다.\n\t * @param color\n\t * @param alpha\n\t * @private\n\t */\n\tprivate addAlphaToColor(color: string, alpha: number): string {\n\t\tif (color.startsWith('#')) {\n\t\t\tconst hex = color.slice(1);\n\t\t\tlet r, g, b;\n\n\t\t\tif (hex.length === 3) {\n\t\t\t\tr = parseInt(hex[0] + hex[0], 16);\n\t\t\t\tg = parseInt(hex[1] + hex[1], 16);\n\t\t\t\tb = parseInt(hex[2] + hex[2], 16);\n\t\t\t} else if (hex.length === 6) {\n\t\t\t\tr = parseInt(hex.slice(0, 2), 16);\n\t\t\t\tg = parseInt(hex.slice(2, 4), 16);\n\t\t\t\tb = parseInt(hex.slice(4, 6), 16);\n\t\t\t} else {\n\t\t\t\treturn color; // 잘못된 hex 형식\n\t\t\t}\n\n\t\t\treturn `rgba(${r}, ${g}, ${b}, ${alpha})`;\n\t\t}\n\n\t\t// rgb 색상인 경우 (rgb(255, 255, 255))\n\t\tconst rgbMatch = color.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n\t\tif (rgbMatch) {\n\t\t\tconst [, r, g, b] = rgbMatch;\n\t\t\treturn `rgba(${r}, ${g}, ${b}, ${alpha})`;\n\t\t}\n\n\t\t// rgba 색상인 경우 (rgba(255, 255, 255, 0.5))\n\t\tconst rgbaMatch = color.match(/rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([0-9.]+)\\)/);\n\t\tif (rgbaMatch) {\n\t\t\tconst [, r, g, b] = rgbaMatch;\n\t\t\treturn `rgba(${r}, ${g}, ${b}, ${alpha})`;\n\t\t}\n\n\t\t// 색상 이름이나 다른 형식인 경우 그대로 반환\n\t\treturn color;\n\t}\n\n\t/**\n\t *\n\t * @param {string | false} xAxisKey\n\t * @param {string | false} yAxisKey\n\t * @description\n\t * @Category options\n\t * @Since 1.0.0\n\t */\n\tpublic setParsingKey(xAxisKey: string | false, yAxisKey: string | false): this {\n\t\tif (this.options && stzUtil.getType(this.options) === 'Object') {\n\t\t\tconst opts = this.options as unknown as {\n\t\t\t\tparsing?: { xAxisKey?: string; yAxisKey?: string } | false;\n\t\t\t};\n\n\t\t\topts.parsing =\n\t\t\t\txAxisKey !== false || yAxisKey !== false\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...(xAxisKey !== false && { xAxisKey }),\n\t\t\t\t\t\t\t...(yAxisKey !== false && { yAxisKey }),\n\t\t\t\t\t\t}\n\t\t\t\t\t: false;\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic setDatasetParsing(datasetIndex: number, xAxisKey: string | false, yAxisKey: string | false): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\tconst parsing: { [key: string]: string } = {};\n\t\t\tif (xAxisKey !== false) parsing['xAxisKey'] = xAxisKey;\n\t\t\tif (yAxisKey !== false) parsing['yAxisKey'] = yAxisKey;\n\n\t\t\t(this.datasets[datasetIndex] as any).parsing = parsing;\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic setAllDatasetsParsing(xAxisKey: string | false, yAxisKey: string | false): this {\n\t\tif (this.datasets) {\n\t\t\tconst parsing: { [key: string]: string } = {};\n\t\t\tif (xAxisKey !== false) parsing['xAxisKey'] = xAxisKey;\n\t\t\tif (yAxisKey !== false) parsing['yAxisKey'] = yAxisKey;\n\n\t\t\tthis.datasets.forEach(dataset => {\n\t\t\t\t(dataset as any).parsing = parsing;\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic customLegend(obj: HtmlLegendOptions): this {\n\t\tif (!stzUtil.isEmpty(this.options) && stzUtil.getType(this.options) === 'Object') {\n\t\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\t\t\tif (!customOptions.plugins) {\n\t\t\t\tcustomOptions.plugins = {} as CustomOptionPlugins<TType>;\n\t\t\t}\n\t\t\tcustomOptions.plugins!.htmlLegend = obj;\n\t\t\tthis.setPlugin(customLegend);\n\t\t\tconsole.log(this.options);\n\t\t} else {\n\t\t\tthrow new CustomError(ErrorCode.UNKNOWN_ERROR, 'Options is empty');\n\t\t}\n\t\treturn this;\n\t}\n}\n","import { ChartTypeRegistry } from 'chart.js';\n\nexport type AllChartTypes = keyof ChartTypeRegistry;\n\nexport enum ChartTypes {\n\tBAR = 'bar',\n\tLINE = 'line',\n\tDOUGHNUT = 'doughnut',\n\tPIE = 'pie',\n\tRADAR = 'radar',\n\tBUBBLE = 'bubble',\n\tSCATTER = 'scatter',\n\tTREE = 'tree',\n}\n","// ChartFactory.ts\nimport { ChartType } from 'chart.js';\nimport type { Constructor } from '../types/commonTypes';\nimport { CustomError } from '../Error/GlobalErrorHandler';\nimport { ErrorCode } from '../Error/ErrorMsg';\n\nclass ChartFactory {\n\tprivate static registry = new Map<string, Constructor<any, any>>();\n\n\tstatic register<TType extends ChartType, TInstance>(type: TType, wrapperClass: Constructor<TType, TInstance>) {\n\t\tthis.registry.set(type, wrapperClass);\n\t}\n\n\tstatic create<TType extends ChartType>(type: TType, ...args: ConstructorParameters<Constructor<TType, any>>) {\n\t\tconst WrapperClass = this.registry.get(type);\n\t\tif (!WrapperClass) throw new CustomError(ErrorCode.NOT_REGISTERED_CHART_TYPE);\n\t\treturn new WrapperClass(...args);\n\t}\n\n\tstatic has(type: ChartType): boolean {\n\t\treturn this.registry.has(type);\n\t}\n\n\tstatic clear() {\n\t\tthis.registry.clear();\n\t}\n}\n\nexport { ChartFactory };","import { BarElement, Chart, ChartDataset, ChartOptions, PluginOptionsByType, PointElement } from 'chart.js';\nimport type { Plugin } from 'chart.js';\nimport { CartesianChartWrapper } from './CartesianChartWrapper';\nimport { CartesianDataset, CommonAxesSacels, Constructor, CustomBarChartOptions, CustomChartOptions, BarChartBuilder } from './types/commonTypes';\nimport { defaultBarScales, createDefaultBarOptions, loadingPlugin, blinkPlugin, chartMountPlugin, barScaleImgPlugin } from './defaults';\nimport { ChartTypes } from './types/chart/ChartTypes';\nimport { CustomError } from './Error/GlobalErrorHandler';\nimport { ErrorCode } from './Error/ErrorMsg';\nimport { CHART_COLOR } from './utils/Logger';\nimport { ChartFactory } from './registry/ChartFactory';\nimport { stzUtil } from 'stz-util';\nexport class BarChartWrapper extends CartesianChartWrapper<'bar'> implements BarChartBuilder {\n\tconstructor(\n\t\ttype: ChartTypes.BAR,\n\t\tlabels: (string | number)[],\n\t\tdatasets: CartesianDataset<ChartTypes.BAR>[],\n\t\toptions?: CustomBarChartOptions,\n\t\tplugins?\n\t) {\n\t\tconst mergedScales: CommonAxesSacels = {\n\t\t\t...defaultBarScales,\n\t\t\t...(options?.scales ?? {}),\n\t\t};\n\n\t\tconst defaultOptions = createDefaultBarOptions(options, mergedScales);\n\n\t\tsuper(type, labels, datasets, defaultOptions, plugins);\n\t\tChartFactory.register(ChartTypes.BAR, BarChartWrapper as Constructor<ChartTypes.BAR, BarChartWrapper>);\n\t}\n\n\tprotected override requireLabels() {\n\t\treturn false;\n\t}\n\n\tpublic override makeConfig(id?: string) {\n\t\treturn super.makeConfig(id);\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} thickness\n\t * @description 데이터셋의 Bar Thickness를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setBarThickness(datasetIndex: number, thickness: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).barThickness = thickness;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} thickness\n\t * @description 모든 데이터셋의 Bar Thickness를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllBarThickness(thickness: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setBarThickness(index, thickness);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t// Max Bar Thickness 설정\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} maxThickness\n\t * @description 데이터셋의 Max Bar Thickness를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setMaxBarThickness(datasetIndex: number, maxThickness: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).maxBarThickness = maxThickness;\n\t\t}\n\t\treturn this;\n\t}\n\n\t// 모든 데이터셋의 Max Bar Thickness 설정\n\t/**\n\t *\n\t * @param {number} maxThickness\n\t * @description 모든 데이터셋의 Max Bar Thickness를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllMaxBarThickness(maxThickness: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setMaxBarThickness(index, maxThickness);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t// Bar Percentage 설정 (바 사이의 간격)\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} percentage\n\t * @description 데이터셋의 Bar Percentage를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setBarPercentage(datasetIndex: number, percentage: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).barPercentage = percentage;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} percentage\n\t * @description 모든 데이터셋의 Bar Percentage를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllBarPercentage(percentage: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setBarPercentage(index, percentage);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t// Category Percentage 설정 (카테고리 간격)\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} percentage\n\t * @description 데이터셋의 Category Percentage를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setCategoryPercentage(datasetIndex: number, percentage: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).categoryPercentage = percentage;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} percentage\n\t * @description 모든 데이터셋의 Category Percentage를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllCategoryPercentage(percentage: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setCategoryPercentage(index, percentage);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} borderWidth\n\t * @description 데이터셋의 Border Width 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setBorderWidth(datasetIndex: number, borderWidth: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\tthis.datasets[datasetIndex].borderWidth = borderWidth;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} borderWidth\n\t * @description 모든 데이터셋의 Border Width 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllBorderWidth(borderWidth: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach(dataset => {\n\t\t\t\tdataset.borderWidth = borderWidth;\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} borderRadius\n\t * @description 데이터셋의 Border Radius 를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setBorderRadius(datasetIndex: number, borderRadius: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).borderRadius = borderRadius;\n\t\t}\n\t\treturn this;\n\t}\n\n\t// 모든 데이터셋의 Border Radius 설정\n\t/**\n\t *\n\t * @param {number} borderRadius\n\t * @description 모든 데이터셋의 Border Radius 를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllBorderRadius(borderRadius: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setBorderRadius(index, borderRadius);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {boolean} isStacked\n\t * @description 모든 축에 대해 Stacked 옵션을 설정합니다.\n\t * @Since 1.0.0\n\t * @category scales\n\t */\n\tpublic setStacked(isStacked: boolean): this {\n\t\tconst scales = this.options?.scales;\n\t\tif (!scales) return this;\n\n\t\tObject.entries(scales).forEach(([axis, axisOptions]) => {\n\t\t\tif (axisOptions && typeof axisOptions === 'object') {\n\t\t\t\t(axisOptions as any).stacked = isStacked;\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {string} axis\n\t * @description 축에 이미지를 설정합니다. 축이 이미 존재하는 경우 경고 메시지를 출력합니다.\n\t * @Since 1.0.0\n\t * @category plugins\n\t * @Returns {this}\n\t */\n\tpublic setBarImg(axis: string): this {\n\t\tif (stzUtil.isEmpty(this.datasets)) return this;\n\t\tif (!this.options) {\n\t\t\tthis.options = {} as CustomChartOptions<'bar'>;\n\t\t}\n\n\t\tconst customOptions = this.options as CustomChartOptions<'bar'>;\n\n\t\tif (!customOptions.scales) {\n\t\t\tcustomOptions.scales = {};\n\t\t}\n\n\t\tif (stzUtil.isEmpty(customOptions.scales[axis])) {\n\t\t\treturn this;\n\t\t}\n\t\tthis.plugins?.push(barScaleImgPlugin);\n\t\treturn this;\n\t}\n}\n","import { CartesianChartWrapper } from './CartesianChartWrapper';\nimport { CartesianDataset, CommonAxesSacels, Constructor, CustomChartOptions, CustomLineChartOptions, LineChartBuilder } from './types/commonTypes';\nimport { defaultLineScales, createDefaultLineOptions, loadingPlugin, chartMountPlugin } from './defaults';\nimport { ChartWrapper } from './ChartWrapper';\nimport { CustomError } from './Error/GlobalErrorHandler';\nimport { ErrorCode } from './Error/ErrorMsg';\nimport { merge } from 'chart.js/helpers';\nimport { CHART_COLOR } from './utils/Logger';\nimport { ChartTypes } from './types/chart/ChartTypes';\nimport { ChartFactory } from './registry/ChartFactory';\n\nexport class LineChartWrapper extends CartesianChartWrapper<'line'> implements LineChartBuilder {\n\tconstructor(type: ChartTypes.LINE, labels: (string | number)[], datasets: CartesianDataset<'line'>[], options?: CustomChartOptions<'line'>) {\n\t\tconst mergedScales: CommonAxesSacels = {\n\t\t\t...defaultLineScales,\n\t\t\t...(options?.scales ?? {}),\n\t\t};\n\n\t\tconst defaultOptions = createDefaultLineOptions(options, mergedScales);\n\t\tsuper(type, labels, datasets, defaultOptions);\n\n\t\tChartFactory.register(type, LineChartWrapper as Constructor<ChartTypes.LINE, LineChartWrapper>);\n\t}\n\n\tprotected override requireLabels() {\n\t\treturn this.options?.scales?.x?.type === 'category';\n\t}\n\n\tpublic override makeConfig(id?: string) {\n\t\treturn super.makeConfig(id);\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {boolean} enable\n\t * @param {string} backgroundColor\n\t * @description 데이터셋의 Fill 설정을 합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setFill(datasetIndex: number, enable: boolean, backgroundColor?: string): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\tif (enable) {\n\t\t\t\t(this.datasets[datasetIndex] as any).fill = 'origin';\n\t\t\t\tif (backgroundColor) {\n\t\t\t\t\tthis.datasets[datasetIndex].backgroundColor = backgroundColor;\n\t\t\t\t} else if (!this.datasets[datasetIndex].backgroundColor) {\n\t\t\t\t\tthis.datasets[datasetIndex].backgroundColor = 'rgba(75, 192, 192, 0.2)';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t(this.datasets[datasetIndex] as any).fill = false;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {boolean} enable\n\t * @param {string} backgroundColor\n\t * @description 모든 데이터셋의 Fill 설정을 합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t *\n\t */\n\tpublic setAllFill(enable: boolean, backgroundColor?: string): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setFill(index, enable, backgroundColor);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} tension\n\t * @description 라인 차트의 곡률을 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setTension(datasetIndex: number, tension: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).tension = tension;\n\t\t}\n\t\treturn this;\n\t}\n\n\t// 모든 데이터셋의 Tension 설정\n\t/**\n\t *\n\t * @param {number} tension\n\t * @description 모든 데이터셋의 곡률을 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t *\n\t */\n\tpublic setAllTension(tension: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setTension(index, tension);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} borderWidth\n\t * @description 데이터셋의 Border Width를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setBorderWidth(datasetIndex: number, borderWidth: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\tthis.datasets[datasetIndex].borderWidth = borderWidth;\n\t\t}\n\t\treturn this;\n\t}\n\n\t// 모든 데이터셋의 Border Width 설정\n\tpublic setAllBorderWidth(borderWidth: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, idx) => {\n\t\t\t\tthis.setBorderWidth(idx, borderWidth);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} radius\n\t * @description 라인 차트의 Point Radius를 설정합니다.\n\t */\n\tpublic setPointRadius(datasetIndex: number, radius: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).pointRadius = radius;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} radius\n\t * @description 모든 라인 차트의 Point Radius를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllPointRadius(radius: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setPointRadius(index, radius);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} hoverRadius\n\t * @description 데이터셋의 Point Hover Radius를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setPointHoverRadius(datasetIndex: number, hoverRadius: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).pointHoverRadius = hoverRadius;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} hoverRadius\n\t * @description 모든 데이터셋의 Point Hover Radius를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t *\n\t */\n\tpublic setAllPointHoverRadius(hoverRadius: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setPointHoverRadius(index, hoverRadius);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n}\n","import { LoggerConfig } from './utils/Logger';\nimport { ChartWrapper as _ChartWrapper } from './ChartWrapper';\nimport { CartesianChartWrapper as _CartesianChartWrapper } from './CartesianChartWrapper';\nimport { BarChartWrapper as _BarChartWrapper } from './BarChartWrapper';\nimport { LineChartWrapper as _LineChartWrapper } from './LineChartWrapper';\nimport * as Types from './types/commonTypes';\nimport * as LocalDefaults from './defaults';\nexport { ChartWrapper } from './ChartWrapper';\nexport { CartesianChartWrapper } from './CartesianChartWrapper';\nexport { BarChartWrapper } from './BarChartWrapper';\nexport { LineChartWrapper } from './LineChartWrapper';\nexport { ChartFactory } from './registry/ChartFactory';\nexport { ChartInstance } from './registry/ChartInstance';\nexport * from './types/commonTypes';\nexport * from './defaults';\n\nexport const ChartToolBox = {\n\tsetErrorLog(enabled: boolean) {\n\t\tLoggerConfig.errorLogging = enabled;\n\t},\n\tsetDebugLog(enabled: boolean) {\n\t\tLoggerConfig.debugLogging = enabled;\n\t},\n};\n\nexport const T$ = {\n\tcreate: _ChartWrapper.create.bind(_ChartWrapper),\n\tregister: _ChartWrapper.register.bind(_ChartWrapper),\n\tChartWrapper: _ChartWrapper,\n\tCartesianChartWrapper: _CartesianChartWrapper,\n\tBarChartWrapper: _BarChartWrapper,\n\tLineChartWrapper: _LineChartWrapper,\n\tdefaultTypes: Types,\n\tdefaultsOptions: LocalDefaults,\n\ttoolBox: ChartToolBox,\n} as const;\n\nexport default T$;\n"],"names":["_ChartWrapper","_CartesianChartWrapper","_BarChartWrapper","_LineChartWrapper"],"mappings":"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","x_google_ignoreList":[4]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/utils/Logger.ts","../src/Error/ErrorMsg.ts","../src/Error/GlobalErrorHandler.ts","../src/ChartWrapper.ts","../node_modules/stz-util/dist/stzUtil.min.js","../src/defaults/options/Cartesian.ts","../src/registry/ChartInstance.ts","../src/defaults/plugins/index.ts","../src/defaults/options/Bar.ts","../src/defaults/options/Line.ts","../src/CartesianChartWrapper.ts","../src/types/chart/ChartTypes.ts","../src/registry/ChartFactory.ts","../src/BarChartWrapper.ts","../src/LineChartWrapper.ts","../src/index.ts"],"sourcesContent":["/**\n * ═════════════════════════════════════════════════════════════\n * 📄 FILE : Logger.ts\n * 📁 PACKAGE : chartjs-toolbox-\n * 👤 AUTHOR : stz\n * 🕒 CREATED : 25. 7. 18.\n * ═════════════════════════════════════════════════════════════\n * ═════════════════════════════════════════════════════════════\n * 📝 DESCRIPTION\n * -\n * ═════════════════════════════════════════════════════════════\n * ═════════════════════════════════════════════════════════════\n * 🔄 CHANGE LOG\n * - DATE : 2025/07/18 | Author : stz | 최초 생성\n * ═════════════════════════════════════════════════════════════\n */\n\n/** ■■■■■■■■■■■■■■■■ GLOBAL Logging contr ■■■■■■■■■■■■■■■■*/\nexport const LoggerConfig = {\n\terrorLogging: true,\n\tdebugLogging: true,\n};\n/** ■■■■■■■■■■■■■■■■ Apple System Default Color ■■■■■■■■■■■■■■■■*/\nexport const CHART_COLOR = [\n\t'#FF3B30', // System Red\n\t'#FF9500', // System Orange\n\t'#FFCC00', // System Yellow\n\t'#34C759', // System Green\n\t'#00C7BE', // System Mint\n\t'#30B0C7', // System Teal\n\t'#32ADE6', // System Cyan\n\t'#007AFF', // System Blue\n\t'#5856D6', // System Indigo\n\t'#AF52DE', // System Purple\n];\n\nexport const CHART_COLOR_DARK = [\n\t'#FF4245', // System Red\n\t'#FF9230', // System Orange\n\t'#FFD600', // System Yellow\n\t'#30D158', // System Green\n\t'#00DAC3', // System Mint\n\t'#00D2E0', // System Cyan\n\t'#3CD3FE', // System Blue Light\n\t'#0091FF', // System Blue\n\t'#6B5DFF', // System Indigo\n\t'#DB34F2', // System Purple\n\t'#FF375F', // System Pink\n\t'#B7855C', // System Brown\n];\n\nconst originalConsoleLog = console.log;\n\nconsole.log = (...args: any[]) => {\n\tif (LoggerConfig.debugLogging) {\n\t\toriginalConsoleLog.apply(console, args);\n\t}\n};","export enum ErrorMsg {\n\t// 공통 에러\n\tCHART_TYPE_REQUIRED = 'Chart type is required.', // 차트 타입이 필요합니다.\n\tINVALID_CHART_TYPE = 'Invalid chart type. Supported types are bar, line, scatter, bubble, etc.', // 지원하지 않는 차트 타입입니다.\n\tDATASET_REQUIRED = 'Datasets cannot be empty.', // 데이터셋이 비어있을 수 없습니다.\n\tNOT_SUPPORTED_OPTION = 'It does not support that option.',\n\tLABELS_REQUIRED = 'Labels cannot be empty.', // 라벨이 비어있을 수 없습니다.\n\tOPTIONS_REQUIRED = 'Options cannot be null or undefined.', // 옵션이 null 또는 undefined일 수 없습니다.\n\tNOT_REGISTERED_CHART_TYPE = 'This chart type is not registered. Please call ChartWrapper.register().', // 해당 차트 타입이 등록되지 않았습니다. ChartWrapper.register()를 호출하세요.\n\n\t// 데이터 관련 에러\n\tEMPTY_REQUIRED_PROPERTY = 'A required property is missing in the dataset or options.', // 필수 속성이 누락되었습니다. 데이터셋이나 옵션을 확인하세요.\n\tINVALID_DATA_STRUCTURE = 'Invalid data structure. Please check the dataset or labels format.', // 데이터 구조가 잘못되었습니다. 데이터셋과 라벨의 형식을 확인하세요.\n\tAXIS_KEY_REQUIRED = 'xAxisKey or yAxisKey is required for parsing.', // xAxisKey 또는 yAxisKey가 필요합니다.\n\tDATA_LENGTH_MISMATCH = 'Labels length does not match datasets data length.', // 라벨과 데이터셋의 데이터 길이가 일치하지 않습니다.\n\tIMAGE_PROPERTY_MISSING = 'Image property is missing in the dataset. Please provide a valid image URL.', // 데이터셋에 이미지 속성이 없습니다. 유효한 이미지 URL을 제공하세요.\n\n\t// 플러그인 관련 에러\n\tPLUGIN_NOT_FOUND = 'Plugin not found in options.plugins.', // 옵션의 plugins에 해당 플러그인이 없습니다.\n\tPLUGIN_ALREADY_EXISTS = 'Plugin already exists. Use setPlugin() to override.', // 해당 플러그인이 이미 존재합니다. setPlugin()을 사용하세요.\n\tPLUGIN_REMOVE_FAILED = 'Cannot remove a non-existing plugin.', // 존재하지 않는 플러그인을 삭제할 수 없습니다.\n\n\t// Chart 인스턴스 관련 에러\n\tCHART_INSTANCE_NOT_FOUND = 'Chart instance is not initialized.', // 차트 인스턴스가 초기화되지 않았습니다.\n\tCHART_ALREADY_INITIALIZED = 'Chart instance is already initialized.', // 차트 인스턴스가 이미 초기화되어 있습니다.\n\n\t// BarChart 전용 에러\n\tINVALID_BAR_THICKNESS = 'Bar thickness must be a positive number.', // 바 두께는 0보다 큰 숫자여야 합니다.\n\tINVALID_BAR_PERCENTAGE = 'Bar percentage must be between 0 and 1.', // 바 퍼센트는 0과 1 사이의 값이어야 합니다.\n\tINVALID_CATEGORY_PERCENTAGE = 'Category percentage must be between 0 and 1.', // 카테고리 퍼센트는 0과 1 사이의 값이어야 합니다.\n\n\t// 기타\n\tUNKNOWN_ERROR = 'An unknown error has occurred.', // 알 수 없는 에러가 발생했습니다.\n\n\t//스케일 관련 에러\n\tINVALID_AXIS_KEY = 'Invalid axis key provided. Please check the axis configuration.', // 잘못된 축 키가 제공되었습니다. 축 구성을 확인하세요.\n}\n\nexport enum ErrorCode {\n\t// 공통 (1200)\n\tCHART_TYPE_REQUIRED = 1200,\n\tINVALID_CHART_TYPE = 1201,\n\tOPTIONS_REQUIRED = 1202,\n\tNOT_REGISTERED_CHART_TYPE = 1203,\n\n\t// 데이터 관련 (2200)\n\tDATASET_REQUIRED = 2200,\n\tLABELS_REQUIRED = 2211,\n\tEMPTY_REQUIRED_PROPERTY = 2212,\n\tINVALID_DATA_STRUCTURE = 2213,\n\tAXIS_KEY_REQUIRED = 2214,\n\tDATA_LENGTH_MISMATCH = 2215,\n\tNOT_SUPPORTED_OPTION = 2216,\n\tIMAGE_PROPERTY_MISSING = 2217,\n\n\t// 플러그인 관련 (3220)\n\tPLUGIN_NOT_FOUND = 3220,\n\tPLUGIN_ALREADY_EXISTS = 3221,\n\tPLUGIN_REMOVE_FAILED = 3222,\n\n\t// 인스턴스 관련 (4230)\n\tCHART_INSTANCE_NOT_FOUND = 4230,\n\tCHART_ALREADY_INITIALIZED = 4231,\n\n\t// 기타 (5240)\n\tINVALID_BAR_THICKNESS = 5240,\n\tINVALID_BAR_PERCENTAGE = 5241,\n\tINVALID_CATEGORY_PERCENTAGE = 5242,\n\tUNKNOWN_ERROR = 5249,\n\n\t// 스케일 관련 (6250)\n\tINVALID_AXIS_KEY = 6250,\n}\n\nexport const ErrorMessage: Record<ErrorCode, string> = {\n\t// 공통\n\t[ErrorCode.CHART_TYPE_REQUIRED]: ErrorMsg.CHART_TYPE_REQUIRED,\n\t[ErrorCode.INVALID_CHART_TYPE]: ErrorMsg.INVALID_CHART_TYPE,\n\t[ErrorCode.OPTIONS_REQUIRED]: ErrorMsg.OPTIONS_REQUIRED,\n\t[ErrorCode.NOT_REGISTERED_CHART_TYPE]: ErrorMsg.NOT_REGISTERED_CHART_TYPE,\n\n\t// 데이터 관련\n\t[ErrorCode.DATASET_REQUIRED]: ErrorMsg.DATASET_REQUIRED,\n\t[ErrorCode.LABELS_REQUIRED]: ErrorMsg.LABELS_REQUIRED,\n\t[ErrorCode.EMPTY_REQUIRED_PROPERTY]: ErrorMsg.EMPTY_REQUIRED_PROPERTY,\n\t[ErrorCode.INVALID_DATA_STRUCTURE]: ErrorMsg.INVALID_DATA_STRUCTURE,\n\t[ErrorCode.AXIS_KEY_REQUIRED]: ErrorMsg.AXIS_KEY_REQUIRED,\n\t[ErrorCode.DATA_LENGTH_MISMATCH]: ErrorMsg.DATA_LENGTH_MISMATCH,\n\t[ErrorCode.NOT_SUPPORTED_OPTION]: ErrorMsg.NOT_SUPPORTED_OPTION,\n\n\t// 플러그인 관련\n\t[ErrorCode.PLUGIN_NOT_FOUND]: ErrorMsg.PLUGIN_NOT_FOUND,\n\t[ErrorCode.PLUGIN_ALREADY_EXISTS]: ErrorMsg.PLUGIN_ALREADY_EXISTS,\n\t[ErrorCode.PLUGIN_REMOVE_FAILED]: ErrorMsg.PLUGIN_REMOVE_FAILED,\n\n\t// 인스턴스 관련\n\t[ErrorCode.CHART_INSTANCE_NOT_FOUND]: ErrorMsg.CHART_INSTANCE_NOT_FOUND,\n\t[ErrorCode.CHART_ALREADY_INITIALIZED]: ErrorMsg.CHART_ALREADY_INITIALIZED,\n\n\t// 기타\n\t[ErrorCode.INVALID_BAR_THICKNESS]: ErrorMsg.INVALID_BAR_THICKNESS,\n\t[ErrorCode.INVALID_BAR_PERCENTAGE]: ErrorMsg.INVALID_BAR_PERCENTAGE,\n\t[ErrorCode.INVALID_CATEGORY_PERCENTAGE]: ErrorMsg.INVALID_CATEGORY_PERCENTAGE,\n\t[ErrorCode.UNKNOWN_ERROR]: ErrorMsg.UNKNOWN_ERROR,\n\t[ErrorCode.IMAGE_PROPERTY_MISSING]: ErrorMsg.IMAGE_PROPERTY_MISSING,\n\n\t// 스케일 관련\n\t[ErrorCode.INVALID_AXIS_KEY]: ErrorMsg.INVALID_AXIS_KEY,\n};\n","import { ErrorCode, ErrorMessage } from './ErrorMsg';\nimport { LoggerConfig } from '../utils/Logger';\n\nexport class CustomError extends Error {\n\tconstructor(\n\t\tpublic code: ErrorCode,\n\t\tpublic detail?: string\n\t) {\n\t\tconst ErrMsg = detail ? `${ErrorMessage[code]} - ${detail}` : ErrorMessage[code];\n\t\tsuper(ErrMsg);\n\n\t\tthis.name = 'CustomError';\n\n\t\tif (LoggerConfig.errorLogging) {\n\t\t\tconst codeStyle = 'color: green; font-weight: bold;';\n\t\t\tconst messageStyle = 'color: orange;';\n\t\t\tconsole.error(`%c[${code}] %c${ErrMsg}`, codeStyle, messageStyle);\n\t\t}\n\t}\n}\n\nexport class GlobalErrorHandler {\n\tstatic handle(e: unknown) {\n\t\tif (e instanceof CustomError) {\n\t\t\treturn {\n\t\t\t\tstatus: e.code,\n\t\t\t\tmessage: e.message,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tcode: ErrorCode.UNKNOWN_ERROR,\n\t\t\tmessage: ErrorMessage[ErrorCode.UNKNOWN_ERROR],\n\t\t};\n\t}\n}\n","import { Chart, ChartData, ChartDataset, ChartOptions, ChartType, Plugin, PluginOptionsByType } from 'chart.js';\nimport { CartesianChartType, CommonAxesSacels, Constructor, CustomChartOptions } from './types/commonTypes';\nimport { CustomError } from './Error/GlobalErrorHandler';\nimport { ErrorCode } from './Error/ErrorMsg';\nimport { PartialDataLabels } from './types/plugins/DataLabels';\nexport interface ChartConfig {\n\t_chartId: string;\n\ttype: ChartType;\n\tdata: any;\n\toptions: any;\n\tplugins?: any;\n}\ninterface ChartBuilder<TType extends ChartType> {\n\tsetPlugin(plugins: any): this;\n\tremovePlugin(pluginId: string): this;\n\tbuild(id?: string): ChartConfig;\n}\nexport abstract class ChartWrapper<TType extends ChartType> implements ChartBuilder<TType> {\n\tstatic registry = new Map<string, Constructor<any, any>>();\n\n\tconstructor(\n\t\tprotected type: TType,\n\t\tprotected labels: (string | number)[],\n\t\tprotected datasets: ChartDataset<TType, (number | null)[]>[],\n\t\tprotected options: CustomChartOptions<TType>,\n\t\tprotected plugins?: any\n\t) {}\n\t//TODO : factory pattern dynamic method for maintenance sex sex big ass doggy styleQWA?. MN\n\tstatic create<TType extends ChartType>(\n\t\ttype: TType,\n\t\tlabels: (string | number)[],\n\t\tdatasets: ChartDataset<TType, (number | null)[]>[],\n\t\toptions?: CustomChartOptions<TType>,\n\t\tplugins?: any\n\t): ChartBuilder<TType> {\n\t\tconst WrapperClass = this.registry.get(type);\n\t\tif (!WrapperClass) {\n\t\t\tthrow new CustomError(ErrorCode.NOT_REGISTERED_CHART_TYPE, `type=${type}`);\n\t\t}\n\t\treturn new WrapperClass(type, labels, datasets, options, plugins) as ChartBuilder<TType>;\n\t}\n\n\tprotected abstract normalize(): void;\n\tprotected abstract configAop(config: any): any;\n\n\tstatic register<TType extends ChartType, TInstance>(type: TType, wrapperClass: Constructor<TType, TInstance>) {\n\t\tthis.registry.set(type, wrapperClass);\n\t}\n\n\t/**\n\t * 플러그인을 추가합니다.\n\t * @param plugin\n\t * @param replaceIfExists\n\t *\n\t */\n\tpublic setPlugin(plugin: any, replaceIfExists: boolean = true): this {\n\t\tif (!this.plugins) {\n\t\t\tthis.plugins = [];\n\t\t}\n\n\t\tif (plugin.id && replaceIfExists) {\n\t\t\tconst existingIndex = this.plugins.findIndex((p: any) => p.id === plugin.id);\n\t\t\tif (existingIndex !== -1) {\n\t\t\t\tthis.plugins[existingIndex] = plugin;\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\n\t\tthis.plugins.push(plugin);\n\t\treturn this;\n\t}\n\n\t/**\n\t * 차트 설정 객체를 생성합니다.\n\t * @param {string} id\n\t * @returns {ChartConfig}\n\t * @Description 레거시 지원용\n\t */\n\tpublic makeConfig(id?: string): ChartConfig {\n\t\treturn this.build(id);\n\t}\n\n\t/**\n\t * 플러그인을 제거합니다.\n\t * @param pluginId\n\t */\n\tpublic removePlugin(pluginId: string): this {\n\t\tif (!this.plugins || !Array.isArray(this.plugins)) {\n\t\t\treturn this;\n\t\t}\n\n\t\tconst initialLength = this.plugins.length;\n\t\tthis.plugins = this.plugins.filter((p: any) => p.id !== pluginId);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * 플러그인이 존재하는지 확인합니다.\n\t * @param pluginId\n\t */\n\tpublic hasPlugin(pluginId: string): boolean {\n\t\tif (!this.plugins || !Array.isArray(this.plugins)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this.plugins.some((p: any) => p.id === pluginId);\n\t}\n\n\tpublic build(id?: string): ChartConfig {\n\t\tthis.normalize();\n\t\tconst chartId = id || `${this.type}_${Math.random()}`;\n\n\t\tconst config = {\n\t\t\t_chartId: chartId,\n\t\t\ttype: this.type,\n\t\t\tdata: { labels: this.labels, datasets: this.datasets },\n\t\t\toptions: { ...this.options, _chartId: chartId },\n\t\t\tplugins: this.plugins,\n\t\t};\n\n\t\treturn this.configAop(config);\n\t}\n}\n","function a0_0x4af2(_0x4297ef,_0x3c4d84){const _0x5eed3d=a0_0x5eed();return a0_0x4af2=function(_0x4af297,_0x1d0aaf){_0x4af297=_0x4af297-0x195;let _0x2ac4f5=_0x5eed3d[_0x4af297];if(a0_0x4af2['cnrCGs']===undefined){var _0x2f632c=function(_0x4e29ba){const _0x3cc3f0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x19591f='',_0x2d1ac1='';for(let _0x3bddd5=0x0,_0x2b03c7,_0x34d1c4,_0xa8194c=0x0;_0x34d1c4=_0x4e29ba['charAt'](_0xa8194c++);~_0x34d1c4&&(_0x2b03c7=_0x3bddd5%0x4?_0x2b03c7*0x40+_0x34d1c4:_0x34d1c4,_0x3bddd5++%0x4)?_0x19591f+=String['fromCharCode'](0xff&_0x2b03c7>>(-0x2*_0x3bddd5&0x6)):0x0){_0x34d1c4=_0x3cc3f0['indexOf'](_0x34d1c4);}for(let _0x2672da=0x0,_0x5a9dfe=_0x19591f['length'];_0x2672da<_0x5a9dfe;_0x2672da++){_0x2d1ac1+='%'+('00'+_0x19591f['charCodeAt'](_0x2672da)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2d1ac1);};a0_0x4af2['sZUXQc']=_0x2f632c,_0x4297ef=arguments,a0_0x4af2['cnrCGs']=!![];}const _0x4ea7a7=_0x5eed3d[0x0],_0x399fa1=_0x4af297+_0x4ea7a7,_0x1caf89=_0x4297ef[_0x399fa1];return!_0x1caf89?(_0x2ac4f5=a0_0x4af2['sZUXQc'](_0x2ac4f5),_0x4297ef[_0x399fa1]=_0x2ac4f5):_0x2ac4f5=_0x1caf89,_0x2ac4f5;},a0_0x4af2(_0x4297ef,_0x3c4d84);}function a0_0x5eed(){const _0x4c3bf0=['rxPzCwq','BwfW','AuHMCLK','Dg9mB2nHBgvtDhjPBMC','mJy3odKXnLviDvvpyW','DMPiAKO','yxbWzw5Kq2HPBgq','zxjYB3i','Bg9N','rfLQquu','tNvSBa','cGRIOidIOidIOzxIOzxIOzxIOzxIOzxIOzxIOzxIOzxIOzxIOzxIOzxIOzxIOyxIOidIOPdIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOPxIOidIOiak4Qgh4Qgh4Qgh4Qgh4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qkh4Qkh4Qkp4Qko4Qko4Qcg4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4QkO4QkQ4QkQ4QgQ4Qgc4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4QkQ4QkQ4QkQ4QcgcUkHH+kHH+kGGokGGokGGokGQokHQUkHQUkHQUkHJUkHRUkGGokGGokGGokIGokIH+kIH+kIH+kIH+kIH+kIL+kILEkGHokGGokGGokGGokHH+kJH+kIH+kIH+kIH+kIH+kIH+kIH+kIH+kIH+kIL+kILEkILEkILEkIHEkGGokGGokGGokGGokGGokIQUkIQUkIQUkHGWRIOyFIOyFIOydIOidIOidIOkJIOARIOBRIOBJIOBJIOBJIOBhIOO3IOOFIOOFIOOFIOQFIOQpIOipIOidIOQJIOQRIOidIOidIOidIOidIOyFIOyFIOyFIOAFIOzpIOzxIORxIOidIOidIOPZIOPZIOPZIOOZIOidIOidIOidIOidIOidIOQJIOQpIORpIORhIORhIOOuk4Qgo4Qgo4Qgo4Qgh4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4QgJ4QgJ4QgZ4QgX4QgX4Qgb4Qca4QkO4QkQ4Qca4Qca4Qca4Qca4Qgh4Qgh4Qgh4Qgh4Qca4Qca4Qca4Qg44Qg54Qg44Qg44Qca4Qca4Qca4Qca4Qca4QkO4Qk54Qk44Qg44QkC4QkC4QkC4QcgcUkIH+kIH+kIH+kIH+kIJ+kIJUkIH+kIJ+kIJUkIRUkIQUkGGokGGokGGokGGokHH+kHH+kHP+kHGEkGGokGUokHUokGGokGGokGGokGGokHH+kHH+kHH+kHH+kGGokGUokHUokHUokHUokGGokGGokGGokGGokGGokGOokHO+kHO+kHO+kHS+kHUokHSEkHSEkGGokGGaRIOOFIOOFIOidIOidIOidIOkJIOARIOARIOARIOARIOARIOidIOidIOidIOidIO4FIOOFIOQFIOihIOidIORJIORJIOidIOidIOidIOidIOyFIOyFIOyFIOyFIOidIORJIORJIOidIOidIOidIOidIOidIOidIOyFIOyFIOyFIOzFIOzxIOzxIOzxIO5xIOPxIOidIOiak4QkJ4QkJ4QkR4Qkk4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qga4QgD4QgC4QgC4QgC4QgC4Qcm4Qca4QkO4QkQ4Qca4Qca4Qca4Qca4Qgh4Qgh4Qgh4Qgh4Qca4QkW4QkX4Qcb4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qca4Qg44Qg44QgX4QgXcUkGGokGGokIH+kIH+kIH+kIJ+kIJUkIH+kIJ+kGRUkHUEkHUokHSokILEkILEkGTEkHSEkHUEkGKokGGokGQokHQUkHQUkHO+kHQ+kHQUkHQUkHQUkIJUkGHUkGGokIMokINokINokILEkINEkINokILEkINEkINokILEkINEkINokILEkINEkINokINokINokINokGRaRIOidIOidIOidIOidIOyFIOyFIOyFIOyFIOyFIOyFIO4FIOOFIOQFIOQpIOQpIOQVIOylIOidIOidIOidIOidIOidIOQRIOQRIOQRIOQRIOQRIOQRIOQpIOipIOidIOidIOidIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIORJIOzekcG','B21PDa','BKD6u2q','yM9KEq','A0LUs1O','ChjVDg90ExbL','w29IAMvJDcbpyMPLy3rD','Dgv4DenVBNrLBNq','y2HPBgrYzw4','zxzLCNK','AxnpyMPLy3q','oty4nte1B0TWEvD6','y29UC3rYDwn0B3i','t2jQzwn0','CMvKDwnL','C2vQCe0','C2XPy2u','DgfIBgvFzgf0ys5JC3y','AgfZ','uK9JAxq','DujQAwO','DMfSDwvZ','u3rYAw5N','zNjVBq','mJm2odmWngXpufHsva','AxriyNe','zM9YrwfJAa','zLHzqvi','uvHmBgy','Dg9tDhjPBMC','quzxz04','ChvZAa','BgvUz3rO','yLHKBMi','C2v0','C3rYAw5N','z2v0vhLWzq','mtq1mgLMqxbHAW','y3jLyxrLt2jQzwn0vvjm','CMvTB3zLq2HPBgq','qxjYyxK','z2v0','mtu1mZK2nMLIDgXoBW','zg93BMXVywq','y2XPy2S','B1zLwMi','s1jZv2O','odKYmZiYmNzJAMTKCq','mtq1nKfTEhnYzG','Aw5JBhvKzxm','x19WCM90B19F','DNfRze0','nLzhDK1xva','BwvYz2u','mti4n0jmtKrxqG','AgfZt3DUuhjVCgvYDhK','mwfRseXsDG','C3vIC3rYAw5N','y2fSBa','CxvLCNLtzwXLy3rVCKfSBa','twP6DMW','Bhj6DeC','q1PmAvG','DgGSihrK','y2XVBMvezwvW','mJm3odrwELfADhK','AurjAg0'];a0_0x5eed=function(){return _0x4c3bf0;};return a0_0x5eed();}const a0_0xd09b08=a0_0x4af2;(function(_0xaa0e9,_0x539ed9){const _0x351f8d=a0_0x4af2,_0x3c349f=_0xaa0e9();while(!![]){try{const _0x288d21=-parseInt(_0x351f8d(0x1d2))/0x1*(-parseInt(_0x351f8d(0x1c4))/0x2)+-parseInt(_0x351f8d(0x1e1))/0x3+-parseInt(_0x351f8d(0x1b2))/0x4+parseInt(_0x351f8d(0x1a5))/0x5*(-parseInt(_0x351f8d(0x1ce))/0x6)+-parseInt(_0x351f8d(0x1ca))/0x7*(-parseInt(_0x351f8d(0x1db))/0x8)+-parseInt(_0x351f8d(0x1d0))/0x9*(parseInt(_0x351f8d(0x1bf))/0xa)+parseInt(_0x351f8d(0x1c9))/0xb;if(_0x288d21===_0x539ed9)break;else _0x3c349f['push'](_0x3c349f['shift']());}catch(_0x2df080){_0x3c349f['push'](_0x3c349f['shift']());}}}(a0_0x5eed,0x7bccb));export const stzUtil={'dateFormatTs':_0x85e1ea=>{const _0x288fee=a0_0x4af2;if(_0x85e1ea&&_0x85e1ea[_0x288fee(0x1cb)]('T')){let _0x134ad2=_0x85e1ea['split']('T');return _0x134ad2[0x0];}return _0x85e1ea;},'dateFormatDots':_0x32aa25=>{const _0x5e3afc=a0_0x4af2;let _0x193aac=_0x32aa25[_0x5e3afc(0x1d3)](0x0,0x4),_0x2a7e63=_0x32aa25['substring'](0x4,0x6),_0x3ac482=_0x32aa25['substring'](0x6,0x8);return _0x193aac+'.'+_0x2a7e63+'.'+_0x3ac482;},'dateFormatDash':_0x586b61=>{const _0xb1e10f=a0_0x4af2;let _0xcb3bd2=_0x586b61[_0xb1e10f(0x1d3)](0x0,0x4),_0x2ea8be=_0x586b61[_0xb1e10f(0x1d3)](0x4,0x6),_0x5cc03f=_0x586b61[_0xb1e10f(0x1d3)](0x6,0x8);return _0xcb3bd2+'-'+_0x2ea8be+'-'+_0x5cc03f;},'dateFormatSlashes':_0x2ca74b=>{const _0x44fbf9=a0_0x4af2;let _0x44b021=_0x2ca74b[_0x44fbf9(0x1d3)](0x0,0x4),_0x48e045=_0x2ca74b['substring'](0x4,0x6),_0x2af2ea=_0x2ca74b[_0x44fbf9(0x1d3)](0x6,0x8);return _0x44b021+'/'+_0x48e045+'/'+_0x2af2ea;},'arrSumByLength':(_0x5becdf,_0x5e70be)=>{const _0x348eb0=a0_0x4af2,_0x442bfb={'iDIhm':function(_0x5a4d9d,_0x2e9d7a){return _0x5a4d9d<_0x2e9d7a;}};let _0x1b5b88=[];for(let _0x5e7b3c=0x0;_0x442bfb[_0x348eb0(0x1dc)](_0x5e7b3c,_0x5becdf['length']);_0x5e7b3c+=_0x5e70be){const _0x9d212f=_0x5becdf['slice'](_0x5e7b3c,_0x5e7b3c+_0x5e70be),_0x3ec6d9=_0x9d212f[_0x348eb0(0x1a3)](_0x21e5c6=>typeof _0x21e5c6==='string'),_0x35e28d=_0x9d212f[_0x348eb0(0x1a8)]((_0x40fa79,_0x49de3c)=>_0x40fa79+Number(_0x49de3c),0x0);_0x1b5b88[_0x348eb0(0x1b9)](_0x3ec6d9?_0x35e28d[_0x348eb0(0x1e0)]():_0x35e28d);}return _0x1b5b88;},'buildTree':(_0x39cc17,_0x40f58c,_0x420ae5,_0x8ab128=a0_0xd09b08(0x1a2))=>{const _0x38822e=a0_0xd09b08,_0x1e580e=[],_0x234ccc={};return _0x39cc17[_0x38822e(0x1b4)](_0x288ff0=>{const _0x2d0c7d=_0x38822e,_0x430707={..._0x288ff0,[_0x8ab128]:[]};_0x234ccc[_0x288ff0[_0x40f58c]]=_0x430707;if(!_0x288ff0[_0x420ae5])_0x1e580e[_0x2d0c7d(0x1b9)](_0x430707);else{const _0x337c30=_0x234ccc[_0x288ff0[_0x420ae5]];_0x337c30&&_0x337c30[_0x8ab128][_0x2d0c7d(0x1b9)](_0x430707);}}),_0x1e580e;},'downloadTableByCSV':(_0x3faa4d,_0x577d4b=a0_0xd09b08(0x1ab))=>{const _0x596efb=a0_0xd09b08,_0x17dfbc={'vjHjJ':_0x596efb(0x1d9),'uBjij':'Table\\x20element\\x20not\\x20found.','lttCc':function(_0x2a42db,_0x141873){return _0x2a42db+_0x141873;},'QXLlf':'text/csv;charset=utf-8;'};if(!_0x3faa4d){console[_0x596efb(0x196)](_0x17dfbc[_0x596efb(0x1ae)]);return;}const _0x310786=Array[_0x596efb(0x1b1)](_0x3faa4d[_0x596efb(0x1d5)]('tr')),_0x4e06d1=_0x310786[_0x596efb(0x1de)](_0x2f58f2=>{const _0x46e239=_0x596efb,_0x3413c3=Array[_0x46e239(0x1b1)](_0x2f58f2[_0x46e239(0x1d5)](_0x17dfbc[_0x46e239(0x1e2)]));return _0x3413c3['map'](_0x4a314a=>'\\x22'+_0x4a314a[_0x46e239(0x1a1)]+'\\x22')['join'](',');})['join']('\\x0a'),_0x5077d1='\\ufeff',_0x5c0d92=new Blob([_0x17dfbc['lttCc'](_0x5077d1,_0x4e06d1)],{'type':_0x17dfbc[_0x596efb(0x1b6)]}),_0x22d411=URL[_0x596efb(0x1c0)](_0x5c0d92),_0x2817b6=document['createElement']('a');_0x2817b6['href']=_0x22d411,_0x2817b6[_0x596efb(0x1c5)]=_0x577d4b,document[_0x596efb(0x19d)][_0x596efb(0x195)](_0x2817b6),_0x2817b6[_0x596efb(0x1c6)](),document[_0x596efb(0x19d)][_0x596efb(0x1c1)](_0x2817b6),URL['revokeObjectURL'](_0x22d411);},'getType':_0x346b8e=>{const _0x150281=a0_0xd09b08;return Object[_0x150281(0x19f)][_0x150281(0x1b7)][_0x150281(0x1d4)](_0x346b8e)[_0x150281(0x1aa)](0x8,-0x1);},'isObject':_0x3313e8=>{const _0x29558f=a0_0xd09b08,_0x4ecb18={'Mjzvl':function(_0x10e4c2,_0x339ae6){return _0x10e4c2===_0x339ae6;},'DYjAE':_0x29558f(0x1a0)};return _0x4ecb18[_0x29558f(0x1d6)](Object[_0x29558f(0x19f)][_0x29558f(0x1b7)][_0x29558f(0x1d4)](_0x3313e8),_0x4ecb18[_0x29558f(0x198)]);},'omit':(_0x33a8fd,_0x3ec703)=>{const _0x520bfa=a0_0xd09b08,_0x1732ba={'AFWgN':'Null','sejpM':_0x520bfa(0x1a7),'CZLiX':function(_0x42d7f0,_0x6ca0f){return _0x42d7f0!==_0x6ca0f;},'iHfrY':'Array'},_0x1e6eba=stzUtil[_0x520bfa(0x1be)](_0x33a8fd);if(_0x1e6eba===_0x1732ba[_0x520bfa(0x1b8)]||_0x1e6eba!==_0x1732ba[_0x520bfa(0x1a9)]&&_0x1732ba[_0x520bfa(0x1d8)](_0x1e6eba,_0x1732ba[_0x520bfa(0x1df)]))return _0x33a8fd;if(_0x1e6eba===_0x1732ba['iHfrY'])return _0x33a8fd['map'](_0x26e6e7=>stzUtil[_0x520bfa(0x19b)](_0x26e6e7,_0x3ec703));const _0x572ff3={};for(const _0x32f743 in _0x33a8fd){if(_0x3ec703[_0x520bfa(0x1cb)](_0x32f743))continue;const _0x235037=_0x33a8fd[_0x32f743];_0x572ff3[_0x32f743]=stzUtil['omit'](_0x235037,_0x3ec703);}return _0x572ff3;},'pick':(_0x4d5b5a,_0x41324b)=>{const _0x4cdc29=a0_0xd09b08;if(Object[_0x4cdc29(0x19f)][_0x4cdc29(0x1d1)][_0x4cdc29(0x1d4)](_0x4d5b5a,_0x41324b)){const {[_0x41324b]:_0x48b65d,..._0x192d8}=_0x4d5b5a;return _0x192d8;}else throw new Error('Object\\x20does\\x20not\\x20have\\x20PROPERTY');},'makeComboItems':(_0x2bf4dd,_0x10cf0f,_0x5aa188)=>{return _0x2bf4dd['map'](_0x5b9720=>{return{'key':_0x5b9720[_0x10cf0f],'value':_0x5b9720[_0x5aa188],'label':_0x5b9720[_0x10cf0f]};});},'isEmpty':_0xbba018=>{const _0x2d7ca4=a0_0xd09b08,_0x2daf87={'EzYqd':function(_0x12a027,_0x52ab36){return _0x12a027===_0x52ab36;},'nGzSd':function(_0x1c7e3a,_0x40ee63){return _0x1c7e3a===_0x40ee63;},'lrztG':_0x2d7ca4(0x1b0),'dOTDE':function(_0x58d2d1,_0x472f29){return _0x58d2d1===_0x472f29;},'bXdnb':_0x2d7ca4(0x1c2),'oVeZb':function(_0x1b6e6f,_0x4dc17e){return _0x1b6e6f===_0x4dc17e;},'vqkdM':_0x2d7ca4(0x1a7),'mbXkC':function(_0x2a456a,_0x4880e7){return _0x2a456a===_0x4880e7;}},_0x45b94f=stzUtil[_0x2d7ca4(0x1be)](_0xbba018);if(_0x2daf87[_0x2d7ca4(0x1dd)](_0xbba018,null)||_0x2daf87[_0x2d7ca4(0x19c)](_0xbba018,undefined))return!![];if(_0x2daf87[_0x2d7ca4(0x1dd)](_0x45b94f,_0x2daf87[_0x2d7ca4(0x1d7)])&&_0x2daf87['dOTDE'](_0xbba018['trim'](),''))return!![];if(_0x2daf87['dOTDE'](_0x45b94f,_0x2daf87[_0x2d7ca4(0x1bb)])&&_0x2daf87[_0x2d7ca4(0x19c)](_0xbba018[_0x2d7ca4(0x1ba)],0x0))return!![];if(_0x2daf87[_0x2d7ca4(0x1c7)](_0x45b94f,_0x2daf87[_0x2d7ca4(0x1cd)])){if(_0x2daf87['mbXkC'](Object['keys'](_0xbba018)[_0x2d7ca4(0x1ba)],0x0))return!![];const _0x40c3bf=Object[_0x2d7ca4(0x1af)](_0xbba018)['every'](_0x2299b8=>_0x2299b8===null||_0x2299b8===undefined||_0x2299b8==='');if(_0x40c3bf)return!![];}return![];},'cloneDeep':(_0x2f1be6,_0x1d152e=new Map())=>{const _0x222a3d=a0_0xd09b08,_0x43240e={'dHCBz':function(_0xf2259f,_0x4fb9aa){return _0xf2259f===_0x4fb9aa;},'fXYAR':'Object','AOIOq':function(_0x45bc52,_0x19aa0a){return _0x45bc52!==_0x19aa0a;},'kInKZ':'Array'},_0xb53aa8=stzUtil['getType'](_0x2f1be6);if(_0x43240e['dHCBz'](_0xb53aa8,_0x222a3d(0x199))||_0xb53aa8!==_0x43240e[_0x222a3d(0x1b5)]&&_0x43240e['AOIOq'](_0xb53aa8,_0x43240e[_0x222a3d(0x19e)]))return _0x2f1be6;if(_0x1d152e[_0x222a3d(0x1ac)](_0x2f1be6))return _0x1d152e[_0x222a3d(0x1c3)](_0x2f1be6);if(_0x43240e['dHCBz'](_0xb53aa8,_0x43240e['kInKZ'])){const _0x5372fe=[];_0x1d152e[_0x222a3d(0x1bc)](_0x2f1be6,_0x5372fe);for(const _0x27d990 of _0x2f1be6){_0x5372fe[_0x222a3d(0x1b9)](stzUtil[_0x222a3d(0x1da)](_0x27d990,_0x1d152e));}return _0x5372fe;}else{const _0x4e0e15={};for(const _0x576268 in _0x2f1be6){Object[_0x222a3d(0x19f)]['hasOwnProperty'][_0x222a3d(0x1d4)](_0x2f1be6,_0x576268)&&(_0x4e0e15[_0x576268]=stzUtil['cloneDeep'](_0x2f1be6[_0x576268],_0x1d152e));}return _0x4e0e15;}},'merge':(_0x2045d4,_0x4b8739)=>{const _0x40c934=a0_0xd09b08,_0x4e8801={'ROcit':_0x40c934(0x1cc),'itHbq':function(_0x5326b3,_0x3f28f9){return _0x5326b3===_0x3f28f9;},'KRsWj':_0x40c934(0x1bd)},_0x5b3116=new Set([_0x4e8801[_0x40c934(0x1ad)],_0x40c934(0x1a6),'prototype']);if(!stzUtil[_0x40c934(0x1a4)](_0x2045d4)||!stzUtil[_0x40c934(0x1a4)](_0x4b8739))return _0x4b8739;const _0x55f676={..._0x2045d4};for(const _0x35d05e of Reflect['ownKeys'](_0x4b8739)){if(_0x4e8801[_0x40c934(0x1b3)](typeof _0x35d05e,_0x4e8801[_0x40c934(0x1c8)])&&_0x5b3116[_0x40c934(0x1ac)](_0x35d05e))continue;const _0x2dc3ec=Reflect[_0x40c934(0x1c3)](_0x4b8739,_0x35d05e),_0x2e0688=Reflect[_0x40c934(0x1c3)](_0x2045d4,_0x35d05e);if(stzUtil[_0x40c934(0x1a4)](_0x2dc3ec)&&stzUtil[_0x40c934(0x1a4)](_0x2e0688)){const _0x37ae9f=stzUtil[_0x40c934(0x1cf)](_0x2e0688,_0x2dc3ec);Reflect[_0x40c934(0x1bc)](_0x55f676,_0x35d05e,_0x37ae9f);}else Reflect[_0x40c934(0x1bc)](_0x55f676,_0x35d05e,_0x2dc3ec);}return _0x55f676;}};export const stz=()=>{const _0x16aaed=a0_0xd09b08;console[_0x16aaed(0x197)](_0x16aaed(0x19a));};","/**\n * ═════════════════════════════════════════════════════════════\n * 📄 FILE : Cartesian.ts\n * 📁 PACKAGE : chartjs-toolbox-\n * 👤 AUTHOR : stz\n * 🕒 CREATED : 25. 7. 24.\n * ═════════════════════════════════════════════════════════════\n * ═════════════════════════════════════════════════════════════\n * 📝 DESCRIPTION\n * -\n * ═════════════════════════════════════════════════════════════\n * ═════════════════════════════════════════════════════════════\n * 🔄 CHANGE LOG\n * - DATE : 2025/07/24 | Author : stz | 최초 생성\n * ═════════════════════════════════════════════════════════════\n */\nexport const DefaultZoomOptions = {\n\tzoom: {\n\t\tdrag: {\n\t\t\tenabled: true,\n\t\t\tborderColor: 'rgba(0, 123, 255, 1)',\n\t\t\tborderWidth: 1,\n\t\t\tbackgroundColor: 'rgba(0, 123, 255, 0.1)',\n\t\t},\n\t\tmode: 'xy',\n\t\toverScaleMode: null,\n\t},\n\tpan: {\n\t\tenabled: false,\n\t},\n};\n\nconst defaultDeferredOptions = {\n\tdeferred: {\n\t\txOffset: 300,\n\t\tyOffset: 300,\n\t\tdelay: 500,\n\t\tanimateScale: false,\n\t\tanimateRotate: false,\n\t},\n};\nexport const DefaultDataLabelsOptions = {\n\tformatter: function (value, context) {\n\t\treturn value;\n\t},\n\tdisplay: function (context) {\n\t\treturn true;\n\t},\n\tcolor: function (context) {\n\t\treturn '#000';\n\t},\n\tfont: {\n\t\tsize: 13,\n\t\tweight: 'bold',\n\t},\n\tanchor: 'end',\n\talign: 'center',\n};\n","// registry/ChartInstanceRegistry.ts\nimport { Chart } from 'chart.js';\nimport { stzUtil } from 'stz-util';\nimport { CustomError } from '../Error/GlobalErrorHandler';\nimport { ErrorCode } from '../Error/ErrorMsg';\nimport { Mode } from '../types/commonTypes';\n\nclass ChartInstance {\n\tprivate static map = new Map<string, Chart>();\n\n\tstatic register(id: string, instance: Chart) {\n\t\tthis.map.set(id, instance);\n\t}\n\tstatic get(id: string): Chart | undefined {\n\t\treturn this.map.get(id);\n\t}\n\tstatic getChart(id: string): Chart {\n\t\tconst chart = this.get(id);\n\t\tif (stzUtil.isEmpty(chart)) {\n\t\t\tthrow new CustomError(ErrorCode.UNKNOWN_ERROR);\n\t\t}\n\t\treturn chart;\n\t}\n\tstatic unregister(id: string): boolean {\n\t\treturn this.map.delete(id);\n\t}\n\tstatic has(id: string): boolean {\n\t\treturn this.map.has(id);\n\t}\n\tstatic clear(): void {\n\t\tthis.map.clear();\n\t}\n\tstatic update(id: string, instance: Chart, mode: Mode = 'default'): void {\n\t\tconst chart = this.get(id);\n\t\tif (stzUtil.isEmpty(chart)) {\n\t\t\tthis.register(id, instance);\n\t\t\tinstance.update(mode);\n\t\t} else {\n\t\t\tthrow new CustomError(ErrorCode.UNKNOWN_ERROR);\n\t\t}\n\t}\n\tstatic resize(id: string): void {\n\t\tconst chart = this.get(id);\n\t\tif (stzUtil.isEmpty(chart)) {\n\t\t\tthrow new CustomError(ErrorCode.UNKNOWN_ERROR);\n\t\t}\n\t\tchart.resize();\n\t}\n}\n\nexport { ChartInstance };\n","// 기본 Chart.js 플러그인들\n\nimport { BarElement, Chart, ChartArea, ChartConfiguration, ChartType, Plugin, PointElement } from 'chart.js';\nimport { ChartInstance } from '../../registry/ChartInstance';\nimport { stzUtil } from 'stz-util';\nimport { SettingOptions } from '../../types/commonTypes';\nimport { ZoomRangeSliderColors, ZoomRangeSliderPlugin } from '../../types/util/utilType';\n\nexport const noDataPlugin = {\n\tid: 'noDataPlugin',\n\tbeforeUpdate: function (chart: any) {\n\t\t// 필요시 구현\n\t},\n\tafterDraw: function (chart: any) {\n\t\tconst type = chart.config.type;\n\t\tlet hasNoData = false;\n\n\t\tif (type === 'treemap') {\n\t\t\tconst treeData = chart.data.datasets?.[0]?.tree;\n\t\t\thasNoData = !Array.isArray(treeData) || treeData.length === 0;\n\t\t} else {\n\t\t\thasNoData = !chart.data.datasets || !Array.isArray(chart.data.datasets[0]?.data) || chart.data.datasets[0].data.length === 0;\n\t\t}\n\n\t\tif (hasNoData) {\n\t\t\tconst ctx = chart.ctx;\n\t\t\tconst width = chart.width;\n\t\t\tconst height = chart.height;\n\t\t\tctx.save();\n\t\t\tctx.textAlign = 'center';\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.font = '30px Arial';\n\t\t\tctx.fillText('No data available', width / 2, height / 2);\n\t\t\tctx.restore();\n\t\t}\n\t},\n\tbeforeDestroy(chart: any) {\n\t\tconsole.log(`차트 사라짐 , ${chart.canvas.id}`);\n\t\tchart._initVisible = false;\n\t\tif (chart._initVisibleComp) {\n\t\t\tdelete chart._initVisibleComp;\n\t\t}\n\t},\n};\n\n// 줌 리셋 플러그인\nexport const zoomResetPlugin = {\n\tid: 'zoomResetButton',\n\tafterDraw(chart: any, args: any, options: any) {\n\t\tconst canvas = chart.canvas;\n\t\tconst parent = canvas.parentNode;\n\n\t\tif (chart._zoomResetBtnDom) return;\n\n\t\tif (getComputedStyle(parent).position === 'static') {\n\t\t\tparent.style.position = 'relative';\n\t\t}\n\n\t\tconst button = document.createElement('button');\n\t\tbutton.innerText = 'Zoom Reset';\n\t\tbutton.className = 'chart-zoom-reset-btn';\n\t\tObject.assign(button.style, {\n\t\t\tposition: 'absolute',\n\t\t\tzIndex: '10',\n\t\t\tpadding: '4px 8px',\n\t\t\tfontSize: '12px',\n\t\t\tbackground: 'rgba(0,0,0,0.7)',\n\t\t\tcolor: '#fff',\n\t\t\tborder: '1px solid #fff',\n\t\t\tborderRadius: '4px',\n\t\t\tcursor: 'pointer',\n\t\t\tdisplay: 'none',\n\t\t});\n\n\t\tbutton.onclick = () => {\n\t\t\tif (chart.resetZoom) {\n\t\t\t\tchart.resetZoom();\n\t\t\t}\n\t\t\tbutton.style.display = 'none';\n\t\t};\n\n\t\tparent.appendChild(button);\n\t\tchart._zoomResetBtnDom = button;\n\t},\n\tafterEvent(chart: any, args: any) {\n\t\tconst button = chart._zoomResetBtnDom;\n\t\tif (!button) return;\n\n\t\tconst isZoomed = chart.isZoomedOrPanned?.();\n\t\tif (!isZoomed) {\n\t\t\tbutton.style.display = 'none';\n\t\t\treturn;\n\t\t}\n\n\t\tconst { chartArea } = chart;\n\t\tconst x = chartArea.right - 90;\n\t\tconst y = chartArea.top + 10;\n\n\t\tbutton.style.left = `${x}px`;\n\t\tbutton.style.top = `${y}px`;\n\t\tbutton.style.display = 'block';\n\t},\n};\n\n// 도넛 차트 중앙 텍스트 플러그인\nexport const doughnutCenterTextPlugin = {\n\tid: 'doughnutCenterTextPlugin',\n\tafterDraw(chart: any) {\n\t\tconst parent = chart.canvas.parentNode;\n\t\tif (chart.config.type !== 'doughnut') return;\n\t\tchart.canvas.style.zIndex = '1';\n\t\tchart.canvas.style.position = 'relative';\n\n\t\tconst totalData = chart.config.data.datasets[0].data.reduce((a: number, b: number) => (Number(a) || 0) + (Number(b) || 0), 0);\n\t\tif (totalData === 0) {\n\t\t\tconst textDiv = parent.querySelector('.chart-center-text');\n\t\t\tif (textDiv) textDiv.remove();\n\t\t\treturn;\n\t\t}\n\n\t\tif (getComputedStyle(parent).position === 'static') {\n\t\t\tparent.style.position = 'relative';\n\t\t}\n\n\t\tlet textDiv = parent.querySelector('.chart-center-text');\n\n\t\tif (!textDiv) {\n\t\t\ttextDiv = document.createElement('div');\n\t\t\ttextDiv.className = 'chart-center-text d-flex flex-column justify-content-center align-items-center';\n\t\t\tObject.assign(textDiv.style, {\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: '50%',\n\t\t\t\tleft: '50%',\n\t\t\t\ttransform: 'translate(-50%, -50%)',\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tcolor: '#fff',\n\t\t\t\tfontFamily: 'sans-serif',\n\t\t\t\ttextAlign: 'center',\n\t\t\t});\n\t\t\tparent.appendChild(textDiv);\n\t\t}\n\n\t\t// 중앙 HTML 설정 (외부에서 설정 가능)\n\t\tconst centerHtml = (chart as any)._centerHtml || '';\n\t\t(textDiv as HTMLElement).innerHTML = centerHtml;\n\t},\n};\n\n// 로딩 애니메이션 플러그인\nexport const loadingPlugin = {\n\tid: 'loadingPlugin',\n\tbeforeInit(chart: any, args: any, options: any) {\n\t\tchart._startLoading = true;\n\t},\n\tbeforeDraw(chart: any) {\n\t\t// 로딩 상태가 설정되어 있으면 애니메이션 시작\n\t\tif (chart._startLoading) {\n\t\t\tchart._startLoading = false;\n\t\t\tthis.startLoadingAnimation(chart);\n\t\t}\n\t},\n\tstartLoadingAnimation(chart: any) {\n\t\tconst canvas = chart.canvas;\n\t\tconst ctx = chart.ctx;\n\t\tconst dpr = window.devicePixelRatio || 1;\n\n\t\tif (!canvas) return;\n\n\t\tconst rect = canvas.getBoundingClientRect();\n\t\tconst width = rect.width;\n\t\tconst height = rect.height;\n\n\t\tcanvas.width = width * dpr;\n\t\tcanvas.height = height * dpr;\n\n\t\tctx.setTransform(1, 0, 0, 1, 0, 0);\n\t\tctx.scale(dpr, dpr);\n\n\t\tlet percentage = 0;\n\t\tconst centerX = width / 2;\n\t\tconst centerY = height / 2;\n\t\tconst radius = Math.min(width, height) * 0.25;\n\n\t\tconst animate = () => {\n\t\t\tif (chart._cancelLoading) {\n\t\t\t\tchart._cancelLoading = false;\n\t\t\t\tchart.update();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.clearRect(0, 0, width, height);\n\n\t\t\t// 반투명 배경\n\t\t\tctx.fillStyle = 'rgba(255,255,255,0.85)';\n\t\t\tctx.fillRect(0, 0, width, height);\n\n\t\t\t// 퍼센티지 텍스트\n\t\t\tctx.fillStyle = '#007bff';\n\t\t\tctx.font = `bold ${Math.floor(height * 0.1)}px Arial`;\n\t\t\tctx.textAlign = 'center';\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.fillText(`${percentage} %`, centerX, centerY);\n\n\t\t\t// 원형 프로그레스 바\n\t\t\tctx.beginPath();\n\t\t\tctx.lineWidth = 6;\n\t\t\tctx.strokeStyle = '#007bff';\n\t\t\tconst start = -Math.PI / 2;\n\t\t\tconst end = start + (percentage / 100) * 2 * Math.PI;\n\t\t\tctx.arc(centerX, centerY, radius, start, end);\n\t\t\tctx.stroke();\n\n\t\t\tif (percentage >= 100 && chart) {\n\t\t\t\t// 로딩 완료 후 차트 업데이트\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tchart.update();\n\t\t\t\t}, 500);\n\t\t\t} else {\n\t\t\t\tpercentage++;\n\t\t\t\trequestAnimationFrame(animate);\n\t\t\t}\n\t\t};\n\n\t\trequestAnimationFrame(animate);\n\t},\n};\n\nexport const customLegend = {\n\tid: 'htmlLegend',\n\t_Default: {\n\t\tcontainerID: '',\n\t\tclassName: {\n\t\t\tlist: 'list-container',\n\t\t\titem: 'legend-item',\n\t\t\tbox: 'legend-box',\n\t\t\ttext: 'text-container',\n\t\t},\n\t\tstyles: {\n\t\t\ttext: { textDecoration: 'none', color: '#111827' },\n\t\t\ttextHidden: { textDecoration: 'line-through', color: '#9ca3af' },\n\t\t\tbox: (item, type) => ({\n\t\t\t\twidth: '12px',\n\t\t\t\theight: '12px',\n\t\t\t\tborderRadius: type === 'line' ? '50%' : '4px',\n\t\t\t\tborderWidth: '2px',\n\t\t\t\tbackgroundColor: item.fillStyle,\n\t\t\t\tborderColor: item.strokeStyle,\n\t\t\t}),\n\t\t},\n\t\tgetItemText: item => item.text,\n\t\tgetDatasetType: (chart: Chart, item: Record<string, any>): ChartType | undefined => {\n\t\t\tconst ds = chart.config.data?.datasets?.[item.datasetIndex] as { type?: ChartType } | undefined;\n\t\t\tif (ds?.type) return ds.type;\n\t\t\tconst config = chart.config as ChartConfiguration<ChartType>;\n\t\t\treturn 'type' in config ? config.type : undefined;\n\t\t},\n\t},\n\t_fnc: (chart: Chart, id: string, options: { className: { list: string } }) => {\n\t\tif (!id) return;\n\t\tconst legendContainer = document.getElementById(id) as HTMLElement;\n\n\t\tlet listContainer = legendContainer?.querySelector('div');\n\n\t\tif (!listContainer) {\n\t\t\tlistContainer = document.createElement('div') as HTMLDivElement;\n\t\t\tlistContainer.className = options.className.list;\n\t\t\tlegendContainer.appendChild(listContainer);\n\t\t}\n\n\t\treturn listContainer;\n\t},\n\tafterUpdate(chart, args, options) {\n\t\tif (!options || !options.containerID) return;\n\n\t\tconst plainOptions = JSON.parse(JSON.stringify(options));\n\t\tconst merge = stzUtil.merge(this._Default, plainOptions) as {\n\t\t\tcontainerID: string;\n\t\t\tclassName: { list: string; item: string; box: string; text: string };\n\t\t};\n\n\t\tconst ul = this._fnc(chart, merge.containerID, merge);\n\t\tif (!ul) return console.error('none customLegend');\n\t\twhile (ul?.firstChild) {\n\t\t\tul.firstChild.remove();\n\t\t}\n\t\tconst items = chart.options.plugins.legend.labels.generateLabels(chart);\n\n\t\titems.forEach(item => {\n\t\t\tconst li = document.createElement('div') as HTMLDivElement;\n\t\t\tli.className = merge.className.item;\n\t\t\tconst boxSpan = document.createElement('div') as HTMLDivElement;\n\t\t\tboxSpan.className = merge.className.box;\n\t\t\tboxSpan.style.backgroundColor = item.fillStyle;\n\t\t\tboxSpan.style.borderColor = item.strokeStyle;\n\t\t\tconst textContainer = document.createElement('div') as HTMLDivElement;\n\t\t\ttextContainer.className = merge.className.text;\n\t\t\ttextContainer.style.color = item.fontColor;\n\n\t\t\tli.addEventListener('click', () => {\n\t\t\t\tconst { type } = chart.config;\n\t\t\t\tif (type === 'pie' || type === 'doughnut') {\n\t\t\t\t\tchart.toggleDataVisibility(item.index);\n\t\t\t\t} else {\n\t\t\t\t\tchart.setDatasetVisibility(item.datasetIndex, !chart.isDatasetVisible(item.datasetIndex));\n\t\t\t\t}\n\t\t\t\tchart.update();\n\t\t\t});\n\t\t\tconst text = document.createTextNode(item.text);\n\t\t\ttextContainer.appendChild(text);\n\t\t\ttextContainer.style.textDecoration = item.hidden ? 'line-through' : '';\n\t\t\tli.appendChild(boxSpan);\n\t\t\tli.appendChild(textContainer);\n\t\t\tul?.appendChild(li);\n\t\t});\n\t},\n};\n\nexport const chartMountPlugin = {\n\tid: 'chartMountedPlugin',\n\tafterDraw(chart, args, options) {\n\t\tif (!chart._mountedCalled) {\n\t\t\tchart._mountedCalled = true;\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tif (typeof chart.config.options._mounted === 'function') {\n\t\t\t\t\tchart.config.options._mounted(chart);\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst chartId = (chart.options as Record<string, any>)._chartId;\n\t\t\tif (chartId) {\n\t\t\t\tconsole.log('차트 인스턴스 바인드 성공');\n\t\t\t\tChartInstance.register(chartId, chart);\n\t\t\t}\n\t\t}\n\t},\n};\nexport const blinkPlugin: Plugin = {\n\tid: `highlightThresholdPlugin`,\n\tafterDatasetDraw(chart, args) {\n\t\tconst datasetMeta = chart.getDatasetMeta(args.index);\n\t\tconst dataset = chart.data.datasets[args.index];\n\t\tconst ctx = chart.ctx;\n\n\t\tdatasetMeta.data.forEach((element, i) => {\n\t\t\tconst value = dataset.data[i];\n\t\t\tconst threshold = 1120;\n\n\t\t\tconst numericValue = 0;\n\t\t\tif (numericValue >= threshold) {\n\t\t\t\tctx.save();\n\t\t\t\tctx.strokeStyle = `rgba(255, 0, 0, ${Math.abs(Math.sin(Date.now() / 300))})`;\n\t\t\t\tctx.lineWidth = 2;\n\n\t\t\t\tif (dataset.type === 'line') {\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.arc(element.x, element.y, 6, 0, 2 * Math.PI);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t} else {\n\t\t\t\t\t//ctx.strokeRect(element.x - element.width / 2, element.y, element.width, element.height);\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t}\n\t\t});\n\t},\n};\n\n// 도넛 차트 중앙 HTML 생성 함수\nexport const makeCenterHtml = (percent: number, ok?: number, warn?: number, ng?: number) => {\n\tconst warnHtml = warn ? `<span class=\"text-warning\">${warn.toLocaleString()}</span><span class=\"text-white\">/</span>` : '';\n\treturn `\n <div class=\"fs-6 text-white\">${percent.toLocaleString()}%</div>\n ${\n\t\t\tok !== undefined\n\t\t\t\t? `\n <div>\n <span class=\"text-success\">${ok.toLocaleString()}</span>\n <span class=\"text-white\">/</span>\n ${warnHtml}\n <span class=\"text-danger\">${ng?.toLocaleString() || 0}</span>\n </div>`\n\t\t\t\t: ''\n\t\t}\n `;\n};\n\nexport const barScaleImgPlugin = {\n\tid: 'scaleImg',\n\tbeforeDatasetsDraw(chart, args, options) {\n\t\tconst {\n\t\t\tctx,\n\t\t\tdata,\n\t\t\tscales: { x, y },\n\t\t} = chart;\n\t\tconst imgSize = 30;\n\t\tconst isHorizontal = chart.options.indexAxis === 'y';\n\t\tctx.save();\n\t\tdata.datasets.forEach((dataset, idx) => {\n\t\t\tconst img = new Image();\n\t\t\timg.src = dataset.image;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tctx.drawImage(img, 0, y.getPixelForValue(idx) - imgSize / 2, imgSize, imgSize);\n\t\t\t} else {\n\t\t\t\tctx.drawImage(img, x.getPixelForValue(idx) - imgSize / 2, x.top, imgSize, imgSize);\n\t\t\t}\n\t\t});\n\t\tctx.restore();\n\t},\n};\n\nexport const changeSetting = {\n\tid: 'setting',\n\t_Default: {\n\t\timg: '/img/setting.svg',\n\t\ticonSize: { w: 30, h: 30 },\n\t\tradiusExtra: 2,\n\t\toffset: { right: 10, top: 10 },\n\t\tcolors: {\n\t\t\tfill: 'rgba(0,123,255,0.5)',\n\t\t\tfillHover: 'rgba(0,150,255,0.8)',\n\t\t\tstroke: 'rgba(0,123,255,1)',\n\t\t\tstrokeHover: 'rgba(0,150,255,1)',\n\t\t},\n\t\tborderWidth: { normal: 2, hover: 3 },\n\t\tcursor: 'pointer',\n\t\tonClick: ({ chart, event }): void => {\n\t\t\talert('클릭');\n\t\t},\n\t} as SettingOptions,\n\tafterInit(chart, args, options) {\n\t\tconst canvas = chart.canvas;\n\t\tconst opts = stzUtil.merge(this._Default, options);\n\t\tchart.T$opts = opts as SettingOptions;\n\t\tif (!canvas) return;\n\n\t\tif (chart.T$settingClickHandler) return;\n\n\t\tconst getXy = e => {\n\t\t\tconst rect = canvas.getBoundingClientRect();\n\t\t\tconst scaleX = canvas.width / rect.width;\n\t\t\tconst scaleY = canvas.height / rect.height;\n\t\t\treturn {\n\t\t\t\tx: (e.clientX - rect.left) * scaleX,\n\t\t\t\ty: (e.clientY - rect.top) * scaleY,\n\t\t\t};\n\t\t};\n\n\t\tconst handleClick = (e: MouseEvent) => {\n\t\t\tconst { x, y } = getXy(e);\n\n\t\t\tconst r = chart.T$settingBtnRect;\n\t\t\tif (!r) return;\n\n\t\t\tif (x >= r.left && x <= r.right && y >= r.top && y <= r.bottom) {\n\t\t\t\ttry {\n\t\t\t\t\t((opts as SettingOptions).onClick || this._Default.onClick)({ chart, event: e });\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconsole.error('error', err);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tconst handleMove = e => {\n\t\t\tconst { x, y } = getXy(e);\n\n\t\t\tconst r = chart.T$settingBtnCircle;\n\t\t\tif (!r) return;\n\n\t\t\tconst dx = x - r.cx;\n\t\t\tconst dy = y - r.cy;\n\t\t\tconst isHover = dx * dx + dy * dy <= r.radius * r.radius;\n\n\t\t\tif (chart.T$isHover !== isHover) {\n\t\t\t\tchart.T$isHover = isHover;\n\t\t\t\tcanvas.style.cursor = isHover ? (opts as SettingOptions).cursor || 'pointer' : 'default';\n\t\t\t\tchart.update('none');\n\t\t\t}\n\t\t};\n\t\tcanvas.addEventListener('mousemove', handleMove);\n\t\tcanvas.addEventListener('click', handleClick);\n\n\t\tchart._settingClickHandler = handleClick;\n\t\tchart._settingMoveHandler = handleMove;\n\n\t\tchart.T$settingImg = new Image();\n\t\tchart.T$settingImg.src = (opts as SettingOptions).img;\n\t},\n\n\tbeforeDraw(chart) {\n\t\tconst {\n\t\t\tctx,\n\t\t\tchartArea: { right },\n\t\t} = chart;\n\t\tctx.save();\n\n\t\tconst opts = (chart.T$opts as SettingOptions) || (this._Default as SettingOptions);\n\t\tconst img = chart.T$settingImg;\n\t\tconst w = opts.iconSize?.w ?? 30;\n\t\tconst h = opts.iconSize?.h ?? 30;\n\t\tconst x = right - (w + (opts.offset?.right ?? 10));\n\t\tconst y = opts.offset?.top ?? 10;\n\n\t\tconst radius = Math.max(w, h) / 2 + (opts.radiusExtra ?? 0);\n\t\tconst centerX = x + w / 2;\n\t\tconst centerY = y + h / 2;\n\n\t\tconst isHover = !!chart.T$isHover;\n\n\t\tctx.lineWidth = isHover ? (opts.borderWidth?.hover ?? 3) : (opts.borderWidth?.normal ?? 2);\n\t\tctx.strokeStyle = isHover ? (opts.colors?.strokeHover ?? 'rgba(0,150,255,1)') : (opts.colors?.stroke ?? 'rgba(0,123,255,1)');\n\t\tctx.beginPath();\n\t\tctx.arc(centerX, centerY, radius, 0, Math.PI * 2);\n\t\tctx.stroke();\n\t\tctx.closePath();\n\n\t\tctx.beginPath();\n\t\tctx.arc(centerX, centerY, radius, 0, Math.PI * 2);\n\t\tctx.fillStyle = isHover ? (opts.colors?.fillHover ?? 'rgba(0,150,255,0.8)') : (opts.colors?.fill ?? 'rgba(0,123,255,0.5)');\n\t\tctx.fill();\n\t\tctx.closePath();\n\n\t\tif (img) {\n\t\t\tctx.drawImage(img, x, y, w, h);\n\t\t}\n\n\t\tchart.T$settingBtnCircle = { cx: centerX, cy: centerY, radius };\n\n\t\tchart.T$settingBtnRect = {\n\t\t\ttop: y,\n\t\t\tbottom: y + h,\n\t\t\tleft: x,\n\t\t\tright: x + w,\n\t\t};\n\n\t\tctx.restore();\n\t},\n\n\tafterDestroy(chart) {\n\t\tconst canvas = chart.canvas;\n\t\tif (canvas && chart.T$settingClickHandler) {\n\t\t\tcanvas.removeEventListener('click', chart._settingClickHandler);\n\t\t}\n\t\tif (canvas && chart._settingMoveHandler) {\n\t\t\tcanvas.removeEventListener('mousemove', chart._settingMoveHandler);\n\t\t}\n\t\tchart.T$settingClickHandler = null;\n\t\tchart.T$settingBtnRect = null;\n\t\tchart.T$settingImg = null;\n\t},\n};\nexport const zoomRangeSlider = {\n\tid: 'zoomRangeSlider',\n\tvar: {\n\t\tmin: 0,\n\t\tisDragging: false,\n\t\tcirclePosition: null,\n\t} as { min: number; isDragging: boolean; circlePosition: number | null },\n\tafterDatasetDraw(chart, args, options) {\n\t\tconst {\n\t\t\tctx,\n\t\t\tchartArea: { left, right, top, bottom, width, height },\n\t\t} = chart;\n\n\t\tthis.var.circlePosition = this.var.circlePosition || left;\n\n\t\tctx.beginPath();\n\t\tctx.fillStyle = '#e0e0e0';\n\t\tctx.roundRect(left, bottom + 40, width, 6, 3);\n\t\tctx.fill();\n\n\t\tconst activeWidth = (this.var.circlePosition as number) - left;\n\t\tif (activeWidth > 0) {\n\t\t\tctx.beginPath();\n\t\t\tctx.fillStyle = '#4285f4';\n\t\t\tctx.roundRect(left, bottom + 40, activeWidth, 6, 3);\n\t\t\tctx.fill();\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.fillStyle = '#ffffff';\n\t\tctx.arc(this.var.circlePosition, bottom + 40, 8, 0, Math.PI * 2);\n\t\tctx.fill();\n\n\t\tctx.beginPath();\n\t\tctx.strokeStyle = '#4285f4';\n\t\tctx.lineWidth = 2;\n\t\tctx.arc(this.var.circlePosition, bottom + 40, 8, 0, Math.PI * 2);\n\t\tctx.stroke();\n\n\t\tif (this.var.isDragging) {\n\t\t\tctx.beginPath();\n\t\t\tctx.fillStyle = 'rgba(66, 133, 244, 0.2)';\n\t\t\tctx.arc(this.var.circlePosition, bottom + 40, 12, 0, Math.PI * 2);\n\t\t\tctx.fill();\n\t\t}\n\t},\n\tafterUpdate(chart, args, options) {\n\t\tchart.options.scales.x.min = this.var.min;\n\t},\n\tafterEvent(chart, args, options) {\n\t\tconst {\n\t\t\tctx,\n\t\t\tcanvas,\n\t\t\tchartArea: { left, top, right, width },\n\t\t} = chart;\n\n\t\tcanvas.addEventListener('mousedown', e => {\n\t\t\tthis.var.isDragging = true;\n\t\t});\n\t\tcanvas.addEventListener('mouseup', e => {\n\t\t\tthis.var.isDragging = false;\n\t\t});\n\t\tif (args.event.type === 'mousemove' && this.var.isDragging) {\n\t\t\tconst val = args.event.x / (width + left);\n\t\t\tthis.var.min = val * chart.config.data.labels.length - 1;\n\t\t\targs.changed = true;\n\t\t\tthis.var.circlePosition = args.event.x < left ? left : args.event.x > right ? right : args.event.x;\n\t\t\tchart.update();\n\t\t}\n\t},\n};\n\nexport const CreateZoomRangeSlider = (colors: ZoomRangeSliderColors = {}): ZoomRangeSliderPlugin => {\n\tconst {\n\t\tsliderTrackColor = '#e0e0e0',\n\t\tsliderActiveColor = '#4285f4',\n\t\tsliderHandleColor = '#ffffff',\n\t\tsliderHandleBorderColor = '#4285f4',\n\t\tsliderHandleHoverColor = 'rgba(66, 133, 244, 0.2)',\n\t} = colors;\n\n\treturn {\n\t\tid: 'zoomRangeSlider',\n\t\tvar: {\n\t\t\tmin: 0,\n\t\t\tisDragging: false,\n\t\t\tcirclePosition: null,\n\t\t},\n\t\tafterDatasetDraw(chart: Chart, args: any, options: any): void {\n\t\t\tconst {\n\t\t\t\tctx,\n\t\t\t\tchartArea: { left, right, top, bottom, width, height },\n\t\t\t}: { ctx: CanvasRenderingContext2D; chartArea: ChartArea } = chart;\n\n\t\t\tthis.var.circlePosition = this.var.circlePosition || left;\n\n\t\t\tctx.beginPath();\n\t\t\tctx.fillStyle = sliderTrackColor;\n\t\t\tctx.roundRect(left, bottom + 40, width, 6, 3);\n\t\t\tctx.fill();\n\n\t\t\tconst activeWidth: number = (this.var.circlePosition as number) - left;\n\t\t\tif (activeWidth > 0) {\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.fillStyle = sliderActiveColor;\n\t\t\t\tctx.roundRect(left, bottom + 40, activeWidth, 6, 3);\n\t\t\t\tctx.fill();\n\t\t\t}\n\n\t\t\tctx.beginPath();\n\t\t\tctx.fillStyle = sliderHandleColor;\n\t\t\tctx.arc(this.var.circlePosition as number, bottom + 40, 8, 0, Math.PI * 2);\n\t\t\tctx.fill();\n\n\t\t\tctx.beginPath();\n\t\t\tctx.strokeStyle = sliderHandleBorderColor;\n\t\t\tctx.lineWidth = 2;\n\t\t\tctx.arc(this.var.circlePosition as number, bottom + 40, 8, 0, Math.PI * 2);\n\t\t\tctx.stroke();\n\n\t\t\tif (this.var.isDragging) {\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.fillStyle = sliderHandleHoverColor;\n\t\t\t\tctx.arc(this.var.circlePosition as number, bottom + 40, 12, 0, Math.PI * 2);\n\t\t\t\tctx.fill();\n\t\t\t}\n\t\t},\n\t\tafterUpdate(chart: Chart, args: any, options: any): void {\n\t\t\tchart.options.scales!.x!.min = this.var.min;\n\t\t},\n\t\tafterEvent(chart: Chart, args: any, options: any): void {\n\t\t\tconst {\n\t\t\t\tctx,\n\t\t\t\tcanvas,\n\t\t\t\tchartArea: { left, top, right, width },\n\t\t\t}: { ctx: CanvasRenderingContext2D; canvas: HTMLCanvasElement; chartArea: ChartArea } = chart;\n\n\t\t\tcanvas.addEventListener('mousedown', (e: MouseEvent): void => {\n\t\t\t\tthis.var.isDragging = true;\n\t\t\t});\n\t\t\tcanvas.addEventListener('mouseup', (e: MouseEvent): void => {\n\t\t\t\tthis.var.isDragging = false;\n\t\t\t});\n\t\t\tif (args.event.type === 'mousemove' && this.var.isDragging) {\n\t\t\t\tconst val: number = args.event.x / (width + left);\n\t\t\t\tthis.var.min = val * chart.config.data!.labels!.length - 1;\n\t\t\t\targs.changed = true;\n\t\t\t\tthis.var.circlePosition = args.event.x < left ? left : args.event.x > right ? right : args.event.x;\n\t\t\t\tchart.update();\n\t\t\t}\n\t\t},\n\t};\n};\n","import { CommonAxesSacels, CustomBarChartOptions, CustomLineChartOptions } from '../../types/commonTypes';\nimport { stzUtil } from 'stz-util';\nimport { TooltipItem } from 'chart.js';\n// Bar 차트 기본 툴팁 콜백\n// 기존 (src/defaults/options/Bar.ts)\n\nexport const defaultBarTooltipCallback = (context: TooltipItem<'bar'>) => {\n\tconst datasetLabel = context.dataset.label || '';\n\tconst value = context.parsed?.y ?? context.raw ?? 'No Data';\n\n\tconst formattedValue = typeof value === 'number' ? value.toLocaleString() : value;\n\n\treturn `${datasetLabel}: ${formattedValue}`;\n};\n\n// Bar 차트 기본 스케일 설정\nexport const defaultBarScales: CommonAxesSacels = {\n\tx: {\n\t\ttype: 'category',\n\t\tdisplay: true,\n\t\tticks: {\n\t\t\tdisplay: true,\n\t\t\tcolor: '#000',\n\t\t\tautoSkip: true,\n\t\t\talign: 'center',\n\t\t},\n\t\tgrid: {\n\t\t\tdisplay: true,\n\t\t},\n\t},\n\ty: {\n\t\ttype: 'linear',\n\t\tdisplay: true,\n\t\tticks: {\n\t\t\tdisplay: true,\n\t\t\tcolor: '#000',\n\t\t\talign: 'end',\n\t\t\tautoSkip: true,\n\t\t},\n\t\tgrid: {\n\t\t\tdisplay: true,\n\t\t},\n\t},\n};\n\n// Bar 차트 기본 옵션 생성 함수\nexport const createDefaultBarOptions = (\n\tuserOptions: CustomBarChartOptions = {},\n\tdefaultScales: CommonAxesSacels = defaultBarScales\n): CustomBarChartOptions => {\n\tconst userScales = userOptions.scales || {};\n\tconst mergedScales: CommonAxesSacels = {\n\t\t...defaultScales,\n\t\t...userScales,\n\t};\n\n\treturn {\n\t\t_mounted: userOptions._mounted ?? (() => {}),\n\t\tindexAxis: userOptions?.indexAxis ?? 'x',\n\t\tresponsive: true,\n\t\tmaintainAspectRatio: false,\n\t\tplugins: {\n\t\t\ttooltip: {\n\t\t\t\tenabled: userOptions.plugins?.tooltip?.enabled ?? true,\n\t\t\t\tmode: userOptions.plugins?.tooltip?.mode ?? 'index',\n\t\t\t\tintersect: userOptions.plugins?.tooltip?.intersect ?? false,\n\t\t\t\tcallbacks: {\n\t\t\t\t\tlabel: defaultBarTooltipCallback,\n\t\t\t\t\t...(userOptions?.plugins?.tooltip?.callbacks ?? {}),\n\t\t\t\t},\n\t\t\t},\n\t\t\t...(userOptions?.plugins ?? {}),\n\t\t},\n\t\tscales: mergedScales,\n\t\t...stzUtil.omit(userOptions, ['scales', 'plugins', 'indexAxis']),\n\t};\n};\n","import { CommonAxesSacels, CustomLineChartOptions, DeepPartial } from '../../types/commonTypes';\nimport { stzUtil } from 'stz-util';\nimport { TooltipCallbacks, TooltipItem } from 'chart.js';\n\n// Line 차트 기본 툴팁 콜백\nexport const defaultLineTooltipCallback = (context: TooltipItem<'line'>) => {\n\tconst dataset = context.dataset;\n\tconst parsed = context.parsed;\n\tconst raw = context.raw;\n\n\tlet value: any;\n\n\tif (parsed && stzUtil.getType(parsed) === 'object') {\n\t\tvalue = parsed.y ?? parsed.x;\n\t} else if (raw && stzUtil.getType(raw) === 'object' && dataset?.parsing) {\n\t\tconst parsing = dataset.parsing as any;\n\t\tconst yKey = parsing.yAxisKey;\n\t\tvalue = (raw as any)[yKey];\n\t} else {\n\t\tvalue = raw;\n\t}\n\tlet formatted: string;\n\tif (stzUtil.getType(value) === 'number') {\n\t\tformatted = value.toFixed(2);\n\t} else if (value !== null && value !== undefined) {\n\t\tformatted = String(value);\n\t} else {\n\t\tformatted = 'No Data';\n\t}\n\n\tconst label = dataset?.label ?? '값';\n\treturn `${label}: ${formatted}`;\n};\n\n// Line 차트 기본 스케일 설정\nexport const defaultLineScales: CommonAxesSacels = {\n\tx: {\n\t\ttype: 'category',\n\t\tdisplay: true,\n\t\tticks: {\n\t\t\tdisplay: true,\n\t\t\tcolor: '#000',\n\t\t\tautoSkip: true,\n\t\t\talign: 'center',\n\t\t},\n\t\tgrid: {\n\t\t\tdisplay: true,\n\t\t},\n\t},\n\ty: {\n\t\ttype: 'linear',\n\t\tdisplay: true,\n\t\tticks: {\n\t\t\tdisplay: true,\n\t\t\tcolor: '#000',\n\t\t\talign: 'end',\n\t\t\tautoSkip: true,\n\t\t},\n\t\tgrid: {\n\t\t\tdisplay: true,\n\t\t},\n\t},\n};\n\nexport const createDefaultLineOptions = (\n\tuserOptions: CustomLineChartOptions = {},\n\tdefaultScales: CommonAxesSacels = defaultLineScales\n): CustomLineChartOptions => {\n\tconsole.log('createDefaultLineOptions called with userOptions:', userOptions);\n\tconst userScales = userOptions.scales || {};\n\treturn {\n\t\thover: undefined,\n\t\tindexAxis: undefined,\n\t\t_mounted: userOptions._mounted ?? (() => {}),\n\t\tresponsive: userOptions.responsive ?? true,\n\t\tmaintainAspectRatio: userOptions.maintainAspectRatio ?? false,\n\n\t\tinteraction: {\n\t\t\tmode: userOptions.interaction?.mode ?? 'index',\n\t\t\tintersect: userOptions.interaction?.intersect ?? false,\n\t\t},\n\n\t\tplugins: {\n\t\t\t...(userOptions.plugins || {}),\n\t\t\ttooltip: {\n\t\t\t\tenabled: userOptions.plugins?.tooltip?.enabled ?? true,\n\t\t\t\tmode: userOptions.plugins?.tooltip?.mode ?? 'index',\n\t\t\t\tintersect: userOptions.plugins?.tooltip?.intersect ?? false,\n\t\t\t\t...userOptions.plugins?.tooltip,\n\t\t\t\tcallbacks: {\n\t\t\t\t\tlabel: defaultLineTooltipCallback,\n\t\t\t\t\t...userOptions?.plugins?.tooltip?.callbacks,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\telements: {\n\t\t\tpoint: {\n\t\t\t\tradius: userOptions.elements?.point?.radius ?? 0,\n\t\t\t\thoverRadius: userOptions.elements?.point?.hoverRadius ?? 0,\n\t\t\t},\n\t\t\tline: {\n\t\t\t\ttension: userOptions.elements?.line?.tension ?? 0.1,\n\t\t\t},\n\t\t},\n\n\t\tscales: stzUtil.merge(defaultScales, userScales) as CommonAxesSacels,\n\t} as CustomLineChartOptions;\n};\n","import { ChartConfig, ChartWrapper } from './ChartWrapper';\nimport {\n\tCartesianChartBuilder,\n\tCartesianChartType,\n\tChartBuilder,\n\tCommonAxesSacels,\n\tCommonCartesianTitleConfig,\n\tCustomCartesianDataset,\n\tCustomChartOptions,\n\tCustomOptionPlugins,\n\tHtmlLegendOptions,\n} from './types/commonTypes';\nimport { CustomError } from './Error/GlobalErrorHandler';\nimport { ErrorCode } from './Error/ErrorMsg';\nimport { stzUtil } from 'stz-util';\nimport { DefaultDataLabelsOptions, DefaultZoomOptions } from './defaults/options/Cartesian';\nimport { CustomZoomType } from './types/plugins/zoomType';\nimport { CHART_COLOR } from './utils/Logger';\nimport { chartMountPlugin, CreateZoomRangeSlider, customLegend, loadingPlugin, zoomRangeSlider, zoomResetPlugin } from './defaults';\nimport { PartialDataLabels } from './types/plugins/DataLabels';\nimport { ZoomRangeSliderColors } from './types/util/utilType';\n\nexport abstract class CartesianChartWrapper<TType extends CartesianChartType> extends ChartWrapper<TType> implements CartesianChartBuilder<TType> {\n\tprivate _chartId?: string;\n\tprotected constructor(\n\t\treadonly type: TType,\n\t\tlabels: (string | number)[],\n\t\tdatasets: CustomCartesianDataset<TType>[],\n\t\toptions?: CustomChartOptions<TType>,\n\t\tplugins?: Plugin\n\t) {\n\t\tsuper(type, labels, datasets, options as CustomChartOptions<TType>, plugins);\n\t}\n\n\tpublic get chartId(): string {\n\t\tif (!this._chartId) {\n\t\t\tthis._chartId = `${this.type}_${Math.random()}`;\n\t\t}\n\t\treturn this._chartId;\n\t}\n\n\tpublic set chartId(value: string) {\n\t\tthis._chartId = value;\n\t\tif (this.options && typeof this.options === 'object') {\n\t\t\t(this.options as CustomChartOptions)._chartId = value;\n\t\t}\n\t}\n\n\t// 데이터 라벨 설정 메소드\n\tprotected requireLabels(): boolean {\n\t\treturn false;\n\t}\n\t// 데이터셋을 장식하는 메소드\n\tprotected decorateDataset(ds: any, idx: number) {\n\t\tconst c = CHART_COLOR[idx % CHART_COLOR.length];\n\t\tds.backgroundColor ??= c;\n\t\tds.borderColor ??= c;\n\t\tds.yAxisID ??= 'y';\n\t}\n\n\tprotected mustHavePlugins() {\n\t\treturn [chartMountPlugin];\n\t}\n\n\tprotected isLine() {\n\t\treturn this.type === 'line';\n\t}\n\n\tprotected isScatter() {\n\t\treturn this.type === 'scatter';\n\t}\n\n\tprotected isBar() {\n\t\treturn this.type === 'bar';\n\t}\n\n\tprotected normalize(): void {\n\t\t// 필수 플러그인 주입\n\t\tconst must = this.mustHavePlugins();\n\t\tif (!this.plugins) this.plugins = [...must];\n\t\telse if (Array.isArray(this.plugins)) {\n\t\t\tconst ids = new Set(this.plugins.map((p: any) => p.id));\n\t\t\tmust.forEach(p => {\n\t\t\t\tif (!ids.has(p.id)) this.plugins!.push(p);\n\t\t\t});\n\t\t} else this.plugins = [...must];\n\n\t\t// 라벨 검증 + 데이터셋 기본값\n\t\tif (this.requireLabels() && (!this.labels || this.labels.length === 0)) {\n\t\t\tthrow new CustomError(ErrorCode.LABELS_REQUIRED);\n\t\t}\n\t}\n\n\tprotected configAop(config: any) {\n\t\tconst handler = {\n\t\t\tget: (target: any, prop: string, receiver: any) => {\n\t\t\t\tif (prop === 'data') {\n\t\t\t\t\tconst data = target.data;\n\t\t\t\t\tif (this.requireLabels() && (!data?.labels || data.labels.length === 0)) {\n\t\t\t\t\t\tthrow new CustomError(ErrorCode.LABELS_REQUIRED);\n\t\t\t\t\t}\n\t\t\t\t\tif (data && Array.isArray(data.datasets) && data.datasets.length > 0) {\n\t\t\t\t\t\tdata.datasets = data.datasets.map((ds: any, idx: number) => {\n\t\t\t\t\t\t\tif (!ds || stzUtil.getType(ds) !== 'object') return ds;\n\t\t\t\t\t\t\tthis.decorateDataset(ds, idx);\n\t\t\t\t\t\t\treturn ds;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (prop === 'plugins') {\n\t\t\t\t\tconst must = this.mustHavePlugins();\n\t\t\t\t\tif (!target.plugins) target.plugins = [...must];\n\t\t\t\t\telse if (target.options._loading) target.plugins.push(loadingPlugin);\n\t\t\t\t\telse if (stzUtil.getType(target.plugins) === 'Array') {\n\t\t\t\t\t\tconst ids = new Set(target.plugins.map((p: any) => p.id));\n\t\t\t\t\t\tmust.forEach(p => {\n\t\t\t\t\t\t\tif (!ids.has(p.id)) target.plugins.push(p);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else target.plugins = [...must];\n\t\t\t\t}\n\t\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t\t},\n\t\t};\n\t\treturn new Proxy(config, handler);\n\t}\n\n\tpublic makeConfig(id = '') {\n\t\tthis.normalize();\n\t\tif (id) this.chartId = id;\n\t\tconst resolvedId = this.chartId;\n\n\t\tconst config = {\n\t\t\t_chartId: resolvedId,\n\t\t\ttype: this.type,\n\t\t\tdata: { labels: this.labels, datasets: this.datasets },\n\t\t\toptions: {\n\t\t\t\t...this.options,\n\t\t\t\t_chartId: id || `${this.type}_${Math.random()}`,\n\t\t\t},\n\t\t\tplugins: this.plugins,\n\t\t};\n\n\t\tconst proxied = this.configAop(config);\n\n\t\tvoid proxied.data;\n\t\tvoid proxied.plugins;\n\n\t\treturn {\n\t\t\t_chartId: proxied._chartId,\n\t\t\ttype: proxied.type,\n\t\t\tdata: proxied.data,\n\t\t\toptions: proxied.options,\n\t\t\tplugins: proxied.plugins,\n\t\t};\n\t}\n\n\t//카테시안 차트 타입인지 확인하는 메소드\n\t/**\n\t * Cartesian chart type을 체크 합니다.\n\t * @private\n\t * *\n\t * @remarks cartesina 차트의 타입인지 확인합니다\n\t * @example\n\t * @since 1.0.0\n\t * @category Chart\n\t * @defaultValue\n\t *\n\t */\n\tprivate isCartesianChartType(): this is ChartWrapper<CartesianChartType> {\n\t\treturn ['line', 'bar', 'scatter', 'bubble'].includes(this.type);\n\t}\n\n\t// 스케일 설정 메소드\n\t/**\n\t * 카테시안 차트의 스케일을 설정합니다.\n\t * @param scales\n\t * *\n\t * @remarks 카테시안 차트의 스케일을 설정합니다. 이 메소드는 차트의 축을 정의하는데 사용됩니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tpublic setScales(scales: CommonAxesSacels): this {\n\t\tif (this.options && typeof this.options === 'object') {\n\t\t\t(this.options as CustomChartOptions<TType>).scales = scales;\n\t\t}\n\t\treturn this;\n\t}\n\n\t// 축 제목 설정 메소드\n\t/**\n\t * 카테시안 차트의 축 제목을 설정합니다.\n\t * @param axis\n\t * @param titleConfig\n\t * *\n\t * @remarks 원하는 축의 제목을 설정합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tpublic setAxisTitle(axis: 'x' | 'y', titleConfig: CommonCartesianTitleConfig): this {\n\t\tif (this.options && typeof this.options === 'object') {\n\t\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\t\t\tif (!customOptions.scales) {\n\t\t\t\tcustomOptions.scales = {};\n\t\t\t}\n\t\t\tif (!customOptions.scales[axis]) {\n\t\t\t\tcustomOptions.scales[axis] = {};\n\t\t\t}\n\t\t\tif (customOptions.scales[axis]) {\n\t\t\t\tcustomOptions.scales[axis]!.title = titleConfig;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t// 그리드 옵션 설정 메소드\n\t/**\n\t * 카테시안 차트의 그리드 옵션을 설정합니다.\n\t * @param axis\n\t * @param gridOptions\n\t * *\n\t * @remarks 차트 뒷 배경의 그리드(선) 옵션을 설정합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tpublic setGridOptions(axis: 'x' | 'y', gridOptions: { display?: boolean; color?: string; lineWidth?: number }): this {\n\t\tif (this.options && typeof this.options === 'object') {\n\t\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\t\t\tif (!customOptions.scales) {\n\t\t\t\tcustomOptions.scales = {};\n\t\t\t}\n\t\t\tif (!customOptions.scales[axis]) {\n\t\t\t\tcustomOptions.scales[axis] = {};\n\t\t\t}\n\t\t\tif (customOptions.scales[axis]) {\n\t\t\t\tcustomOptions.scales[axis]!.grid = {\n\t\t\t\t\t...customOptions.scales[axis]!.grid,\n\t\t\t\t\t...gridOptions,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\t/**\n\t * 줌 기능을 추가합니다.\n\t * @param defaultZoom\n\t * @param zoomOption\n\t * *\n\t * @remarks 차트의 줌 기능을 추가합니다. 해당 기능은 플러그인 설치가 필요합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Plugins\n\t * @defaultValue defaultZoom = false\n\t *\n\t */\n\tpublic addZoom(defaultZoom: boolean = false, zoomOption?: object): this {\n\t\tif (stzUtil.isEmpty(this.options)) return this;\n\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\n\t\tif (stzUtil.isEmpty(customOptions.plugins)) {\n\t\t\tcustomOptions.plugins = {} as CustomOptionPlugins<TType>;\n\t\t}\n\n\t\tconst zoomConfig: CustomZoomType<TType> = defaultZoom ? stzUtil.cloneDeep(DefaultZoomOptions) : stzUtil.cloneDeep(zoomOption);\n\n\t\tcustomOptions.plugins!.zoom = stzUtil.merge(customOptions.plugins!.zoom || {}, zoomConfig);\n\n\t\tif (!this.plugins) {\n\t\t\tthis.plugins = [zoomResetPlugin];\n\t\t} else if (Array.isArray(this.plugins)) {\n\t\t\tconst exists = this.plugins.some((p: any) => p && p.id === zoomResetPlugin.id);\n\t\t\tif (!exists) this.plugins.push(zoomResetPlugin);\n\t\t} else {\n\t\t\tthis.plugins = [zoomResetPlugin];\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * 데이터 라벨 플러그인을 추가합니다.\n\t * @param defultDataLabels\n\t * @param dataLabelsOptions\n\t * @Description 차트에 데이터 라벨을 추가합니다. 기본 옵션을 사용하거나 사용자 정의 옵션을 적용할 수 있습니다.\n\t * @Category Plugins\n\t * @since 1.0.0\n\t * @defaultValue defultDataLabels = false\n\t */\n\tpublic addDataLabels(defultDataLabels: boolean = false, dataLabelsOptions: PartialDataLabels): this {\n\t\tif (stzUtil.isEmpty(this.options)) return this;\n\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\n\t\tif (stzUtil.isEmpty(customOptions.plugins)) {\n\t\t\tcustomOptions.plugins = {} as CustomOptionPlugins<TType>;\n\t\t}\n\n\t\tconst dataLabelsConfig: PartialDataLabels = defultDataLabels\n\t\t\t? stzUtil.cloneDeep(DefaultDataLabelsOptions)\n\t\t\t: stzUtil.cloneDeep(dataLabelsOptions);\n\t\tcustomOptions.plugins!.datalabels = dataLabelsConfig;\n\t\treturn this;\n\t}\n\n\t/**\n\t * 데이터셋에 y축을 설정합니다.\n\t * @param datasetIndex\n\t * @param axisId\n\t * *\n\t * @remarks 각 데이터셋의 축을 설정합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue axisId = 'y'\n\t *\n\t */\n\tpublic setYAxisForDataset(datasetIndex: number, axisId: string = 'y'): this {\n\t\tif (!this.datasets || !this.datasets[datasetIndex]) return this;\n\n\t\tif (this.isCartesianChartType()) {\n\t\t\t(this.datasets[datasetIndex] as any).yAxisID = axisId;\n\n\t\t\tif (axisId === 'y1') {\n\t\t\t\tthis.ensureY1AxisExists();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t// y1 스케일이 없으면 기본 구조로 추가\n\t/**\n\t * y1 축을 보장합니다.\n\t * @private\n\t * *\n\t * @remarks y1 축이 없을 경우 기본 구조를 추가합니다. 이 메소드는 y1 축을 사용하는 차트에서 필요합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tprivate ensureY1AxisExists(): void {\n\t\tconst options = this.options;\n\t\tif (typeof options !== 'object') return;\n\t\tif (!options.scales) options.scales = {};\n\n\t\tif (!('y1' in options.scales)) {\n\t\t\t(options.scales as CommonAxesSacels)['y1'] = {\n\t\t\t\ttype: 'linear',\n\t\t\t\tdisplay: true,\n\t\t\t\tposition: 'right',\n\t\t\t\tgrid: {\n\t\t\t\t\tdrawOnChartArea: false,\n\t\t\t\t},\n\t\t\t\tticks: {\n\t\t\t\t\tcolor: '#000',\n\t\t\t\t\talign: 'start',\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\t// 축 범위 설정 메소드\n\t/**\n\t * 카테시안 차트의 축 범위를 설정합니다.\n\t * @param axis\n\t * @param min\n\t * @param max\n\t *\n\t * *\n\t * @remarks 해당 차트의 스케일을 min, max 를 입력 받은 값으로 고정합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tpublic setAxisRange(axis: 'x' | 'y', min?: number, max?: number): this {\n\t\tif (this.options && typeof this.options === 'object') {\n\t\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\t\t\tif (!customOptions.scales) {\n\t\t\t\tcustomOptions.scales = {};\n\t\t\t}\n\t\t\tif (!customOptions.scales[axis]) {\n\t\t\t\tcustomOptions.scales[axis] = {};\n\t\t\t}\n\t\t\tif (customOptions.scales[axis]) {\n\t\t\t\tif (min !== undefined) {\n\t\t\t\t\tcustomOptions.scales[axis]!.min = min;\n\t\t\t\t}\n\t\t\t\tif (max !== undefined) {\n\t\t\t\t\tcustomOptions.scales[axis]!.max = max;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * 데이터셋의 yAxisID를 설정합니다.\n\t * @param datasetIndex\n\t * @param axisID\n\t * *\n\t * @remarks 각 데이터셋의 축 아이디를 변경합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tpublic setYAxisID(datasetIndex: number, axisID: string): this {\n\t\tconst Y_AXIS_SUPPORTED_TYPES = ['bar', 'line', 'scatter', 'bubble'];\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\tif (Y_AXIS_SUPPORTED_TYPES.includes(this.type)) {\n\t\t\t\t(this.datasets[datasetIndex] as any).yAxisID = axisID;\n\t\t\t} else {\n\t\t\t\tthrow new CustomError(ErrorCode.NOT_SUPPORTED_OPTION, `${this.type} support yAxisId option`);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * 축의 위치를 설정합니다.\n\t * @param axis\n\t * @param position\n\t * *\n\t * @remarks 해당하는 축의 위치를 변경합니다.\n\t * @example\n\t * @since 1.0.0\n\t * @category Scales\n\t * @defaultValue\n\t *\n\t */\n\tpublic setAxisPosition(axis: string, position: 'left' | 'right'): this {\n\t\tif (this.options && this.options.scales && this.options.scales[axis]) {\n\t\t\tconst scale = this.options.scales[axis];\n\n\t\t\tif ('position' in scale) {\n\t\t\t\t(scale as { position: 'left' | 'right' }).position = position;\n\t\t\t} else {\n\t\t\t\tthrow new CustomError(ErrorCode.NOT_SUPPORTED_OPTION, `${this.options.scales} not support scales position `);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * 축에 이미지를 추가합니다.\n\t * @param {string} axis\n\t * @Deprecated\n\t */\n\tpublic setAddImg(axis: string): this {\n\t\tif (!this.options) {\n\t\t\tthis.options = {} as CustomChartOptions<TType>;\n\t\t}\n\n\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\n\t\tif (!customOptions.scales) {\n\t\t\tcustomOptions.scales = {};\n\t\t}\n\n\t\tif (customOptions.scales[axis]) {\n\t\t\tconsole.warn(`Axis \"${axis}\" already exists`);\n\t\t\treturn this;\n\t\t}\n\n\t\tif (!this.datasets || this.datasets.length === 0) {\n\t\t\tthrow new CustomError(ErrorCode.DATASET_REQUIRED);\n\t\t}\n\n\t\tconst customDatasets = this.datasets as unknown as CustomCartesianDataset<TType>[];\n\n\t\tfor (let i = 0; i < customDatasets.length; i++) {\n\t\t\tconst dataset = customDatasets[i];\n\n\t\t\tif (!dataset) {\n\t\t\t\tthrow new CustomError(ErrorCode.EMPTY_REQUIRED_PROPERTY, `Dataset at index ${i} is null or undefined`);\n\t\t\t}\n\n\t\t\tif (!dataset.image && (!dataset.images || dataset.images.length === 0)) {\n\t\t\t\tthrow new CustomError(ErrorCode.IMAGE_PROPERTY_MISSING, `Dataset \"${dataset.label || `#${i}`}\" has no image property`);\n\t\t\t}\n\t\t}\n\n\t\tconst isXAxis = axis.startsWith('x');\n\n\t\tif (isXAxis) {\n\t\t\tconst xImagePlugin = {\n\t\t\t\t//...xScalesImage,\n\t\t\t\tid: `${axis}ScalesImage-${this._chartId}`,\n\t\t\t};\n\t\t\tthis.setPlugin(xImagePlugin);\n\t\t} else {\n\t\t\tconst yImagePlugin = {\n\t\t\t\t//...yScalesImage,\n\t\t\t\tid: `${axis}ScalesImage-${this._chartId}`,\n\t\t\t};\n\t\t\tthis.setPlugin(yImagePlugin);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * 범위 슬라이더를 추가합니다.\n\t * @param options - 슬라이더 커스터마이징 옵션\n\t * @Deprecated\n\t */\n\tpublic addRangeSlider(colors?: ZoomRangeSliderColors): this {\n\t\tconst rangeSliderPlugin = CreateZoomRangeSlider(colors);\n\n\t\tthis.setPlugin(rangeSliderPlugin);\n\t\treturn this;\n\t}\n\n\tpublic setPadding(padding): this {\n\t\tif (!this.options) {\n\t\t\tthis.options = {} as CustomChartOptions<TType>;\n\t\t}\n\n\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\n\t\tif (!customOptions.layout) {\n\t\t\tcustomOptions.layout = {};\n\t\t}\n\n\t\tcustomOptions.layout.padding = padding;\n\t\treturn this;\n\t}\n\n\tpublic setBackgroundAlpha(alpha: number): this {\n\t\tif (alpha < 0 || alpha > 1) {\n\t\t\tthrow new CustomError(ErrorCode.UNKNOWN_ERROR, 'Alpha value must be between 0.0 and 1.0');\n\t\t}\n\n\t\tif (!this.datasets || this.datasets.length === 0) {\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.datasets.forEach(dataset => {\n\t\t\tif (dataset) {\n\t\t\t\tif (!dataset.backgroundColor && dataset.borderColor) {\n\t\t\t\t\tdataset.backgroundColor = dataset.borderColor;\n\t\t\t\t}\n\n\t\t\t\tif (dataset.backgroundColor) {\n\t\t\t\t\tif (typeof dataset.backgroundColor === 'string') {\n\t\t\t\t\t\tdataset.backgroundColor = this.addAlphaToColor(dataset.backgroundColor, alpha);\n\t\t\t\t\t} else if (Array.isArray(dataset.backgroundColor)) {\n\t\t\t\t\t\tdataset.backgroundColor = dataset.backgroundColor.map(color =>\n\t\t\t\t\t\t\ttypeof color === 'string' ? this.addAlphaToColor(color, alpha) : color\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * 색상에 알파 값을 추가합니다.\n\t * @param color\n\t * @param alpha\n\t * @private\n\t */\n\tprivate addAlphaToColor(color: string, alpha: number): string {\n\t\tif (color.startsWith('#')) {\n\t\t\tconst hex = color.slice(1);\n\t\t\tlet r, g, b;\n\n\t\t\tif (hex.length === 3) {\n\t\t\t\tr = parseInt(hex[0] + hex[0], 16);\n\t\t\t\tg = parseInt(hex[1] + hex[1], 16);\n\t\t\t\tb = parseInt(hex[2] + hex[2], 16);\n\t\t\t} else if (hex.length === 6) {\n\t\t\t\tr = parseInt(hex.slice(0, 2), 16);\n\t\t\t\tg = parseInt(hex.slice(2, 4), 16);\n\t\t\t\tb = parseInt(hex.slice(4, 6), 16);\n\t\t\t} else {\n\t\t\t\treturn color; // 잘못된 hex 형식\n\t\t\t}\n\n\t\t\treturn `rgba(${r}, ${g}, ${b}, ${alpha})`;\n\t\t}\n\n\t\t// rgb 색상인 경우 (rgb(255, 255, 255))\n\t\tconst rgbMatch = color.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n\t\tif (rgbMatch) {\n\t\t\tconst [, r, g, b] = rgbMatch;\n\t\t\treturn `rgba(${r}, ${g}, ${b}, ${alpha})`;\n\t\t}\n\n\t\t// rgba 색상인 경우 (rgba(255, 255, 255, 0.5))\n\t\tconst rgbaMatch = color.match(/rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([0-9.]+)\\)/);\n\t\tif (rgbaMatch) {\n\t\t\tconst [, r, g, b] = rgbaMatch;\n\t\t\treturn `rgba(${r}, ${g}, ${b}, ${alpha})`;\n\t\t}\n\n\t\t// 색상 이름이나 다른 형식인 경우 그대로 반환\n\t\treturn color;\n\t}\n\n\t/**\n\t *\n\t * @param {string | false} xAxisKey\n\t * @param {string | false} yAxisKey\n\t * @description\n\t * @Category options\n\t * @Since 1.0.0\n\t */\n\tpublic setParsingKey(xAxisKey: string | false, yAxisKey: string | false): this {\n\t\tif (this.options && stzUtil.getType(this.options) === 'Object') {\n\t\t\tconst opts = this.options as unknown as {\n\t\t\t\tparsing?: { xAxisKey?: string; yAxisKey?: string } | false;\n\t\t\t};\n\n\t\t\topts.parsing =\n\t\t\t\txAxisKey !== false || yAxisKey !== false\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...(xAxisKey !== false && { xAxisKey }),\n\t\t\t\t\t\t\t...(yAxisKey !== false && { yAxisKey }),\n\t\t\t\t\t\t}\n\t\t\t\t\t: false;\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic setDatasetParsing(datasetIndex: number, xAxisKey: string | false, yAxisKey: string | false): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\tconst parsing: { [key: string]: string } = {};\n\t\t\tif (xAxisKey !== false) parsing['xAxisKey'] = xAxisKey;\n\t\t\tif (yAxisKey !== false) parsing['yAxisKey'] = yAxisKey;\n\n\t\t\t(this.datasets[datasetIndex] as any).parsing = parsing;\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic setAllDatasetsParsing(xAxisKey: string | false, yAxisKey: string | false): this {\n\t\tif (this.datasets) {\n\t\t\tconst parsing: { [key: string]: string } = {};\n\t\t\tif (xAxisKey !== false) parsing['xAxisKey'] = xAxisKey;\n\t\t\tif (yAxisKey !== false) parsing['yAxisKey'] = yAxisKey;\n\n\t\t\tthis.datasets.forEach(dataset => {\n\t\t\t\t(dataset as any).parsing = parsing;\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\tpublic customLegend(obj: HtmlLegendOptions): this {\n\t\tif (!stzUtil.isEmpty(this.options) && stzUtil.getType(this.options) === 'Object') {\n\t\t\tconst customOptions = this.options as CustomChartOptions<TType>;\n\t\t\tif (!customOptions.plugins) {\n\t\t\t\tcustomOptions.plugins = {} as CustomOptionPlugins<TType>;\n\t\t\t}\n\t\t\tcustomOptions.plugins!.htmlLegend = obj;\n\t\t\tthis.setPlugin(customLegend);\n\t\t\tconsole.log(this.options);\n\t\t} else {\n\t\t\tthrow new CustomError(ErrorCode.UNKNOWN_ERROR, 'Options is empty');\n\t\t}\n\t\treturn this;\n\t}\n}\n","import { ChartTypeRegistry } from 'chart.js';\n\nexport type AllChartTypes = keyof ChartTypeRegistry;\n\nexport enum ChartTypes {\n\tBAR = 'bar',\n\tLINE = 'line',\n\tDOUGHNUT = 'doughnut',\n\tPIE = 'pie',\n\tRADAR = 'radar',\n\tBUBBLE = 'bubble',\n\tSCATTER = 'scatter',\n\tTREE = 'tree',\n}\n","// ChartFactory.ts\nimport { ChartType } from 'chart.js';\nimport type { Constructor } from '../types/commonTypes';\nimport { CustomError } from '../Error/GlobalErrorHandler';\nimport { ErrorCode } from '../Error/ErrorMsg';\n\nclass ChartFactory {\n\tprivate static registry = new Map<string, Constructor<any, any>>();\n\n\tstatic register<TType extends ChartType, TInstance>(type: TType, wrapperClass: Constructor<TType, TInstance>) {\n\t\tthis.registry.set(type, wrapperClass);\n\t}\n\n\tstatic create<TType extends ChartType>(type: TType, ...args: ConstructorParameters<Constructor<TType, any>>) {\n\t\tconst WrapperClass = this.registry.get(type);\n\t\tif (!WrapperClass) throw new CustomError(ErrorCode.NOT_REGISTERED_CHART_TYPE);\n\t\treturn new WrapperClass(...args);\n\t}\n\n\tstatic has(type: ChartType): boolean {\n\t\treturn this.registry.has(type);\n\t}\n\n\tstatic clear() {\n\t\tthis.registry.clear();\n\t}\n}\n\nexport { ChartFactory };","import { BarElement, Chart, ChartDataset, ChartOptions, PluginOptionsByType, PointElement } from 'chart.js';\nimport type { Plugin } from 'chart.js';\nimport { CartesianChartWrapper } from './CartesianChartWrapper';\nimport { CartesianDataset, CommonAxesSacels, Constructor, CustomBarChartOptions, CustomChartOptions, BarChartBuilder } from './types/commonTypes';\nimport { defaultBarScales, createDefaultBarOptions, loadingPlugin, blinkPlugin, chartMountPlugin, barScaleImgPlugin } from './defaults';\nimport { ChartTypes } from './types/chart/ChartTypes';\nimport { CustomError } from './Error/GlobalErrorHandler';\nimport { ErrorCode } from './Error/ErrorMsg';\nimport { CHART_COLOR } from './utils/Logger';\nimport { ChartFactory } from './registry/ChartFactory';\nimport { stzUtil } from 'stz-util';\nexport class BarChartWrapper extends CartesianChartWrapper<'bar'> implements BarChartBuilder {\n\tconstructor(\n\t\ttype: ChartTypes.BAR,\n\t\tlabels: (string | number)[],\n\t\tdatasets: CartesianDataset<ChartTypes.BAR>[],\n\t\toptions?: CustomBarChartOptions,\n\t\tplugins?\n\t) {\n\t\tconst mergedScales: CommonAxesSacels = {\n\t\t\t...defaultBarScales,\n\t\t\t...(options?.scales ?? {}),\n\t\t};\n\n\t\tconst defaultOptions = createDefaultBarOptions(options, mergedScales);\n\n\t\tsuper(type, labels, datasets, defaultOptions, plugins);\n\t\tChartFactory.register(ChartTypes.BAR, BarChartWrapper as Constructor<ChartTypes.BAR, BarChartWrapper>);\n\t}\n\n\tprotected override requireLabels() {\n\t\treturn false;\n\t}\n\n\tpublic override makeConfig(id?: string) {\n\t\treturn super.makeConfig(id);\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} thickness\n\t * @description 데이터셋의 Bar Thickness를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setBarThickness(datasetIndex: number, thickness: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).barThickness = thickness;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} thickness\n\t * @description 모든 데이터셋의 Bar Thickness를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllBarThickness(thickness: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setBarThickness(index, thickness);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t// Max Bar Thickness 설정\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} maxThickness\n\t * @description 데이터셋의 Max Bar Thickness를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setMaxBarThickness(datasetIndex: number, maxThickness: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).maxBarThickness = maxThickness;\n\t\t}\n\t\treturn this;\n\t}\n\n\t// 모든 데이터셋의 Max Bar Thickness 설정\n\t/**\n\t *\n\t * @param {number} maxThickness\n\t * @description 모든 데이터셋의 Max Bar Thickness를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllMaxBarThickness(maxThickness: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setMaxBarThickness(index, maxThickness);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t// Bar Percentage 설정 (바 사이의 간격)\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} percentage\n\t * @description 데이터셋의 Bar Percentage를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setBarPercentage(datasetIndex: number, percentage: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).barPercentage = percentage;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} percentage\n\t * @description 모든 데이터셋의 Bar Percentage를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllBarPercentage(percentage: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setBarPercentage(index, percentage);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t// Category Percentage 설정 (카테고리 간격)\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} percentage\n\t * @description 데이터셋의 Category Percentage를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setCategoryPercentage(datasetIndex: number, percentage: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).categoryPercentage = percentage;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} percentage\n\t * @description 모든 데이터셋의 Category Percentage를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllCategoryPercentage(percentage: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setCategoryPercentage(index, percentage);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} borderWidth\n\t * @description 데이터셋의 Border Width 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setBorderWidth(datasetIndex: number, borderWidth: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\tthis.datasets[datasetIndex].borderWidth = borderWidth;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} borderWidth\n\t * @description 모든 데이터셋의 Border Width 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllBorderWidth(borderWidth: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach(dataset => {\n\t\t\t\tdataset.borderWidth = borderWidth;\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} borderRadius\n\t * @description 데이터셋의 Border Radius 를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setBorderRadius(datasetIndex: number, borderRadius: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).borderRadius = borderRadius;\n\t\t}\n\t\treturn this;\n\t}\n\n\t// 모든 데이터셋의 Border Radius 설정\n\t/**\n\t *\n\t * @param {number} borderRadius\n\t * @description 모든 데이터셋의 Border Radius 를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllBorderRadius(borderRadius: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setBorderRadius(index, borderRadius);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {boolean} isStacked\n\t * @description 모든 축에 대해 Stacked 옵션을 설정합니다.\n\t * @Since 1.0.0\n\t * @category scales\n\t */\n\tpublic setStacked(isStacked: boolean): this {\n\t\tconst scales = this.options?.scales;\n\t\tif (!scales) return this;\n\n\t\tObject.entries(scales).forEach(([axis, axisOptions]) => {\n\t\t\tif (axisOptions && typeof axisOptions === 'object') {\n\t\t\t\t(axisOptions as any).stacked = isStacked;\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {string} axis\n\t * @description 축에 이미지를 설정합니다. 축이 이미 존재하는 경우 경고 메시지를 출력합니다.\n\t * @Since 1.0.0\n\t * @category plugins\n\t * @Returns {this}\n\t */\n\tpublic setBarImg(axis: string): this {\n\t\tif (stzUtil.isEmpty(this.datasets)) return this;\n\t\tif (!this.options) {\n\t\t\tthis.options = {} as CustomChartOptions<'bar'>;\n\t\t}\n\n\t\tconst customOptions = this.options as CustomChartOptions<'bar'>;\n\n\t\tif (!customOptions.scales) {\n\t\t\tcustomOptions.scales = {};\n\t\t}\n\n\t\tif (stzUtil.isEmpty(customOptions.scales[axis])) {\n\t\t\treturn this;\n\t\t}\n\t\tthis.plugins?.push(barScaleImgPlugin);\n\t\treturn this;\n\t}\n}\n","import { CartesianChartWrapper } from './CartesianChartWrapper';\nimport { CartesianDataset, CommonAxesSacels, Constructor, CustomChartOptions, CustomLineChartOptions, LineChartBuilder } from './types/commonTypes';\nimport { defaultLineScales, createDefaultLineOptions, loadingPlugin, chartMountPlugin } from './defaults';\nimport { ChartWrapper } from './ChartWrapper';\nimport { CustomError } from './Error/GlobalErrorHandler';\nimport { ErrorCode } from './Error/ErrorMsg';\nimport { merge } from 'chart.js/helpers';\nimport { CHART_COLOR } from './utils/Logger';\nimport { ChartTypes } from './types/chart/ChartTypes';\nimport { ChartFactory } from './registry/ChartFactory';\n\nexport class LineChartWrapper extends CartesianChartWrapper<'line'> implements LineChartBuilder {\n\tconstructor(type: ChartTypes.LINE, labels: (string | number)[], datasets: CartesianDataset<'line'>[], options?: CustomChartOptions<'line'>) {\n\t\tconst mergedScales: CommonAxesSacels = {\n\t\t\t...defaultLineScales,\n\t\t\t...(options?.scales ?? {}),\n\t\t};\n\n\t\tconst defaultOptions = createDefaultLineOptions(options, mergedScales);\n\t\tsuper(type, labels, datasets, defaultOptions);\n\n\t\tChartFactory.register(type, LineChartWrapper as Constructor<ChartTypes.LINE, LineChartWrapper>);\n\t}\n\n\tprotected override requireLabels() {\n\t\treturn this.options?.scales?.x?.type === 'category';\n\t}\n\n\tpublic override makeConfig(id?: string) {\n\t\treturn super.makeConfig(id);\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {boolean} enable\n\t * @param {string} backgroundColor\n\t * @description 데이터셋의 Fill 설정을 합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setFill(datasetIndex: number, enable: boolean, backgroundColor?: string): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\tif (enable) {\n\t\t\t\t(this.datasets[datasetIndex] as any).fill = 'origin';\n\t\t\t\tif (backgroundColor) {\n\t\t\t\t\tthis.datasets[datasetIndex].backgroundColor = backgroundColor;\n\t\t\t\t} else if (!this.datasets[datasetIndex].backgroundColor) {\n\t\t\t\t\tthis.datasets[datasetIndex].backgroundColor = 'rgba(75, 192, 192, 0.2)';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t(this.datasets[datasetIndex] as any).fill = false;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {boolean} enable\n\t * @param {string} backgroundColor\n\t * @description 모든 데이터셋의 Fill 설정을 합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t *\n\t */\n\tpublic setAllFill(enable: boolean, backgroundColor?: string): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setFill(index, enable, backgroundColor);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} tension\n\t * @description 라인 차트의 곡률을 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setTension(datasetIndex: number, tension: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).tension = tension;\n\t\t}\n\t\treturn this;\n\t}\n\n\t// 모든 데이터셋의 Tension 설정\n\t/**\n\t *\n\t * @param {number} tension\n\t * @description 모든 데이터셋의 곡률을 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t *\n\t */\n\tpublic setAllTension(tension: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setTension(index, tension);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} borderWidth\n\t * @description 데이터셋의 Border Width를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setBorderWidth(datasetIndex: number, borderWidth: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\tthis.datasets[datasetIndex].borderWidth = borderWidth;\n\t\t}\n\t\treturn this;\n\t}\n\n\t// 모든 데이터셋의 Border Width 설정\n\tpublic setAllBorderWidth(borderWidth: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, idx) => {\n\t\t\t\tthis.setBorderWidth(idx, borderWidth);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} radius\n\t * @description 라인 차트의 Point Radius를 설정합니다.\n\t */\n\tpublic setPointRadius(datasetIndex: number, radius: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).pointRadius = radius;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} radius\n\t * @description 모든 라인 차트의 Point Radius를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setAllPointRadius(radius: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setPointRadius(index, radius);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} datasetIndex\n\t * @param {number} hoverRadius\n\t * @description 데이터셋의 Point Hover Radius를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t */\n\tpublic setPointHoverRadius(datasetIndex: number, hoverRadius: number): this {\n\t\tif (this.datasets && this.datasets[datasetIndex]) {\n\t\t\t(this.datasets[datasetIndex] as any).pointHoverRadius = hoverRadius;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t *\n\t * @param {number} hoverRadius\n\t * @description 모든 데이터셋의 Point Hover Radius를 설정합니다.\n\t * @Since 1.0.0\n\t * @category dataset\n\t *\n\t */\n\tpublic setAllPointHoverRadius(hoverRadius: number): this {\n\t\tif (this.datasets) {\n\t\t\tthis.datasets.forEach((dataset, index) => {\n\t\t\t\tthis.setPointHoverRadius(index, hoverRadius);\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n}\n","import { LoggerConfig } from './utils/Logger';\nimport { ChartWrapper as _ChartWrapper } from './ChartWrapper';\nimport { CartesianChartWrapper as _CartesianChartWrapper } from './CartesianChartWrapper';\nimport { BarChartWrapper as _BarChartWrapper } from './BarChartWrapper';\nimport { LineChartWrapper as _LineChartWrapper } from './LineChartWrapper';\nimport * as Types from './types/commonTypes';\nimport * as LocalDefaults from './defaults';\nexport { ChartWrapper } from './ChartWrapper';\nexport { CartesianChartWrapper } from './CartesianChartWrapper';\nexport { BarChartWrapper } from './BarChartWrapper';\nexport { LineChartWrapper } from './LineChartWrapper';\nexport { ChartFactory } from './registry/ChartFactory';\nexport { ChartInstance } from './registry/ChartInstance';\nexport * from './types/commonTypes';\nexport * from './types/plugins/zoomType';\nexport * from './types/plugins/DataLabels';\nexport * from './types/chart/ChartTypes';\nexport * from './types/util/utilType';\nexport * from './defaults';\n\nexport const ChartToolBox = {\n\tsetErrorLog(enabled: boolean) {\n\t\tLoggerConfig.errorLogging = enabled;\n\t},\n\tsetDebugLog(enabled: boolean) {\n\t\tLoggerConfig.debugLogging = enabled;\n\t},\n};\n\nexport const T$ = {\n\tcreate: _ChartWrapper.create.bind(_ChartWrapper),\n\tregister: _ChartWrapper.register.bind(_ChartWrapper),\n\tChartWrapper: _ChartWrapper,\n\tCartesianChartWrapper: _CartesianChartWrapper,\n\tBarChartWrapper: _BarChartWrapper,\n\tLineChartWrapper: _LineChartWrapper,\n\tdefaultTypes: Types,\n\tdefaultsOptions: LocalDefaults,\n\ttoolBox: ChartToolBox,\n} as const;\n\nexport default T$;\n"],"names":["_ChartWrapper","_CartesianChartWrapper","_BarChartWrapper","_LineChartWrapper"],"mappings":"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","x_google_ignoreList":[4]}
|