@bwg-ui/core 1.1.26 → 1.1.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/chunks/common-components-3AGyXNkY.cjs +183 -0
  2. package/dist/chunks/common-components-CSaGU_Fk.js +15782 -0
  3. package/dist/chunks/{core-BBMCFpHx.js → core-CTXWuoUa.js} +1 -2
  4. package/dist/chunks/core-Cp0Uyip7.cjs +1 -0
  5. package/dist/chunks/{enc-base64-DAsYWbA2.js → enc-base64-ClENPele.js} +4 -5
  6. package/dist/chunks/enc-base64-CvKQ-yW8.cjs +1 -0
  7. package/dist/chunks/sha256-Dl_QPg4b.cjs +1 -0
  8. package/dist/chunks/{sha256-D80RpYO2.js → sha256-DxfJD4fu.js} +12 -13
  9. package/dist/components/common/BwgEditor.d.ts.map +1 -1
  10. package/dist/components/common/BwgPagination.d.ts +1 -1
  11. package/dist/components/common/BwgPagination.d.ts.map +1 -1
  12. package/dist/components/common/index.cjs +1 -2
  13. package/dist/components/common/index.d.ts +3 -1
  14. package/dist/components/common/index.d.ts.map +1 -1
  15. package/dist/components/common/index.js +16 -17
  16. package/dist/components/core/index.cjs +1 -2
  17. package/dist/components/core/index.js +1218 -23
  18. package/dist/components/guide/index.cjs +1 -2
  19. package/dist/components/guide/index.js +1 -2
  20. package/dist/components/layout/index.cjs +35 -2
  21. package/dist/components/layout/index.js +350 -10
  22. package/dist/components/popup/MenuReport.d.ts.map +1 -1
  23. package/dist/index.cjs +1 -2
  24. package/dist/index.js +211 -222
  25. package/dist/provider/index.cjs +1 -2
  26. package/dist/provider/index.js +384 -25
  27. package/dist/stores/index.cjs +2 -2
  28. package/dist/stores/index.js +1394 -24
  29. package/dist/utils/index.cjs +1 -2
  30. package/dist/utils/index.js +1369 -200
  31. package/package.json +1 -1
  32. package/dist/chunks/AuthContext-BQ3gHLbr.cjs +0 -2
  33. package/dist/chunks/AuthContext-BQ3gHLbr.cjs.map +0 -1
  34. package/dist/chunks/AuthContext-CVizgYxY.js +0 -57
  35. package/dist/chunks/AuthContext-CVizgYxY.js.map +0 -1
  36. package/dist/chunks/BwgSpace-BPJARdOc.js +0 -27
  37. package/dist/chunks/BwgSpace-BPJARdOc.js.map +0 -1
  38. package/dist/chunks/BwgSpace-Cw27d-XU.cjs +0 -2
  39. package/dist/chunks/BwgSpace-Cw27d-XU.cjs.map +0 -1
  40. package/dist/chunks/BwgSwitch-BLtVdW44.cjs +0 -2
  41. package/dist/chunks/BwgSwitch-BLtVdW44.cjs.map +0 -1
  42. package/dist/chunks/BwgSwitch-DdHo4gYR.js +0 -269
  43. package/dist/chunks/BwgSwitch-DdHo4gYR.js.map +0 -1
  44. package/dist/chunks/BwgUploader-BUmFmeuS.js +0 -3250
  45. package/dist/chunks/BwgUploader-BUmFmeuS.js.map +0 -1
  46. package/dist/chunks/BwgUploader-Djhl4lIt.cjs +0 -3
  47. package/dist/chunks/BwgUploader-Djhl4lIt.cjs.map +0 -1
  48. package/dist/chunks/LoadingOverlay-Uf6xy04v.js +0 -19
  49. package/dist/chunks/LoadingOverlay-Uf6xy04v.js.map +0 -1
  50. package/dist/chunks/LoadingOverlay-jdMzdB-z.cjs +0 -2
  51. package/dist/chunks/LoadingOverlay-jdMzdB-z.cjs.map +0 -1
  52. package/dist/chunks/SSOHandler-CR0nR3rJ.js +0 -28654
  53. package/dist/chunks/SSOHandler-CR0nR3rJ.js.map +0 -1
  54. package/dist/chunks/SSOHandler-DQG0Jp4V.cjs +0 -237
  55. package/dist/chunks/SSOHandler-DQG0Jp4V.cjs.map +0 -1
  56. package/dist/chunks/ScreenProtectContext-BMsPPcTX.js +0 -154
  57. package/dist/chunks/ScreenProtectContext-BMsPPcTX.js.map +0 -1
  58. package/dist/chunks/ScreenProtectContext-DrCGlcTs.cjs +0 -2
  59. package/dist/chunks/ScreenProtectContext-DrCGlcTs.cjs.map +0 -1
  60. package/dist/chunks/SearchBoxContext-DY6lES-W.cjs +0 -2
  61. package/dist/chunks/SearchBoxContext-DY6lES-W.cjs.map +0 -1
  62. package/dist/chunks/SearchBoxContext-Dtzo_rJd.js +0 -86
  63. package/dist/chunks/SearchBoxContext-Dtzo_rJd.js.map +0 -1
  64. package/dist/chunks/ViewContainer-BfiTFvLP.cjs +0 -36
  65. package/dist/chunks/ViewContainer-BfiTFvLP.cjs.map +0 -1
  66. package/dist/chunks/ViewContainer-CTl3_56W.js +0 -338
  67. package/dist/chunks/ViewContainer-CTl3_56W.js.map +0 -1
  68. package/dist/chunks/apiUtils-D9Vn1gwZ.cjs +0 -3
  69. package/dist/chunks/apiUtils-D9Vn1gwZ.cjs.map +0 -1
  70. package/dist/chunks/apiUtils-DPUgfmKk.js +0 -1450
  71. package/dist/chunks/apiUtils-DPUgfmKk.js.map +0 -1
  72. package/dist/chunks/codeStore-BrCfe9K3.js +0 -450
  73. package/dist/chunks/codeStore-BrCfe9K3.js.map +0 -1
  74. package/dist/chunks/codeStore-_b2fDZtD.cjs +0 -2
  75. package/dist/chunks/codeStore-_b2fDZtD.cjs.map +0 -1
  76. package/dist/chunks/core-BBMCFpHx.js.map +0 -1
  77. package/dist/chunks/core-CM9MsJRf.cjs +0 -2
  78. package/dist/chunks/core-CM9MsJRf.cjs.map +0 -1
  79. package/dist/chunks/enc-base64-DAsYWbA2.js.map +0 -1
  80. package/dist/chunks/enc-base64-DbK5VBfD.cjs +0 -2
  81. package/dist/chunks/enc-base64-DbK5VBfD.cjs.map +0 -1
  82. package/dist/chunks/favoriteStore-BnQ2u-sa.cjs +0 -2
  83. package/dist/chunks/favoriteStore-BnQ2u-sa.cjs.map +0 -1
  84. package/dist/chunks/favoriteStore-SyAjqLG8.js +0 -439
  85. package/dist/chunks/favoriteStore-SyAjqLG8.js.map +0 -1
  86. package/dist/chunks/popupStore-BrKcPw7K.js +0 -92
  87. package/dist/chunks/popupStore-BrKcPw7K.js.map +0 -1
  88. package/dist/chunks/popupStore-ChbYTqy1.cjs +0 -2
  89. package/dist/chunks/popupStore-ChbYTqy1.cjs.map +0 -1
  90. package/dist/chunks/realFormat-Cha7OTd9.cjs +0 -2
  91. package/dist/chunks/realFormat-Cha7OTd9.cjs.map +0 -1
  92. package/dist/chunks/realFormat-DRGLFabQ.js +0 -305
  93. package/dist/chunks/realFormat-DRGLFabQ.js.map +0 -1
  94. package/dist/chunks/sha256-BnWVPP1K.cjs +0 -2
  95. package/dist/chunks/sha256-BnWVPP1K.cjs.map +0 -1
  96. package/dist/chunks/sha256-D80RpYO2.js.map +0 -1
  97. package/dist/chunks/usePopup-DnfKRiYs.js +0 -109
  98. package/dist/chunks/usePopup-DnfKRiYs.js.map +0 -1
  99. package/dist/chunks/usePopup-Domnpg55.cjs +0 -2
  100. package/dist/chunks/usePopup-Domnpg55.cjs.map +0 -1
  101. package/dist/components/common/index.cjs.map +0 -1
  102. package/dist/components/common/index.js.map +0 -1
  103. package/dist/components/core/index.cjs.map +0 -1
  104. package/dist/components/core/index.js.map +0 -1
  105. package/dist/components/guide/index.cjs.map +0 -1
  106. package/dist/components/guide/index.js.map +0 -1
  107. package/dist/components/layout/index.cjs.map +0 -1
  108. package/dist/components/layout/index.js.map +0 -1
  109. package/dist/index.cjs.map +0 -1
  110. package/dist/index.js.map +0 -1
  111. package/dist/provider/index.cjs.map +0 -1
  112. package/dist/provider/index.js.map +0 -1
  113. package/dist/stores/index.cjs.map +0 -1
  114. package/dist/stores/index.js.map +0 -1
  115. package/dist/utils/index.cjs.map +0 -1
  116. package/dist/utils/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"codeStore-_b2fDZtD.cjs","sources":["../../src/stores/codeStore.ts"],"sourcesContent":["import { create } from 'zustand';\r\nimport { persist } from 'zustand/middleware';\r\nimport { callService } from '../utils/apiUtils';\r\nimport { getServiceCode } from '../utils/serviceConfig';\r\n\r\n// 공통코드 관련 타입 정의\r\n\r\n// 서버 응답의 개별 코드 아이템 (실제 SCMSIGN00301 서비스 응답 구조)\r\nexport interface ServerCodeItem {\r\n cmmnCdGrp: string; // 그룹 코드\r\n cmmnCd: string; // 공통 코드\r\n cmmnCdNm: string; // 공통 코드명\r\n cmmnCdClr: string | null; // 공통 코드 컬러\r\n syscdYn: string; // 시스템 코드 여부\r\n sortOrd: string | null; // 정렬 순서\r\n enblYn: string; // 사용 여부\r\n}\r\n\r\n// 서버 응답의 개별 옵션 아이템 (실제 SCMSIGN00301 서비스 응답 구조)\r\nexport interface ServerOptionItem {\r\n cmmnCdGrp: string; // 그룹 코드\r\n cmmnCd: string; // 공통 코드\r\n cmmnCdClr: string | null; // 공통 코드 컬러\r\n optnCd: string; // 옵션 코드\r\n optnNm: string; // 옵션명\r\n syscdYn: string; // 시스템 코드 여부\r\n sortOrd: string | null; // 정렬 순서\r\n enblYn: string; // 사용 여부\r\n}\r\n\r\n// SCMSIGN00301 서비스 응답 구조\r\nexport interface ServerCommonCodeResponse {\r\n code: ServerCodeItem[]; // 공통코드 목록\r\n opt: ServerOptionItem[]; // 옵션 목록\r\n}\r\n\r\n// 클라이언트에서 사용할 코드 아이템 (실제 응답 구조 반영)\r\nexport interface CodeItem {\r\n codeValue: string; // 공통 코드 (cmmnCd)\r\n codeNm: string; // 공통 코드명 (cmmnCdNm)\r\n groupCode: string; // 그룹 코드 (cmmnCdGrp)\r\n commonCode: string; // 공통 코드 (cmmnCd)\r\n labelColor: string | null; // 라벨 컬러 (cmmnCdClr)\r\n systemCodeYn: string; // 시스템 코드 여부 (syscdYn)\r\n sortOrder: number; // 정렬 순서 (sortOrd)\r\n enabled: boolean; // 사용 여부 (enblYn === 'Y')\r\n options: Record<string, any> | null; // 옵션 (optnCd: optnNm 형태)\r\n originalData: ServerCodeItem; // 원본 데이터\r\n}\r\n\r\n// 코드 그룹 (그룹코드별로 정리된 상세코드들)\r\nexport interface CodeGroup {\r\n [codeValue: string]: CodeItem;\r\n}\r\n\r\n// 전체 공통코드 구조\r\nexport interface CommonCodeData {\r\n [groupCode: string]: CodeGroup;\r\n}\r\n\r\n// 단순화된 코드 아이템 (getCodeList용)\r\nexport interface SimpleCodeItem {\r\n label: string; // codeNm\r\n value: string; // codeValue\r\n tagColor?: string | null; // labelColor\r\n}\r\n\r\n// 공통코드 응답 타입\r\nexport interface CommonCodeResponse {\r\n codeList: CommonCodeData;\r\n}\r\n\r\n// 기본 스토어 상태 (공통 속성)\r\nexport interface BaseStoreState {\r\n codeData: CommonCodeData | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n lastUpdated: Date | null;\r\n fetchCommonCodes: () => Promise<void>;\r\n clearCodes: () => void;\r\n}\r\n\r\n// 1. CODE 스토어 - 그룹코드별 상세코드 목록과 코드명 관리\r\nexport interface CodeStoreState extends BaseStoreState {\r\n // 1. 통합된 코드 목록 조회 (그룹코드 필수, 옵션으로 필터링)\r\n getCodeList: (\r\n groupCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n excludeParentCode?: boolean;\r\n }\r\n ) => SimpleCodeItem[];\r\n // 2. 코드를 던졌을 때 코드명을 리턴\r\n getCodeName: (codeValue: string) => string | null;\r\n // 3. 코드를 던졌을 때 라벨 컬러를 리턴\r\n getCodeColor: (codeValue: string) => string | null;\r\n // 3. 옵션값으로 코드를 조회\r\n getCodeByOption: (\r\n groupCode: string,\r\n optionKey: string,\r\n optionValue: string\r\n ) => CodeItem[];\r\n // 4. 옵션코드별로 코드 목록 조회 (SimpleCodeItem 형태로 반환)\r\n getCodeListByOption: (\r\n groupCode: string,\r\n optionCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n }\r\n ) => SimpleCodeItem[];\r\n // 5. 그룹코드 목록 조회\r\n getAvailableGroupCodes: () => string[];\r\n // 6. 그리드 lookup용 데이터 반환 (labels, values 배열, lookupDisplay 포함)\r\n getGridLookup: (groupCode: string) => {\r\n labels: string[];\r\n values: string[];\r\n lookupDisplay: boolean;\r\n };\r\n}\r\n\r\n// 2. OPTION 스토어 - 옵션값 관리\r\nexport interface OptionStoreState extends BaseStoreState {\r\n // 그룹코드와 옵션코드를 던졌을 때 상세코드의 옵션값을 리턴\r\n getOptionValue: (groupCode: string, optionCode: string) => any;\r\n // 특정 옵션 키의 값 가져오기\r\n getOptionByKey: (\r\n groupCode: string,\r\n optionCode: string,\r\n optionKey: string\r\n ) => any;\r\n}\r\n\r\n// 3. COLOR 스토어 - 코드/컬러 매핑 관리\r\nexport interface ColorStoreState extends BaseStoreState {\r\n // 코드를 던졌을 때 컬러코드를 리턴\r\n getColorCode: (codeValue: string) => string | null;\r\n // 코드/컬러 매핑 배열 가져오기\r\n getColorMapping: () => Array<{ code: string; color: string }>;\r\n}\r\n\r\n// 기존 CommonCodeState (하위 호환성을 위해 유지)\r\nexport interface CommonCodeState {\r\n // 데이터\r\n codeData: CommonCodeData | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n lastUpdated: Date | null;\r\n\r\n // 액션들\r\n fetchCommonCodes: () => Promise<void>;\r\n getCodeGroup: (codeGroup: string) => CodeGroup | null;\r\n getCodeItem: (codeGroup: string, codeValue: string) => CodeItem | null;\r\n getCodeList: (codeGroup: string) => CodeItem[];\r\n getCodeListByOption: (\r\n codeGroup: string,\r\n optionKey: string,\r\n optionValue: any\r\n ) => CodeItem[];\r\n getCodeListWithColor: (codeGroup: string) => CodeItem[];\r\n getAvailableGroupCodes: () => string[];\r\n getDetailCodeList: (groupCode: string, enabledOnly?: boolean) => CodeItem[];\r\n getDetailCodeName: (detailCode: string) => string | null;\r\n getDetailCodeColor: (detailCode: string) => string | null;\r\n clearCodes: () => void;\r\n}\r\n\r\n// 공통코드 컨텍스트 타입\r\nexport interface CommonCodeContextType {\r\n codeData: CommonCodeData | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n lastUpdated: Date | null;\r\n // 1. 통합된 코드 목록 조회 (그룹코드 필수, 옵션으로 필터링)\r\n getCodeList: (\r\n groupCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n excludeParentCode?: boolean;\r\n }\r\n ) => SimpleCodeItem[];\r\n // 2. 코드를 던졌을 때 코드명을 리턴\r\n getCodeName: (codeValue: string) => string | null;\r\n // 3. 코드를 던졌을 때 라벨 컬러를 리턴\r\n getCodeColor: (codeValue: string) => string | null;\r\n // 4. 옵션값으로 코드를 조회\r\n getCodeByOption: (\r\n groupCode: string,\r\n optionKey: string,\r\n optionValue: string\r\n ) => CodeItem[];\r\n // 5. 옵션코드별로 코드 목록 조회 (SimpleCodeItem 형태로 반환)\r\n getCodeListByOption: (\r\n groupCode: string,\r\n optionCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n }\r\n ) => SimpleCodeItem[];\r\n // 6. 그룹코드 목록 조회\r\n getAvailableGroupCodes: () => string[];\r\n // 7. 그리드 lookup용 데이터 반환 (labels, values 배열, lookupDisplay 포함)\r\n getGridLookup: (groupCode: string) => {\r\n labels: string[];\r\n values: string[];\r\n lookupDisplay: boolean;\r\n };\r\n refreshCodes: () => Promise<void>;\r\n}\r\n\r\n// 대규모 데이터셋 최적화를 위한 설정\r\nconst LARGE_DATASET_CONFIG = {\r\n CACHE_SIZE_LIMIT: 1000, // 캐시 크기 제한\r\n BATCH_SIZE: 100, // 배치 처리 크기\r\n DEBOUNCE_DELAY: 300, // 디바운스 지연시간\r\n MEMORY_THRESHOLD: 50 * 1024 * 1024, // 50MB 메모리 임계값\r\n};\r\n\r\n// 성능 최적화를 위한 캐시 관리 (대규모 데이터셋용)\r\ninterface OptimizedCacheManager {\r\n codeCache: Map<string, any>;\r\n nameCache: Map<string, string>;\r\n optionCache: Map<string, any>;\r\n colorCache: Map<string, string>;\r\n loadedGroups: Set<string>;\r\n cacheHits: Map<string, number>;\r\n clearCache: () => void;\r\n cleanupCache: () => void;\r\n isGroupLoaded: (groupCode: string) => boolean;\r\n markGroupLoaded: (groupCode: string) => void;\r\n}\r\n\r\nconst optimizedCacheManager: OptimizedCacheManager = {\r\n codeCache: new Map(),\r\n nameCache: new Map(),\r\n optionCache: new Map(),\r\n colorCache: new Map(),\r\n loadedGroups: new Set(),\r\n cacheHits: new Map(),\r\n\r\n clearCache() {\r\n this.codeCache.clear();\r\n this.nameCache.clear();\r\n this.optionCache.clear();\r\n this.colorCache.clear();\r\n this.loadedGroups.clear();\r\n this.cacheHits.clear();\r\n },\r\n\r\n cleanupCache() {\r\n // LRU 방식으로 캐시 정리\r\n const entries = Array.from(this.cacheHits.entries());\r\n entries.sort((a, b) => a[1] - b[1]);\r\n\r\n // 가장 적게 사용된 캐시 항목들 제거\r\n const toRemove = entries.slice(0, Math.floor(entries.length * 0.3));\r\n toRemove.forEach(([key]) => {\r\n this.codeCache.delete(key);\r\n this.nameCache.delete(key);\r\n this.optionCache.delete(key);\r\n this.colorCache.delete(key);\r\n this.cacheHits.delete(key);\r\n });\r\n },\r\n\r\n isGroupLoaded(groupCode: string) {\r\n return this.loadedGroups.has(groupCode);\r\n },\r\n\r\n markGroupLoaded(groupCode: string) {\r\n this.loadedGroups.add(groupCode);\r\n },\r\n};\r\n\r\n// 서버 응답을 클라이언트 형식으로 변환하는 함수 (실제 SCMSIGN00301 서비스 응답 구조 반영)\r\nconst transformServerResponse = (response: any): CommonCodeData => {\r\n console.log('대규모 데이터 변환 시작:', response);\r\n\r\n const codeData: CommonCodeData = {};\r\n\r\n // 실제 서비스 응답 구조: { code: [...], opt: [...] }\r\n if (response && response.code && Array.isArray(response.code)) {\r\n const codeList = response.code;\r\n const optionList = response.opt || [];\r\n\r\n // 옵션 데이터를 공통코드별로 그룹화\r\n const optionMap = new Map<string, any[]>();\r\n optionList.forEach((opt: any) => {\r\n if (opt.cmmnCd && opt.enblYn === 'Y') {\r\n if (!optionMap.has(opt.cmmnCd)) {\r\n optionMap.set(opt.cmmnCd, []);\r\n }\r\n optionMap.get(opt.cmmnCd)!.push(opt);\r\n }\r\n });\r\n\r\n // 공통코드 데이터를 그룹별로 정리\r\n codeList.forEach((item: any) => {\r\n if (item && item.cmmnCdGrp && item.cmmnCd && item.enblYn === 'Y') {\r\n const groupCode = item.cmmnCdGrp;\r\n\r\n // 그룹이 없으면 생성\r\n if (!codeData[groupCode]) {\r\n codeData[groupCode] = {};\r\n }\r\n\r\n // 해당 코드의 옵션들 찾기\r\n const codeOptions = optionMap.get(item.cmmnCd) || [];\r\n const options = codeOptions.reduce((acc: any, opt: any) => {\r\n if (opt.optnCd && opt.optnNm) {\r\n acc[opt.optnCd] = opt.optnNm;\r\n }\r\n return acc;\r\n }, {});\r\n\r\n // 코드 아이템 생성\r\n codeData[groupCode][item.cmmnCd] = {\r\n codeValue: item.cmmnCd,\r\n codeNm: item.cmmnCdNm,\r\n groupCode: item.cmmnCdGrp,\r\n commonCode: item.cmmnCd,\r\n labelColor: item.cmmnCdClr,\r\n systemCodeYn: item.syscdYn,\r\n sortOrder: parseInt(item.sortOrd) || 1,\r\n enabled: item.enblYn === 'Y',\r\n options: Object.keys(options).length > 0 ? options : null,\r\n originalData: item,\r\n };\r\n }\r\n });\r\n }\r\n\r\n console.log('대규모 데이터 변환 완료:', codeData);\r\n return codeData;\r\n};\r\n\r\n// 대규모 데이터를 관리하는 중앙 스토어\r\nconst useLargeDataStore = create<{\r\n codeData: CommonCodeData | null;\r\n isLoading: boolean;\r\n error: string | null;\r\n lastUpdated: Date | null;\r\n loadedGroups: Set<string>;\r\n fetchData: () => Promise<void>;\r\n loadSpecificGroup: (groupCode: string) => Promise<void>;\r\n setData: (data: CommonCodeData) => void;\r\n clearData: () => void;\r\n getLoadedGroups: () => string[];\r\n}>()(\r\n persist(\r\n (set, get) => ({\r\n codeData: null,\r\n isLoading: false,\r\n error: null,\r\n lastUpdated: null,\r\n loadedGroups: new Set(),\r\n\r\n fetchData: async () => {\r\n set({ isLoading: true, error: null });\r\n\r\n try {\r\n console.log('대규모 공통코드 데이터 가져오기 시작: SCMSIGN00301');\r\n\r\n const response = await callService(getServiceCode('SRCH_CODE'), {\r\n crprCd: '100',\r\n });\r\n\r\n console.log('대규모 공통코드 응답:', response);\r\n console.log('대규모 공통코드목록:', response.code);\r\n console.log('대규모 공통코드옵션션목록:', response.opt);\r\n\r\n const codeData = transformServerResponse(response);\r\n\r\n // 캐시 초기화\r\n optimizedCacheManager.clearCache();\r\n\r\n // 로드된 그룹들을 optimizedCacheManager에도 설정\r\n const loadedGroups = new Set(Object.keys(codeData));\r\n loadedGroups.forEach(groupCode => {\r\n optimizedCacheManager.markGroupLoaded(groupCode);\r\n });\r\n\r\n set({\r\n codeData,\r\n isLoading: false,\r\n error: null,\r\n lastUpdated: new Date(),\r\n loadedGroups,\r\n });\r\n\r\n console.log('대규모 공통코드 데이터 가져오기 완료');\r\n } catch (error) {\r\n console.error('대규모 공통코드 데이터 가져오기 실패:', error);\r\n set({\r\n isLoading: false,\r\n error:\r\n error instanceof Error\r\n ? error.message\r\n : '대규모 공통코드 데이터 가져오기 실패',\r\n });\r\n }\r\n },\r\n\r\n loadSpecificGroup: async (groupCode: string) => {\r\n const { codeData, loadedGroups } = get();\r\n if (!codeData || loadedGroups.has(groupCode)) return;\r\n\r\n // 특정 그룹만 로드 (필요시 서버에서 개별 요청)\r\n const newLoadedGroups = new Set(loadedGroups).add(groupCode);\r\n set({ loadedGroups: newLoadedGroups });\r\n optimizedCacheManager.markGroupLoaded(groupCode);\r\n },\r\n\r\n setData: (data: CommonCodeData) => {\r\n optimizedCacheManager.clearCache();\r\n\r\n // 로드된 그룹들을 optimizedCacheManager에도 설정\r\n const loadedGroups = new Set(Object.keys(data));\r\n loadedGroups.forEach(groupCode => {\r\n optimizedCacheManager.markGroupLoaded(groupCode);\r\n });\r\n\r\n set({\r\n codeData: data,\r\n lastUpdated: new Date(),\r\n loadedGroups,\r\n });\r\n },\r\n\r\n clearData: () => {\r\n optimizedCacheManager.clearCache();\r\n set({\r\n codeData: null,\r\n isLoading: false,\r\n error: null,\r\n lastUpdated: null,\r\n loadedGroups: new Set(),\r\n });\r\n },\r\n\r\n getLoadedGroups: () => {\r\n return Array.from(get().loadedGroups);\r\n },\r\n }),\r\n {\r\n name: 'large-data-storage',\r\n partialize: state => ({\r\n codeData: state.codeData,\r\n lastUpdated: state.lastUpdated,\r\n loadedGroups: Array.from(state.loadedGroups),\r\n }),\r\n }\r\n )\r\n);\r\n\r\n// 1. CODE 스토어 - 대규모 데이터 최적화\r\nexport const useCodeStore = create<CodeStoreState>()(\r\n persist(\r\n (set, get) => ({\r\n // 공통 데이터 스토어에서 상태 가져오기\r\n get codeData() {\r\n return useLargeDataStore.getState().codeData;\r\n },\r\n get isLoading() {\r\n return useLargeDataStore.getState().isLoading;\r\n },\r\n get error() {\r\n return useLargeDataStore.getState().error;\r\n },\r\n get lastUpdated() {\r\n return useLargeDataStore.getState().lastUpdated;\r\n },\r\n\r\n // 공통코드 가져오기 (중앙 스토어 사용)\r\n fetchCommonCodes: async () => {\r\n await useLargeDataStore.getState().fetchData();\r\n },\r\n\r\n // 1. 통합된 코드 목록 조회 (그룹코드 필수, 옵션으로 필터링)\r\n getCodeList: (\r\n groupCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n excludeParentCode?: boolean;\r\n }\r\n ): SimpleCodeItem[] => {\r\n const {\r\n enabledOnly = true,\r\n systemCodeOnly = false,\r\n sortByOrder = false,\r\n excludeParentCode = false,\r\n } = options || {};\r\n\r\n // 캐시 키 생성 (옵션 포함)\r\n const cacheKey = `simpleCodeList_${groupCode}_${enabledOnly}_${systemCodeOnly}_${sortByOrder}_${excludeParentCode}`;\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n // 그룹이 로드되었는지 확인 (데이터가 있으면 로드된 것으로 간주)\r\n if (\r\n !optimizedCacheManager.isGroupLoaded(groupCode) &&\r\n !codeData[groupCode]\r\n ) {\r\n console.warn(`그룹 ${groupCode}가 아직 로드되지 않았습니다.`);\r\n return [];\r\n }\r\n\r\n const detailCodes: CodeItem[] = [];\r\n\r\n // 해당 그룹만 처리하여 성능 최적화\r\n const group = codeData[groupCode];\r\n if (group) {\r\n Object.values(group).forEach(item => {\r\n // 사용여부 필터링\r\n if (enabledOnly && !item.enabled) return;\r\n\r\n // 시스템코드 필터링\r\n if (systemCodeOnly && item.systemCodeYn !== 'Y') return;\r\n\r\n // 부모코드 제외 옵션 처리\r\n if (excludeParentCode) {\r\n // 부모코드 길이 계산 (예: CMPRGR = 6자)\r\n const parentCodeLength = groupCode.length;\r\n\r\n // 자식코드만 추출 (부모코드 제외)\r\n const childCode = item.codeValue.substring(parentCodeLength);\r\n\r\n // 자식코드가 있는 경우만 추가\r\n if (childCode.length > 0) {\r\n detailCodes.push({\r\n ...item,\r\n codeValue: childCode, // 자식코드만 사용\r\n });\r\n }\r\n } else {\r\n detailCodes.push(item);\r\n }\r\n });\r\n }\r\n\r\n // 정렬\r\n let sortedCodes: CodeItem[];\r\n if (sortByOrder) {\r\n // 정렬순서로 정렬, 동일한 경우 코드값으로 정렬\r\n sortedCodes = detailCodes.sort((a, b) => {\r\n if (a.sortOrder !== b.sortOrder) {\r\n return a.sortOrder - b.sortOrder;\r\n }\r\n return a.codeValue.localeCompare(b.codeValue);\r\n });\r\n } else {\r\n // 코드값으로 정렬\r\n sortedCodes = detailCodes.sort((a, b) =>\r\n a.codeValue.localeCompare(b.codeValue)\r\n );\r\n }\r\n\r\n // SimpleCodeItem으로 변환\r\n const simpleCodes: SimpleCodeItem[] = sortedCodes.map(item => ({\r\n label: item.codeNm,\r\n value: item.codeValue,\r\n tagColor: item.labelColor,\r\n }));\r\n\r\n // 캐시 크기 제한 확인\r\n if (\r\n optimizedCacheManager.optionCache.size >=\r\n LARGE_DATASET_CONFIG.CACHE_SIZE_LIMIT\r\n ) {\r\n optimizedCacheManager.cleanupCache();\r\n }\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.optionCache.set(cacheKey, simpleCodes);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return simpleCodes;\r\n },\r\n\r\n // 2. 코드를 던졌을 때 코드명을 리턴 (대규모 최적화)\r\n getCodeName: (codeValue: string): string | null => {\r\n // 캐시 확인\r\n if (optimizedCacheManager.nameCache.has(codeValue)) {\r\n const hits =\r\n optimizedCacheManager.cacheHits.get(`name_${codeValue}`) || 0;\r\n optimizedCacheManager.cacheHits.set(`name_${codeValue}`, hits + 1);\r\n return optimizedCacheManager.nameCache.get(codeValue)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return null;\r\n\r\n // 전체 검색 대신 인덱스 활용 (실제 구현에서는 인덱스 테이블 사용)\r\n for (const group of Object.values(codeData)) {\r\n for (const item of Object.values(group)) {\r\n if (item.codeValue === codeValue) {\r\n // 캐시에 저장\r\n optimizedCacheManager.nameCache.set(codeValue, item.codeNm);\r\n optimizedCacheManager.cacheHits.set(`name_${codeValue}`, 1);\r\n return item.codeNm;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // 3. 코드를 던졌을 때 라벨 컬러를 리턴 (대규모 최적화)\r\n getCodeColor: (codeValue: string): string | null => {\r\n // 캐시 확인\r\n if (optimizedCacheManager.colorCache.has(codeValue)) {\r\n const hits =\r\n optimizedCacheManager.cacheHits.get(`color_${codeValue}`) || 0;\r\n optimizedCacheManager.cacheHits.set(`color_${codeValue}`, hits + 1);\r\n return optimizedCacheManager.colorCache.get(codeValue)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return null;\r\n\r\n // 전체 검색 대신 인덱스 활용 (실제 구현에서는 인덱스 테이블 사용)\r\n for (const group of Object.values(codeData)) {\r\n for (const item of Object.values(group)) {\r\n if (item.codeValue === codeValue) {\r\n // 캐시에 저장\r\n optimizedCacheManager.colorCache.set(\r\n codeValue,\r\n item.labelColor || ''\r\n );\r\n optimizedCacheManager.cacheHits.set(`color_${codeValue}`, 1);\r\n return item.labelColor;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // 4. 그리드 lookup용 데이터 반환 (labels, values 배열, lookupDisplay 포함)\r\n getGridLookup: (\r\n groupCode: string\r\n ): { labels: string[]; values: string[]; lookupDisplay: boolean } => {\r\n // 캐시 확인\r\n const cacheKey = `gridLookup_${groupCode}`;\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return { labels: [], values: [], lookupDisplay: true };\r\n\r\n const group = codeData[groupCode];\r\n if (!group) return { labels: [], values: [], lookupDisplay: true };\r\n\r\n const labels: string[] = [];\r\n const values: string[] = [];\r\n\r\n // 활성화된 코드만 필터링하여 순서대로 추가\r\n Object.values(group)\r\n .filter(item => item.enabled)\r\n .sort((a, b) => a.sortOrder - b.sortOrder)\r\n .forEach(item => {\r\n labels.push(item.codeNm);\r\n values.push(item.codeValue);\r\n });\r\n\r\n const result = { labels, values, lookupDisplay: true };\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.optionCache.set(cacheKey, result);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return result;\r\n },\r\n\r\n // 3. 옵션값으로 코드를 조회하는 새로운 메서드\r\n getCodeByOption: (\r\n groupCode: string,\r\n optionKey: string,\r\n optionValue: string\r\n ): CodeItem[] => {\r\n // 캐시 확인\r\n const cacheKey = `codeByOption_${groupCode}_${optionKey}_${optionValue}`;\r\n if (optimizedCacheManager.codeCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.codeCache.get(cacheKey)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n const matchedCodes: CodeItem[] = [];\r\n\r\n // 해당 그룹에서 옵션값이 일치하는 코드들 찾기\r\n const group = codeData[groupCode];\r\n if (group) {\r\n Object.values(group).forEach(item => {\r\n if (\r\n item.enabled &&\r\n item.options &&\r\n item.options[optionKey] === optionValue\r\n ) {\r\n // 옵션값을 코드명으로 대체하여 반환\r\n matchedCodes.push({\r\n ...item,\r\n codeNm: item.options[optionKey] || item.codeNm, // 옵션값을 코드명으로 사용\r\n });\r\n }\r\n });\r\n }\r\n\r\n const sortedCodes = matchedCodes.sort((a, b) =>\r\n a.codeValue.localeCompare(b.codeValue)\r\n );\r\n\r\n // 캐시 크기 제한 확인\r\n if (\r\n optimizedCacheManager.codeCache.size >=\r\n LARGE_DATASET_CONFIG.CACHE_SIZE_LIMIT\r\n ) {\r\n optimizedCacheManager.cleanupCache();\r\n }\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.codeCache.set(cacheKey, sortedCodes);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return sortedCodes;\r\n },\r\n\r\n // 6. 옵션코드별로 코드 목록 조회 (SimpleCodeItem 형태로 반환)\r\n getCodeListByOption: (\r\n groupCode: string,\r\n optionCode: string,\r\n options?: {\r\n enabledOnly?: boolean;\r\n systemCodeOnly?: boolean;\r\n sortByOrder?: boolean;\r\n }\r\n ): SimpleCodeItem[] => {\r\n const {\r\n enabledOnly = true,\r\n systemCodeOnly = false,\r\n sortByOrder = false,\r\n } = options || {};\r\n\r\n // 캐시 키 생성 (옵션 포함)\r\n const cacheKey = `codeListByOption_${groupCode}_${optionCode}_${enabledOnly}_${systemCodeOnly}_${sortByOrder}`;\r\n if (optimizedCacheManager.codeCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.codeCache.get(\r\n cacheKey\r\n ) as SimpleCodeItem[];\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n // 그룹이 로드되었는지 확인 (데이터가 있으면 로드된 것으로 간주)\r\n if (\r\n !optimizedCacheManager.isGroupLoaded(groupCode) &&\r\n !codeData[groupCode]\r\n ) {\r\n console.warn(`그룹 ${groupCode}가 아직 로드되지 않았습니다.`);\r\n return [];\r\n }\r\n\r\n const matchedCodes: SimpleCodeItem[] = [];\r\n\r\n const group = codeData[groupCode];\r\n if (group) {\r\n Object.values(group).forEach(item => {\r\n // 사용여부 필터링\r\n if (enabledOnly && !item.enabled) return;\r\n\r\n // 시스템코드 필터링\r\n if (systemCodeOnly && item.systemCodeYn !== 'Y') return;\r\n\r\n // 해당 옵션코드가 있는지 확인\r\n if (item.options && item.options[optionCode]) {\r\n // SimpleCodeItem 형태로 변환\r\n matchedCodes.push({\r\n label: item.options[optionCode], // optnNm 값\r\n value: item.commonCode, // 공통코드값\r\n tagColor: item.labelColor, // 라벨 컬러\r\n });\r\n }\r\n });\r\n }\r\n\r\n // 정렬\r\n let sortedCodes: SimpleCodeItem[];\r\n if (sortByOrder) {\r\n // 정렬순서로 정렬, 동일한 경우 코드값으로 정렬\r\n sortedCodes = matchedCodes.sort((a, b) => {\r\n // sortOrder는 원본 item에서 가져와야 하므로 임시로 코드값으로 정렬\r\n return a.value.localeCompare(b.value);\r\n });\r\n } else {\r\n // 코드값으로 정렬\r\n sortedCodes = matchedCodes.sort((a, b) =>\r\n a.value.localeCompare(b.value)\r\n );\r\n }\r\n\r\n // 캐시 크기 제한 확인\r\n if (\r\n optimizedCacheManager.codeCache.size >=\r\n LARGE_DATASET_CONFIG.CACHE_SIZE_LIMIT\r\n ) {\r\n optimizedCacheManager.cleanupCache();\r\n }\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.codeCache.set(cacheKey, sortedCodes);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return sortedCodes;\r\n },\r\n\r\n // 7. 그룹코드 목록 조회\r\n getAvailableGroupCodes: (): string[] => {\r\n const cacheKey = 'available_group_codes';\r\n if (optimizedCacheManager.nameCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return JSON.parse(optimizedCacheManager.nameCache.get(cacheKey)!);\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n const groupCodes = Object.keys(codeData).sort();\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.nameCache.set(\r\n cacheKey,\r\n JSON.stringify(groupCodes)\r\n );\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return groupCodes;\r\n },\r\n\r\n // 공통코드 초기화\r\n clearCodes: () => {\r\n useLargeDataStore.getState().clearData();\r\n },\r\n }),\r\n {\r\n name: 'code-storage',\r\n partialize: state => ({\r\n // 상태는 중앙 스토어에서 관리하므로 여기서는 저장하지 않음\r\n }),\r\n }\r\n )\r\n);\r\n\r\n// 2. OPTION 스토어 - 대규모 데이터 최적화\r\nexport const useOptionStore = create<OptionStoreState>()(\r\n persist(\r\n (set, get) => ({\r\n // 공통 데이터 스토어에서 상태 가져오기\r\n get codeData() {\r\n return useLargeDataStore.getState().codeData;\r\n },\r\n get isLoading() {\r\n return useLargeDataStore.getState().isLoading;\r\n },\r\n get error() {\r\n return useLargeDataStore.getState().error;\r\n },\r\n get lastUpdated() {\r\n return useLargeDataStore.getState().lastUpdated;\r\n },\r\n\r\n // 공통코드 가져오기 (중앙 스토어 사용)\r\n fetchCommonCodes: async () => {\r\n await useLargeDataStore.getState().fetchData();\r\n },\r\n\r\n // 그룹코드와 옵션코드를 던졌을 때 상세코드의 옵션값을 리턴 (대규모 최적화)\r\n getOptionValue: (groupCode: string, optionCode: string): any => {\r\n // 캐시 확인\r\n const cacheKey = `option_${groupCode}_${optionCode}`;\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey);\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return null;\r\n\r\n // 해당 그룹만 검색\r\n const group = codeData[groupCode];\r\n if (group && group[optionCode]) {\r\n const options = group[optionCode].options;\r\n optimizedCacheManager.optionCache.set(cacheKey, options);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n return options;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // 특정 옵션 키의 값 가져오기 (대규모 최적화)\r\n getOptionByKey: (\r\n groupCode: string,\r\n optionCode: string,\r\n optionKey: string\r\n ): any => {\r\n const cacheKey = `option_${groupCode}_${optionCode}_${optionKey}`;\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey);\r\n }\r\n\r\n const options = get().getOptionValue(groupCode, optionCode);\r\n const result = options ? options[optionKey] : null;\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.optionCache.set(cacheKey, result);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return result;\r\n },\r\n\r\n // 공통코드 초기화\r\n clearCodes: () => {\r\n useLargeDataStore.getState().clearData();\r\n },\r\n }),\r\n {\r\n name: 'option-storage',\r\n partialize: state => ({\r\n // 상태는 중앙 스토어에서 관리하므로 여기서는 저장하지 않음\r\n }),\r\n }\r\n )\r\n);\r\n\r\n// 3. COLOR 스토어 - 대규모 데이터 최적화\r\nexport const useColorStore = create<ColorStoreState>()(\r\n persist(\r\n (set, get) => ({\r\n // 공통 데이터 스토어에서 상태 가져오기\r\n get codeData() {\r\n return useLargeDataStore.getState().codeData;\r\n },\r\n get isLoading() {\r\n return useLargeDataStore.getState().isLoading;\r\n },\r\n get error() {\r\n return useLargeDataStore.getState().error;\r\n },\r\n get lastUpdated() {\r\n return useLargeDataStore.getState().lastUpdated;\r\n },\r\n\r\n // 공통코드 가져오기 (중앙 스토어 사용)\r\n fetchCommonCodes: async () => {\r\n await useLargeDataStore.getState().fetchData();\r\n },\r\n\r\n // 코드를 던졌을 때 컬러코드를 리턴 (대규모 최적화)\r\n getColorCode: (codeValue: string): string | null => {\r\n // 캐시 확인\r\n if (optimizedCacheManager.colorCache.has(codeValue)) {\r\n const hits =\r\n optimizedCacheManager.cacheHits.get(`color_${codeValue}`) || 0;\r\n optimizedCacheManager.cacheHits.set(`color_${codeValue}`, hits + 1);\r\n return optimizedCacheManager.colorCache.get(codeValue)!;\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return null;\r\n\r\n // 전체 검색 (실제 구현에서는 컬러 인덱스 테이블 사용)\r\n for (const group of Object.values(codeData)) {\r\n for (const item of Object.values(group)) {\r\n if (item.codeValue === codeValue) {\r\n // 캐시에 저장\r\n optimizedCacheManager.colorCache.set(\r\n codeValue,\r\n item.labelColor || ''\r\n );\r\n optimizedCacheManager.cacheHits.set(`color_${codeValue}`, 1);\r\n return item.labelColor;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n },\r\n\r\n // 코드/컬러 매핑 배열 가져오기 (대규모 최적화)\r\n getColorMapping: (): Array<{ code: string; color: string }> => {\r\n const cacheKey = 'color_mapping';\r\n if (optimizedCacheManager.optionCache.has(cacheKey)) {\r\n const hits = optimizedCacheManager.cacheHits.get(cacheKey) || 0;\r\n optimizedCacheManager.cacheHits.set(cacheKey, hits + 1);\r\n return optimizedCacheManager.optionCache.get(cacheKey);\r\n }\r\n\r\n const codeData = useLargeDataStore.getState().codeData;\r\n if (!codeData) return [];\r\n\r\n const colorMapping: Array<{ code: string; color: string }> = [];\r\n\r\n // 배치 처리로 메모리 사용량 최적화\r\n Object.values(codeData).forEach(group => {\r\n Object.values(group).forEach(item => {\r\n if (item.labelColor) {\r\n colorMapping.push({\r\n code: item.codeValue,\r\n color: item.labelColor,\r\n });\r\n }\r\n });\r\n });\r\n\r\n // 캐시에 저장\r\n optimizedCacheManager.optionCache.set(cacheKey, colorMapping);\r\n optimizedCacheManager.cacheHits.set(cacheKey, 1);\r\n\r\n return colorMapping;\r\n },\r\n\r\n // 공통코드 초기화\r\n clearCodes: () => {\r\n useLargeDataStore.getState().clearData();\r\n },\r\n }),\r\n {\r\n name: 'color-storage',\r\n partialize: state => ({\r\n // 상태는 중앙 스토어에서 관리하므로 여기서는 저장하지 않음\r\n }),\r\n }\r\n )\r\n);\r\n"],"names":["LARGE_DATASET_CONFIG","optimizedCacheManager","entries","a","b","key","groupCode","transformServerResponse","response","codeData","codeList","optionList","optionMap","opt","item","options","acc","useLargeDataStore","create","persist","set","get","callService","getServiceCode","loadedGroups","error","newLoadedGroups","data","state","useCodeStore","enabledOnly","systemCodeOnly","sortByOrder","excludeParentCode","cacheKey","hits","detailCodes","group","parentCodeLength","childCode","sortedCodes","simpleCodes","codeValue","labels","values","result","optionKey","optionValue","matchedCodes","optionCode","groupCodes","useOptionStore","useColorStore","colorMapping"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"core-BBMCFpHx.js","sources":["../../__vite-browser-external","../../node_modules/crypto-js/core.js"],"sourcesContent":["export default {}",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));"],"names":["__viteBrowserExternal","root","factory","module","this","CryptoJS","Math","undefined","crypto","global","require","require$$0","cryptoSecureRandomInt","create","F","obj","subtype","C","C_lib","Base","overrides","instance","properties","propertyName","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","i","thatByte","j","clone","nBytes","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","data","doFlush","processedWords","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","nWordsReady","nBytesReady","offset","cfg","messageUpdate","hash","hasher","message","key","C_algo"],"mappings":"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","x_google_ignoreList":[1]}
