sa2kit 1.6.29 → 1.6.31

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 (237) hide show
  1. package/dist/AliyunOSSProvider-P6TOVKMM.mjs +6 -0
  2. package/dist/{AliyunOSSProvider-I7I5YGLB.mjs.map → AliyunOSSProvider-P6TOVKMM.mjs.map} +1 -1
  3. package/dist/AliyunOSSProvider-Z5BRBCG6.js +15 -0
  4. package/dist/{AliyunOSSProvider-L7JWMKS4.js.map → AliyunOSSProvider-Z5BRBCG6.js.map} +1 -1
  5. package/dist/ConfigService-3DIC6C3Q.js +21 -0
  6. package/dist/{ConfigService-7MEZXKJ5.js.map → ConfigService-3DIC6C3Q.js.map} +1 -1
  7. package/dist/ConfigService-V6ZK273Z.mjs +4 -0
  8. package/dist/{ConfigService-BV57YYFW.mjs.map → ConfigService-V6ZK273Z.mjs.map} +1 -1
  9. package/dist/LocalStorageProvider-3RVPCQB3.mjs +6 -0
  10. package/dist/{LocalStorageProvider-FVLLHBHO.mjs.map → LocalStorageProvider-3RVPCQB3.mjs.map} +1 -1
  11. package/dist/LocalStorageProvider-PP7MA5OT.js +15 -0
  12. package/dist/{LocalStorageProvider-NBNHHWLY.js.map → LocalStorageProvider-PP7MA5OT.js.map} +1 -1
  13. package/dist/PMXParser-2VTA737I.js +13 -0
  14. package/dist/{PMXParser-YBS3B6HM.js.map → PMXParser-2VTA737I.js.map} +1 -1
  15. package/dist/PMXParser-RNVQL76A.mjs +4 -0
  16. package/dist/{PMXParser-L6IWHL4I.mjs.map → PMXParser-RNVQL76A.mjs.map} +1 -1
  17. package/dist/analytics/index.js +46 -45
  18. package/dist/analytics/index.js.map +1 -1
  19. package/dist/analytics/index.mjs +45 -44
  20. package/dist/analytics/index.mjs.map +1 -1
  21. package/dist/analytics/server/index.js +4 -4
  22. package/dist/analytics/server/index.js.map +1 -1
  23. package/dist/analytics/server/index.mjs +4 -4
  24. package/dist/analytics/server/index.mjs.map +1 -1
  25. package/dist/api/index.js +5 -5
  26. package/dist/api/index.js.map +1 -1
  27. package/dist/api/index.mjs +5 -5
  28. package/dist/api/index.mjs.map +1 -1
  29. package/dist/audioDetection/index.js +17 -16
  30. package/dist/audioDetection/index.js.map +1 -1
  31. package/dist/audioDetection/index.mjs +17 -16
  32. package/dist/audioDetection/index.mjs.map +1 -1
  33. package/dist/auth/client/index.js +4 -4
  34. package/dist/auth/client/index.mjs +1 -1
  35. package/dist/auth/components/index.js +3 -3
  36. package/dist/auth/components/index.js.map +1 -1
  37. package/dist/auth/components/index.mjs +3 -3
  38. package/dist/auth/components/index.mjs.map +1 -1
  39. package/dist/auth/index.js +29 -29
  40. package/dist/auth/index.mjs +5 -5
  41. package/dist/auth/middleware/index.js +3 -3
  42. package/dist/auth/middleware/index.mjs +2 -2
  43. package/dist/auth/routes/index.js +14 -14
  44. package/dist/auth/routes/index.mjs +2 -2
  45. package/dist/auth/services/index.js +7 -7
  46. package/dist/auth/services/index.mjs +1 -1
  47. package/dist/calendar/index.js +146 -182
  48. package/dist/calendar/index.js.map +1 -1
  49. package/dist/calendar/index.mjs +139 -175
  50. package/dist/calendar/index.mjs.map +1 -1
  51. package/dist/calendar/routes/index.js +1 -1
  52. package/dist/calendar/routes/index.js.map +1 -1
  53. package/dist/calendar/routes/index.mjs +1 -1
  54. package/dist/calendar/routes/index.mjs.map +1 -1
  55. package/dist/{chunk-5YQ5B7IZ.js → chunk-24HGREE6.js} +5 -5
  56. package/dist/{chunk-5YQ5B7IZ.js.map → chunk-24HGREE6.js.map} +1 -1
  57. package/dist/{chunk-6PRFP5EG.js → chunk-25OFOKNF.js} +6 -6
  58. package/dist/chunk-25OFOKNF.js.map +1 -0
  59. package/dist/{chunk-KQGP6BTS.mjs → chunk-3DXPQ4YV.mjs} +6 -6
  60. package/dist/chunk-3DXPQ4YV.mjs.map +1 -0
  61. package/dist/{chunk-3BGPZN4X.mjs → chunk-3NHAT7D4.mjs} +12 -12
  62. package/dist/chunk-3NHAT7D4.mjs.map +1 -0
  63. package/dist/{chunk-MW4BCIZC.mjs → chunk-4HC6M7FK.mjs} +3 -3
  64. package/dist/chunk-4HC6M7FK.mjs.map +1 -0
  65. package/dist/{chunk-ESRCX5TQ.mjs → chunk-52TN2QSS.mjs} +3 -3
  66. package/dist/{chunk-ESRCX5TQ.mjs.map → chunk-52TN2QSS.mjs.map} +1 -1
  67. package/dist/{chunk-DW2ZTOCV.js → chunk-5A7ERLKK.js} +105 -106
  68. package/dist/chunk-5A7ERLKK.js.map +1 -0
  69. package/dist/{chunk-CNTILN5J.mjs → chunk-5YQ62BKX.mjs} +20 -19
  70. package/dist/chunk-5YQ62BKX.mjs.map +1 -0
  71. package/dist/{chunk-6W5BMXJG.js → chunk-6OWNMJKG.js} +4 -4
  72. package/dist/{chunk-6W5BMXJG.js.map → chunk-6OWNMJKG.js.map} +1 -1
  73. package/dist/{chunk-WSNM4EU5.mjs → chunk-77M5AQG3.mjs} +37 -41
  74. package/dist/chunk-77M5AQG3.mjs.map +1 -0
  75. package/dist/{chunk-DUHZ7VZP.js → chunk-7VRT55ZD.js} +3 -3
  76. package/dist/chunk-7VRT55ZD.js.map +1 -0
  77. package/dist/{chunk-LX4XX6W7.js → chunk-C54W2CMK.js} +16 -16
  78. package/dist/chunk-C54W2CMK.js.map +1 -0
  79. package/dist/{chunk-3WOAPLEG.mjs → chunk-EB4NR623.mjs} +27 -26
  80. package/dist/chunk-EB4NR623.mjs.map +1 -0
  81. package/dist/{chunk-CD77U7LZ.js → chunk-GBPLX42J.js} +9 -9
  82. package/dist/chunk-GBPLX42J.js.map +1 -0
  83. package/dist/{chunk-TFQF2HDO.mjs → chunk-HDEOCX2L.mjs} +12 -12
  84. package/dist/chunk-HDEOCX2L.mjs.map +1 -0
  85. package/dist/{chunk-LFG6FPM5.mjs → chunk-KIP2CERU.mjs} +37 -38
  86. package/dist/chunk-KIP2CERU.mjs.map +1 -0
  87. package/dist/{chunk-6YKMCPQI.mjs → chunk-KZKIH4AS.mjs} +4 -4
  88. package/dist/chunk-KZKIH4AS.mjs.map +1 -0
  89. package/dist/{chunk-6MQUBPKB.mjs → chunk-LJ4CCSSY.mjs} +3 -3
  90. package/dist/{chunk-6MQUBPKB.mjs.map → chunk-LJ4CCSSY.mjs.map} +1 -1
  91. package/dist/{chunk-TOC5FSHP.js → chunk-NJ2SNXBJ.js} +12 -12
  92. package/dist/chunk-NJ2SNXBJ.js.map +1 -0
  93. package/dist/{chunk-OCR5DS4C.mjs → chunk-PE5EAHZK.mjs} +3 -3
  94. package/dist/chunk-PE5EAHZK.mjs.map +1 -0
  95. package/dist/{chunk-TKCYPDWU.js → chunk-Q5EDCKQA.js} +27 -29
  96. package/dist/chunk-Q5EDCKQA.js.map +1 -0
  97. package/dist/{chunk-CLKKZSPZ.js → chunk-RBKGYWME.js} +20 -19
  98. package/dist/chunk-RBKGYWME.js.map +1 -0
  99. package/dist/{chunk-VRTRSEEH.mjs → chunk-RSJSZ7QH.mjs} +11 -11
  100. package/dist/chunk-RSJSZ7QH.mjs.map +1 -0
  101. package/dist/{chunk-E7RGBAYJ.js → chunk-TDCDEBGP.js} +30 -29
  102. package/dist/chunk-TDCDEBGP.js.map +1 -0
  103. package/dist/{chunk-T5OZHYVM.mjs → chunk-TVROG2Q4.mjs} +15 -15
  104. package/dist/chunk-TVROG2Q4.mjs.map +1 -0
  105. package/dist/{chunk-JZXJQMVE.js → chunk-UIFFDRTE.js} +11 -11
  106. package/dist/chunk-UIFFDRTE.js.map +1 -0
  107. package/dist/{chunk-UOFTHYIH.js → chunk-UL6XJGUZ.js} +4 -4
  108. package/dist/chunk-UL6XJGUZ.js.map +1 -0
  109. package/dist/{chunk-A3UP56MS.js → chunk-WA67GZSZ.js} +3 -3
  110. package/dist/chunk-WA67GZSZ.js.map +1 -0
  111. package/dist/{chunk-OLHGZXN3.mjs → chunk-WEEXCPSE.mjs} +5 -5
  112. package/dist/chunk-WEEXCPSE.mjs.map +1 -0
  113. package/dist/{chunk-5GCHAXY5.js → chunk-X3UU7JHT.js} +38 -42
  114. package/dist/chunk-X3UU7JHT.js.map +1 -0
  115. package/dist/{chunk-QU5OT4DF.js → chunk-XJ7ZAGC5.js} +5 -5
  116. package/dist/chunk-XJ7ZAGC5.js.map +1 -0
  117. package/dist/{chunk-GSTLV3MB.mjs → chunk-YOTQG4NP.mjs} +26 -28
  118. package/dist/chunk-YOTQG4NP.mjs.map +1 -0
  119. package/dist/{chunk-QAT2RWAO.mjs → chunk-Z36R3P62.mjs} +7 -7
  120. package/dist/chunk-Z36R3P62.mjs.map +1 -0
  121. package/dist/{chunk-7Z5LLJ3A.js → chunk-ZWQJSZEY.js} +13 -13
  122. package/dist/chunk-ZWQJSZEY.js.map +1 -0
  123. package/dist/config/index.js +6 -6
  124. package/dist/config/index.js.map +1 -1
  125. package/dist/config/index.mjs +6 -6
  126. package/dist/config/index.mjs.map +1 -1
  127. package/dist/config/server/index.js +37 -37
  128. package/dist/config/server/index.js.map +1 -1
  129. package/dist/config/server/index.mjs +37 -37
  130. package/dist/config/server/index.mjs.map +1 -1
  131. package/dist/i18n/index.d.mts +2 -2
  132. package/dist/i18n/index.d.ts +2 -2
  133. package/dist/i18n/index.js +16 -17
  134. package/dist/i18n/index.js.map +1 -1
  135. package/dist/i18n/index.mjs +16 -17
  136. package/dist/i18n/index.mjs.map +1 -1
  137. package/dist/imageCrop/index.js +11 -10
  138. package/dist/imageCrop/index.js.map +1 -1
  139. package/dist/imageCrop/index.mjs +11 -10
  140. package/dist/imageCrop/index.mjs.map +1 -1
  141. package/dist/index.js +221 -246
  142. package/dist/index.js.map +1 -1
  143. package/dist/index.mjs +79 -104
  144. package/dist/index.mjs.map +1 -1
  145. package/dist/logger/index.js +6 -6
  146. package/dist/logger/index.mjs +1 -1
  147. package/dist/mmd/admin/index.js +11 -10
  148. package/dist/mmd/admin/index.js.map +1 -1
  149. package/dist/mmd/admin/index.mjs +11 -10
  150. package/dist/mmd/admin/index.mjs.map +1 -1
  151. package/dist/mmd/index.js +223 -241
  152. package/dist/mmd/index.js.map +1 -1
  153. package/dist/mmd/index.mjs +220 -238
  154. package/dist/mmd/index.mjs.map +1 -1
  155. package/dist/mmd/server/index.js +6 -6
  156. package/dist/mmd/server/index.js.map +1 -1
  157. package/dist/mmd/server/index.mjs +6 -6
  158. package/dist/mmd/server/index.mjs.map +1 -1
  159. package/dist/music/index.js +16 -16
  160. package/dist/music/index.mjs +2 -2
  161. package/dist/music/server/index.js +8 -8
  162. package/dist/music/server/index.mjs +1 -1
  163. package/dist/request/index.js +2 -2
  164. package/dist/request/index.js.map +1 -1
  165. package/dist/request/index.mjs +2 -2
  166. package/dist/request/index.mjs.map +1 -1
  167. package/dist/storage/index.js +11 -11
  168. package/dist/storage/index.mjs +2 -2
  169. package/dist/testYourself/admin/index.js +3 -3
  170. package/dist/testYourself/admin/index.mjs +1 -1
  171. package/dist/testYourself/index.js +22 -22
  172. package/dist/testYourself/index.js.map +1 -1
  173. package/dist/testYourself/index.mjs +14 -14
  174. package/dist/testYourself/index.mjs.map +1 -1
  175. package/dist/testYourself/server/index.js +4 -4
  176. package/dist/testYourself/server/index.mjs +1 -1
  177. package/dist/universalExport/index.d.mts +3 -3
  178. package/dist/universalExport/index.d.ts +3 -3
  179. package/dist/universalExport/index.js +48 -47
  180. package/dist/universalExport/index.js.map +1 -1
  181. package/dist/universalExport/index.mjs +48 -47
  182. package/dist/universalExport/index.mjs.map +1 -1
  183. package/dist/universalExport/server/index.js +29 -29
  184. package/dist/universalExport/server/index.js.map +1 -1
  185. package/dist/universalExport/server/index.mjs +28 -28
  186. package/dist/universalExport/server/index.mjs.map +1 -1
  187. package/dist/universalFile/index.d.mts +3 -3
  188. package/dist/universalFile/index.d.ts +3 -3
  189. package/dist/universalFile/index.js +73 -72
  190. package/dist/universalFile/index.js.map +1 -1
  191. package/dist/universalFile/index.mjs +73 -72
  192. package/dist/universalFile/index.mjs.map +1 -1
  193. package/dist/universalFile/server/index.js +258 -260
  194. package/dist/universalFile/server/index.js.map +1 -1
  195. package/dist/universalFile/server/index.mjs +244 -246
  196. package/dist/universalFile/server/index.mjs.map +1 -1
  197. package/dist/utils/index.js +11 -11
  198. package/dist/utils/index.mjs +2 -2
  199. package/package.json +1 -1
  200. package/dist/AliyunOSSProvider-I7I5YGLB.mjs +0 -6
  201. package/dist/AliyunOSSProvider-L7JWMKS4.js +0 -15
  202. package/dist/ConfigService-7MEZXKJ5.js +0 -21
  203. package/dist/ConfigService-BV57YYFW.mjs +0 -4
  204. package/dist/LocalStorageProvider-FVLLHBHO.mjs +0 -6
  205. package/dist/LocalStorageProvider-NBNHHWLY.js +0 -15
  206. package/dist/PMXParser-L6IWHL4I.mjs +0 -4
  207. package/dist/PMXParser-YBS3B6HM.js +0 -13
  208. package/dist/chunk-3BGPZN4X.mjs.map +0 -1
  209. package/dist/chunk-3WOAPLEG.mjs.map +0 -1
  210. package/dist/chunk-5GCHAXY5.js.map +0 -1
  211. package/dist/chunk-6PRFP5EG.js.map +0 -1
  212. package/dist/chunk-6YKMCPQI.mjs.map +0 -1
  213. package/dist/chunk-7Z5LLJ3A.js.map +0 -1
  214. package/dist/chunk-A3UP56MS.js.map +0 -1
  215. package/dist/chunk-CD77U7LZ.js.map +0 -1
  216. package/dist/chunk-CLKKZSPZ.js.map +0 -1
  217. package/dist/chunk-CNTILN5J.mjs.map +0 -1
  218. package/dist/chunk-DUHZ7VZP.js.map +0 -1
  219. package/dist/chunk-DW2ZTOCV.js.map +0 -1
  220. package/dist/chunk-E7RGBAYJ.js.map +0 -1
  221. package/dist/chunk-GSTLV3MB.mjs.map +0 -1
  222. package/dist/chunk-JZXJQMVE.js.map +0 -1
  223. package/dist/chunk-KQGP6BTS.mjs.map +0 -1
  224. package/dist/chunk-LFG6FPM5.mjs.map +0 -1
  225. package/dist/chunk-LX4XX6W7.js.map +0 -1
  226. package/dist/chunk-MW4BCIZC.mjs.map +0 -1
  227. package/dist/chunk-OCR5DS4C.mjs.map +0 -1
  228. package/dist/chunk-OLHGZXN3.mjs.map +0 -1
  229. package/dist/chunk-QAT2RWAO.mjs.map +0 -1
  230. package/dist/chunk-QU5OT4DF.js.map +0 -1
  231. package/dist/chunk-T5OZHYVM.mjs.map +0 -1
  232. package/dist/chunk-TFQF2HDO.mjs.map +0 -1
  233. package/dist/chunk-TKCYPDWU.js.map +0 -1
  234. package/dist/chunk-TOC5FSHP.js.map +0 -1
  235. package/dist/chunk-UOFTHYIH.js.map +0 -1
  236. package/dist/chunk-VRTRSEEH.mjs.map +0 -1
  237. package/dist/chunk-WSNM4EU5.mjs.map +0 -1