@@ -1,2 +0,0 @@
1
- "use strict";const p=require("./apiUtils-D9Vn1gwZ.cjs");function H(v){throw new Error('Could not dynamically require "'+v+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var y={exports:{}};const I={},W=Object.freeze(Object.defineProperty({__proto__:null,default:I},Symbol.toStringTag,{value:"Module"})),E=p.getAugmentedNamespace(W);var O=y.exports,S;function P(){return S||(S=1,(function(v,T){(function(g,c){v.exports=c()})(O,function(){var g=g||(function(c,C){var s;if(typeof window<"u"&&window.crypto&&(s=window.crypto),typeof self<"u"&&self.crypto&&(s=self.crypto),typeof globalThis<"u"&&globalThis.crypto&&(s=globalThis.crypto),!s&&typeof window<"u"&&window.msCrypto&&(s=window.msCrypto),!s&&typeof p.commonjsGlobal<"u"&&p.commonjsGlobal.crypto&&(s=p.commonjsGlobal.crypto),!s&&typeof H=="function")try{s=E}catch{}var R=function(){if(s){if(typeof s.getRandomValues=="function")try{return s.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof s.randomBytes=="function")try{return s.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")},z=Object.create||(function(){function t(){}return function(r){var e;return t.prototype=r,e=new t,t.prototype=null,e}})(),l={},d=l.lib={},f=d.Base=(function(){return{extend:function(t){var r=z(this);return t&&r.mixIn(t),(!r.hasOwnProperty("init")||this.init===r.init)&&(r.init=function(){r.$super.init.apply(this,arguments)}),r.init.prototype=r,r.$super=this,r},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var r in t)t.hasOwnProperty(r)&&(this[r]=t[r]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}}})(),u=d.WordArray=f.extend({init:function(t,r){t=this.words=t||[],r!=C?this.sigBytes=r:this.sigBytes=t.length*4},toString:function(t){return(t||q).stringify(this)},concat:function(t){var r=this.words,e=t.words,n=this.sigBytes,i=t.sigBytes;if(this.clamp(),n%4)for(var o=0;o<i;o++){var m=e[o>>>2]>>>24-o%4*8&255;r[n+o>>>2]|=m<<24-(n+o)%4*8}else for(var a=0;a<i;a+=4)r[n+a>>>2]=e[a>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=c.ceil(r/4)},clone:function(){var t=f.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var r=[],e=0;e<t;e+=4)r.push(R());return new u.init(r,t)}}),w=l.enc={},q=w.Hex={stringify:function(t){for(var r=t.words,e=t.sigBytes,n=[],i=0;i<e;i++){var o=r[i>>>2]>>>24-i%4*8&255;n.push((o>>>4).toString(16)),n.push((o&15).toString(16))}return n.join("")},parse:function(t){for(var r=t.length,e=[],n=0;n<r;n+=2)e[n>>>3]|=parseInt(t.substr(n,2),16)<<24-n%8*4;return new u.init(e,r/2)}},_=w.Latin1={stringify:function(t){for(var r=t.words,e=t.sigBytes,n=[],i=0;i<e;i++){var o=r[i>>>2]>>>24-i%4*8&255;n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var r=t.length,e=[],n=0;n<r;n++)e[n>>>2]|=(t.charCodeAt(n)&255)<<24-n%4*8;return new u.init(e,r)}},k=w.Utf8={stringify:function(t){try{return decodeURIComponent(escape(_.stringify(t)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(t){return _.parse(unescape(encodeURIComponent(t)))}},x=d.BufferedBlockAlgorithm=f.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(t){typeof t=="string"&&(t=k.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(t){var r,e=this._data,n=e.words,i=e.sigBytes,o=this.blockSize,m=o*4,a=i/m;t?a=c.ceil(a):a=c.max((a|0)-this._minBufferSize,0);var h=a*o,b=c.min(h*4,i);if(h){for(var B=0;B<h;B+=o)this._doProcessBlock(n,B);r=n.splice(0,h),e.sigBytes-=b}return new u.init(r,b)},clone:function(){var t=f.clone.call(this);return t._data=this._data.clone(),t},_minBufferSize:0});d.Hasher=x.extend({cfg:f.extend(),init:function(t){this.cfg=this.cfg.extend(t),this.reset()},reset:function(){x.reset.call(this),this._doReset()},update:function(t){return this._append(t),this._process(),this},finalize:function(t){t&&this._append(t);var r=this._doFinalize();return r},blockSize:16,_createHelper:function(t){return function(r,e){return new t.init(e).finalize(r)}},_createHmacHelper:function(t){return function(r,e){return new j.HMAC.init(t,e).finalize(r)}}});var j=l.algo={};return l})(Math);return g})})(y)),y.exports}exports.requireCore=P;
2
- //# sourceMappingURL=core-CM9MsJRf.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core-CM9MsJRf.cjs","sources":["../../__vite-browser-external","../../node_modules/crypto-js/core.js"],"sourcesContent":["export default {}",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));"],"names":["__viteBrowserExternal","root","factory","module","this","CryptoJS","Math","undefined","crypto","global","require","require$$0","cryptoSecureRandomInt","create","F","obj","subtype","C","C_lib","Base","overrides","instance","properties","propertyName","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","i","thatByte","j","clone","nBytes","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","BufferedBlockAlgorithm","data","doFlush","processedWords","dataWords","dataSigBytes","blockSize","blockSizeBytes","nBlocksReady","nWordsReady","nBytesReady","offset","cfg","messageUpdate","hash","hasher","message","key","C_algo"],"mappings":"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","x_google_ignoreList":[1]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"enc-base64-DAsYWbA2.js","sources":["../../node_modules/crypto-js/enc-base64.js"],"sourcesContent":[";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));"],"names":["root","factory","module","require$$0","this","CryptoJS","C","C_lib","WordArray","C_enc","wordArray","words","sigBytes","map","base64Chars","i","byte1","byte2","byte3","triplet","j","paddingChar","base64Str","base64StrLength","reverseMap","paddingIndex","parseLoop","nBytes","bits1","bits2","bitsCombined"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAC,KAAC,SAAUA,GAAMC,GAAS;AAGzB,MAAAC,YAA2BD,EAAQE,GAAiB;AAAA,IAUtD,GAAEC,GAAM,SAAUC,GAAU;AAE3B,cAAC,WAAY;AAET,YAAIC,IAAID,GACJE,IAAQD,EAAE,KACVE,IAAYD,EAAM,WAClBE,IAAQH,EAAE;AAKD,QAAAG,EAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAcxB,WAAW,SAAUC,GAAW;AAE5B,gBAAIC,IAAQD,EAAU,OAClBE,IAAWF,EAAU,UACrBG,IAAM,KAAK;AAGf,YAAAH,EAAU,MAAK;AAIf,qBADII,IAAc,CAAA,GACTC,IAAI,GAAGA,IAAIH,GAAUG,KAAK;AAO/B,uBANIC,IAASL,EAAMI,MAAM,CAAC,MAAa,KAAMA,IAAI,IAAK,IAAY,KAC9DE,IAASN,EAAOI,IAAI,MAAO,CAAC,MAAO,MAAOA,IAAI,KAAK,IAAK,IAAM,KAC9DG,IAASP,EAAOI,IAAI,MAAO,CAAC,MAAO,MAAOA,IAAI,KAAK,IAAK,IAAM,KAE9DI,IAAWH,KAAS,KAAOC,KAAS,IAAKC,GAEpCE,IAAI,GAAIA,IAAI,KAAOL,IAAIK,IAAI,OAAOR,GAAWQ;AAClD,gBAAAN,EAAY,KAAKD,EAAI,OAAQM,MAAa,KAAK,IAAIC,KAAO,EAAI,CAAC;AAKvE,gBAAIC,IAAcR,EAAI,OAAO,EAAE;AAC/B,gBAAIQ;AACA,qBAAOP,EAAY,SAAS;AACxB,gBAAAA,EAAY,KAAKO,CAAW;AAIpC,mBAAOP,EAAY,KAAK,EAAE;AAAA,UACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAeS,OAAO,SAAUQ,GAAW;AAExB,gBAAIC,IAAkBD,EAAU,QAC5BT,IAAM,KAAK,MACXW,IAAa,KAAK;AAEtB,gBAAI,CAACA,GAAY;AACT,cAAAA,IAAa,KAAK,cAAc,CAAA;AAChC,uBAASJ,IAAI,GAAGA,IAAIP,EAAI,QAAQO;AAC5B,gBAAAI,EAAWX,EAAI,WAAWO,CAAC,CAAC,IAAIA;AAAA,YAEzD;AAGa,gBAAIC,IAAcR,EAAI,OAAO,EAAE;AAC/B,gBAAIQ,GAAa;AACb,kBAAII,IAAeH,EAAU,QAAQD,CAAW;AAChD,cAAII,MAAiB,OACjBF,IAAkBE;AAAA,YAEvC;AAGa,mBAAOC,EAAUJ,GAAWC,GAAiBC,CAAU;AAAA,UAEpE;AAAA,UAES,MAAM;AAAA;AAGV,iBAASE,EAAUJ,GAAWC,GAAiBC,GAAY;AAGzD,mBAFIb,IAAQ,CAAA,GACRgB,IAAS,GACJZ,IAAI,GAAGA,IAAIQ,GAAiBR;AACjC,gBAAIA,IAAI,GAAG;AACP,kBAAIa,IAAQJ,EAAWF,EAAU,WAAWP,IAAI,CAAC,CAAC,KAAOA,IAAI,IAAK,GAC9Dc,IAAQL,EAAWF,EAAU,WAAWP,CAAC,CAAC,MAAO,IAAKA,IAAI,IAAK,GAC/De,IAAeF,IAAQC;AAC3B,cAAAlB,EAAMgB,MAAW,CAAC,KAAKG,KAAiB,KAAMH,IAAS,IAAK,GAC5DA;AAAA,YACf;AAEO,iBAAOnB,EAAU,OAAOG,GAAOgB,CAAM;AAAA,QAC5C;AAAA,MACA,GAAE,GAGMtB,EAAS,IAAI;AAAA,IAErB,CAAC;AAAA;;;;;;;","x_google_ignoreList":[0]}
@@ -1,2 +0,0 @@
1
- "use strict";const A=require("./apiUtils-D9Vn1gwZ.cjs"),b=require("./core-CM9MsJRf.cjs");function O(i,l){for(var c=0;c<l.length;c++){const a=l[c];if(typeof a!="string"&&!Array.isArray(a)){for(const f in a)if(f!=="default"&&!(f in i)){const u=Object.getOwnPropertyDescriptor(a,f);u&&Object.defineProperty(i,f,u.get?u:{enumerable:!0,get:()=>a[f]})}}}return Object.freeze(Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}))}var h={exports:{}},q=h.exports,x;function E(){return x||(x=1,(function(i,l){(function(c,a){i.exports=a(b.requireCore())})(q,function(c){return(function(){var a=c,f=a.lib,u=f.WordArray,m=a.enc;m.Base64={stringify:function(t){var s=t.words,o=t.sigBytes,n=this._map;t.clamp();for(var e=[],r=0;r<o;r+=3)for(var v=s[r>>>2]>>>24-r%4*8&255,g=s[r+1>>>2]>>>24-(r+1)%4*8&255,d=s[r+2>>>2]>>>24-(r+2)%4*8&255,C=v<<16|g<<8|d,p=0;p<4&&r+p*.75<o;p++)e.push(n.charAt(C>>>6*(3-p)&63));var B=n.charAt(64);if(B)for(;e.length%4;)e.push(B);return e.join("")},parse:function(t){var s=t.length,o=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var e=0;e<o.length;e++)n[o.charCodeAt(e)]=e}var r=o.charAt(64);if(r){var v=t.indexOf(r);v!==-1&&(s=v)}return y(t,s,n)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="};function y(t,s,o){for(var n=[],e=0,r=0;r<s;r++)if(r%4){var v=o[t.charCodeAt(r-1)]<<r%4*2,g=o[t.charCodeAt(r)]>>>6-r%4*2,d=v|g;n[e>>>2]|=d<<24-e%4*8,e++}return u.create(n,e)}})(),c.enc.Base64})})(h)),h.exports}var _=E();const w=A.getDefaultExportFromCjs(_),M=O({__proto__:null,default:w},[_]);exports.encBase64=M;
2
- //# sourceMappingURL=enc-base64-DbK5VBfD.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enc-base64-DbK5VBfD.cjs","sources":["../../node_modules/crypto-js/enc-base64.js"],"sourcesContent":[";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));"],"names":["root","factory","module","require$$0","this","CryptoJS","C","C_lib","WordArray","C_enc","wordArray","words","sigBytes","map","base64Chars","i","byte1","byte2","byte3","triplet","j","paddingChar","base64Str","base64StrLength","reverseMap","paddingIndex","parseLoop","nBytes","bits1","bits2","bitsCombined"],"mappings":"4fAAE,SAAUA,EAAMC,EAAS,CAGzBC,UAA2BD,EAAQE,EAAAA,aAAiB,CAUtD,GAAEC,EAAM,SAAUC,EAAU,CAE3B,OAAC,UAAY,CAET,IAAIC,EAAID,EACJE,EAAQD,EAAE,IACVE,EAAYD,EAAM,UAClBE,EAAQH,EAAE,IAKDG,EAAM,OAAS,CAcxB,UAAW,SAAUC,EAAW,CAE5B,IAAIC,EAAQD,EAAU,MAClBE,EAAWF,EAAU,SACrBG,EAAM,KAAK,KAGfH,EAAU,MAAK,EAIf,QADII,EAAc,CAAA,EACTC,EAAI,EAAGA,EAAIH,EAAUG,GAAK,EAO/B,QANIC,EAASL,EAAMI,IAAM,CAAC,IAAa,GAAMA,EAAI,EAAK,EAAY,IAC9DE,EAASN,EAAOI,EAAI,IAAO,CAAC,IAAO,IAAOA,EAAI,GAAK,EAAK,EAAM,IAC9DG,EAASP,EAAOI,EAAI,IAAO,CAAC,IAAO,IAAOA,EAAI,GAAK,EAAK,EAAM,IAE9DI,EAAWH,GAAS,GAAOC,GAAS,EAAKC,EAEpCE,EAAI,EAAIA,EAAI,GAAOL,EAAIK,EAAI,IAAOR,EAAWQ,IAClDN,EAAY,KAAKD,EAAI,OAAQM,IAAa,GAAK,EAAIC,GAAO,EAAI,CAAC,EAKvE,IAAIC,EAAcR,EAAI,OAAO,EAAE,EAC/B,GAAIQ,EACA,KAAOP,EAAY,OAAS,GACxBA,EAAY,KAAKO,CAAW,EAIpC,OAAOP,EAAY,KAAK,EAAE,CACvC,EAeS,MAAO,SAAUQ,EAAW,CAExB,IAAIC,EAAkBD,EAAU,OAC5BT,EAAM,KAAK,KACXW,EAAa,KAAK,YAEtB,GAAI,CAACA,EAAY,CACTA,EAAa,KAAK,YAAc,CAAA,EAChC,QAASJ,EAAI,EAAGA,EAAIP,EAAI,OAAQO,IAC5BI,EAAWX,EAAI,WAAWO,CAAC,CAAC,EAAIA,CAEzD,CAGa,IAAIC,EAAcR,EAAI,OAAO,EAAE,EAC/B,GAAIQ,EAAa,CACb,IAAII,EAAeH,EAAU,QAAQD,CAAW,EAC5CI,IAAiB,KACjBF,EAAkBE,EAEvC,CAGa,OAAOC,EAAUJ,EAAWC,EAAiBC,CAAU,CAEpE,EAES,KAAM,qEAGV,SAASE,EAAUJ,EAAWC,EAAiBC,EAAY,CAGzD,QAFIb,EAAQ,CAAA,EACRgB,EAAS,EACJZ,EAAI,EAAGA,EAAIQ,EAAiBR,IACjC,GAAIA,EAAI,EAAG,CACP,IAAIa,EAAQJ,EAAWF,EAAU,WAAWP,EAAI,CAAC,CAAC,GAAOA,EAAI,EAAK,EAC9Dc,EAAQL,EAAWF,EAAU,WAAWP,CAAC,CAAC,IAAO,EAAKA,EAAI,EAAK,EAC/De,EAAeF,EAAQC,EAC3BlB,EAAMgB,IAAW,CAAC,GAAKG,GAAiB,GAAMH,EAAS,EAAK,EAC5DA,GACf,CAEO,OAAOnB,EAAU,OAAOG,EAAOgB,CAAM,CAC5C,CACA,GAAE,EAGMtB,EAAS,IAAI,MAErB,CAAC","x_google_ignoreList":[0]}
@@ -1,2 +0,0 @@
1
- "use strict";const I=require("./apiUtils-D9Vn1gwZ.cjs"),v=require("zustand"),F=(d,o)=>({nodes:{},rootIds:[],loadedFor:void 0,loading:!1,error:void 0,treeNodes:[],isMenuBookmarked:e=>Object.values(o().nodes).some(r=>r.type==="M"&&r.menuId===e),getPrntBkmkIdByMenuId:e=>{const r=p(o().nodes,e);return r?o().nodes[r]?.prntBkmkId??"-":"-"},getNodeByMenuId:e=>{const r=p(o().nodes,e);if(!r)return null;const t=o().nodes[r];return t?.type==="M"?t:null},getFolderTree:e=>{const{nodes:r,rootIds:t}=o(),n=s=>e?s.toLowerCase().includes(e.toLowerCase()):!0,c=s=>{const i=r[s];if(!i||i.type!=="F")return null;const a=i,l=(a.children||[]).map(m=>r[m]).filter(m=>!!m&&m.type==="F").map(m=>c(m.bkmkId)).filter(Boolean);return n(a.bkmkNm)||l.length>0?{key:a.bkmkId,title:`📁 ${a.bkmkNm}`,children:l.length?l:void 0}:null};return t.map(s=>c(s)).filter(Boolean)},loadFavorites:async(e,r=!1)=>{console.log("loadFavorites ::::: ",e,r);const t=o();if(!(!r&&t.loadedFor===e&&Object.keys(t.nodes).length)){d({loading:!0,error:void 0});try{const n=await I.callService("SCMBKMK00101",{userId:e}),c=Array.isArray(n?.sub)?n.sub:[],s=O(c),i=f(s.nodes,s.rootIds);d({...s,treeNodes:i,loadedFor:e,loading:!1})}catch(n){throw d({loading:!1,error:n?.message||"즐겨찾기 로드 실패"}),n}}},loadFavoritesIfNeeded:async e=>{const r=o();(r.loadedFor!==e||Object.keys(r.nodes).length===0)&&await o().loadFavorites(e)},addNode:async e=>{const r=y(o()),t=w();d(n=>{const c=e.sortOrdr??h(n,e.prntBkmkId),s={...n,nodes:{...n.nodes,[t]:e.type==="F"?{bkmkId:t,type:"F",prntBkmkId:e.prntBkmkId||"-",sortOrdr:c,bkmkNm:e.bkmkNm??"새 폴더",children:[],sysCd:e.sysCd,userId:e.userId}:{bkmkId:t,type:"M",prntBkmkId:e.prntBkmkId,sortOrdr:c,menuId:e.menuId??"",menuNm:e.menuNm,sysCd:e.sysCd,userId:e.userId}},rootIds:n.rootIds.slice(),treeNodes:n.treeNodes};return S(s,t,e.prntBkmkId),s.treeNodes=f(s.nodes,s.rootIds),s});try{let n=t;const c=h(o(),e.prntBkmkId),s=await I.callService("SCMBKMK00102",{iudFlag:"I",type:e.type,sysCd:e.sysCd,userId:e.userId,bkmkId:t,bkmkNm:e.bkmkNm,prntBkmkId:e.prntBkmkId,menuId:e.menuId,sortOrdr:c,chngId:I.getUserId()});return n=String(s?.bkmkId??s?.itemId??t),d(i=>{const a=K(i,t,n);return{...a,treeNodes:f(a.nodes,a.rootIds)}}),n}catch(n){throw d(r),n}},moveNode:async({bkmkId:e,newPrntBkmkId:r,sortOrdr:t,userId:n})=>{const c=o(),s=structuredClone(c.nodes),i=[...c.rootIds],a=s[e];if(!a)return;if(r!=="-"){const k=s[r];if(!k||k.type!=="F")throw new Error("부모는 폴더만 가능합니다.")}const l=a.prntBkmkId??"-",u=l==="-"?i:s[l].children||=[];{const k=u.indexOf(e);k>=0&&u.splice(k,1)}const m=r==="-"?i:s[r].children||=[];m.splice(Math.max(0,Math.min(t,m.length)),0,e),a.prntBkmkId=r,d({nodes:s,rootIds:i}),B(s,i,r),B(s,i,l);try{await I.callService("SCMBKMK00104",{bkmkId:e,prntBkmkId:r,sortOrdr:t,chngId:n})}catch(k){throw d(c),k}},removeNode:async e=>{const r=y(o());d(t=>{if(!t.nodes[e])return t;const n={...t,nodes:{...t.nodes},rootIds:t.rootIds.slice(),treeNodes:t.treeNodes};return b(n,e),n.treeNodes=f(n.nodes,n.rootIds),n});try{await I.callService("SCMBKMK00103",{bkmkId:e})}catch(t){throw d(r),t}},editNode:async({bkmkId:e,userId:r,bkmkNm:t,prntBkmkId:n,sortOrdr:c})=>{const s=y(o());d(i=>{const a={...i,nodes:{...i.nodes}},l=a.nodes[e];return l?.type==="F"&&typeof t=="string"&&(a.nodes[e]={...l,bkmkNm:t}),a});try{await I.callService("SCMBKMK00102",{iudFlag:"U",userId:r,bkmkId:e,bkmkNm:t,prntBkmkId:n,sortOrdr:c,chngId:I.getUserId()})}catch(i){throw d(s),i}},addFolder:async(e,r,t,n)=>await o().addNode({type:"F",bkmkNm:e,prntBkmkId:r,sysCd:t,userId:n}),addMenuToFolder:async(e,r)=>p(o().nodes,r.menuId)?"이미 북마크에 저장된 메뉴입니다.":await o().addNode({type:"M",prntBkmkId:e,sysCd:"KH",userId:I.getUserId(),menuId:r.menuId,menuNm:r.menuNm}),toggleMenuFavorite:async(e,r)=>{const t=o(),n=Object.values(t.nodes).find(s=>s.type==="M"&&s.menuId===r.menuId);if(n){await o().removeNode(n.bkmkId);return}let c=N(t);c||(await o().loadFavorites(e,!0),c=N(o())),c&&await o().addNode({type:"M",prntBkmkId:c,sysCd:"KH",userId:I.getUserId(),menuId:r.menuId,menuNm:r.menuNm})},removeMenuByMenuId:async e=>{const r=o(),t=p(r.nodes,e);t&&await o().removeNode(t)},removeMenu:async e=>{await o().removeNode(e)},removeFolder:async e=>{await o().removeNode(e)},editFolder:async(e,r,t,n,c)=>{await o().editNode({bkmkId:e,userId:r,bkmkNm:t,prntBkmkId:n,sortOrdr:c})},convertToAntTreeData:(e,r,t,n=!1)=>{const c=i=>t?i.toLowerCase().includes(t.toLowerCase()):!0,s=i=>{const a=e[i];if(!a||n&&a.type!=="F")return null;if(a.type==="F"){const l=a,u=(l.children||[]).map(k=>s(k)).filter(Boolean);return c(l.bkmkNm)||u.length>0?{key:l.bkmkId,type:"F",title:`📁 ${l.bkmkNm}`,bkmkNm:l.bkmkNm,prntBkmkId:l.prntBkmkId,sortOrdr:l.sortOrdr,fullPath:l.fullPath,children:u.length?u:void 0}:null}else{const l=a,u=l.menuNm?`${l.menuNm} (${l.menuId})`:l.menuId;return c(u)?{key:l.bkmkId,type:"M",title:`📄 ${u}`,prntBkmkId:l.prntBkmkId,sortOrdr:l.sortOrdr,fullPath:l.fullPath,isLeaf:!0}:null}};return r.map(s).filter(Boolean)}}),M=v.create(F);function O(d){const o={},e=[],r=t=>{t.forEach(n=>{const c={type:n.type,bkmkId:n.bkmkId??n.BKMK_ID??n.id,prntBkmkId:n.prntBkmkId??n.PRNT_BKMK_ID??"-",sortOrdr:Number(n.sortOrdr??n.SORT_ORDR??0),sysCd:n.sysCd??n.SYS_CD,userId:n.userId??n.USER_ID,fullPath:n.fullPath??n.FULL_PATH};if(n.type==="F"){o[c.bkmkId]={...c,bkmkNm:n.bkmkNm??n.BKMK_NM??n.name??c.bkmkId,children:[]};const s=Array.isArray(n.children)?n.children:[];r(s)}else o[c.bkmkId]={...c,menuId:n.menuId??n.MENU_ID??"",menuNm:n.menuNm??n.MENU_NM}})};return r(d),Object.values(o).forEach(t=>{if(t.prntBkmkId&&t.prntBkmkId!=="-"){const n=o[t.prntBkmkId];n?.type==="F"&&n.children.push(t.bkmkId)}else t.type==="F"&&e.push(t.bkmkId)}),e.sort((t,n)=>(o[t].sortOrdr??0)-(o[n].sortOrdr??0)),Object.values(o).forEach(t=>{t.type==="F"&&t.children.sort((c,s)=>(o[c].sortOrdr??0)-(o[s].sortOrdr??0))}),{nodes:o,rootIds:e}}function y(d){return{...d,nodes:JSON.parse(JSON.stringify(d.nodes)),rootIds:d.rootIds.slice()}}function w(){return`tmp_${Math.random().toString(36).slice(2,10)}`}function h(d,o){if(!o||o==="-")return d.rootIds.length;const e=d.nodes[o];return e?e.children.length:0}function S(d,o,e){const r=d.nodes[o];if(r)if(e&&e!=="-"){const t=d.nodes[e];if(!t||t.type!=="F")return;r.prntBkmkId=e,t.children=[...t.children,o]}else r.prntBkmkId="-",d.rootIds=[...d.rootIds,o]}function C(d,o){const e=d.nodes[o];if(!e)return;const r=e.prntBkmkId;if(r&&r!=="-"){const t=d.nodes[r];t?.type==="F"&&(t.children=t.children.filter(n=>n!==o))}else d.rootIds=d.rootIds.filter(t=>t!==o)}function b(d,o){const e=d.nodes[o];if(!e)return;e.type==="F"&&e.children.slice().forEach(c=>b(d,c)),C(d,o);const{[o]:r,...t}=d.nodes;d.nodes=t}function K(d,o,e){if(o===e)return d;const r=d.nodes[o];if(!r)return d;const t=JSON.parse(JSON.stringify(r));t.bkmkId=e;const n={...d.nodes,[e]:t};delete n[o];let c=d.rootIds;if(t.prntBkmkId&&t.prntBkmkId!=="-"){const s=n[t.prntBkmkId];s?.type==="F"&&(n[t.prntBkmkId]={...s,children:s.children.map(i=>i===o?e:i)})}else c=d.rootIds.map(s=>s===o?e:s);return{...d,nodes:n,rootIds:c}}function N(d){return d.rootIds.find(o=>d.nodes[o]?.type==="F")??null}function f(d,o){const e={};Object.values(d).forEach(i=>{const a=i.bkmkId,l=i.prntBkmkId;!a||!l||l==="-"||l===a||(e[l]??=[]).push(a)});const r=new Set,t=i=>{if(r.has(i))return null;const a=d[i];if(!a)return null;r.add(i);try{if(a.type==="F"){const u=a,m=e[i]??[];return{type:"F",bkmkId:i,bkmkNm:u.bkmkNm,prntBkmkId:u.prntBkmkId,children:m.map(t).filter(Boolean)}}const l=a;return{type:"M",bkmkId:i,bkmkNm:l.menuNm,menuId:l.menuId,menuNm:l.menuNm,prntBkmkId:l.prntBkmkId}}finally{r.delete(i)}},n=Object.values(d).filter(i=>i.prntBkmkId==="-"&&i.type==="M").map(i=>i.bkmkId),c=Object.values(d).filter(i=>i.prntBkmkId==="-"&&i.type==="F").map(i=>i.bkmkId);return Array.from(new Set([...o,...n,...c])).map(t).filter(Boolean)}function p(d,o){for(const e of Object.values(d))if(e.type==="M"&&e.menuId===o)return e.bkmkId;return null}function B(d,o,e){(!e||e==="-"?o:d[e].children||[]).forEach((t,n)=>{const c=d[t];c&&(c.sortOrdr=n)})}exports.useFavoriteStore=M;
2
- //# sourceMappingURL=favoriteStore-BnQ2u-sa.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"favoriteStore-BnQ2u-sa.cjs","sources":["../../src/stores/favoriteStore.ts"],"sourcesContent":["// -------------------------------------------------------\r\n// 즐겨찾기(폴더형) Zustand Store (단일 테이블 CM_BKMK_MSTR 기반)\r\n// 공통 CRUD로 통합: addNode / moveNode / removeNode / editNode\r\n// 기존 API(폴더/메뉴 전용)는 호환용으로 래핑만 유지\r\n// - 정규화(nodes + rootIds)\r\n// - 낙관적 업데이트 + 임시ID(tmp_* → 서버ID) 스왑\r\n// - 필수 기능: 로드, 생성, 이동, 삭제, 수정 + 셀렉터/뷰 변환\r\n// -------------------------------------------------------\r\n\r\nimport { callService } from \"../utils/apiUtils\";\r\nimport { getUserId } from \"../utils/userUtils\";\r\nimport { DataNode } from \"antd/es/tree\";\r\nimport { create, StateCreator } from \"zustand\";\r\n\r\n// 🔧 공통 ID 타입\r\nexport type Id = string;\r\n\r\n/** 공통 베이스 (CM_BKMK_MSTR 매핑) */\r\nexport type BkmkBase = {\r\n type: \"F\" | \"M\"; // TYPE\r\n bkmkId: Id; // BKMK_ID\r\n prntBkmkId: Id | \"-\"; // PRNT_BKMK_ID ('-'=루트)\r\n sortOrdr: number; // SORT_ORDR\r\n sysCd?: string; // SYS_CD (옵션)\r\n userId?: string | null; // USER_ID (옵션)\r\n fullPath?: string; // 프론트 보조(옵션)\r\n};\r\n\r\n/** 폴더 노드 (BKMK_NM 사용) */\r\nexport type FolderNode = BkmkBase & {\r\n bkmkNm: string; // BKMK_NM (폴더 전용)\r\n children: Id[]; // 폴더/아이템 혼재(정규화용)\r\n};\r\n\r\n/** 아이템 노드 (메뉴 전용 메타) */\r\nexport type ItemNode = BkmkBase & {\r\n menuId: string; // MENU_ID\r\n menuNm?: string; // 프론트 보조(메뉴명)\r\n};\r\n\r\nexport type FavNode = FolderNode | ItemNode;\r\n\r\nexport type MovePayload = {\r\n bkmkId: Id;\r\n newPrntBkmkId: Id | \"-\";\r\n sortOrdr: number; // 새 부모 내 0-based\r\n userId: string | null;\r\n};\r\n\r\nexport type AddNodePayload = {\r\n type: \"F\" | \"M\";\r\n prntBkmkId: Id | \"-\";\r\n sysCd: string;\r\n userId: string | null;\r\n bkmkNm?: string; // F 전용\r\n menuId?: string; // M 전용\r\n menuNm?: string; // 프론트 보조\r\n sortOrdr?: number; // 선택: 지정 없으면 tailIndex 사용\r\n};\r\n\r\nexport type EditNodePayload = {\r\n bkmkId: Id;\r\n userId: string;\r\n bkmkNm?: string; // F일 때만 의미\r\n prntBkmkId?: Id | \"-\"; // 선택(이동은 moveNode 권장)\r\n sortOrdr?: number; // 선택\r\n};\r\n\r\nexport type Normalized = { nodes: Record<Id, FavNode>; rootIds: Id[] };\r\n\r\nexport type State = {\r\n // ========== 데이터(정규화) ==========\r\n nodes: Record<Id, FavNode>;\r\n rootIds: Id[];\r\n treeNodes: FavNode[]; // 단순 트리(뷰용)\r\n\r\n // ========== 메타 ==========\r\n loadedFor?: string;\r\n loading: boolean;\r\n error?: string;\r\n\r\n // ========== 셀렉터 ==========\r\n isMenuBookmarked: (menuId: string) => boolean;\r\n getPrntBkmkIdByMenuId: (menuId: string) => Id | \"-\";\r\n getNodeByMenuId: (menuId: string) => ItemNode | null;\r\n getFolderTree: (q?: string) => DataNode[]; // 폴더만 Tree (검색 필터)\r\n\r\n // ========== 로더 ==========\r\n loadFavorites: (userId: string, force?: boolean) => Promise<void>;\r\n loadFavoritesIfNeeded: (userId: string) => Promise<void>;\r\n\r\n // ========== 공통 CRUD ==========\r\n addNode: (p: AddNodePayload) => Promise<Id>;\r\n moveNode: (p: MovePayload) => Promise<void>;\r\n removeNode: (bkmkId: Id) => Promise<void>;\r\n editNode: (p: EditNodePayload) => Promise<void>;\r\n\r\n // ========== 호환용(기존 API 유지, 내부에서 공통 호출) ==========\r\n addFolder: (\r\n bkmkNm: string,\r\n prntBkmkId: Id | \"-\",\r\n sysCd: string,\r\n userId: string | null\r\n ) => Promise<Id>;\r\n addMenuToFolder: (\r\n folderBkmkId: Id,\r\n menu: { menuId: string; menuNm: string }\r\n ) => Promise<Id | string>;\r\n toggleMenuFavorite: (\r\n userId: string | null,\r\n menu: { menuId: string; menuNm: string }\r\n ) => Promise<void>;\r\n removeMenu: (bkmkId: Id) => Promise<void>;\r\n removeMenuByMenuId: (menuId: string) => Promise<void>;\r\n removeFolder: (folderBkmkId: Id) => Promise<void>;\r\n editFolder: (\r\n folderBkmkId: Id,\r\n userId: string | null,\r\n newBkmkNm?: string,\r\n prntBkmkId?: Id | \"-\",\r\n sortOrdr?: number\r\n ) => Promise<void>;\r\n convertToAntTreeData: (\r\n nodesMap: Record<string, FavNode>,\r\n rootIds: string[],\r\n q: string,\r\n onlyFolder?: boolean\r\n ) => any[];\r\n};\r\n\r\nconst creator: StateCreator<State> = (set, get) => ({\r\n nodes: {},\r\n rootIds: [],\r\n loadedFor: undefined,\r\n loading: false,\r\n error: undefined,\r\n treeNodes: [],\r\n\r\n // ====== 셀렉터 ======\r\n isMenuBookmarked: (menuId) =>\r\n Object.values(get().nodes).some(\r\n (n) => n.type === \"M\" && (n as ItemNode).menuId === menuId\r\n ),\r\n getPrntBkmkIdByMenuId: (menuId) => {\r\n const id = findItemByMenuId(get().nodes, menuId);\r\n return id ? get().nodes[id]?.prntBkmkId ?? \"-\" : \"-\";\r\n },\r\n\r\n getNodeByMenuId: (menuId) => {\r\n const nodeId = findItemByMenuId(get().nodes, menuId);\r\n if (!nodeId) return null;\r\n const node = get().nodes[nodeId];\r\n return node?.type === \"M\" ? (node as ItemNode) : null;\r\n },\r\n\r\n getFolderTree: (q) => {\r\n const { nodes, rootIds } = get();\r\n const match = (s: string) =>\r\n q ? s.toLowerCase().includes(q.toLowerCase()) : true;\r\n\r\n const make = (id: Id): DataNode | null => {\r\n const n = nodes[id];\r\n if (!n || n.type !== \"F\") return null;\r\n const folder = n as FolderNode;\r\n\r\n const kids = (folder.children || [])\r\n .map((cid) => nodes[cid])\r\n .filter((c): c is FolderNode => !!c && c.type === \"F\")\r\n .map((f) => make(f.bkmkId))\r\n .filter(Boolean) as DataNode[];\r\n\r\n const visible = match(folder.bkmkNm) || kids.length > 0;\r\n if (!visible) return null;\r\n\r\n return {\r\n key: folder.bkmkId,\r\n title: `📁 ${folder.bkmkNm}`,\r\n children: kids.length ? kids : undefined,\r\n };\r\n };\r\n\r\n return rootIds.map((rid) => make(rid)).filter(Boolean) as DataNode[];\r\n },\r\n\r\n // ====== 로더 ======\r\n loadFavorites: async (userId, force = false) => {\r\n console.log(\"loadFavorites ::::: \", userId, force);\r\n const s = get();\r\n if (!force && s.loadedFor === userId && Object.keys(s.nodes).length) return;\r\n\r\n set({ loading: true, error: undefined });\r\n try {\r\n // 기대 응답 예시: { sub: rawTree[] }\r\n const res = await callService(\"SCMBKMK00101\", { userId });\r\n const raw: any[] = Array.isArray(res?.sub) ? res.sub : [];\r\n const normalized = normalize(raw);\r\n\r\n const treeNodes = toSimpleTreeFromMap(\r\n normalized.nodes,\r\n normalized.rootIds\r\n );\r\n\r\n set({\r\n ...normalized,\r\n treeNodes,\r\n loadedFor: userId,\r\n loading: false,\r\n });\r\n } catch (e: any) {\r\n set({ loading: false, error: e?.message || \"즐겨찾기 로드 실패\" });\r\n throw e;\r\n }\r\n },\r\n\r\n loadFavoritesIfNeeded: async (userId) => {\r\n const s = get();\r\n const notLoaded =\r\n s.loadedFor !== userId || Object.keys(s.nodes).length === 0;\r\n if (notLoaded) {\r\n await get().loadFavorites(userId);\r\n }\r\n },\r\n\r\n // ====== 공통: 생성 ======\r\n addNode: async (p) => {\r\n const prev = snapshot(get());\r\n const tmp = tempId();\r\n\r\n // 1) 낙관적 반영\r\n set((s) => {\r\n const sort = p.sortOrdr ?? tailIndex(s, p.prntBkmkId);\r\n const next: State = {\r\n ...s,\r\n nodes: {\r\n ...s.nodes,\r\n [tmp]:\r\n p.type === \"F\"\r\n ? ({\r\n bkmkId: tmp,\r\n type: \"F\",\r\n prntBkmkId: p.prntBkmkId || \"-\",\r\n sortOrdr: sort,\r\n bkmkNm: p.bkmkNm ?? \"새 폴더\",\r\n children: [],\r\n sysCd: p.sysCd,\r\n userId: p.userId,\r\n } as FolderNode)\r\n : ({\r\n bkmkId: tmp,\r\n type: \"M\",\r\n prntBkmkId: p.prntBkmkId,\r\n sortOrdr: sort,\r\n menuId: p.menuId ?? \"\",\r\n menuNm: p.menuNm,\r\n sysCd: p.sysCd,\r\n userId: p.userId,\r\n } as ItemNode),\r\n },\r\n rootIds: s.rootIds.slice(),\r\n treeNodes: s.treeNodes,\r\n };\r\n attach(next, tmp, p.prntBkmkId);\r\n next.treeNodes = toSimpleTreeFromMap(next.nodes, next.rootIds);\r\n return next;\r\n });\r\n\r\n try {\r\n // 2) 서버 호출\r\n // 백엔드는 통합 IUD가 아닐 수 있으므로, 호환 분기 적용\r\n let real: string = tmp;\r\n const sortForServer = tailIndex(get(), p.prntBkmkId);\r\n const res = await callService(\"SCMBKMK00102\", {\r\n iudFlag: \"I\",\r\n type: p.type,\r\n sysCd: p.sysCd,\r\n userId: p.userId,\r\n bkmkId: tmp, // 서버 새 ID 반환 시 매칭용\r\n bkmkNm: p.bkmkNm,\r\n prntBkmkId: p.prntBkmkId,\r\n menuId: p.menuId,\r\n sortOrdr: sortForServer,\r\n chngId: getUserId(),\r\n });\r\n real = String(res?.bkmkId ?? res?.itemId ?? tmp);\r\n\r\n // 3) tmp → real 스왑\r\n set((s) => {\r\n const swapped = idSwapImmutable(s, tmp, real);\r\n return {\r\n ...swapped,\r\n treeNodes: toSimpleTreeFromMap(swapped.nodes, swapped.rootIds),\r\n };\r\n });\r\n return real;\r\n } catch (e) {\r\n set(prev);\r\n throw e;\r\n }\r\n },\r\n\r\n // ====== 공통: 이동 ======\r\n moveNode: async ({ bkmkId, newPrntBkmkId, sortOrdr, userId }) => {\r\n const prev = get(); // 함수 포함 스냅샷(rollback 용으로 set(prev) 사용)\r\n\r\n const nodes = structuredClone(prev.nodes);\r\n const rootIds = [...prev.rootIds];\r\n\r\n const node = nodes[bkmkId];\r\n if (!node) return;\r\n\r\n // 부모는 반드시 폴더만 허용\r\n if (newPrntBkmkId !== \"-\") {\r\n const parent = nodes[newPrntBkmkId];\r\n if (!parent || parent.type !== \"F\")\r\n throw new Error(\"부모는 폴더만 가능합니다.\");\r\n }\r\n\r\n const oldParentId = node.prntBkmkId ?? \"-\";\r\n\r\n const removeFrom =\r\n oldParentId === \"-\"\r\n ? rootIds\r\n : ((nodes[oldParentId] as FolderNode).children ||= []);\r\n {\r\n const idx = removeFrom.indexOf(bkmkId);\r\n if (idx >= 0) removeFrom.splice(idx, 1);\r\n }\r\n\r\n const insertTo =\r\n newPrntBkmkId === \"-\"\r\n ? rootIds\r\n : ((nodes[newPrntBkmkId] as FolderNode).children ||= []);\r\n insertTo.splice(\r\n Math.max(0, Math.min(sortOrdr, insertTo.length)),\r\n 0,\r\n bkmkId\r\n );\r\n\r\n node.prntBkmkId = newPrntBkmkId as Id;\r\n set({ nodes, rootIds });\r\n _resequence(nodes, rootIds, newPrntBkmkId);\r\n _resequence(nodes, rootIds, oldParentId);\r\n\r\n try {\r\n await callService(\"SCMBKMK00104\", {\r\n // 백엔드 명칭 호환\r\n bkmkId,\r\n prntBkmkId: newPrntBkmkId,\r\n sortOrdr,\r\n chngId: userId,\r\n });\r\n } catch (e) {\r\n set(prev);\r\n throw e;\r\n }\r\n },\r\n\r\n // ====== 공통: 삭제 ======\r\n removeNode: async (bkmkId) => {\r\n const prev = snapshot(get());\r\n\r\n set((s) => {\r\n if (!s.nodes[bkmkId]) return s as State;\r\n const next: State = {\r\n ...s,\r\n nodes: { ...s.nodes },\r\n rootIds: s.rootIds.slice(),\r\n treeNodes: s.treeNodes,\r\n };\r\n removeRecursively(next, bkmkId);\r\n next.treeNodes = toSimpleTreeFromMap(next.nodes, next.rootIds);\r\n return next;\r\n });\r\n\r\n try {\r\n await callService(\"SCMBKMK00103\", { bkmkId });\r\n } catch (e) {\r\n set(prev);\r\n throw e;\r\n }\r\n },\r\n\r\n // ====== 공통: 수정 ======\r\n editNode: async ({ bkmkId, userId, bkmkNm, prntBkmkId, sortOrdr }) => {\r\n const prev = snapshot(get());\r\n\r\n // 폴더명 변경만 프런트 즉시 반영(옵션)\r\n set((s) => {\r\n const next = { ...s, nodes: { ...s.nodes } } as State;\r\n const target = next.nodes[bkmkId] as FavNode | undefined;\r\n if (target?.type === \"F\" && typeof bkmkNm === \"string\") {\r\n next.nodes[bkmkId] = {\r\n ...(target as FolderNode),\r\n bkmkNm,\r\n } as FolderNode;\r\n }\r\n return next;\r\n });\r\n\r\n try {\r\n await callService(\"SCMBKMK00102\", {\r\n iudFlag: \"U\",\r\n userId,\r\n bkmkId,\r\n bkmkNm,\r\n prntBkmkId,\r\n sortOrdr,\r\n chngId: getUserId(),\r\n });\r\n } catch (e) {\r\n set(prev);\r\n throw e;\r\n }\r\n },\r\n\r\n // ====== 호환용 래퍼 ======\r\n addFolder: async (bkmkNm, prntBkmkId, sysCd, userId) => {\r\n return await get().addNode({\r\n type: \"F\",\r\n bkmkNm,\r\n prntBkmkId,\r\n sysCd,\r\n userId,\r\n });\r\n },\r\n\r\n addMenuToFolder: async (folderBkmkId, menu) => {\r\n // 전역 중복 방지\r\n const dup = findItemByMenuId(get().nodes, menu.menuId);\r\n if (dup) return \"이미 북마크에 저장된 메뉴입니다.\";\r\n return await get().addNode({\r\n type: \"M\",\r\n prntBkmkId: folderBkmkId,\r\n sysCd: \"KH\",\r\n userId: getUserId(),\r\n menuId: menu.menuId,\r\n menuNm: menu.menuNm,\r\n });\r\n },\r\n\r\n toggleMenuFavorite: async (userId, menu) => {\r\n const s = get();\r\n const exists = Object.values(s.nodes).find(\r\n (n) => n.type === \"M\" && (n as ItemNode).menuId === menu.menuId\r\n );\r\n if (exists) {\r\n await get().removeNode(exists.bkmkId);\r\n return;\r\n }\r\n\r\n let folderId = pickDefaultFolderId(s);\r\n if (!folderId) {\r\n await get().loadFavorites(userId, true);\r\n folderId = pickDefaultFolderId(get());\r\n }\r\n if (folderId) {\r\n await get().addNode({\r\n type: \"M\",\r\n prntBkmkId: folderId,\r\n sysCd: \"KH\",\r\n userId: getUserId(),\r\n menuId: menu.menuId,\r\n menuNm: menu.menuNm,\r\n });\r\n }\r\n },\r\n\r\n removeMenuByMenuId: async (menuId) => {\r\n const s = get();\r\n const bkmkId = findItemByMenuId(s.nodes, menuId);\r\n if (bkmkId) await get().removeNode(bkmkId);\r\n },\r\n\r\n removeMenu: async (bkmkId) => {\r\n await get().removeNode(bkmkId);\r\n },\r\n\r\n removeFolder: async (folderBkmkId) => {\r\n await get().removeNode(folderBkmkId);\r\n },\r\n\r\n editFolder: async (folderBkmkId, userId, newBkmkNm, prntBkmkId, sortOrdr) => {\r\n await get().editNode({\r\n bkmkId: folderBkmkId,\r\n userId,\r\n bkmkNm: newBkmkNm,\r\n prntBkmkId,\r\n sortOrdr,\r\n });\r\n },\r\n\r\n /** Ant Tree 데이터 변환 (검색 포함) */\r\n convertToAntTreeData: (nodesMap, rootIds, q, onlyFolder = false) => {\r\n const match = (s: string) =>\r\n q ? s.toLowerCase().includes(q.toLowerCase()) : true;\r\n\r\n const build = (id: string): any | null => {\r\n const n = nodesMap[id];\r\n if (!n) return null;\r\n\r\n if (onlyFolder && n.type !== \"F\") return null;\r\n\r\n if (n.type === \"F\") {\r\n const f = n as FolderNode;\r\n const children = (f.children || [])\r\n .map((cid) => build(cid))\r\n .filter(Boolean);\r\n const visible = match(f.bkmkNm) || children.length > 0;\r\n if (!visible) return null;\r\n return {\r\n key: f.bkmkId,\r\n type: \"F\",\r\n title: `📁 ${f.bkmkNm}`,\r\n bkmkNm: f.bkmkNm,\r\n prntBkmkId: f.prntBkmkId,\r\n sortOrdr: f.sortOrdr,\r\n fullPath: f.fullPath,\r\n children: children.length ? children : undefined,\r\n };\r\n } else {\r\n const i = n as ItemNode;\r\n const label = i.menuNm ? `${i.menuNm} (${i.menuId})` : i.menuId;\r\n const visible = match(label);\r\n if (!visible) return null;\r\n return {\r\n key: i.bkmkId,\r\n type: \"M\",\r\n title: `📄 ${label}`,\r\n prntBkmkId: i.prntBkmkId,\r\n sortOrdr: i.sortOrdr,\r\n fullPath: i.fullPath,\r\n isLeaf: true,\r\n };\r\n }\r\n };\r\n\r\n return rootIds.map(build).filter(Boolean);\r\n },\r\n});\r\n\r\nexport const useFavoriteStore = create<State>(creator);\r\n\r\n// ===================================================================\r\n// Helpers\r\n// ===================================================================\r\n\r\nfunction normalize(raw: any[]): Normalized {\r\n const nodes: Record<Id, FavNode> = {};\r\n const roots: Id[] = [];\r\n\r\n const walk = (arr: any[]) => {\r\n arr.forEach((r: any) => {\r\n // 서버 raw 필드: TYPE, BKMK_ID, PRNT_BKMK_ID, SORT_ORDR, BKMK_NM, MENU_ID, FULL_PATH?\r\n const base: BkmkBase = {\r\n type: r.type,\r\n bkmkId: r.bkmkId ?? r.BKMK_ID ?? r.id,\r\n prntBkmkId: r.prntBkmkId ?? r.PRNT_BKMK_ID ?? \"-\",\r\n sortOrdr: Number(r.sortOrdr ?? r.SORT_ORDR ?? 0),\r\n sysCd: r.sysCd ?? r.SYS_CD,\r\n userId: r.userId ?? r.USER_ID,\r\n fullPath: r.fullPath ?? r.FULL_PATH,\r\n };\r\n\r\n if (r.type === \"F\") {\r\n nodes[base.bkmkId] = {\r\n ...base,\r\n bkmkNm: r.bkmkNm ?? r.BKMK_NM ?? r.name ?? base.bkmkId,\r\n children: [],\r\n } as FolderNode;\r\n\r\n const children = Array.isArray(r.children) ? r.children : [];\r\n walk(children);\r\n } else {\r\n nodes[base.bkmkId] = {\r\n ...base,\r\n menuId: r.menuId ?? r.MENU_ID ?? \"\",\r\n menuNm: r.menuNm ?? r.MENU_NM,\r\n } as ItemNode;\r\n }\r\n });\r\n };\r\n\r\n walk(raw);\r\n\r\n // children / rootIds 구성\r\n Object.values(nodes).forEach((n) => {\r\n if (n.prntBkmkId && n.prntBkmkId !== \"-\") {\r\n const p = nodes[n.prntBkmkId] as FolderNode;\r\n if (p?.type === \"F\") p.children.push(n.bkmkId);\r\n } else if (n.type === \"F\") {\r\n roots.push(n.bkmkId);\r\n }\r\n });\r\n\r\n // 정렬 인덱스 보정(안전)\r\n roots.sort((a, b) => (nodes[a].sortOrdr ?? 0) - (nodes[b].sortOrdr ?? 0));\r\n Object.values(nodes).forEach((n) => {\r\n if (n.type === \"F\") {\r\n const f = n as FolderNode;\r\n f.children.sort(\r\n (A, B) => (nodes[A].sortOrdr ?? 0) - (nodes[B].sortOrdr ?? 0)\r\n );\r\n }\r\n });\r\n\r\n return { nodes, rootIds: roots };\r\n}\r\n\r\nfunction snapshot(s: State): State {\r\n return {\r\n ...s,\r\n nodes: JSON.parse(JSON.stringify(s.nodes)),\r\n rootIds: s.rootIds.slice(),\r\n };\r\n}\r\n\r\nfunction tempId(): Id {\r\n return `tmp_${Math.random().toString(36).slice(2, 10)}`;\r\n}\r\n\r\nfunction tailIndex(s: Pick<State, \"nodes\" | \"rootIds\">, parentId: Id | \"-\") {\r\n if (!parentId || parentId === \"-\") return s.rootIds.length;\r\n const p = s.nodes[parentId] as FolderNode | undefined;\r\n return p ? p.children.length : 0;\r\n}\r\n\r\nfunction attach(s: State, bkmkId: Id, parentId: Id | \"-\") {\r\n const n = s.nodes[bkmkId];\r\n if (!n) return;\r\n\r\n if (parentId && parentId !== \"-\") {\r\n const p = s.nodes[parentId] as FolderNode | undefined;\r\n if (!p || p.type !== \"F\") return;\r\n n.prntBkmkId = parentId;\r\n p.children = [...p.children, bkmkId];\r\n } else {\r\n n.prntBkmkId = \"-\";\r\n s.rootIds = [...s.rootIds, bkmkId];\r\n }\r\n}\r\n\r\nfunction detach(s: State, bkmkId: Id) {\r\n const n = s.nodes[bkmkId];\r\n if (!n) return;\r\n const pid = n.prntBkmkId;\r\n\r\n if (pid && pid !== \"-\") {\r\n const p = s.nodes[pid] as FolderNode | undefined;\r\n if (p?.type === \"F\") {\r\n p.children = p.children.filter((c) => c !== bkmkId);\r\n }\r\n } else {\r\n s.rootIds = s.rootIds.filter((r) => r !== bkmkId);\r\n }\r\n}\r\n\r\nfunction removeRecursively(s: State, bkmkId: Id) {\r\n const node = s.nodes[bkmkId];\r\n if (!node) return;\r\n if (node.type === \"F\") {\r\n const children = (node as FolderNode).children.slice();\r\n children.forEach((cid) => removeRecursively(s, cid));\r\n }\r\n detach(s, bkmkId);\r\n const { [bkmkId]: _omit, ...rest } = s.nodes as Record<string, FavNode>;\r\n s.nodes = rest;\r\n}\r\n\r\n/** 임시ID → 실제ID 스왑 (불변성 유지) */\r\nfunction idSwapImmutable(s: State, tmp: Id, real: Id): State {\r\n if (tmp === real) return s;\r\n const node = s.nodes[tmp];\r\n if (!node) return s;\r\n\r\n const newNode: FavNode = JSON.parse(JSON.stringify(node));\r\n newNode.bkmkId = real;\r\n\r\n const newNodes: Record<Id, FavNode> = { ...s.nodes, [real]: newNode };\r\n delete newNodes[tmp];\r\n\r\n let newRootIds = s.rootIds;\r\n if (newNode.prntBkmkId && newNode.prntBkmkId !== \"-\") {\r\n const p = newNodes[newNode.prntBkmkId] as FolderNode | undefined;\r\n if (p?.type === \"F\") {\r\n newNodes[newNode.prntBkmkId] = {\r\n ...p,\r\n children: p.children.map((c) => (c === tmp ? real : c)),\r\n } as FolderNode;\r\n }\r\n } else {\r\n newRootIds = s.rootIds.map((r) => (r === tmp ? real : r));\r\n }\r\n\r\n return { ...s, nodes: newNodes, rootIds: newRootIds };\r\n}\r\n\r\nfunction pickDefaultFolderId(s: Pick<State, \"nodes\" | \"rootIds\">): Id | null {\r\n return s.rootIds.find((id) => s.nodes[id]?.type === \"F\") ?? null;\r\n}\r\n\r\nfunction toSimpleTreeFromMap(nodes: Record<Id, FavNode>, rootIds: Id[]) {\r\n const childrenByParent: Record<string, string[]> = {};\r\n Object.values(nodes).forEach((n) => {\r\n const id = n.bkmkId;\r\n const pid = n.prntBkmkId;\r\n if (!id || !pid || pid === \"-\" || pid === id) return;\r\n (childrenByParent[pid] ??= []).push(id);\r\n });\r\n\r\n const visiting = new Set<string>();\r\n\r\n const build = (id: Id): any => {\r\n if (visiting.has(id)) return null;\r\n const n = nodes[id];\r\n if (!n) return null;\r\n\r\n visiting.add(id);\r\n try {\r\n if (n.type === \"F\") {\r\n const f = n as FolderNode;\r\n const childIds = childrenByParent[id] ?? [];\r\n return {\r\n type: \"F\",\r\n bkmkId: id,\r\n bkmkNm: f.bkmkNm,\r\n prntBkmkId: f.prntBkmkId,\r\n children: childIds.map(build).filter(Boolean),\r\n };\r\n }\r\n const i = n as ItemNode;\r\n\r\n return {\r\n type: \"M\",\r\n bkmkId: id,\r\n bkmkNm: i.menuNm,\r\n menuId: i.menuId,\r\n menuNm: i.menuNm,\r\n prntBkmkId: i.prntBkmkId,\r\n };\r\n } finally {\r\n visiting.delete(id);\r\n }\r\n };\r\n\r\n const rootMenuIds = Object.values(nodes)\r\n .filter((n) => n.prntBkmkId === \"-\" && n.type === \"M\")\r\n .map((n) => n.bkmkId);\r\n\r\n const rootFolderIds = Object.values(nodes)\r\n .filter((n) => n.prntBkmkId === \"-\" && n.type === \"F\")\r\n .map((n) => n.bkmkId);\r\n\r\n const rootKeys = Array.from(\r\n new Set([...rootIds, ...rootMenuIds, ...rootFolderIds])\r\n );\r\n return rootKeys.map(build).filter(Boolean);\r\n}\r\n\r\nfunction findItemByMenuId(\r\n nodes: Record<Id, FavNode>,\r\n menuId: string\r\n): Id | null {\r\n for (const n of Object.values(nodes)) {\r\n if (n.type === \"M\" && (n as ItemNode).menuId === menuId) return n.bkmkId;\r\n }\r\n return null;\r\n}\r\n\r\nfunction _resequence(\r\n nodes: Record<Id, FavNode>,\r\n rootIds: Id[],\r\n parentId: Id | \"-\"\r\n) {\r\n const siblings: Id[] =\r\n !parentId || parentId === \"-\"\r\n ? rootIds\r\n : (nodes[parentId] as FolderNode).children || [];\r\n siblings.forEach((sid, idx) => {\r\n const n = nodes[sid];\r\n if (!n) return;\r\n n.sortOrdr = idx;\r\n });\r\n}\r\n"],"names":["creator","set","get","menuId","n","id","findItemByMenuId","nodeId","node","q","nodes","rootIds","match","make","folder","kids","cid","c","f","rid","userId","force","s","res","callService","raw","normalized","normalize","treeNodes","toSimpleTreeFromMap","e","p","prev","snapshot","tmp","tempId","sort","tailIndex","next","attach","real","sortForServer","getUserId","swapped","idSwapImmutable","bkmkId","newPrntBkmkId","sortOrdr","parent","oldParentId","removeFrom","idx","insertTo","_resequence","removeRecursively","bkmkNm","prntBkmkId","target","sysCd","folderBkmkId","menu","exists","folderId","pickDefaultFolderId","newBkmkNm","nodesMap","onlyFolder","build","children","i","label","useFavoriteStore","create","roots","walk","arr","r","base","a","b","A","B","parentId","detach","pid","_omit","rest","newNode","newNodes","newRootIds","childrenByParent","visiting","childIds","rootMenuIds","rootFolderIds","sid"],"mappings":"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"}