@@ -1,6 +1,7 @@
1
1
  export { ExportConfigError, ExportDataError, ExportFileError, ExportServiceError } from '../chunk-LFB5EIIM.mjs';
2
2
  import '../chunk-BJTO5JO5.mjs';
3
3
  import React, { useState, useCallback, useEffect } from 'react';
4
+ import { clsx } from 'clsx';
4
5
  import { Settings, X, Eye, EyeOff, MoveUp, MoveDown, Trash2, Group, Save, Loader2, Download, ChevronDown, Type, Database, FileText, FileSpreadsheet } from 'lucide-react';
5
6
 
6
7
  // src/universalExport/constants.ts
@@ -29,19 +30,19 @@ var EXPORT_FORMAT_MIME_TYPES = {
29
30
  var API_BASE_PATH = "/api/universal-export";
30
31
  var API_ENDPOINTS = {
31
32
  /** 获取配置列表 */
32
- GET_CONFIGS: `${API_BASE_PATH}/configs`,
33
+ GET_CONFIGS: API_BASE_PATH + "/configs",
33
34
  /** 创建配置 */
34
- CREATE_CONFIG: `${API_BASE_PATH}/configs`,
35
+ CREATE_CONFIG: API_BASE_PATH + "/configs",
35
36
  /** 更新配置 */
36
- UPDATE_CONFIG: (configId) => `${API_BASE_PATH}/configs/${configId}`,
37
+ UPDATE_CONFIG: (configId) => API_BASE_PATH + "/configs/" + configId,
37
38
  /** 删除配置 */
38
- DELETE_CONFIG: (configId) => `${API_BASE_PATH}/configs/${configId}`,
39
+ DELETE_CONFIG: (configId) => API_BASE_PATH + "/configs/" + configId,
39
40
  /** 触发导出 */
40
- EXPORT_DATA: `${API_BASE_PATH}/export`,
41
+ EXPORT_DATA: API_BASE_PATH + "/export",
41
42
  /** 查询导出进度 */
42
- GET_PROGRESS: (exportId) => `${API_BASE_PATH}/export/${exportId}/progress`,
43
+ GET_PROGRESS: (exportId) => API_BASE_PATH + "/export/" + exportId + "/progress",
43
44
  /** 下载导出文件 */
44
- DOWNLOAD_FILE: (exportId) => `${API_BASE_PATH}/export/${exportId}/download`
45
+ DOWNLOAD_FILE: (exportId) => API_BASE_PATH + "/export/" + exportId + "/download"
45
46
  };
46
47
  var ERROR_CODES = {
47
48
  /** 导出配置错误 */
@@ -66,7 +67,7 @@ function generateExportFileName(template, format) {
66
67
  const dateStr = now.toISOString().split("T")[0] || "";
67
68
  const timeStr = (now.toTimeString().split(" ")[0] || "").replace(/:/g, "-");
68
69
  const extension = EXPORT_FORMAT_EXTENSIONS[format];
69
- return template.replace("{date}", dateStr).replace("{time}", timeStr).replace("{timestamp}", now.getTime().toString()) + `.${extension}`;
70
+ return template.replace("{date}", dateStr).replace("{time}", timeStr).replace("{timestamp}", now.getTime().toString()) + "." + extension;
70
71
  }
71
72
  function validateFileName(fileName) {
72
73
  const invalidChars = /[<>:"|?*\/\\]/;
@@ -84,7 +85,7 @@ function sanitizeFileName(fileName) {
84
85
  function escapeCSVField(value, delimiter = ",") {
85
86
  const valueStr = String(value || "");
86
87
  if (valueStr.includes(delimiter) || valueStr.includes('"') || valueStr.includes("\n")) {
87
- return `"${valueStr.replace(/"/g, '""')}"`;
88
+ return '"' + valueStr.replace(/"/g, '""') + '"';
88
89
  }
89
90
  return valueStr;
90
91
  }
@@ -117,12 +118,12 @@ var DEFAULT_FORMATTERS = {
117
118
  // 货币格式化
118
119
  currency: (value) => {
119
120
  if (value === null || value === void 0) return "";
120
- return `\xA5${Number(value).toFixed(2)}`;
121
+ return "\xA5" + Number(value).toFixed(2);
121
122
  },
122
123
  // 百分比格式化
123
124
  percentage: (value) => {
124
125
  if (value === null || value === void 0) return "";
125
- return `${(Number(value) * 100).toFixed(2)}%`;
126
+ return (Number(value) * 100).toFixed(2) + "%";
126
127
  },
127
128
  // 布尔值格式化
128
129
  boolean: (value) => {
@@ -191,24 +192,24 @@ function formatFileSize(bytes) {
191
192
  const units = ["B", "KB", "MB", "GB", "TB"];
192
193
  const k = 1024;
193
194
  const i = Math.floor(Math.log(bytes) / Math.log(k));
194
- return `${(bytes / Math.pow(k, i)).toFixed(2)} ${units[i]}`;
195
+ return (bytes / Math.pow(k, i)).toFixed(2) + " " + units[i];
195
196
  }
196
197
  function formatDuration(milliseconds) {
197
198
  if (milliseconds < 1e3) {
198
- return `${milliseconds}ms`;
199
+ return milliseconds + "ms";
199
200
  }
200
201
  const seconds = Math.floor(milliseconds / 1e3);
201
202
  if (seconds < 60) {
202
- return `${seconds}\u79D2`;
203
+ return seconds + "\u79D2";
203
204
  }
204
205
  const minutes = Math.floor(seconds / 60);
205
206
  const remainingSeconds = seconds % 60;
206
207
  if (minutes < 60) {
207
- return remainingSeconds > 0 ? `${minutes}\u5206${remainingSeconds}\u79D2` : `${minutes}\u5206\u949F`;
208
+ return remainingSeconds > 0 ? minutes + "\u5206" + remainingSeconds + "\u79D2" : minutes + "\u5206\u949F";
208
209
  }
209
210
  const hours = Math.floor(minutes / 60);
210
211
  const remainingMinutes = minutes % 60;
211
- return remainingMinutes > 0 ? `${hours}\u5C0F\u65F6${remainingMinutes}\u5206\u949F` : `${hours}\u5C0F\u65F6`;
212
+ return remainingMinutes > 0 ? hours + "\u5C0F\u65F6" + remainingMinutes + "\u5206\u949F" : hours + "\u5C0F\u65F6";
212
213
  }
213
214
  function estimateEndTime(startTime, processedRows, totalRows) {
214
215
  if (processedRows === 0 || totalRows === 0) {
@@ -273,21 +274,21 @@ var UniversalExportClient = class {
273
274
  if (businessId) {
274
275
  params.append("businessId", businessId);
275
276
  }
276
- const url = `${this.config.baseUrl}${API_ENDPOINTS.GET_CONFIGS}?${params}`;
277
+ const url = this.config.baseUrl + API_ENDPOINTS.GET_CONFIGS + "?" + params;
277
278
  try {
278
279
  const response = await this.fetchWithTimeout(url, {
279
280
  method: "GET",
280
281
  headers: this.getHeaders()
281
282
  });
282
283
  if (!response.ok) {
283
- throw new Error(`\u83B7\u53D6\u914D\u7F6E\u5931\u8D25: ${response.statusText}`);
284
+ throw new Error("\u83B7\u53D6\u914D\u7F6E\u5931\u8D25: " + response.statusText);
284
285
  }
285
286
  const data = await response.json();
286
287
  return this.transformConfigsFromAPI(data.configs || []);
287
288
  } catch (error) {
288
289
  throw createExportError(
289
290
  ERROR_CODES.NETWORK_ERROR,
290
- `\u83B7\u53D6\u5BFC\u51FA\u914D\u7F6E\u5931\u8D25: ${formatErrorMessage(error)}`,
291
+ "\u83B7\u53D6\u5BFC\u51FA\u914D\u7F6E\u5931\u8D25: " + formatErrorMessage(error),
291
292
  { moduleId, businessId, originalError: error }
292
293
  );
293
294
  }
@@ -296,7 +297,7 @@ var UniversalExportClient = class {
296
297
  * 创建导出配置
297
298
  */
298
299
  async createConfig(config) {
299
- const url = `${this.config.baseUrl}${API_ENDPOINTS.CREATE_CONFIG}`;
300
+ const url = this.config.baseUrl + API_ENDPOINTS.CREATE_CONFIG;
300
301
  try {
301
302
  const response = await this.fetchWithTimeout(url, {
302
303
  method: "POST",
@@ -307,14 +308,14 @@ var UniversalExportClient = class {
307
308
  body: JSON.stringify(config)
308
309
  });
309
310
  if (!response.ok) {
310
- throw new Error(`\u521B\u5EFA\u914D\u7F6E\u5931\u8D25: ${response.statusText}`);
311
+ throw new Error("\u521B\u5EFA\u914D\u7F6E\u5931\u8D25: " + response.statusText);
311
312
  }
312
313
  const data = await response.json();
313
314
  return this.transformConfigFromAPI(data.config);
314
315
  } catch (error) {
315
316
  throw createExportError(
316
317
  ERROR_CODES.NETWORK_ERROR,
317
- `\u521B\u5EFA\u5BFC\u51FA\u914D\u7F6E\u5931\u8D25: ${formatErrorMessage(error)}`,
318
+ "\u521B\u5EFA\u5BFC\u51FA\u914D\u7F6E\u5931\u8D25: " + formatErrorMessage(error),
318
319
  { config, originalError: error }
319
320
  );
320
321
  }
@@ -323,7 +324,7 @@ var UniversalExportClient = class {
323
324
  * 更新导出配置
324
325
  */
325
326
  async updateConfig(configId, updates) {
326
- const url = `${this.config.baseUrl}${API_ENDPOINTS.UPDATE_CONFIG(configId)}`;
327
+ const url = this.config.baseUrl + API_ENDPOINTS.UPDATE_CONFIG(configId);
327
328
  try {
328
329
  const response = await this.fetchWithTimeout(url, {
329
330
  method: "PUT",
@@ -334,14 +335,14 @@ var UniversalExportClient = class {
334
335
  body: JSON.stringify(updates)
335
336
  });
336
337
  if (!response.ok) {
337
- throw new Error(`\u66F4\u65B0\u914D\u7F6E\u5931\u8D25: ${response.statusText}`);
338
+ throw new Error("\u66F4\u65B0\u914D\u7F6E\u5931\u8D25: " + response.statusText);
338
339
  }
339
340
  const data = await response.json();
340
341
  return this.transformConfigFromAPI(data.config);
341
342
  } catch (error) {
342
343
  throw createExportError(
343
344
  ERROR_CODES.NETWORK_ERROR,
344
- `\u66F4\u65B0\u5BFC\u51FA\u914D\u7F6E\u5931\u8D25: ${formatErrorMessage(error)}`,
345
+ "\u66F4\u65B0\u5BFC\u51FA\u914D\u7F6E\u5931\u8D25: " + formatErrorMessage(error),
345
346
  { configId, updates, originalError: error }
346
347
  );
347
348
  }
@@ -350,19 +351,19 @@ var UniversalExportClient = class {
350
351
  * 删除导出配置
351
352
  */
352
353
  async deleteConfig(configId) {
353
- const url = `${this.config.baseUrl}${API_ENDPOINTS.DELETE_CONFIG(configId)}`;
354
+ const url = this.config.baseUrl + API_ENDPOINTS.DELETE_CONFIG(configId);
354
355
  try {
355
356
  const response = await this.fetchWithTimeout(url, {
356
357
  method: "DELETE",
357
358
  headers: this.getHeaders()
358
359
  });
359
360
  if (!response.ok) {
360
- throw new Error(`\u5220\u9664\u914D\u7F6E\u5931\u8D25: ${response.statusText}`);
361
+ throw new Error("\u5220\u9664\u914D\u7F6E\u5931\u8D25: " + response.statusText);
361
362
  }
362
363
  } catch (error) {
363
364
  throw createExportError(
364
365
  ERROR_CODES.NETWORK_ERROR,
365
- `\u5220\u9664\u5BFC\u51FA\u914D\u7F6E\u5931\u8D25: ${formatErrorMessage(error)}`,
366
+ "\u5220\u9664\u5BFC\u51FA\u914D\u7F6E\u5931\u8D25: " + formatErrorMessage(error),
366
367
  { configId, originalError: error }
367
368
  );
368
369
  }
@@ -372,7 +373,7 @@ var UniversalExportClient = class {
372
373
  * 触发数据导出
373
374
  */
374
375
  async exportData(request) {
375
- const url = `${this.config.baseUrl}${API_ENDPOINTS.EXPORT_DATA}`;
376
+ const url = this.config.baseUrl + API_ENDPOINTS.EXPORT_DATA;
376
377
  try {
377
378
  const isDataArray = Array.isArray(request.dataSource);
378
379
  const requestBody = {
@@ -405,14 +406,14 @@ var UniversalExportClient = class {
405
406
  } catch {
406
407
  errorData = { message: errorText };
407
408
  }
408
- throw new Error(errorData.message || `\u5BFC\u51FA\u5931\u8D25: ${response.statusText}`);
409
+ throw new Error(errorData.message || "\u5BFC\u51FA\u5931\u8D25: " + response.statusText);
409
410
  }
410
411
  const data = await response.json();
411
412
  return this.transformExportResultFromAPI(data.result);
412
413
  } catch (error) {
413
414
  throw createExportError(
414
415
  ERROR_CODES.EXPORT_DATA_ERROR,
415
- `\u6570\u636E\u5BFC\u51FA\u5931\u8D25: ${formatErrorMessage(error)}`,
416
+ "\u6570\u636E\u5BFC\u51FA\u5931\u8D25: " + formatErrorMessage(error),
416
417
  { request, originalError: error }
417
418
  );
418
419
  }
@@ -421,21 +422,21 @@ var UniversalExportClient = class {
421
422
  * 查询导出进度
422
423
  */
423
424
  async getExportProgress(exportId) {
424
- const url = `${this.config.baseUrl}${API_ENDPOINTS.GET_PROGRESS(exportId)}`;
425
+ const url = this.config.baseUrl + API_ENDPOINTS.GET_PROGRESS(exportId);
425
426
  try {
426
427
  const response = await this.fetchWithTimeout(url, {
427
428
  method: "GET",
428
429
  headers: this.getHeaders()
429
430
  });
430
431
  if (!response.ok) {
431
- throw new Error(`\u83B7\u53D6\u5BFC\u51FA\u8FDB\u5EA6\u5931\u8D25: ${response.statusText}`);
432
+ throw new Error("\u83B7\u53D6\u5BFC\u51FA\u8FDB\u5EA6\u5931\u8D25: " + response.statusText);
432
433
  }
433
434
  const data = await response.json();
434
435
  return this.transformProgressFromAPI(data.progress);
435
436
  } catch (error) {
436
437
  throw createExportError(
437
438
  ERROR_CODES.NETWORK_ERROR,
438
- `\u83B7\u53D6\u5BFC\u51FA\u8FDB\u5EA6\u5931\u8D25: ${formatErrorMessage(error)}`,
439
+ "\u83B7\u53D6\u5BFC\u51FA\u8FDB\u5EA6\u5931\u8D25: " + formatErrorMessage(error),
439
440
  { exportId, originalError: error }
440
441
  );
441
442
  }
@@ -444,20 +445,20 @@ var UniversalExportClient = class {
444
445
  * 下载导出文件
445
446
  */
446
447
  async downloadExportFile(exportId) {
447
- const url = `${this.config.baseUrl}${API_ENDPOINTS.DOWNLOAD_FILE(exportId)}`;
448
+ const url = this.config.baseUrl + API_ENDPOINTS.DOWNLOAD_FILE(exportId);
448
449
  try {
449
450
  const response = await this.fetchWithTimeout(url, {
450
451
  method: "GET",
451
452
  headers: this.getHeaders()
452
453
  });
453
454
  if (!response.ok) {
454
- throw new Error(`\u4E0B\u8F7D\u6587\u4EF6\u5931\u8D25: ${response.statusText}`);
455
+ throw new Error("\u4E0B\u8F7D\u6587\u4EF6\u5931\u8D25: " + response.statusText);
455
456
  }
456
457
  return await response.blob();
457
458
  } catch (error) {
458
459
  throw createExportError(
459
460
  ERROR_CODES.NETWORK_ERROR,
460
- `\u4E0B\u8F7D\u5BFC\u51FA\u6587\u4EF6\u5931\u8D25: ${formatErrorMessage(error)}`,
461
+ "\u4E0B\u8F7D\u5BFC\u51FA\u6587\u4EF6\u5931\u8D25: " + formatErrorMessage(error),
461
462
  { exportId, originalError: error }
462
463
  );
463
464
  }
@@ -628,7 +629,7 @@ var ExportConfigEditor = ({
628
629
  if (businessId) {
629
630
  params.set("businessId", businessId);
630
631
  }
631
- const response = await fetch(`/api/universal-export/configs?${params.toString()}`);
632
+ const response = await fetch("/api/universal-export/configs?" + params.toString());
632
633
  if (response.ok) {
633
634
  const data = await response.json();
634
635
  setSavedConfigs(data.configs || []);
@@ -642,7 +643,7 @@ var ExportConfigEditor = ({
642
643
  const deleteConfig = useCallback(async (configId) => {
643
644
  setDeletingConfigId(configId);
644
645
  try {
645
- const response = await fetch(`/api/universal-export/configs/${configId}`, {
646
+ const response = await fetch("/api/universal-export/configs/" + configId, {
646
647
  method: "DELETE"
647
648
  });
648
649
  if (response.ok) {
@@ -668,7 +669,7 @@ var ExportConfigEditor = ({
668
669
  if (!visible) return;
669
670
  const scrollY = window.scrollY;
670
671
  document.body.style.position = "fixed";
671
- document.body.style.top = `-${scrollY}px`;
672
+ document.body.style.top = "-" + scrollY + "px";
672
673
  document.body.style.left = "0";
673
674
  document.body.style.right = "0";
674
675
  document.body.style.overflow = "hidden";
@@ -837,7 +838,7 @@ var ExportConfigEditor = ({
837
838
  return /* @__PURE__ */ React.createElement(
838
839
  "div",
839
840
  {
840
- className: `fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-[50] p-4 ${className}`,
841
+ className: clsx("fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-[50] p-4", className),
841
842
  onClick: onCancel
842
843
  },
843
844
  /* @__PURE__ */ React.createElement(
@@ -852,7 +853,7 @@ var ExportConfigEditor = ({
852
853
  {
853
854
  key: tab.id,
854
855
  onClick: () => setActiveTab(tab.id),
855
- className: `flex items-center gap-2 px-4 py-3 text-sm font-medium rounded-lg transition-colors ${activeTab === tab.id ? "bg-white text-blue-600 shadow-sm border border-gray-200" : "text-gray-600 hover:text-gray-900"}`
856
+ className: clsx("flex items-center gap-2 px-4 py-3 text-sm font-medium rounded-lg transition-colors", activeTab === tab.id ? "bg-white text-blue-600 shadow-sm border border-gray-200" : "text-gray-600 hover:text-gray-900")
856
857
  },
857
858
  tab.icon,
858
859
  /* @__PURE__ */ React.createElement("span", null, tab.label)
@@ -1024,7 +1025,7 @@ var UniversalExportButton = ({
1024
1025
  if ("message" in error && typeof error.message === "string") {
1025
1026
  errorMessage = error.message;
1026
1027
  } else if ("code" in error && "message" in error) {
1027
- errorMessage = `${error.code}: ${error.message}`;
1028
+ errorMessage = error.code + ": " + error.message;
1028
1029
  }
1029
1030
  } else if (typeof error === "string") {
1030
1031
  errorMessage = error;
@@ -1078,7 +1079,7 @@ var UniversalExportButton = ({
1078
1079
  "div",
1079
1080
  {
1080
1081
  className: "bg-blue-600 h-2 rounded-full transition-all duration-300",
1081
- style: { width: `${progress}%` }
1082
+ style: { width: progress + "%" }
1082
1083
  }
1083
1084
  ))));
1084
1085
  };
@@ -1123,13 +1124,13 @@ var UniversalExportButton = ({
1123
1124
  ));
1124
1125
  };
1125
1126
  const buttonStyle = BUTTON_STYLES[variant][size];
1126
- const baseClasses = `inline-flex items-center gap-2 rounded-lg font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed ${buttonStyle}`;
1127
- return /* @__PURE__ */ React.createElement("div", { className: `relative ${className}` }, /* @__PURE__ */ React.createElement(
1127
+ const baseClasses = "inline-flex items-center gap-2 rounded-lg font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed " + buttonStyle;
1128
+ return /* @__PURE__ */ React.createElement("div", { className: clsx("relative", className) }, /* @__PURE__ */ React.createElement(
1128
1129
  "button",
1129
1130
  {
1130
1131
  onClick: () => setShowDropdown(!showDropdown),
1131
1132
  disabled: disabled || isExporting,
1132
- className: `${baseClasses} ${isExporting ? "cursor-not-allowed" : ""}`
1133
+ className: clsx(baseClasses, isExporting ? "cursor-not-allowed" : "")
1133
1134
  },
1134
1135
  isExporting ? /* @__PURE__ */ React.createElement(Loader2, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ React.createElement(Download, { className: "w-4 h-4" }),
1135
1136
  /* @__PURE__ */ React.createElement("span", null, isExporting ? "\u5BFC\u51FA\u4E2D..." : buttonText),