coding-tool-x 3.8.4 → 3.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +86 -15
  3. package/dist/web/assets/AgentsDrawer-Db9wAyaZ.js +1 -0
  4. package/dist/web/assets/AgentsDrawer-Pw2k-ZAa.css +1 -0
  5. package/dist/web/assets/Analytics-C4gMzv7g.js +1 -0
  6. package/dist/web/assets/Analytics-CyHhR126.css +1 -0
  7. package/dist/web/assets/AssetPathField-Bd_nMFu3.js +1 -0
  8. package/dist/web/assets/ChatHistoryDrawer-B2qBQs9L.css +1 -0
  9. package/dist/web/assets/ChatHistoryDrawer-CwzJHyNP.js +1 -0
  10. package/dist/web/assets/CollapseItem-CTCfSiue.js +1 -0
  11. package/dist/web/assets/CommandsDrawer-BZJxlPvV.css +1 -0
  12. package/dist/web/assets/CommandsDrawer-vDghB1U9.js +1 -0
  13. package/dist/web/assets/ConfigExportDrawer-C-XDvlHc.js +1 -0
  14. package/dist/web/assets/ConfigExportDrawer-dwruRKWr.css +1 -0
  15. package/dist/web/assets/ConfigTemplates-CYY8XRED.js +1 -0
  16. package/dist/web/assets/ConfigTemplatesDrawer-BfDi8yO3.css +1 -0
  17. package/dist/web/assets/ConfigTemplatesDrawer-CbsJp76X.js +1 -0
  18. package/dist/web/assets/ConfigTemplatesPanel-CWyPtk67.css +1 -0
  19. package/dist/web/assets/ConfigTemplatesPanel-liMSTh7s.js +1 -0
  20. package/dist/web/assets/Divider-D28g1gwj.js +1 -0
  21. package/dist/web/assets/DrawerContent-ChXgZ1Xm.js +1 -0
  22. package/dist/web/assets/FavoritesDrawer-CG9eI9Ay.css +1 -0
  23. package/dist/web/assets/FavoritesDrawer-D6QSiYaL.js +1 -0
  24. package/dist/web/assets/GatewayConvertDrawer-CuNlf7AC.css +1 -0
  25. package/dist/web/assets/GatewayConvertDrawer-RvET6iNG.js +1 -0
  26. package/dist/web/assets/Home-CSuFuJ9Y.css +1 -0
  27. package/dist/web/assets/Home-P8eseZcf.js +1 -0
  28. package/dist/web/assets/MarkdownEditor-CYmLGYju.js +1 -0
  29. package/dist/web/assets/MarkdownEditor-qfVgSre_.css +1 -0
  30. package/dist/web/assets/McpDrawer-C0dnsZhQ.css +1 -0
  31. package/dist/web/assets/McpDrawer-Ch3bkKIq.js +1 -0
  32. package/dist/web/assets/McpFormDrawer-BRbDcawn.css +1 -0
  33. package/dist/web/assets/McpFormDrawer-BcTlgSpN.js +1 -0
  34. package/dist/web/assets/PluginManager-Dh2o0xkZ.js +1 -0
  35. package/dist/web/assets/PluginsDrawer-DM3QjprE.css +1 -0
  36. package/dist/web/assets/PluginsDrawer-deKQ5u3I.js +1 -0
  37. package/dist/web/assets/PluginsPanel-BofsgQgj.js +1 -0
  38. package/dist/web/assets/PluginsPanel-D6ZqITcR.css +1 -0
  39. package/dist/web/assets/ProjectList-677RLZ8O.css +1 -0
  40. package/dist/web/assets/ProjectList-DhSWJHTA.js +1 -0
  41. package/dist/web/assets/PromptsDrawer-BIgiYCEQ.css +1 -0
  42. package/dist/web/assets/PromptsDrawer-Cfb2FeeU.js +1 -0
  43. package/dist/web/assets/RecentSessionsDrawer-3eXamJhr.js +1 -0
  44. package/dist/web/assets/RecentSessionsDrawer-CKFsOYDM.css +1 -0
  45. package/dist/web/assets/SessionCard-CW0eHURI.js +1 -0
  46. package/dist/web/assets/SessionCard-aM2NHu6i.css +1 -0
  47. package/dist/web/assets/SessionList-BpYRz1cX.css +1 -0
  48. package/dist/web/assets/SessionList-DQfyDGWU.js +1 -0
  49. package/dist/web/assets/SettingsDrawer-Dw5NUgHC.css +1 -0
  50. package/dist/web/assets/SettingsDrawer-u_vwUuPS.js +1 -0
  51. package/dist/web/assets/SkillManager-C0GCT2Kb.css +1 -0
  52. package/dist/web/assets/SkillManager-DHMprJLA.js +1 -0
  53. package/dist/web/assets/SkillsDrawer-BCNme-aJ.css +1 -0
  54. package/dist/web/assets/SkillsDrawer-CkF3BpyC.js +1 -0
  55. package/dist/web/assets/SkillsPanel-B3Nm5j32.css +1 -0
  56. package/dist/web/assets/SkillsPanel-DWE4pFGx.js +1 -0
  57. package/dist/web/assets/SpeedTestDrawer-BgfG1Ked.js +1 -0
  58. package/dist/web/assets/SpeedTestDrawer-Dc0WToJ_.css +1 -0
  59. package/dist/web/assets/Upload-CNwaGOws.js +1 -0
  60. package/dist/web/assets/WorkspaceDrawer-Br5CeCzL.js +1 -0
  61. package/dist/web/assets/WorkspaceDrawer-CGnMu9p1.css +1 -0
  62. package/dist/web/assets/WorkspaceManager-B2O8-qIw.js +1 -0
  63. package/dist/web/assets/WorkspacePanel-5oDKit3c.js +1 -0
  64. package/dist/web/assets/WorkspacePanel-D0-zHTHP.css +1 -0
  65. package/dist/web/assets/_plugin-vue_export-helper-BeLZJZij.js +1 -0
  66. package/dist/web/assets/client-UDwXBP9i.js +1 -0
  67. package/dist/web/assets/clipboard-B46yyoz_.js +1 -0
  68. package/dist/web/assets/headers-cf-QapUq.js +1 -0
  69. package/dist/web/assets/icons-B2Vg-IOC.js +1 -0
  70. package/dist/web/assets/index-BMAUPq5K.js +2 -0
  71. package/dist/web/assets/index-Bi1MQHYX.css +1 -0
  72. package/dist/web/assets/light-Cp0t7v32.js +1 -0
  73. package/dist/web/assets/markdown-u082bbtj.js +1 -0
  74. package/dist/web/assets/platforms-CBkB45JP.js +1 -0
  75. package/dist/web/assets/platforms-FTpjxAT6.js +1 -0
  76. package/dist/web/assets/project-config-B2baPzYL.js +1 -0
  77. package/dist/web/assets/sessions-Cmy31slD.js +1 -0
  78. package/dist/web/assets/sessions-yC_oVVh8.js +1 -0
  79. package/dist/web/assets/skill-repo-input-B_fkGlUK.js +1 -0
  80. package/dist/web/assets/use-lock-html-scroll-DXIqmUW4.js +1 -0
  81. package/dist/web/assets/use-message-DoLM8C1C.js +1 -0
  82. package/dist/web/assets/useResponsiveDrawer-jbmqZuJs.js +1 -0
  83. package/dist/web/assets/vendors-D0c_0KLP.js +1 -0
  84. package/dist/web/assets/vue-vendor-BqZbbXHA.js +1 -0
  85. package/dist/web/assets/workspaces-mjyPVGS8.js +1 -0
  86. package/dist/web/assets/xml-CgY3RMlX.js +1 -0
  87. package/dist/web/index.html +12 -8
  88. package/docs/native-log-memory-2026-09-16.md +43 -0
  89. package/docs/superpowers/plans/2026-08-26-configuration-driven-cli-platform.md +1578 -0
  90. package/docs/superpowers/plans/2026-08-30-project-scoped-config-control.md +1260 -0
  91. package/docs/superpowers/plans/2026-09-01-omp-skill-refresh-boundary.md +213 -0
  92. package/docs/superpowers/plans/2026-09-01-realtime-logs-panel.md +125 -0
  93. package/docs/superpowers/plans/2026-09-02-config-driven-platform-boundary.md +86 -0
  94. package/docs/superpowers/plans/2026-09-02-platform-implementation-drivers.md +508 -0
  95. package/docs/superpowers/plans/2026-09-03-cli-platform-correctness-boundary.md +760 -0
  96. package/docs/superpowers/plans/2026-09-03-dependency-security-remediation.md +133 -0
  97. package/docs/superpowers/plans/2026-09-04-model-catalog-pricing-sync.md +1078 -0
  98. package/docs/superpowers/plans/2026-09-05-codex-project-scan-500.md +128 -0
  99. package/docs/superpowers/plans/2026-09-06-project-skill-path-fix.md +97 -0
  100. package/docs/superpowers/specs/2026-08-26-configuration-driven-cli-platform-design.md +408 -0
  101. package/docs/superpowers/specs/2026-08-30-project-scoped-config-control-design.md +467 -0
  102. package/docs/superpowers/specs/2026-09-01-claude-session-content-repair-design.md +111 -0
  103. package/docs/superpowers/specs/2026-09-01-omp-skill-refresh-boundary-design.md +83 -0
  104. package/docs/superpowers/specs/2026-09-01-realtime-logs-panel-design.md +27 -0
  105. package/docs/superpowers/specs/2026-09-02-config-driven-platform-boundary-design.md +64 -0
  106. package/docs/superpowers/specs/2026-09-02-platform-implementation-driver-boundary-design.md +123 -0
  107. package/docs/superpowers/specs/2026-09-03-cli-platform-correctness-boundary-design.md +249 -0
  108. package/docs/superpowers/specs/2026-09-03-dependency-security-remediation-design.md +87 -0
  109. package/docs/superpowers/specs/2026-09-04-model-catalog-pricing-sync-design.md +301 -0
  110. package/docs/superpowers/specs/2026-09-05-codex-project-scan-500-design.md +24 -0
  111. package/package.json +8 -4
  112. package/src/commands/channels.js +88 -191
  113. package/src/commands/cli-type.js +19 -11
  114. package/src/commands/daemon.js +104 -32
  115. package/src/commands/doctor.js +16 -9
  116. package/src/commands/export-config.js +23 -5
  117. package/src/commands/list.js +130 -52
  118. package/src/commands/logs.js +44 -27
  119. package/src/commands/platform-command-registry.js +78 -0
  120. package/src/commands/plugin.js +11 -5
  121. package/src/commands/port-config.js +34 -52
  122. package/src/commands/proxy-control.js +207 -145
  123. package/src/commands/proxy.js +2 -2
  124. package/src/commands/resume.js +87 -91
  125. package/src/commands/search.js +137 -67
  126. package/src/commands/stats.js +30 -22
  127. package/src/commands/switch.js +1 -1
  128. package/src/commands/toggle-proxy.js +94 -111
  129. package/src/commands/ui.js +67 -6
  130. package/src/commands/workspace.js +90 -8
  131. package/src/config/default.js +6 -53
  132. package/src/config/loader.js +61 -24
  133. package/src/config/model-metadata.js +49 -59
  134. package/src/config/model-metadata.json +4095 -99
  135. package/src/config/paths.js +181 -8
  136. package/src/index.js +134 -71
  137. package/src/platforms/access.js +196 -0
  138. package/src/{server/services → platforms}/agents-service.js +354 -197
  139. package/src/platforms/channel-auth-registry.js +165 -0
  140. package/src/platforms/channel-auth-service.js +107 -0
  141. package/src/{server/services → platforms}/commands-service.js +195 -115
  142. package/src/platforms/driver-registry.js +59 -0
  143. package/src/platforms/drivers/claude/api-operations.js +62 -0
  144. package/src/{server/services/channels.js → platforms/drivers/claude/channels-implementation.js} +131 -33
  145. package/src/platforms/drivers/claude/channels.js +39 -0
  146. package/src/{server/services/config-sync-service.js → platforms/drivers/claude/config-sync.js} +29 -5
  147. package/src/{server/services → platforms/drivers/claude}/health-check.js +4 -4
  148. package/src/platforms/drivers/claude/health.js +22 -0
  149. package/src/platforms/drivers/claude/mcp.js +9 -0
  150. package/src/{server/services/settings-manager.js → platforms/drivers/claude/native-config-implementation.js} +13 -4
  151. package/src/platforms/drivers/claude/native-config.js +46 -0
  152. package/src/platforms/drivers/claude/native-logs.js +72 -0
  153. package/src/{server/services/claude-openai-gateway.js → platforms/drivers/claude/openai-gateway.js} +8 -65
  154. package/src/platforms/drivers/claude/project-config.js +21 -0
  155. package/src/platforms/drivers/claude/projects.js +62 -0
  156. package/src/platforms/drivers/claude/prompts.js +9 -0
  157. package/src/{server/proxy-server.js → platforms/drivers/claude/proxy-implementation.js} +41 -278
  158. package/src/platforms/drivers/claude/proxy.js +16 -0
  159. package/src/platforms/drivers/claude/resource-sync.js +9 -0
  160. package/src/platforms/drivers/claude/session-history-adapter.js +313 -0
  161. package/src/{server/services/sessions.js → platforms/drivers/claude/sessions-implementation.js} +145 -35
  162. package/src/platforms/drivers/claude/sessions.js +76 -0
  163. package/src/{server/services/claude-statistics-service.js → platforms/drivers/claude/statistics-implementation.js} +2 -2
  164. package/src/platforms/drivers/claude/statistics.js +16 -0
  165. package/src/{server/services/claude-wire.js → platforms/drivers/claude/wire.js} +1 -1
  166. package/src/platforms/drivers/codex/api-operations.js +9 -0
  167. package/src/{server/services/codex-channels.js → platforms/drivers/codex/channels-implementation.js} +149 -14
  168. package/src/platforms/drivers/codex/channels.js +45 -0
  169. package/src/{server/services/codex-config.js → platforms/drivers/codex/config.js} +12 -2
  170. package/src/{server/services/codex-env-manager.js → platforms/drivers/codex/env-manager.js} +1 -1
  171. package/src/platforms/drivers/codex/mcp.js +9 -0
  172. package/src/{server/services/codex-settings-manager.js → platforms/drivers/codex/native-config-implementation.js} +15 -6
  173. package/src/platforms/drivers/codex/native-config.js +47 -0
  174. package/src/platforms/drivers/codex/native-logs.js +166 -0
  175. package/src/platforms/drivers/codex/project-config.js +21 -0
  176. package/src/platforms/drivers/codex/projects.js +26 -0
  177. package/src/platforms/drivers/codex/prompts.js +9 -0
  178. package/src/{server/codex-proxy-server.js → platforms/drivers/codex/proxy-implementation.js} +30 -233
  179. package/src/platforms/drivers/codex/proxy.js +16 -0
  180. package/src/platforms/drivers/codex/resource-sync.js +9 -0
  181. package/src/{server/services/session-history-adapters/codex.js → platforms/drivers/codex/session-history-adapter.js} +37 -23
  182. package/src/{server/services/codex-sessions.js → platforms/drivers/codex/sessions-implementation.js} +81 -75
  183. package/src/platforms/drivers/codex/sessions.js +36 -0
  184. package/src/{server/services/codex-statistics-service.js → platforms/drivers/codex/statistics-implementation.js} +2 -2
  185. package/src/platforms/drivers/codex/statistics.js +16 -0
  186. package/src/platforms/drivers/gemini/api-operations.js +9 -0
  187. package/src/{server/services/gemini-channels.js → platforms/drivers/gemini/channels-implementation.js} +202 -37
  188. package/src/platforms/drivers/gemini/channels.js +39 -0
  189. package/src/{server/services/gemini-config.js → platforms/drivers/gemini/config.js} +12 -2
  190. package/src/platforms/drivers/gemini/mcp.js +9 -0
  191. package/src/{server/services/gemini-settings-manager.js → platforms/drivers/gemini/native-config-implementation.js} +14 -5
  192. package/src/platforms/drivers/gemini/native-config.js +39 -0
  193. package/src/platforms/drivers/gemini/native-logs.js +180 -0
  194. package/src/platforms/drivers/gemini/project-config.js +21 -0
  195. package/src/platforms/drivers/gemini/projects.js +26 -0
  196. package/src/platforms/drivers/gemini/prompts.js +9 -0
  197. package/src/{server/gemini-proxy-server.js → platforms/drivers/gemini/proxy-implementation.js} +36 -267
  198. package/src/platforms/drivers/gemini/proxy.js +16 -0
  199. package/src/platforms/drivers/gemini/resource-sync.js +9 -0
  200. package/src/{server/services/session-history-adapters/gemini.js → platforms/drivers/gemini/session-history-adapter.js} +70 -18
  201. package/src/{server/services/gemini-sessions.js → platforms/drivers/gemini/sessions-implementation.js} +53 -37
  202. package/src/platforms/drivers/gemini/sessions.js +47 -0
  203. package/src/{server/services/gemini-statistics-service.js → platforms/drivers/gemini/statistics-implementation.js} +2 -2
  204. package/src/platforms/drivers/gemini/statistics.js +16 -0
  205. package/src/{server/services/gemini-wire.js → platforms/drivers/gemini/wire.js} +1 -1
  206. package/src/platforms/drivers/generic-filesystem.js +166 -0
  207. package/src/platforms/drivers/generic-jsonl.js +141 -0
  208. package/src/platforms/drivers/generic-mcp.js +44 -0
  209. package/src/platforms/drivers/generic-openai-compatible.js +45 -0
  210. package/src/platforms/drivers/generic-prompt.js +41 -0
  211. package/src/platforms/drivers/legacy.js +677 -0
  212. package/src/platforms/drivers/native-config-snapshot.js +125 -0
  213. package/src/platforms/drivers/native-log-utils.js +1292 -0
  214. package/src/platforms/drivers/notification-hooks.js +578 -0
  215. package/src/{server/api/omp-config.js → platforms/drivers/omp/api-operations.js} +52 -64
  216. package/src/{server/services/omp-auth-provider-worker.js → platforms/drivers/omp/auth-provider-worker.js} +1 -1
  217. package/src/{server/services/omp-auth-providers.js → platforms/drivers/omp/auth-providers.js} +1 -1
  218. package/src/{server/services/omp-channels.js → platforms/drivers/omp/channels-implementation.js} +166 -39
  219. package/src/platforms/drivers/omp/channels.js +58 -0
  220. package/src/{server/services/omp-config.js → platforms/drivers/omp/config.js} +53 -13
  221. package/src/{server/services/omp-gateway-routing.js → platforms/drivers/omp/gateway-routing.js} +14 -7
  222. package/src/{server/services/omp-gateway.js → platforms/drivers/omp/gateway.js} +4 -262
  223. package/src/platforms/drivers/omp/mcp.js +9 -0
  224. package/src/{server/services/omp-settings-manager.js → platforms/drivers/omp/native-config-implementation.js} +75 -10
  225. package/src/platforms/drivers/omp/native-config.js +46 -0
  226. package/src/platforms/drivers/omp/native-logs.js +52 -0
  227. package/src/{server/services/omp-native-plugin-adapter.js → platforms/drivers/omp/native-plugin-adapter.js} +91 -4
  228. package/src/platforms/drivers/omp/project-config.js +29 -0
  229. package/src/platforms/drivers/omp/projects.js +20 -0
  230. package/src/platforms/drivers/omp/prompts.js +9 -0
  231. package/src/{server/omp-proxy-server.js → platforms/drivers/omp/proxy-implementation.js} +6 -15
  232. package/src/platforms/drivers/omp/proxy.js +16 -0
  233. package/src/platforms/drivers/omp/resource-sync.js +9 -0
  234. package/src/{server/services/session-history-adapters/omp.js → platforms/drivers/omp/session-history-adapter.js} +42 -18
  235. package/src/{server/services/omp-sessions.js → platforms/drivers/omp/sessions-implementation.js} +130 -94
  236. package/src/platforms/drivers/omp/sessions.js +36 -0
  237. package/src/{server/services/omp-skill-discovery.js → platforms/drivers/omp/skill-discovery.js} +159 -32
  238. package/src/{server/services/omp-skill-settings-service.js → platforms/drivers/omp/skill-settings.js} +1 -1
  239. package/src/{server/services/omp-statistics-service.js → platforms/drivers/omp/statistics-implementation.js} +3 -3
  240. package/src/platforms/drivers/omp/statistics.js +16 -0
  241. package/src/platforms/drivers/opencode/api-operations.js +9 -0
  242. package/src/{server/services/opencode-channels.js → platforms/drivers/opencode/channels-implementation.js} +28 -9
  243. package/src/platforms/drivers/opencode/channels.js +40 -0
  244. package/src/platforms/drivers/opencode/conversion.js +41 -0
  245. package/src/{server/services/opencode-gateway-converter.js → platforms/drivers/opencode/gateway-converter.js} +1 -1
  246. package/src/platforms/drivers/opencode/mcp.js +9 -0
  247. package/src/{server/services/opencode-settings-manager.js → platforms/drivers/opencode/native-config-implementation.js} +17 -6
  248. package/src/platforms/drivers/opencode/native-config.js +26 -0
  249. package/src/platforms/drivers/opencode/native-logs.js +133 -0
  250. package/src/platforms/drivers/opencode/project-config.js +98 -0
  251. package/src/platforms/drivers/opencode/projects.js +20 -0
  252. package/src/platforms/drivers/opencode/prompts.js +9 -0
  253. package/src/{server/opencode-proxy-server.js → platforms/drivers/opencode/proxy-implementation.js} +27 -362
  254. package/src/platforms/drivers/opencode/proxy.js +16 -0
  255. package/src/platforms/drivers/opencode/resource-sync.js +9 -0
  256. package/src/{server/services/opencode-sessions.js → platforms/drivers/opencode/sessions-implementation.js} +211 -64
  257. package/src/platforms/drivers/opencode/sessions.js +48 -0
  258. package/src/{server/services/opencode-statistics-service.js → platforms/drivers/opencode/statistics-implementation.js} +2 -2
  259. package/src/platforms/drivers/opencode/statistics.js +16 -0
  260. package/src/platforms/drivers/secure-file-driver.js +272 -0
  261. package/src/platforms/drivers/unsupported.js +7 -0
  262. package/src/platforms/manifest-schema.js +398 -0
  263. package/src/platforms/manifests/claude.json +489 -0
  264. package/src/platforms/manifests/codex.json +448 -0
  265. package/src/platforms/manifests/gemini.json +447 -0
  266. package/src/platforms/manifests/omp.json +496 -0
  267. package/src/platforms/manifests/opencode.json +422 -0
  268. package/src/{server/services → platforms}/native-oauth-adapters.js +98 -418
  269. package/src/{server/services → platforms}/notification-hooks.js +190 -1023
  270. package/src/platforms/oauth-credentials-service.js +635 -0
  271. package/src/platforms/path-resolver.js +179 -0
  272. package/src/platforms/platform-path-context.js +305 -0
  273. package/src/platforms/registry.js +248 -0
  274. package/src/platforms/remote-notification-providers.js +678 -0
  275. package/src/platforms/runtime.js +259 -0
  276. package/src/{server/services/session-history-adapters/index.js → platforms/session-history-adapters.js} +8 -1
  277. package/src/plugins/plugin-loader.js +2 -2
  278. package/src/plugins/plugin-manager.js +2 -2
  279. package/src/plugins/registry.js +27 -10
  280. package/src/reset-config.js +21 -5
  281. package/src/server/api/agents.js +46 -72
  282. package/src/server/api/commands.js +16 -6
  283. package/src/server/api/config-registry.js +206 -59
  284. package/src/server/api/config-sync.js +3 -2
  285. package/src/server/api/config-templates.js +20 -4
  286. package/src/server/api/config.js +111 -102
  287. package/src/server/api/convert.js +54 -178
  288. package/src/server/api/dashboard.js +168 -102
  289. package/src/server/api/hooks.js +1 -1
  290. package/src/server/api/mcp.js +224 -84
  291. package/src/server/api/platform-api-config.js +102 -0
  292. package/src/server/api/platform-route-factory.js +215 -0
  293. package/src/server/api/platform-routes.js +26 -0
  294. package/src/server/api/platforms.js +110 -0
  295. package/src/server/api/plugins.js +57 -57
  296. package/src/server/api/project-config.js +168 -0
  297. package/src/server/api/prompts.js +58 -45
  298. package/src/server/api/settings.js +55 -8
  299. package/src/server/api/skills.js +262 -133
  300. package/src/server/api/ui-config.js +2 -2
  301. package/src/server/api/validation-errors.js +18 -4
  302. package/src/server/api/workspaces.js +47 -12
  303. package/src/server/index.js +164 -213
  304. package/src/server/platform-context.js +81 -0
  305. package/src/server/services/channel-balance.js +133 -24
  306. package/src/server/services/channel-health.js +21 -6
  307. package/src/server/services/channel-scheduler.js +29 -39
  308. package/src/server/services/channel-sync-utils.js +23 -13
  309. package/src/server/services/config-export-service.js +350 -319
  310. package/src/server/services/config-registry-service.js +280 -54
  311. package/src/server/services/config-sync-manager.js +172 -944
  312. package/src/server/services/config-templates-service.js +419 -353
  313. package/src/server/services/control-manifest-store.js +206 -0
  314. package/src/server/services/dashboard-snapshot-worker.js +656 -100
  315. package/src/server/services/effective-control-service.js +557 -0
  316. package/src/server/services/local-resource-index.js +314 -0
  317. package/src/server/services/mcp-service.js +607 -977
  318. package/src/server/services/model-detector.js +15 -10
  319. package/src/server/services/native-log-channel-resolver.js +214 -0
  320. package/src/server/services/native-log-observer.js +291 -0
  321. package/src/server/services/network-access.js +12 -2
  322. package/src/server/services/platform-catalog.js +82 -0
  323. package/src/server/services/platform-resolution.js +32 -29
  324. package/src/server/services/plugins-service.js +376 -122
  325. package/src/server/services/project-config-service.js +550 -0
  326. package/src/server/services/project-path-validation.js +31 -0
  327. package/src/server/services/prompts-service.js +267 -233
  328. package/src/server/services/proxy-runtime.js +7 -4
  329. package/src/server/services/remote-credential-cache.js +43 -0
  330. package/src/server/services/repo-scanner-base.js +182 -75
  331. package/src/server/services/request-logger.js +7 -4
  332. package/src/server/services/session-history-index.js +876 -214
  333. package/src/server/services/session-history-worker.js +228 -33
  334. package/src/server/services/session-snapshot-worker.js +124 -34
  335. package/src/server/services/session-snapshots.js +4 -2
  336. package/src/server/services/skill-artifact-store.js +355 -0
  337. package/src/server/services/skill-format-adapters.js +65 -0
  338. package/src/server/services/skill-projection-service.js +323 -0
  339. package/src/server/services/skill-refresh-task-service.js +275 -0
  340. package/src/server/services/skill-service.js +2020 -677
  341. package/src/server/services/snapshot-cache.js +30 -8
  342. package/src/server/services/speed-test.js +8 -8
  343. package/src/server/services/sqlite-connection.js +19 -3
  344. package/src/server/services/statistics-service.js +240 -57
  345. package/src/server/services/ui-config.js +107 -76
  346. package/src/server/services/usage-log-utils.js +98 -0
  347. package/src/server/services/web-build.js +1 -1
  348. package/src/server/services/workspace-service.js +59 -29
  349. package/src/server/utils/pricing.js +10 -19
  350. package/src/server/websocket-server.js +153 -28
  351. package/src/{server/services/base → shared}/base-channel-service.js +156 -28
  352. package/src/shared/capability-driver.js +104 -0
  353. package/src/shared/channel-auth-policy.js +27 -0
  354. package/src/shared/channel-driver.js +161 -0
  355. package/src/shared/driver-factories/api.js +180 -0
  356. package/src/shared/driver-factories/mcp.js +244 -0
  357. package/src/shared/driver-factories/projects.js +121 -0
  358. package/src/shared/driver-factories/prompts.js +58 -0
  359. package/src/shared/driver-factories/resource-sync.js +375 -0
  360. package/src/shared/driver-result.js +78 -0
  361. package/src/shared/mcp-format.js +189 -0
  362. package/src/shared/platforms.js +104 -167
  363. package/src/shared/project-config.js +512 -0
  364. package/src/shared/proxy-driver.js +57 -0
  365. package/src/{server/services/base → shared}/response-usage-parser.js +8 -4
  366. package/src/ui/menu.js +91 -67
  367. package/src/utils/port-helper.js +35 -19
  368. package/src/utils/session.js +1 -1
  369. package/dist/web/assets/Analytics-COEUXmd4.js +0 -25
  370. package/dist/web/assets/Analytics-RNn1BUbG.css +0 -1
  371. package/dist/web/assets/ConfigTemplates-DLLkS53H.js +0 -1
  372. package/dist/web/assets/Home-DCEyLzwX.js +0 -1
  373. package/dist/web/assets/Home-DYVy4cGZ.css +0 -1
  374. package/dist/web/assets/PluginManager-Oe1ZHoMO.js +0 -1
  375. package/dist/web/assets/ProjectList-CWjuAFof.js +0 -1
  376. package/dist/web/assets/ProjectList-VeMNXfgO.css +0 -1
  377. package/dist/web/assets/SessionList-C4chCPxK.css +0 -1
  378. package/dist/web/assets/SessionList-v3ehGg9U.js +0 -1
  379. package/dist/web/assets/SkillManager-BsX8Qpj0.css +0 -1
  380. package/dist/web/assets/SkillManager-DUF_qP5S.js +0 -1
  381. package/dist/web/assets/WorkspaceManager-CjAWBosO.js +0 -1
  382. package/dist/web/assets/icons-nGdSKQn2.js +0 -1
  383. package/dist/web/assets/index-D5hyHPj7.js +0 -2
  384. package/dist/web/assets/index-bJRG3RXH.css +0 -1
  385. package/dist/web/assets/markdown-BNJfEgCA.js +0 -1
  386. package/dist/web/assets/markdown-BfC0goYb.css +0 -10
  387. package/dist/web/assets/naive-ui-BALVpMgd.js +0 -1
  388. package/dist/web/assets/vendors-DQA4Hw9v.js +0 -7
  389. package/dist/web/assets/vue-vendor-B5RqjEjQ.js +0 -45
  390. package/src/config/model-pricing.js +0 -35
  391. package/src/server/api/channels.js +0 -439
  392. package/src/server/api/claude-hooks.js +0 -56
  393. package/src/server/api/claude-statistics.js +0 -57
  394. package/src/server/api/codex-channels.js +0 -491
  395. package/src/server/api/codex-projects.js +0 -117
  396. package/src/server/api/codex-proxy.js +0 -293
  397. package/src/server/api/codex-sessions.js +0 -652
  398. package/src/server/api/codex-statistics.js +0 -57
  399. package/src/server/api/gemini-channels.js +0 -392
  400. package/src/server/api/gemini-projects.js +0 -103
  401. package/src/server/api/gemini-proxy.js +0 -231
  402. package/src/server/api/gemini-sessions.js +0 -550
  403. package/src/server/api/gemini-statistics.js +0 -57
  404. package/src/server/api/health-check.js +0 -31
  405. package/src/server/api/oauth-credentials.js +0 -198
  406. package/src/server/api/omp-channels.js +0 -575
  407. package/src/server/api/omp-projects.js +0 -88
  408. package/src/server/api/omp-proxy.js +0 -125
  409. package/src/server/api/omp-sessions.js +0 -386
  410. package/src/server/api/omp-statistics.js +0 -40
  411. package/src/server/api/opencode-channels.js +0 -471
  412. package/src/server/api/opencode-projects.js +0 -110
  413. package/src/server/api/opencode-proxy.js +0 -354
  414. package/src/server/api/opencode-sessions.js +0 -466
  415. package/src/server/api/opencode-statistics.js +0 -57
  416. package/src/server/api/projects.js +0 -120
  417. package/src/server/api/proxy.js +0 -330
  418. package/src/server/api/sessions.js +0 -810
  419. package/src/server/services/oauth-credentials-service.js +0 -945
  420. package/src/server/services/omp-session-log-observer.js +0 -138
  421. package/src/server/services/opencode-gateway-adapters.js +0 -43
  422. package/src/server/services/project-snapshots.js +0 -59
  423. package/src/server/services/proxy-log-helper.js +0 -298
  424. package/src/server/services/session-cache.js +0 -127
  425. package/src/server/services/session-converter.js +0 -582
  426. package/src/server/services/session-history-adapters/claude.js +0 -235
  427. /package/src/{server/services/claude-token-recovery.js → platforms/drivers/claude/token-recovery.js} +0 -0
  428. /package/src/{server/services/codex-parser.js → platforms/drivers/codex/parser.js} +0 -0
  429. /package/src/{server/services/codex-speed-test-template.json → platforms/drivers/codex/speed-test-template.json} +0 -0
  430. /package/src/{server/services/codex-wire.js → platforms/drivers/codex/wire.js} +0 -0
  431. /package/src/{server/services/omp-auth-gateway-client.js → platforms/drivers/omp/auth-gateway-client.js} +0 -0
  432. /package/src/{server/services/opencode-normalization.js → platforms/drivers/opencode/normalization.js} +0 -0
  433. /package/src/{server/services → shared}/config-artifact-paths.js +0 -0
  434. /package/src/{server/services/base → shared}/proxy-utils.js +0 -0
@@ -0,0 +1 @@
1
+ .drawer-header[data-v-98709d7a]{color:var(--text-primary);align-items:center;gap:10px;font-size:15px;font-weight:600;display:flex}.header-icon-wrapper[data-v-98709d7a]{color:#fff;background:linear-gradient(135deg,#f59e0b 0%,#fbbf24 100%);border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.speed-test-container[data-v-98709d7a]{flex-direction:column;gap:16px;display:flex}.test-controls[data-v-98709d7a]{align-items:center;gap:12px;display:flex}.test-btn[data-v-98709d7a]{border-radius:6px}.test-run-list[data-v-98709d7a]{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.test-run-item[data-v-98709d7a]{align-items:flex-start;gap:8px;min-width:0;display:flex}.test-run-status[data-v-98709d7a]{min-width:0;color:var(--text-secondary);align-items:center;gap:5px;font-size:12px;line-height:1.4;display:flex}.test-run-status span[data-v-98709d7a]{word-break:break-word}.test-run-status.testing[data-v-98709d7a],.test-run-status.cancelling[data-v-98709d7a]{color:#d97706}.test-run-status.completed[data-v-98709d7a]{color:#18a058}.test-run-status.failed[data-v-98709d7a],.test-run-status.timeout[data-v-98709d7a]{color:#f56c6c}.test-run-status.cancelled[data-v-98709d7a]{color:var(--text-tertiary)}.test-summary[data-v-98709d7a]{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:10px;gap:8px;padding:12px;display:flex}.summary-item[data-v-98709d7a]{background:var(--bg-primary);border-radius:8px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:10px 8px;display:flex}.summary-label[data-v-98709d7a]{color:var(--text-tertiary);font-size:11px;font-weight:500}.summary-value[data-v-98709d7a]{color:var(--text-primary);font-size:20px;font-weight:700}.summary-item.success .summary-value[data-v-98709d7a]{color:#18a058}.summary-item.failed .summary-value[data-v-98709d7a]{color:#f56c6c}.summary-item.avg .summary-value[data-v-98709d7a]{color:#f59e0b;font-size:16px}.results-list[data-v-98709d7a]{min-height:200px}.loading-state[data-v-98709d7a]{flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:300px;display:flex}.loading-text[data-v-98709d7a]{color:var(--text-secondary);margin:0;font-size:13px}.empty-state[data-v-98709d7a]{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:300px;padding:48px 24px;display:flex}.empty-icon-wrapper[data-v-98709d7a]{background:var(--bg-tertiary);width:64px;height:64px;color:var(--text-tertiary);border-radius:16px;justify-content:center;align-items:center;margin-bottom:16px;display:flex}.empty-title[data-v-98709d7a]{color:var(--text-primary);margin:0 0 6px;font-size:15px;font-weight:600}.empty-desc[data-v-98709d7a]{color:var(--text-tertiary);margin:0;font-size:13px}.result-cards[data-v-98709d7a]{flex-direction:column;gap:8px;display:flex}.result-card[data-v-98709d7a]{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:10px;padding:12px 14px;transition:all .2s}.result-card[data-v-98709d7a]:hover{border-color:var(--border-secondary);box-shadow:0 2px 8px #0000000a}.result-card.success[data-v-98709d7a]{border-left:3px solid #18a058}.result-card.failed[data-v-98709d7a]{border-left:3px solid #f56c6c}.result-card.testing[data-v-98709d7a]{opacity:.8;border-left:3px solid #f59e0b}.result-header[data-v-98709d7a]{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.channel-info[data-v-98709d7a]{align-items:center;gap:8px;display:flex}.channel-type-badge[data-v-98709d7a]{text-transform:uppercase;letter-spacing:.3px;border-radius:4px;align-items:center;padding:2px 6px;font-size:10px;font-weight:600;display:inline-flex}.channel-type-badge.type-claude[data-v-98709d7a]{color:#fff;background:linear-gradient(135deg,#d97706 0%,#f59e0b 100%)}.channel-type-badge.type-codex[data-v-98709d7a]{color:#fff;background:linear-gradient(135deg,#059669 0%,#10b981 100%)}.channel-type-badge.type-gemini[data-v-98709d7a]{color:#fff;background:linear-gradient(135deg,#7c3aed 0%,#a78bfa 100%)}.channel-type-badge.type-opencode[data-v-98709d7a]{color:#fff;background:linear-gradient(135deg,#ea580c 0%,#fb923c 100%)}.channel-name[data-v-98709d7a]{color:var(--text-primary);font-size:13px;font-weight:600}.result-status[data-v-98709d7a]{align-items:center;display:flex}.latency-badge[data-v-98709d7a]{border-radius:6px;align-items:center;padding:3px 8px;font-family:SF Mono,Monaco,monospace;font-size:12px;font-weight:600;display:inline-flex}.latency-badge.excellent[data-v-98709d7a]{color:#18a058;background:#18a0581a}.latency-badge.good[data-v-98709d7a]{color:#3b82f6;background:#3b82f61a}.latency-badge.fair[data-v-98709d7a]{color:#f59e0b;background:#f59e0b1a}.latency-badge.poor[data-v-98709d7a]{color:#f56c6c;background:#f56c6c1a}.status-badge[data-v-98709d7a]{border-radius:6px;align-items:center;padding:3px 8px;font-size:11px;font-weight:600;display:inline-flex}.status-badge.failed[data-v-98709d7a]{color:#f56c6c;background:#f56c6c1a}.result-details[data-v-98709d7a]{align-items:center;gap:12px;display:flex}.latency-bar[data-v-98709d7a]{background:var(--bg-tertiary);border-radius:2px;flex:1;height:4px;overflow:hidden}.latency-fill[data-v-98709d7a]{border-radius:2px;height:100%;transition:width .3s}.latency-fill.excellent[data-v-98709d7a]{background:linear-gradient(90deg,#18a058,#34d399)}.latency-fill.good[data-v-98709d7a]{background:linear-gradient(90deg,#3b82f6,#60a5fa)}.latency-fill.fair[data-v-98709d7a]{background:linear-gradient(90deg,#f59e0b,#fbbf24)}.latency-fill.poor[data-v-98709d7a]{background:linear-gradient(90deg,#f56c6c,#ff8c8c)}.latency-level[data-v-98709d7a]{text-align:right;min-width:32px;font-size:11px;font-weight:600}.latency-level.excellent[data-v-98709d7a]{color:#18a058}.latency-level.good[data-v-98709d7a]{color:#3b82f6}.latency-level.fair[data-v-98709d7a]{color:#f59e0b}.latency-level.poor[data-v-98709d7a]{color:#f56c6c}.error-info[data-v-98709d7a]{flex:1;align-items:center;gap:10px;display:flex}.error-container[data-v-98709d7a]{background:#f56c6c0f;border-radius:6px;flex:1;align-items:flex-start;gap:6px;padding:8px 10px;display:flex}.error-icon[data-v-98709d7a]{color:#f56c6c;flex-shrink:0;margin-top:1px}.error-msg[data-v-98709d7a]{color:#f56c6c;word-break:break-word;font-size:12px;line-height:1.4}.error-latency[data-v-98709d7a]{color:var(--text-tertiary);background:var(--bg-tertiary);white-space:nowrap;border-radius:4px;flex-shrink:0;padding:3px 6px;font-family:SF Mono,Monaco,monospace;font-size:11px}.result-meta[data-v-98709d7a]{border-top:1px dashed var(--border-primary);flex-wrap:wrap;gap:10px;margin-top:10px;padding-top:10px;display:flex}.meta-item[data-v-98709d7a]{color:var(--text-tertiary);font-size:11px}.meta-item.status-indicator[data-v-98709d7a]{color:var(--text-secondary);align-items:center;gap:4px;font-family:inherit;display:flex}.meta-item.http-code[data-v-98709d7a]{background:var(--bg-tertiary);border-radius:3px;padding:1px 5px;font-family:SF Mono,Monaco,monospace}.meta-item.time[data-v-98709d7a]{color:var(--text-quaternary);font-family:SF Mono,Monaco,monospace}.status-dot[data-v-98709d7a]{border-radius:50%;width:6px;height:6px;display:inline-block}.status-dot.ok[data-v-98709d7a]{background-color:#18a058;box-shadow:0 0 4px #18a05880}.status-dot.fail[data-v-98709d7a]{background-color:#f56c6c;box-shadow:0 0 4px #f56c6c80}.cache-hint[data-v-98709d7a]{color:#d97706;background:#f59e0b14;border:1px solid #f59e0b26;border-radius:8px;align-items:center;gap:6px;padding:10px 12px;font-size:12px;display:flex}
@@ -0,0 +1 @@
1
+ import{$t as e,A as n,Dt as t,E as r,Et as o,H as i,Ht as l,I as a,It as s,L as d,N as u,O as c,Ot as p,Qt as h,Rt as f,Tn as g,Tt as v,Yt as m,Zt as w,bn as b,gn as x,gt as y,hn as C,ht as R,j as k,jt as P,k as S,mt as O,nn as L,rn as z,s as $,tn as T,vn as B,w as D,xn as j,xt as I,yn as A}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as M,G as U,I as E,M as F,N as H,Q as N,V as W,Z,_ as q,b as _,dt as V,f as X,ft as G,g as Y,gt as J,l as Q,st as K,tt as ee,z as ne}from"./vue-vendor-BqZbbXHA.js";import{f as te}from"./use-message-DoLM8C1C.js";import{M as re,N as oe,P as ie,j as le}from"./light-Cp0t7v32.js";import{$ as ae,G as se,H as de,Mt as ue,gt as ce,ut as pe,vt as he,z as fe}from"./index-BMAUPq5K.js";function ge(e,n){if(!e)return;const t=document.createElement("a");t.href=e,void 0!==n&&(t.download=n),document.body.appendChild(t),t.click(),document.body.removeChild(t)}var ve,me=(ve={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"},function(e){return null==ve?void 0:ve[e]}),we=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,be=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");var xe=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;var ye=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;var Ce="\\ud800-\\udfff",Re="\\u2700-\\u27bf",ke="a-z\\xdf-\\xf6\\xf8-\\xff",Pe="A-Z\\xc0-\\xd6\\xd8-\\xde",Se="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",Oe="["+Se+"]",Le="\\d+",ze="["+Re+"]",$e="["+ke+"]",Te="[^"+Ce+Se+Le+Re+ke+Pe+"]",Be="(?:\\ud83c[\\udde6-\\uddff]){2}",De="[\\ud800-\\udbff][\\udc00-\\udfff]",je="["+Pe+"]",Ie="(?:"+$e+"|"+Te+")",Ae="(?:"+je+"|"+Te+")",Me="(?:['’](?:d|ll|m|re|s|t|ve))?",Ue="(?:['’](?:D|LL|M|RE|S|T|VE))?",Ee="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",Fe="[\\ufe0e\\ufe0f]?",He=Fe+Ee+("(?:\\u200d(?:"+["[^"+Ce+"]",Be,De].join("|")+")"+Fe+Ee+")*"),Ne="(?:"+[ze,Be,De].join("|")+")"+He,We=RegExp([je+"?"+$e+"+"+Me+"(?="+[Oe,je,"$"].join("|")+")",Ae+"+"+Ue+"(?="+[Oe,je+Ie,"$"].join("|")+")",je+"?"+Ie+"+"+Me,je+"+"+Ue,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Le,Ne].join("|"),"g");function Ze(e,n,t){return e=i(e),void 0===(n=t?void 0:n)?function(e){return ye.test(e)}(e)?function(e){return e.match(We)||[]}(e):function(e){return e.match(xe)||[]}(e):e.match(n)||[]}var qe=RegExp("['’]","g");var _e,Ve=(_e=function(e,n,t){return e+(t?"-":"")+n.toLowerCase()},function(e){return function(e,n,t,r){var o=-1,i=null==e?0:e.length;for(r&&i&&(t=e[++o]);++o<i;)t=n(t,e[o],o,e);return t}(Ze(function(e){return(e=i(e))&&e.replace(we,me).replace(be,"")}(e).replace(qe,"")),_e,"")}),Xe=S("attach",()=>F("svg",{viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},F("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},F("g",{fill:"currentColor","fill-rule":"nonzero"},F("path",{d:"M3.25735931,8.70710678 L7.85355339,4.1109127 C8.82986412,3.13460197 10.4127766,3.13460197 11.3890873,4.1109127 C12.365398,5.08722343 12.365398,6.67013588 11.3890873,7.64644661 L6.08578644,12.9497475 C5.69526215,13.3402718 5.06209717,13.3402718 4.67157288,12.9497475 C4.28104858,12.5592232 4.28104858,11.9260582 4.67157288,11.5355339 L9.97487373,6.23223305 C10.1701359,6.0369709 10.1701359,5.72038841 9.97487373,5.52512627 C9.77961159,5.32986412 9.4630291,5.32986412 9.26776695,5.52512627 L3.96446609,10.8284271 C3.18341751,11.6094757 3.18341751,12.8758057 3.96446609,13.6568542 C4.74551468,14.4379028 6.01184464,14.4379028 6.79289322,13.6568542 L12.0961941,8.35355339 C13.4630291,6.98671837 13.4630291,4.77064094 12.0961941,3.40380592 C10.7293591,2.0369709 8.51328163,2.0369709 7.14644661,3.40380592 L2.55025253,8 C2.35499039,8.19526215 2.35499039,8.51184464 2.55025253,8.70710678 C2.74551468,8.90236893 3.06209717,8.90236893 3.25735931,8.70710678 Z"}))))),Ge=S("cancel",()=>F("svg",{viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},F("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},F("g",{fill:"currentColor","fill-rule":"nonzero"},F("path",{d:"M2.58859116,2.7156945 L2.64644661,2.64644661 C2.82001296,2.47288026 3.08943736,2.45359511 3.2843055,2.58859116 L3.35355339,2.64644661 L8,7.293 L12.6464466,2.64644661 C12.8417088,2.45118446 13.1582912,2.45118446 13.3535534,2.64644661 C13.5488155,2.84170876 13.5488155,3.15829124 13.3535534,3.35355339 L8.707,8 L13.3535534,12.6464466 C13.5271197,12.820013 13.5464049,13.0894374 13.4114088,13.2843055 L13.3535534,13.3535534 C13.179987,13.5271197 12.9105626,13.5464049 12.7156945,13.4114088 L12.6464466,13.3535534 L8,8.707 L3.35355339,13.3535534 C3.15829124,13.5488155 2.84170876,13.5488155 2.64644661,13.3535534 C2.45118446,13.1582912 2.45118446,12.8417088 2.64644661,12.6464466 L7.293,8 L2.64644661,3.35355339 C2.47288026,3.17998704 2.45359511,2.91056264 2.58859116,2.7156945 L2.64644661,2.64644661 L2.58859116,2.7156945 Z"}))))),Ye=S("download",()=>F("svg",{viewBox:"0 0 16 16",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},F("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},F("g",{fill:"currentColor","fill-rule":"nonzero"},F("path",{d:"M3.5,13 L12.5,13 C12.7761424,13 13,13.2238576 13,13.5 C13,13.7454599 12.8231248,13.9496084 12.5898756,13.9919443 L12.5,14 L3.5,14 C3.22385763,14 3,13.7761424 3,13.5 C3,13.2545401 3.17687516,13.0503916 3.41012437,13.0080557 L3.5,13 L12.5,13 L3.5,13 Z M7.91012437,1.00805567 L8,1 C8.24545989,1 8.44960837,1.17687516 8.49194433,1.41012437 L8.5,1.5 L8.5,10.292 L11.1819805,7.6109127 C11.3555469,7.43734635 11.6249713,7.4180612 11.8198394,7.55305725 L11.8890873,7.6109127 C12.0626536,7.78447906 12.0819388,8.05390346 11.9469427,8.2487716 L11.8890873,8.31801948 L8.35355339,11.8535534 C8.17998704,12.0271197 7.91056264,12.0464049 7.7156945,11.9114088 L7.64644661,11.8535534 L4.1109127,8.31801948 C3.91565056,8.12275734 3.91565056,7.80617485 4.1109127,7.6109127 C4.28447906,7.43734635 4.55390346,7.4180612 4.7487716,7.55305725 L4.81801948,7.6109127 L7.5,10.292 L7.5,1.5 C7.5,1.25454011 7.67687516,1.05039163 7.91012437,1.00805567 L8,1 L7.91012437,1.00805567 Z"}))))),Je=M({name:"ResizeSmall",render:()=>F("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20"},F("g",{fill:"none"},F("path",{d:"M5.5 4A1.5 1.5 0 0 0 4 5.5v1a.5.5 0 0 1-1 0v-1A2.5 2.5 0 0 1 5.5 3h1a.5.5 0 0 1 0 1h-1zM16 5.5A1.5 1.5 0 0 0 14.5 4h-1a.5.5 0 0 1 0-1h1A2.5 2.5 0 0 1 17 5.5v1a.5.5 0 0 1-1 0v-1zm0 9a1.5 1.5 0 0 1-1.5 1.5h-1a.5.5 0 0 0 0 1h1a2.5 2.5 0 0 0 2.5-2.5v-1a.5.5 0 0 0-1 0v1zm-12 0A1.5 1.5 0 0 0 5.5 16h1.25a.5.5 0 0 1 0 1H5.5A2.5 2.5 0 0 1 3 14.5v-1.25a.5.5 0 0 1 1 0v1.25zM8.5 7A1.5 1.5 0 0 0 7 8.5v3A1.5 1.5 0 0 0 8.5 13h3a1.5 1.5 0 0 0 1.5-1.5v-3A1.5 1.5 0 0 0 11.5 7h-3zM8 8.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-3z",fill:"currentColor"})))}),Qe=S("retry",()=>F("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},F("path",{d:"M320,146s24.36-12-64-12A160,160,0,1,0,416,294",style:"fill: none; stroke: currentcolor; stroke-linecap: round; stroke-miterlimit: 10; stroke-width: 32px;"}),F("polyline",{points:"256 58 336 138 256 218",style:"fill: none; stroke: currentcolor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 32px;"}))),Ke=S("rotateClockwise",()=>F("svg",{viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},F("path",{d:"M3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10C17 12.7916 15.3658 15.2026 13 16.3265V14.5C13 14.2239 12.7761 14 12.5 14C12.2239 14 12 14.2239 12 14.5V17.5C12 17.7761 12.2239 18 12.5 18H15.5C15.7761 18 16 17.7761 16 17.5C16 17.2239 15.7761 17 15.5 17H13.8758C16.3346 15.6357 18 13.0128 18 10C18 5.58172 14.4183 2 10 2C5.58172 2 2 5.58172 2 10C2 10.2761 2.22386 10.5 2.5 10.5C2.77614 10.5 3 10.2761 3 10Z",fill:"currentColor"}),F("path",{d:"M10 12C11.1046 12 12 11.1046 12 10C12 8.89543 11.1046 8 10 8C8.89543 8 8 8.89543 8 10C8 11.1046 8.89543 12 10 12ZM10 11C9.44772 11 9 10.5523 9 10C9 9.44772 9.44772 9 10 9C10.5523 9 11 9.44772 11 10C11 10.5523 10.5523 11 10 11Z",fill:"currentColor"}))),en=S("rotateClockwise",()=>F("svg",{viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},F("path",{d:"M17 10C17 6.13401 13.866 3 10 3C6.13401 3 3 6.13401 3 10C3 12.7916 4.63419 15.2026 7 16.3265V14.5C7 14.2239 7.22386 14 7.5 14C7.77614 14 8 14.2239 8 14.5V17.5C8 17.7761 7.77614 18 7.5 18H4.5C4.22386 18 4 17.7761 4 17.5C4 17.2239 4.22386 17 4.5 17H6.12422C3.66539 15.6357 2 13.0128 2 10C2 5.58172 5.58172 2 10 2C14.4183 2 18 5.58172 18 10C18 10.2761 17.7761 10.5 17.5 10.5C17.2239 10.5 17 10.2761 17 10Z",fill:"currentColor"}),F("path",{d:"M10 12C8.89543 12 8 11.1046 8 10C8 8.89543 8.89543 8 10 8C11.1046 8 12 8.89543 12 10C12 11.1046 11.1046 12 10 12ZM10 11C10.5523 11 11 10.5523 11 10C11 9.44772 10.5523 9 10 9C9.44772 9 9 9.44772 9 10C9 10.5523 9.44772 11 10 11Z",fill:"currentColor"}))),nn=S("trash",()=>F("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 512 512"},F("path",{d:"M432,144,403.33,419.74A32,32,0,0,1,371.55,448H140.46a32,32,0,0,1-31.78-28.26L80,144",style:"fill: none; stroke: currentcolor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 32px;"}),F("rect",{x:"32",y:"64",width:"448",height:"80",rx:"16",ry:"16",style:"fill: none; stroke: currentcolor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 32px;"}),F("line",{x1:"312",y1:"240",x2:"200",y2:"352",style:"fill: none; stroke: currentcolor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 32px;"}),F("line",{x1:"312",y1:"352",x2:"200",y2:"240",style:"fill: none; stroke: currentcolor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 32px;"}))),tn=S("zoomIn",()=>F("svg",{viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},F("path",{d:"M11.5 8.5C11.5 8.22386 11.2761 8 11 8H9V6C9 5.72386 8.77614 5.5 8.5 5.5C8.22386 5.5 8 5.72386 8 6V8H6C5.72386 8 5.5 8.22386 5.5 8.5C5.5 8.77614 5.72386 9 6 9H8V11C8 11.2761 8.22386 11.5 8.5 11.5C8.77614 11.5 9 11.2761 9 11V9H11C11.2761 9 11.5 8.77614 11.5 8.5Z",fill:"currentColor"}),F("path",{d:"M8.5 3C11.5376 3 14 5.46243 14 8.5C14 9.83879 13.5217 11.0659 12.7266 12.0196L16.8536 16.1464C17.0488 16.3417 17.0488 16.6583 16.8536 16.8536C16.68 17.0271 16.4106 17.0464 16.2157 16.9114L16.1464 16.8536L12.0196 12.7266C11.0659 13.5217 9.83879 14 8.5 14C5.46243 14 3 11.5376 3 8.5C3 5.46243 5.46243 3 8.5 3ZM8.5 4C6.01472 4 4 6.01472 4 8.5C4 10.9853 6.01472 13 8.5 13C10.9853 13 13 10.9853 13 8.5C13 6.01472 10.9853 4 8.5 4Z",fill:"currentColor"}))),rn=S("zoomOut",()=>F("svg",{viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},F("path",{d:"M11 8C11.2761 8 11.5 8.22386 11.5 8.5C11.5 8.77614 11.2761 9 11 9H6C5.72386 9 5.5 8.77614 5.5 8.5C5.5 8.22386 5.72386 8 6 8H11Z",fill:"currentColor"}),F("path",{d:"M14 8.5C14 5.46243 11.5376 3 8.5 3C5.46243 3 3 5.46243 3 8.5C3 11.5376 5.46243 14 8.5 14C9.83879 14 11.0659 13.5217 12.0196 12.7266L16.1464 16.8536L16.2157 16.9114C16.4106 17.0464 16.68 17.0271 16.8536 16.8536C17.0488 16.6583 17.0488 16.3417 16.8536 16.1464L12.7266 12.0196C13.5217 11.0659 14 9.83879 14 8.5ZM4 8.5C4 6.01472 6.01472 4 8.5 4C10.9853 4 13 6.01472 13 8.5C13 10.9853 10.9853 13 8.5 13C6.01472 13 4 10.9853 4 8.5Z",fill:"currentColor"}))),on=l&&"loading"in document.createElement("img");var ln=new WeakMap,an=new WeakMap,sn=new WeakMap,dn=(e,n,t)=>{if(!e)return()=>{};const r=function(e={}){var n;const{root:t=null}=e;return{hash:`${e.rootMargin||"0px 0px 0px 0px"}-${Array.isArray(e.threshold)?e.threshold.join(","):null!==(n=e.threshold)&&void 0!==n?n:"0"}`,options:Object.assign(Object.assign({},e),{root:("string"==typeof t?document.querySelector(t):t)||document.documentElement})}}(n),{root:o}=r.options;let i;const l=ln.get(o);let a,s;l?i=l:(i=new Map,ln.set(o,i)),i.has(r.hash)?(s=i.get(r.hash),s[1].has(e)||(a=s[0],s[1].add(e),a.observe(e))):(a=new IntersectionObserver(e=>{e.forEach(e=>{if(e.isIntersecting){const n=an.get(e.target),t=sn.get(e.target);n&&n(),t&&(t.value=!0)}})},r.options),a.observe(e),s=[a,new Set([e])],i.set(r.hash,s));let d=!1;const u=()=>{d||(an.delete(e),sn.delete(e),d=!0,s[1].has(e)&&(s[0].unobserve(e),s[1].delete(e)),s[1].size<=0&&i.delete(r.hash),i.size||ln.delete(o))};return an.set(e,u),sn.set(e,t),u};function un(){return F("svg",{viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},F("path",{d:"M6 5C5.75454 5 5.55039 5.17688 5.50806 5.41012L5.5 5.5V14.5C5.5 14.7761 5.72386 15 6 15C6.24546 15 6.44961 14.8231 6.49194 14.5899L6.5 14.5V5.5C6.5 5.22386 6.27614 5 6 5ZM13.8536 5.14645C13.68 4.97288 13.4106 4.9536 13.2157 5.08859L13.1464 5.14645L8.64645 9.64645C8.47288 9.82001 8.4536 10.0894 8.58859 10.2843L8.64645 10.3536L13.1464 14.8536C13.3417 15.0488 13.6583 15.0488 13.8536 14.8536C14.0271 14.68 14.0464 14.4106 13.9114 14.2157L13.8536 14.1464L9.70711 10L13.8536 5.85355C14.0488 5.65829 14.0488 5.34171 13.8536 5.14645Z",fill:"currentColor"}))}function cn(){return F("svg",{viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},F("path",{d:"M13.5 5C13.7455 5 13.9496 5.17688 13.9919 5.41012L14 5.5V14.5C14 14.7761 13.7761 15 13.5 15C13.2545 15 13.0504 14.8231 13.0081 14.5899L13 14.5V5.5C13 5.22386 13.2239 5 13.5 5ZM5.64645 5.14645C5.82001 4.97288 6.08944 4.9536 6.28431 5.08859L6.35355 5.14645L10.8536 9.64645C11.0271 9.82001 11.0464 10.0894 10.9114 10.2843L10.8536 10.3536L6.35355 14.8536C6.15829 15.0488 5.84171 15.0488 5.64645 14.8536C5.47288 14.68 5.4536 14.4106 5.58859 14.2157L5.64645 14.1464L9.79289 10L5.64645 5.85355C5.45118 5.65829 5.45118 5.34171 5.64645 5.14645Z",fill:"currentColor"}))}function pn(){return F("svg",{viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},F("path",{d:"M4.089 4.216l.057-.07a.5.5 0 0 1 .638-.057l.07.057L10 9.293l5.146-5.147a.5.5 0 0 1 .638-.057l.07.057a.5.5 0 0 1 .057.638l-.057.07L10.707 10l5.147 5.146a.5.5 0 0 1 .057.638l-.057.07a.5.5 0 0 1-.638.057l-.07-.057L10 10.707l-5.146 5.147a.5.5 0 0 1-.638.057l-.07-.057a.5.5 0 0 1-.057-.638l.057-.07L9.293 10L4.146 4.854a.5.5 0 0 1-.057-.638l.057-.07l-.057.07z",fill:"currentColor"}))}var hn=Object.assign(Object.assign({},u.props),{onPreviewPrev:Function,onPreviewNext:Function,showToolbar:{type:Boolean,default:!0},showToolbarTooltip:Boolean,renderToolbar:Function}),fn=m("n-image"),gn=C([C("body >",[x("image-container","position: fixed;")]),x("image-preview-container","\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n display: flex;\n "),x("image-preview-overlay","\n z-index: -1;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background: rgba(0, 0, 0, .3);\n ",[D()]),x("image-preview-toolbar","\n z-index: 1;\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n border-radius: var(--n-toolbar-border-radius);\n height: 48px;\n bottom: 40px;\n padding: 0 12px;\n background: var(--n-toolbar-color);\n box-shadow: var(--n-toolbar-box-shadow);\n color: var(--n-toolbar-icon-color);\n transition: color .3s var(--n-bezier);\n display: flex;\n align-items: center;\n ",[x("base-icon","\n padding: 0 8px;\n font-size: 28px;\n cursor: pointer;\n "),D()]),x("image-preview-wrapper","\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n display: flex;\n pointer-events: none;\n ",[te()]),x("image-preview","\n user-select: none;\n -webkit-user-select: none;\n pointer-events: all;\n margin: auto;\n max-height: calc(100vh - 32px);\n max-width: calc(100vw - 32px);\n transition: transform .3s var(--n-bezier);\n "),x("image","\n display: inline-flex;\n max-height: 100%;\n max-width: 100%;\n ",[b("preview-disabled","\n cursor: pointer;\n "),C("img","\n border-radius: inherit;\n ")])]),vn=M({name:"ImagePreview",props:Object.assign(Object.assign({},hn),{src:String,show:{type:Boolean,default:void 0},defaultShow:Boolean,"onUpdate:show":[Function,Array],onUpdateShow:[Function,Array],onNext:Function,onPrev:Function,onClose:[Function,Array]}),setup(e){const{src:n}=G(e),{mergedClsPrefixRef:t}=y(e),r=u("Image","-image",gn,fe,e,t);let o=null;const i=K(null),l=K(null),a=K(!1),{localeRef:s}=d("Image"),c=K(e.defaultShow),p=V(e,"show"),f=h(p,c);function g(n){var t,r;switch(n.key){case" ":n.preventDefault();break;case"ArrowLeft":null===(t=e.onPrev)||void 0===t||t.call(e);break;case"ArrowRight":null===(r=e.onNext)||void 0===r||r.call(e);break;case"ArrowUp":n.preventDefault(),W();break;case"ArrowDown":n.preventDefault(),q();break;case"Escape":Y()}}function m(n){const{onUpdateShow:t,"onUpdate:show":r}=e;t&&v(t,n),r&&v(r,n),c.value=n,a.value=!0}Z(f,e=>{e?L("keydown",document,g):T("keydown",document,g)}),ne(()=>{T("keydown",document,g)});let b=0,x=0,C=0,k=0,P=0,S=0,O=0,z=0,$=!1;function B(e){const{clientX:n,clientY:t}=e;C=n-b,k=t-x,ue(X)}function D(e){const{value:n}=i;if(!n)return{offsetX:0,offsetY:0};const t=n.getBoundingClientRect(),{moveVerticalDirection:r,moveHorizontalDirection:o,deltaHorizontal:l,deltaVertical:a}=e||{};let s=0,d=0;return s=t.width<=window.innerWidth?0:t.left>0?(t.width-window.innerWidth)/2:t.right<window.innerWidth?-(t.width-window.innerWidth)/2:"horizontalRight"===o?Math.min((t.width-window.innerWidth)/2,P-(null!=l?l:0)):Math.max(-(t.width-window.innerWidth)/2,P-(null!=l?l:0)),d=t.height<=window.innerHeight?0:t.top>0?(t.height-window.innerHeight)/2:t.bottom<window.innerHeight?-(t.height-window.innerHeight)/2:"verticalBottom"===r?Math.min((t.height-window.innerHeight)/2,S-(null!=a?a:0)):Math.max(-(t.height-window.innerHeight)/2,S-(null!=a?a:0)),{offsetX:s,offsetY:d}}function j(e){T("mousemove",document,B),T("mouseup",document,j);const{clientX:n,clientY:t}=e;$=!1;const r=D(function(e){const{mouseUpClientX:n,mouseUpClientY:t,mouseDownClientX:r,mouseDownClientY:o}=e,i=r-n,l=o-t;return{moveVerticalDirection:"vertical"+(l>0?"Top":"Bottom"),moveHorizontalDirection:"horizontal"+(i>0?"Left":"Right"),deltaHorizontal:i,deltaVertical:l}}({mouseUpClientX:n,mouseUpClientY:t,mouseDownClientX:O,mouseDownClientY:z}));C=r.offsetX,k=r.offsetY,X()}const I=H(fn,null);let A=0,M=1,U=0;function E(){M=1,A=0}function N(){const{value:e}=i;if(!e)return 1;const{innerWidth:n,innerHeight:t}=window,r=e.naturalHeight/(t-32),o=e.naturalWidth/(n-32);return r<1&&o<1?1:Math.max(r,o)}function W(){const e=function(){const{value:e}=i;if(!e)return 1;const{innerWidth:n,innerHeight:t}=window,r=Math.max(1,e.naturalHeight/(t-32)),o=Math.max(1,e.naturalWidth/(n-32));return Math.max(3,2*r,2*o)}();M<e&&(A+=1,M=Math.min(e,Math.pow(1.5,A)),X())}function q(){if(M>.5){const e=M;A-=1,M=Math.max(.5,Math.pow(1.5,A));const n=e-M;X(!1);const t=D();M+=n,X(!1),M-=n,C=t.offsetX,k=t.offsetY,X()}}function X(e=!0){var n;const{value:t}=i;if(!t)return;const{style:r}=t,o=J(null===(n=null==I?void 0:I.previewedImgPropsRef.value)||void 0===n?void 0:n.style);let l="";if("string"==typeof o)l=`${o};`;else for(const i in o)l+=`${Ve(i)}: ${o[i]};`;const a=`transform-origin: center; transform: translateX(${C}px) translateY(${k}px) rotate(${U}deg) scale(${M});`;r.cssText=$?`${l}cursor: grabbing; transition: none;${a}`:`${l}cursor: grab;${a}${e?"":"transition: none;"}`,e||t.offsetHeight}function Y(){if(f.value){const{onClose:n}=e;n&&v(n),m(!1),c.value=!1}}const Q={setThumbnailEl:e=>{o=e}};const ee=_(()=>{const{common:{cubicBezierEaseInOut:e},self:{toolbarIconColor:n,toolbarBorderRadius:t,toolbarBoxShadow:o,toolbarColor:i}}=r.value;return{"--n-bezier":e,"--n-toolbar-icon-color":n,"--n-toolbar-color":i,"--n-toolbar-border-radius":t,"--n-toolbar-box-shadow":o}}),{inlineThemeDisabled:te}=y(),re=te?R("image-preview",void 0,ee,e):void 0;return Object.assign({clsPrefix:t,previewRef:i,previewWrapperRef:l,previewSrc:n,mergedShow:f,appear:w(),displayed:a,previewedImgProps:null==I?void 0:I.previewedImgPropsRef,handleWheel:function(e){e.preventDefault()},handlePreviewMousedown:function(e){var n,t;if(null===(t=null===(n=null==I?void 0:I.previewedImgPropsRef.value)||void 0===n?void 0:n.onMousedown)||void 0===t||t.call(n,e),0!==e.button)return;const{clientX:r,clientY:o}=e;$=!0,b=r-C,x=o-k,P=C,S=k,O=r,z=o,X(),L("mousemove",document,B),L("mouseup",document,j)},handlePreviewDblclick:function(e){var n,t;null===(t=null===(n=null==I?void 0:I.previewedImgPropsRef.value)||void 0===n?void 0:n.onDblclick)||void 0===t||t.call(n,e);const r=N();M=M===r?1:r,X()},syncTransformOrigin:function(){const{value:e}=l;if(!o||!e)return;const{style:n}=e,t=o.getBoundingClientRect();n.transformOrigin=`${t.left+t.width/2}px ${t.top+t.height/2}px`},handleAfterLeave:()=>{E(),U=0,a.value=!1},handleDragStart:e=>{var n,t;null===(t=null===(n=null==I?void 0:I.previewedImgPropsRef.value)||void 0===n?void 0:n.onDragstart)||void 0===t||t.call(n,e),e.preventDefault()},zoomIn:W,zoomOut:q,handleDownloadClick:function(){const e=n.value;e&&ge(e,void 0)},rotateCounterclockwise:function(){U-=90,X()},rotateClockwise:function(){U+=90,X()},handleSwitchPrev:function(){var n;E(),U=0,null===(n=e.onPrev)||void 0===n||n.call(e)},handleSwitchNext:function(){var n;E(),U=0,null===(n=e.onNext)||void 0===n||n.call(e)},withTooltip:function(n,t){if(e.showToolbarTooltip){const{value:e}=r;return F(ae,{to:!1,theme:e.peers.Tooltip,themeOverrides:e.peerOverrides.Tooltip,keepAliveOnHover:!1},{default:()=>s.value[t],trigger:()=>n})}return n},resizeToOrignalImageSize:function(){M=N(),A=Math.ceil(Math.log(M)/Math.log(1.5)),C=0,k=0,X()},cssVars:te?void 0:ee,themeClass:null==re?void 0:re.themeClass,onRender:null==re?void 0:re.onRender,doUpdateShow:m,close:Y},Q)},render(){var e,n;const{clsPrefix:t,renderToolbar:r,withTooltip:o}=this,i=o(F(k,{clsPrefix:t,onClick:this.handleSwitchPrev},{default:un}),"tipPrevious"),l=o(F(k,{clsPrefix:t,onClick:this.handleSwitchNext},{default:cn}),"tipNext"),a=o(F(k,{clsPrefix:t,onClick:this.rotateCounterclockwise},{default:()=>F(en,null)}),"tipCounterclockwise"),d=o(F(k,{clsPrefix:t,onClick:this.rotateClockwise},{default:()=>F(Ke,null)}),"tipClockwise"),u=o(F(k,{clsPrefix:t,onClick:this.resizeToOrignalImageSize},{default:()=>F(Je,null)}),"tipOriginalSize"),c=o(F(k,{clsPrefix:t,onClick:this.zoomOut},{default:()=>F(rn,null)}),"tipZoomOut"),p=o(F(k,{clsPrefix:t,onClick:this.handleDownloadClick},{default:()=>F(Ye,null)}),"tipDownload"),h=o(F(k,{clsPrefix:t,onClick:()=>this.close()},{default:pn}),"tipClose"),g=o(F(k,{clsPrefix:t,onClick:this.zoomIn},{default:()=>F(tn,null)}),"tipZoomIn");return F(Y,null,null===(n=(e=this.$slots).default)||void 0===n?void 0:n.call(e),F(s,{show:this.mergedShow},{default:()=>{var e;return this.mergedShow||this.displayed?(null===(e=this.onRender)||void 0===e||e.call(this),ee(F("div",{ref:"containerRef",class:[`${t}-image-preview-container`,this.themeClass],style:this.cssVars,onWheel:this.handleWheel},F(Q,{name:"fade-in-transition",appear:this.appear},{default:()=>this.mergedShow?F("div",{class:`${t}-image-preview-overlay`,onClick:()=>this.close()}):null}),this.showToolbar?F(Q,{name:"fade-in-transition",appear:this.appear},{default:()=>this.mergedShow?F("div",{class:`${t}-image-preview-toolbar`},r?r({nodes:{prev:i,next:l,rotateCounterclockwise:a,rotateClockwise:d,resizeToOriginalSize:u,zoomOut:c,zoomIn:g,download:p,close:h}}):F(Y,null,this.onPrev?F(Y,null,i,l):null,a,d,u,c,g,p,h)):null}):null,F(Q,{name:"fade-in-scale-up-transition",onAfterLeave:this.handleAfterLeave,appear:this.appear,onEnter:this.syncTransformOrigin,onBeforeLeave:this.syncTransformOrigin},{default:()=>{const{previewedImgProps:e={}}=this;return ee(F("div",{class:`${t}-image-preview-wrapper`,ref:"previewWrapperRef"},F("img",Object.assign({},e,{draggable:!1,onMousedown:this.handlePreviewMousedown,onDblclick:this.handlePreviewDblclick,class:[`${t}-image-preview`,e.class],key:this.previewSrc,src:this.previewSrc,ref:"previewRef",onDragstart:this.handleDragStart}))),[[X,this.mergedShow]])}})),[[f,{enabled:this.mergedShow}]])):null}}))}}),mn=m("n-image-group"),wn=M({name:"ImageGroup",props:Object.assign(Object.assign({},hn),{srcList:Array,current:Number,defaultCurrent:{type:Number,default:0},show:{type:Boolean,default:void 0},defaultShow:Boolean,onUpdateShow:[Function,Array],"onUpdate:show":[Function,Array],onUpdateCurrent:[Function,Array],"onUpdate:current":[Function,Array]}),setup(e){const{mergedClsPrefixRef:n}=y(e),r=`c${z()}`,o=K(null),i=K(e.defaultShow),l=V(e,"show"),a=h(l,i),s=K(new Map),d=_(()=>{if(e.srcList){const n=new Map;return e.srcList.forEach((e,t)=>{n.set(`p${t}`,e)}),n}return s.value}),u=_(()=>Array.from(d.value.keys())),c=()=>u.value.length;const p=K(e.defaultCurrent),f=V(e,"current"),g=h(f,p),m=n=>{if(n!==g.value){const{onUpdateCurrent:t,"onUpdate:current":r}=e;t&&v(t,n),r&&v(r,n),p.value=n}},w=_(()=>u.value[g.value]),b=_(()=>d.value.get(w.value));function x(n){const{onUpdateShow:t,"onUpdate:show":r}=e;t&&v(t,n),r&&v(r,n),i.value=n}const C=_(()=>{const e=(e,n)=>{for(let t=e;t<=n;t++){const e=u.value[t];if(d.value.get(e))return t}},n=e(g.value+1,c()-1);return void 0===n?e(0,g.value-1):n}),R=_(()=>{const e=(e,n)=>{for(let t=e;t>=n;t--){const e=u.value[t];if(d.value.get(e))return t}},n=e(g.value-1,0);return void 0===n?e(c()-1,g.value+1):n});function k(n){var t,r;1===n?(void 0!==R.value&&m(C.value),null===(t=e.onPreviewNext)||void 0===t||t.call(e)):(void 0!==C.value&&m(R.value),null===(r=e.onPreviewPrev)||void 0===r||r.call(e))}return U(mn,{mergedClsPrefixRef:n,registerImageUrl:function(n,r){e.srcList&&t("image-group","`n-image` can't be placed inside `n-image-group` when image group's `src-list` prop is set.");const o=`r${n}`;return s.value.has(`r${o}`)||s.value.set(o,r),function(){s.value.has(o)||s.value.delete(o)}},setThumbnailEl:e=>{var n;null===(n=o.value)||void 0===n||n.setThumbnailEl(e)},toggleShow:e=>{x(!0),(e=>{const n=u.value.indexOf(e);n!==g.value&&m(n)})(e)},groupId:r,renderToolbarRef:V(e,"renderToolbar")}),{mergedClsPrefix:n,previewInstRef:o,mergedShow:a,src:b,onClose:function(){x(!1)},next:()=>{k(1)},prev:()=>{k(-1)}}},render(){return F(vn,{theme:this.theme,themeOverrides:this.themeOverrides,ref:"previewInstRef",onPrev:this.prev,onNext:this.next,src:this.src,show:this.mergedShow,showToolbar:this.showToolbar,showToolbarTooltip:this.showToolbarTooltip,renderToolbar:this.renderToolbar,onClose:this.onClose},this.$slots)}}),bn=Object.assign({alt:String,height:[String,Number],imgProps:Object,previewedImgProps:Object,lazy:Boolean,intersectionObserverOptions:Object,objectFit:{type:String,default:"fill"},previewSrc:String,fallbackSrc:String,width:[String,Number],src:String,previewDisabled:Boolean,loadDescription:String,onError:Function,onLoad:Function},hn),xn=0,yn=M({name:"Image",props:bn,slots:Object,inheritAttrs:!1,setup(e){const n=K(null),t=K(!1),r=K(null),o=H(mn,null),{mergedClsPrefixRef:i}=o||y(e),l=_(()=>e.previewSrc||e.src),a=K(!1),s=xn++,d=()=>{if(e.previewDisabled||t.value)return;if(o)return o.setThumbnailEl(n.value),void o.toggleShow(`r${s}`);const{value:i}=r;i&&(i.setThumbnailEl(n.value),a.value=!0)},u={click:()=>{d()},showPreview:d},c=K(!e.lazy);W(()=>{var e;null===(e=n.value)||void 0===e||e.setAttribute("data-group-id",(null==o?void 0:o.groupId)||"")}),W(()=>{if(e.lazy&&e.intersectionObserverOptions){let t;const r=N(()=>{null==t||t(),t=void 0,t=dn(n.value,e.intersectionObserverOptions,c)});ne(()=>{r(),null==t||t()})}}),N(()=>{var n;e.src||null===(n=e.imgProps)||void 0===n||n.src,t.value=!1}),N(e=>{var n;const t=null===(n=null==o?void 0:o.registerImageUrl)||void 0===n?void 0:n.call(o,s,l.value||"");e(()=>{null==t||t()})});const p=K(!1);return U(fn,{previewedImgPropsRef:V(e,"previewedImgProps")}),Object.assign({mergedClsPrefix:i,groupId:null==o?void 0:o.groupId,previewInstRef:r,imageRef:n,mergedPreviewSrc:l,showError:t,shouldStartLoading:c,loaded:p,mergedOnClick:n=>{!function(n){var t,r;u.showPreview(),null===(r=null===(t=e.imgProps)||void 0===t?void 0:t.onClick)||void 0===r||r.call(t,n)}(n)},onPreviewClose:function(){a.value=!1},mergedOnError:n=>{if(!c.value)return;t.value=!0;const{onError:r,imgProps:{onError:o}={}}=e;null==r||r(n),null==o||o(n)},mergedOnLoad:n=>{const{onLoad:t,imgProps:{onLoad:r}={}}=e;null==t||t(n),null==r||r(n),p.value=!0},previewShow:a},u)},render(){var e,n;const{mergedClsPrefix:t,imgProps:r={},loaded:o,$attrs:i,lazy:l}=this,a=I(this.$slots.error,()=>[]),s=null===(n=(e=this.$slots).placeholder)||void 0===n?void 0:n.call(e),d=this.src||r.src,u=this.showError&&a.length?a:F("img",Object.assign(Object.assign({},r),{ref:"imageRef",width:this.width||r.width,height:this.height||r.height,src:this.showError?this.fallbackSrc:l&&this.intersectionObserverOptions?this.shouldStartLoading?d:void 0:d,alt:this.alt||r.alt,"aria-label":this.alt||r.alt,onClick:this.mergedOnClick,onError:this.mergedOnError,onLoad:this.mergedOnLoad,loading:on&&l&&!this.intersectionObserverOptions?"lazy":"eager",style:[r.style||"",s&&!o?{height:"0",width:"0",visibility:"hidden"}:"",{objectFit:this.objectFit}],"data-error":this.showError,"data-preview-src":this.previewSrc||this.src}));return F("div",Object.assign({},i,{role:"none",class:[i.class,`${t}-image`,(this.previewDisabled||this.showError)&&`${t}-image--preview-disabled`]}),this.groupId?u:F(vn,{theme:this.theme,themeOverrides:this.themeOverrides,ref:"previewInstRef",showToolbar:this.showToolbar,showToolbarTooltip:this.showToolbarTooltip,renderToolbar:this.renderToolbar,src:this.mergedPreviewSrc,show:!this.previewDisabled&&this.previewShow,onClose:this.onPreviewClose},{default:()=>u}),!o&&s)}}),Cn={success:F(re,null),error:F(ie,null),warning:F(le,null),info:F(oe,null)},Rn=M({name:"ProgressCircle",props:{clsPrefix:{type:String,required:!0},status:{type:String,required:!0},strokeWidth:{type:Number,required:!0},fillColor:[String,Object],railColor:String,railStyle:[String,Object],percentage:{type:Number,default:0},offsetDegree:{type:Number,default:0},showIndicator:{type:Boolean,required:!0},indicatorTextColor:String,unit:String,viewBoxWidth:{type:Number,required:!0},gapDegree:{type:Number,required:!0},gapOffsetDegree:{type:Number,default:0}},setup(e,{slots:n}){const t=_(()=>{const n="gradient",{fillColor:t}=e;return"object"==typeof t?`${n}-${g(JSON.stringify(t))}`:n});function r(n,r,o,i){const{gapDegree:l,viewBoxWidth:a,strokeWidth:s}=e,d=50,u=50+s/2,c=`M ${u},${u} m 0,50\n a 50,50 0 1 1 0,-100\n a 50,50 0 1 1 0,100`,p=2*Math.PI*d;return{pathString:c,pathStyle:{stroke:"rail"===i?o:"object"==typeof e.fillColor?`url(#${t.value})`:o,strokeDasharray:`${Math.min(n,100)/100*(p-l)}px ${8*a}px`,strokeDashoffset:`-${l/2}px`,transformOrigin:r?"center":void 0,transform:r?`rotate(${r}deg)`:void 0}}}return()=>{const{fillColor:o,railColor:i,strokeWidth:l,offsetDegree:a,status:s,percentage:d,showIndicator:u,indicatorTextColor:c,unit:p,gapOffsetDegree:h,clsPrefix:f}=e,{pathString:g,pathStyle:v}=r(100,0,i,"rail"),{pathString:m,pathStyle:w}=r(d,a,o,"fill"),b=100+l;return F("div",{class:`${f}-progress-content`,role:"none"},F("div",{class:`${f}-progress-graph`,"aria-hidden":!0},F("div",{class:`${f}-progress-graph-circle`,style:{transform:h?`rotate(${h}deg)`:void 0}},F("svg",{viewBox:`0 0 ${b} ${b}`},(()=>{const n="object"==typeof e.fillColor,r=n?e.fillColor.stops[0]:"",o=n?e.fillColor.stops[1]:"";return n&&F("defs",null,F("linearGradient",{id:t.value,x1:"0%",y1:"100%",x2:"100%",y2:"0%"},F("stop",{offset:"0%","stop-color":r}),F("stop",{offset:"100%","stop-color":o})))})(),F("g",null,F("path",{class:`${f}-progress-graph-circle-rail`,d:g,"stroke-width":l,"stroke-linecap":"round",fill:"none",style:v})),F("g",null,F("path",{class:[`${f}-progress-graph-circle-fill`,0===d&&`${f}-progress-graph-circle-fill--empty`],d:m,"stroke-width":l,"stroke-linecap":"round",fill:"none",style:w}))))),u?F("div",null,n.default?F("div",{class:`${f}-progress-custom-content`,role:"none"},n.default()):"default"!==s?F("div",{class:`${f}-progress-icon`,"aria-hidden":!0},F(k,{clsPrefix:f},{default:()=>Cn[s]})):F("div",{class:`${f}-progress-text`,style:{color:c},role:"none"},F("span",{class:`${f}-progress-text__percentage`},d),F("span",{class:`${f}-progress-text__unit`},p))):null)}}}),kn={success:F(re,null),error:F(ie,null),warning:F(le,null),info:F(oe,null)},Pn=M({name:"ProgressLine",props:{clsPrefix:{type:String,required:!0},percentage:{type:Number,default:0},railColor:String,railStyle:[String,Object],fillColor:[String,Object],status:{type:String,required:!0},indicatorPlacement:{type:String,required:!0},indicatorTextColor:String,unit:{type:String,default:"%"},processing:{type:Boolean,required:!0},showIndicator:{type:Boolean,required:!0},height:[String,Number],railBorderRadius:[String,Number],fillBorderRadius:[String,Number]},setup(e,{slots:n}){const t=_(()=>P(e.height)),r=_(()=>{var n,t;return"object"==typeof e.fillColor?`linear-gradient(to right, ${null===(n=e.fillColor)||void 0===n?void 0:n.stops[0]} , ${null===(t=e.fillColor)||void 0===t?void 0:t.stops[1]})`:e.fillColor}),o=_(()=>void 0!==e.railBorderRadius?P(e.railBorderRadius):void 0!==e.height?P(e.height,{c:.5}):""),i=_(()=>void 0!==e.fillBorderRadius?P(e.fillBorderRadius):void 0!==e.railBorderRadius?P(e.railBorderRadius):void 0!==e.height?P(e.height,{c:.5}):"");return()=>{const{indicatorPlacement:l,railColor:a,railStyle:s,percentage:d,unit:u,indicatorTextColor:c,status:p,showIndicator:h,processing:f,clsPrefix:g}=e;return F("div",{class:`${g}-progress-content`,role:"none"},F("div",{class:`${g}-progress-graph`,"aria-hidden":!0},F("div",{class:[`${g}-progress-graph-line`,{[`${g}-progress-graph-line--indicator-${l}`]:!0}]},F("div",{class:`${g}-progress-graph-line-rail`,style:[{backgroundColor:a,height:t.value,borderRadius:o.value},s]},F("div",{class:[`${g}-progress-graph-line-fill`,f&&`${g}-progress-graph-line-fill--processing`],style:{maxWidth:`${e.percentage}%`,background:r.value,height:t.value,lineHeight:t.value,borderRadius:i.value}},"inside"===l?F("div",{class:`${g}-progress-graph-line-indicator`,style:{color:c}},n.default?n.default():`${d}${u}`):null)))),h&&"outside"===l?F("div",null,n.default?F("div",{class:`${g}-progress-custom-content`,style:{color:c},role:"none"},n.default()):"default"===p?F("div",{role:"none",class:`${g}-progress-icon ${g}-progress-icon--as-text`,style:{color:c}},d,u):F("div",{class:`${g}-progress-icon`,"aria-hidden":!0},F(k,{clsPrefix:g},{default:()=>kn[p]}))):null)}}});function Sn(e,n,t=100){return`m ${t/2} ${t/2-e} a ${e} ${e} 0 1 1 0 ${2*e} a ${e} ${e} 0 1 1 0 -${2*e}`}var On=M({name:"ProgressMultipleCircle",props:{clsPrefix:{type:String,required:!0},viewBoxWidth:{type:Number,required:!0},percentage:{type:Array,default:[0]},strokeWidth:{type:Number,required:!0},circleGap:{type:Number,required:!0},showIndicator:{type:Boolean,required:!0},fillColor:{type:Array,default:()=>[]},railColor:{type:Array,default:()=>[]},railStyle:{type:Array,default:()=>[]}},setup(e,{slots:n}){const t=_(()=>e.percentage.map((n,t)=>`${Math.PI*n/100*(e.viewBoxWidth/2-e.strokeWidth/2*(1+2*t)-e.circleGap*t)*2}, ${8*e.viewBoxWidth}`));return()=>{const{viewBoxWidth:r,strokeWidth:o,circleGap:i,showIndicator:l,fillColor:a,railColor:s,railStyle:d,percentage:u,clsPrefix:c}=e;return F("div",{class:`${c}-progress-content`,role:"none"},F("div",{class:`${c}-progress-graph`,"aria-hidden":!0},F("div",{class:`${c}-progress-graph-circle`},F("svg",{viewBox:`0 0 ${r} ${r}`},F("defs",null,u.map((n,t)=>((n,t)=>{const r=e.fillColor[t],o="object"==typeof r?r.stops[0]:"",i="object"==typeof r?r.stops[1]:"";return"object"==typeof e.fillColor[t]&&F("linearGradient",{id:`gradient-${t}`,x1:"100%",y1:"0%",x2:"0%",y2:"100%"},F("stop",{offset:"0%","stop-color":o}),F("stop",{offset:"100%","stop-color":i}))})(0,t))),u.map((e,n)=>F("g",{key:n},F("path",{class:`${c}-progress-graph-circle-rail`,d:Sn(r/2-o/2*(1+2*n)-i*n,0,r),"stroke-width":o,"stroke-linecap":"round",fill:"none",style:[{strokeDashoffset:0,stroke:s[n]},d[n]]}),F("path",{class:[`${c}-progress-graph-circle-fill`,0===e&&`${c}-progress-graph-circle-fill--empty`],d:Sn(r/2-o/2*(1+2*n)-i*n,0,r),"stroke-width":o,"stroke-linecap":"round",fill:"none",style:{strokeDasharray:t.value[n],strokeDashoffset:0,stroke:"object"==typeof a[n]?`url(#gradient-${n})`:a[n]}})))))),l&&n.default?F("div",null,F("div",{class:`${c}-progress-text`},n.default())):null)}}}),Ln=C([x("progress",{display:"inline-block"},[x("progress-icon","\n color: var(--n-icon-color);\n transition: color .3s var(--n-bezier);\n "),A("line","\n width: 100%;\n display: block;\n ",[x("progress-content","\n display: flex;\n align-items: center;\n ",[x("progress-graph",{flex:1})]),x("progress-custom-content",{marginLeft:"14px"}),x("progress-icon","\n width: 30px;\n padding-left: 14px;\n height: var(--n-icon-size-line);\n line-height: var(--n-icon-size-line);\n font-size: var(--n-icon-size-line);\n ",[A("as-text","\n color: var(--n-text-color-line-outer);\n text-align: center;\n width: 40px;\n font-size: var(--n-font-size);\n padding-left: 4px;\n transition: color .3s var(--n-bezier);\n ")])]),A("circle, dashboard",{width:"120px"},[x("progress-custom-content","\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n "),x("progress-text","\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n display: flex;\n align-items: center;\n color: inherit;\n font-size: var(--n-font-size-circle);\n color: var(--n-text-color-circle);\n font-weight: var(--n-font-weight-circle);\n transition: color .3s var(--n-bezier);\n white-space: nowrap;\n "),x("progress-icon","\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n display: flex;\n align-items: center;\n color: var(--n-icon-color);\n font-size: var(--n-icon-size-circle);\n ")]),A("multiple-circle","\n width: 200px;\n color: inherit;\n ",[x("progress-text","\n font-weight: var(--n-font-weight-circle);\n color: var(--n-text-color-circle);\n position: absolute;\n left: 50%;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: color .3s var(--n-bezier);\n ")]),x("progress-content",{position:"relative"}),x("progress-graph",{position:"relative"},[x("progress-graph-circle",[C("svg",{verticalAlign:"bottom"}),x("progress-graph-circle-fill","\n stroke: var(--n-fill-color);\n transition:\n opacity .3s var(--n-bezier),\n stroke .3s var(--n-bezier),\n stroke-dasharray .3s var(--n-bezier);\n ",[A("empty",{opacity:0})]),x("progress-graph-circle-rail","\n transition: stroke .3s var(--n-bezier);\n overflow: hidden;\n stroke: var(--n-rail-color);\n ")]),x("progress-graph-line",[A("indicator-inside",[x("progress-graph-line-rail","\n height: 16px;\n line-height: 16px;\n border-radius: 10px;\n ",[x("progress-graph-line-fill","\n height: inherit;\n border-radius: 10px;\n "),x("progress-graph-line-indicator","\n background: #0000;\n white-space: nowrap;\n text-align: right;\n margin-left: 14px;\n margin-right: 14px;\n height: inherit;\n font-size: 12px;\n color: var(--n-text-color-line-inner);\n transition: color .3s var(--n-bezier);\n ")])]),A("indicator-inside-label","\n height: 16px;\n display: flex;\n align-items: center;\n ",[x("progress-graph-line-rail","\n flex: 1;\n transition: background-color .3s var(--n-bezier);\n "),x("progress-graph-line-indicator","\n background: var(--n-fill-color);\n font-size: 12px;\n transform: translateZ(0);\n display: flex;\n vertical-align: middle;\n height: 16px;\n line-height: 16px;\n padding: 0 10px;\n border-radius: 10px;\n position: absolute;\n white-space: nowrap;\n color: var(--n-text-color-line-inner);\n transition:\n right .2s var(--n-bezier),\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier);\n ")]),x("progress-graph-line-rail","\n position: relative;\n overflow: hidden;\n height: var(--n-rail-height);\n border-radius: 5px;\n background-color: var(--n-rail-color);\n transition: background-color .3s var(--n-bezier);\n ",[x("progress-graph-line-fill","\n background: var(--n-fill-color);\n position: relative;\n border-radius: 5px;\n height: inherit;\n width: 100%;\n max-width: 0%;\n transition:\n background-color .3s var(--n-bezier),\n max-width .2s var(--n-bezier);\n ",[A("processing",[C("&::after",'\n content: "";\n background-image: var(--n-line-bg-processing);\n animation: progress-processing-animation 2s var(--n-bezier) infinite;\n ')])])])])])]),C("@keyframes progress-processing-animation","\n 0% {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 100%;\n opacity: 1;\n }\n 66% {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n opacity: 0;\n }\n 100% {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n opacity: 0;\n }\n ")]),zn=M({name:"Progress",props:Object.assign(Object.assign({},u.props),{processing:Boolean,type:{type:String,default:"line"},gapDegree:Number,gapOffsetDegree:Number,status:{type:String,default:"default"},railColor:[String,Array],railStyle:[String,Array],color:[String,Array,Object],viewBoxWidth:{type:Number,default:100},strokeWidth:{type:Number,default:7},percentage:[Number,Array],unit:{type:String,default:"%"},showIndicator:{type:Boolean,default:!0},indicatorPosition:{type:String,default:"outside"},indicatorPlacement:{type:String,default:"outside"},indicatorTextColor:String,circleGap:{type:Number,default:1},height:Number,borderRadius:[String,Number],fillBorderRadius:[String,Number],offsetDegree:Number}),setup(e){const n=_(()=>e.indicatorPlacement||e.indicatorPosition),t=_(()=>e.gapDegree||0===e.gapDegree?e.gapDegree:"dashboard"===e.type?75:void 0),{mergedClsPrefixRef:r,inlineThemeDisabled:o}=y(e),i=u("Progress","-progress",Ln,se,e,r),l=_(()=>{const{status:n}=e,{common:{cubicBezierEaseInOut:t},self:{fontSize:r,fontSizeCircle:o,railColor:l,railHeight:a,iconSizeCircle:s,iconSizeLine:d,textColorCircle:u,textColorLineInner:c,textColorLineOuter:p,lineBgProcessing:h,fontWeightCircle:f,[j("iconColor",n)]:g,[j("fillColor",n)]:v}}=i.value;return{"--n-bezier":t,"--n-fill-color":v,"--n-font-size":r,"--n-font-size-circle":o,"--n-font-weight-circle":f,"--n-icon-color":g,"--n-icon-size-circle":s,"--n-icon-size-line":d,"--n-line-bg-processing":h,"--n-rail-color":l,"--n-rail-height":a,"--n-text-color-circle":u,"--n-text-color-line-inner":c,"--n-text-color-line-outer":p}}),a=o?R("progress",_(()=>e.status[0]),l,e):void 0;return{mergedClsPrefix:r,mergedIndicatorPlacement:n,gapDeg:t,cssVars:o?void 0:l,themeClass:null==a?void 0:a.themeClass,onRender:null==a?void 0:a.onRender}},render(){const{type:e,cssVars:n,indicatorTextColor:t,showIndicator:r,status:o,railColor:i,railStyle:l,color:a,percentage:s,viewBoxWidth:d,strokeWidth:u,mergedIndicatorPlacement:c,unit:p,borderRadius:h,fillBorderRadius:f,height:g,processing:v,circleGap:m,mergedClsPrefix:w,gapDeg:b,gapOffsetDegree:x,themeClass:y,$slots:C,onRender:R}=this;return null==R||R(),F("div",{class:[y,`${w}-progress`,`${w}-progress--${e}`,`${w}-progress--${o}`],style:n,"aria-valuemax":100,"aria-valuemin":0,"aria-valuenow":s,role:"circle"===e||"line"===e||"dashboard"===e?"progressbar":"none"},"circle"===e||"dashboard"===e?F(Rn,{clsPrefix:w,status:o,showIndicator:r,indicatorTextColor:t,railColor:i,fillColor:a,railStyle:l,offsetDegree:this.offsetDegree,percentage:s,viewBoxWidth:d,strokeWidth:u,gapDegree:void 0===b?"dashboard"===e?75:0:b,gapOffsetDegree:x,unit:p},C):"line"===e?F(Pn,{clsPrefix:w,status:o,showIndicator:r,indicatorTextColor:t,railColor:i,fillColor:a,railStyle:l,percentage:s,processing:v,indicatorPlacement:c,unit:p,fillBorderRadius:f,railBorderRadius:h,height:g},C):"multiple-circle"===e?F(On,{clsPrefix:w,strokeWidth:u,railColor:i,fillColor:a,railStyle:l,viewBoxWidth:d,percentage:s,showIndicator:r,circleGap:m},C):null)}}),$n=m("n-upload"),Tn=C([x("upload","width: 100%;",[A("dragger-inside",[x("upload-trigger","\n display: block;\n ")]),A("drag-over",[x("upload-dragger","\n border: var(--n-dragger-border-hover);\n ")])]),x("upload-dragger","\n cursor: pointer;\n box-sizing: border-box;\n width: 100%;\n text-align: center;\n border-radius: var(--n-border-radius);\n padding: 24px;\n opacity: 1;\n transition:\n opacity .3s var(--n-bezier),\n border-color .3s var(--n-bezier),\n background-color .3s var(--n-bezier);\n background-color: var(--n-dragger-color);\n border: var(--n-dragger-border);\n ",[C("&:hover","\n border: var(--n-dragger-border-hover);\n "),A("disabled","\n cursor: not-allowed;\n ")]),x("upload-trigger","\n display: inline-block;\n box-sizing: border-box;\n opacity: 1;\n transition: opacity .3s var(--n-bezier);\n ",[C("+",[x("upload-file-list","margin-top: 8px;")]),A("disabled","\n opacity: var(--n-item-disabled-opacity);\n cursor: not-allowed;\n "),A("image-card","\n width: 96px;\n height: 96px;\n ",[x("base-icon","\n font-size: 24px;\n "),x("upload-dragger","\n padding: 0;\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n ")])]),x("upload-file-list","\n line-height: var(--n-line-height);\n opacity: 1;\n transition: opacity .3s var(--n-bezier);\n ",[C("a, img","outline: none;"),A("disabled","\n opacity: var(--n-item-disabled-opacity);\n cursor: not-allowed;\n ",[x("upload-file","cursor: not-allowed;")]),A("grid","\n display: grid;\n grid-template-columns: repeat(auto-fill, 96px);\n grid-gap: 8px;\n margin-top: 0;\n "),x("upload-file","\n display: block;\n box-sizing: border-box;\n cursor: default;\n padding: 0px 12px 0 6px;\n transition: background-color .3s var(--n-bezier);\n border-radius: var(--n-border-radius);\n ",[pe(),x("progress",[pe({foldPadding:!0})]),C("&:hover","\n background-color: var(--n-item-color-hover);\n ",[x("upload-file-info",[B("action","\n opacity: 1;\n ")])]),A("image-type","\n border-radius: var(--n-border-radius);\n text-decoration: underline;\n text-decoration-color: #0000;\n ",[x("upload-file-info","\n padding-top: 0px;\n padding-bottom: 0px;\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 6px 0;\n ",[x("progress","\n padding: 2px 0;\n margin-bottom: 0;\n "),B("name","\n padding: 0 8px;\n "),B("thumbnail","\n width: 32px;\n height: 32px;\n font-size: 28px;\n display: flex;\n justify-content: center;\n align-items: center;\n ",[C("img","\n width: 100%;\n ")])])]),A("text-type",[x("progress","\n box-sizing: border-box;\n padding-bottom: 6px;\n margin-bottom: 6px;\n ")]),A("image-card-type","\n position: relative;\n width: 96px;\n height: 96px;\n border: var(--n-item-border-image-card);\n border-radius: var(--n-border-radius);\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: border-color .3s var(--n-bezier), background-color .3s var(--n-bezier);\n border-radius: var(--n-border-radius);\n overflow: hidden;\n ",[x("progress","\n position: absolute;\n left: 8px;\n bottom: 8px;\n right: 8px;\n width: unset;\n "),x("upload-file-info","\n padding: 0;\n width: 100%;\n height: 100%;\n ",[B("thumbnail","\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-size: 36px;\n ",[C("img","\n width: 100%;\n ")])]),C("&::before",'\n position: absolute;\n z-index: 1;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n border-radius: inherit;\n opacity: 0;\n transition: opacity .2s var(--n-bezier);\n content: "";\n '),C("&:hover",[C("&::before","opacity: 1;"),x("upload-file-info",[B("thumbnail","opacity: .12;")])])]),A("error-status",[C("&:hover","\n background-color: var(--n-item-color-hover-error);\n "),x("upload-file-info",[B("name","color: var(--n-item-text-color-error);"),B("thumbnail","color: var(--n-item-text-color-error);")]),A("image-card-type","\n border: var(--n-item-border-image-card-error);\n ")]),A("with-url","\n cursor: pointer;\n ",[x("upload-file-info",[B("name","\n color: var(--n-item-text-color-success);\n text-decoration-color: var(--n-item-text-color-success);\n ",[C("a","\n text-decoration: underline;\n ")])])]),x("upload-file-info","\n position: relative;\n padding-top: 6px;\n padding-bottom: 6px;\n display: flex;\n flex-wrap: nowrap;\n ",[B("thumbnail","\n font-size: 18px;\n opacity: 1;\n transition: opacity .2s var(--n-bezier);\n color: var(--n-item-icon-color);\n ",[x("base-icon","\n margin-right: 2px;\n vertical-align: middle;\n transition: color .3s var(--n-bezier);\n ")]),B("action","\n padding-top: inherit;\n padding-bottom: inherit;\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 80px;\n display: flex;\n align-items: center;\n transition: opacity .2s var(--n-bezier);\n justify-content: flex-end;\n opacity: 0;\n ",[x("button",[C("&:not(:last-child)",{marginRight:"4px"}),x("base-icon",[C("svg",[c()])])]),A("image-type","\n position: relative;\n max-width: 80px;\n width: auto;\n "),A("image-card-type","\n z-index: 2;\n position: absolute;\n width: 100%;\n height: 100%;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n ")]),B("name","\n color: var(--n-item-text-color);\n flex: 1;\n display: flex;\n justify-content: center;\n text-overflow: ellipsis;\n overflow: hidden;\n flex-direction: column;\n text-decoration-color: #0000;\n font-size: var(--n-font-size);\n transition:\n color .3s var(--n-bezier),\n text-decoration-color .3s var(--n-bezier); \n ",[C("a","\n color: inherit;\n text-decoration: underline;\n ")])])])]),x("upload-file-input","\n display: none;\n width: 0;\n height: 0;\n opacity: 0;\n ")]),Bn="__UPLOAD_DRAGGER__",Dn=M({name:"UploadDragger",[Bn]:!0,setup(e,{slots:n}){const r=H($n,null);return r||t("upload-dragger","`n-upload-dragger` must be placed inside `n-upload`."),()=>{const{mergedClsPrefixRef:{value:e},mergedDisabledRef:{value:t},maxReachedRef:{value:o}}=r;return F("div",{class:[`${e}-upload-dragger`,(t||o)&&`${e}-upload-dragger--disabled`]},n)}}});function jn(){return F("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 28 28"},F("g",{fill:"none"},F("path",{d:"M21.75 3A3.25 3.25 0 0 1 25 6.25v15.5A3.25 3.25 0 0 1 21.75 25H6.25A3.25 3.25 0 0 1 3 21.75V6.25A3.25 3.25 0 0 1 6.25 3h15.5zm.583 20.4l-7.807-7.68a.75.75 0 0 0-.968-.07l-.084.07l-7.808 7.68c.183.065.38.1.584.1h15.5c.204 0 .4-.035.583-.1l-7.807-7.68l7.807 7.68zM21.75 4.5H6.25A1.75 1.75 0 0 0 4.5 6.25v15.5c0 .208.036.408.103.593l7.82-7.692a2.25 2.25 0 0 1 3.026-.117l.129.117l7.82 7.692c.066-.185.102-.385.102-.593V6.25a1.75 1.75 0 0 0-1.75-1.75zm-3.25 3a2.5 2.5 0 1 1 0 5a2.5 2.5 0 0 1 0-5zm0 1.5a1 1 0 1 0 0 2a1 1 0 0 0 0-2z",fill:"currentColor"})))}function In(){return F("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 28 28"},F("g",{fill:"none"},F("path",{d:"M6.4 2A2.4 2.4 0 0 0 4 4.4v19.2A2.4 2.4 0 0 0 6.4 26h15.2a2.4 2.4 0 0 0 2.4-2.4V11.578c0-.729-.29-1.428-.805-1.944l-6.931-6.931A2.4 2.4 0 0 0 14.567 2H6.4zm-.9 2.4a.9.9 0 0 1 .9-.9H14V10a2 2 0 0 0 2 2h6.5v11.6a.9.9 0 0 1-.9.9H6.4a.9.9 0 0 1-.9-.9V4.4zm16.44 6.1H16a.5.5 0 0 1-.5-.5V4.06l6.44 6.44z",fill:"currentColor"})))}var An=M({name:"UploadProgress",props:{show:Boolean,percentage:{type:Number,required:!0},status:{type:String,required:!0}},setup:()=>({mergedTheme:H($n).mergedThemeRef}),render(){return F(r,null,{default:()=>this.show?F(zn,{type:"line",showIndicator:!1,percentage:this.percentage,status:this.status,height:2,theme:this.mergedTheme.peers.Progress,themeOverrides:this.mergedTheme.peerOverrides.Progress}):null})}}),Mn=function(e,n,t,r){return new(t||(t=Promise))(function(o,i){function l(e){try{s(r.next(e))}catch(n){i(n)}}function a(e){try{s(r.throw(e))}catch(n){i(n)}}function s(e){var n;e.done?o(e.value):(n=e.value,n instanceof t?n:new t(function(e){e(n)})).then(l,a)}s((r=r.apply(e,n||[])).next())})};function Un(e){return e.includes("image/")}function En(e=""){const n=e.split("/"),t=n[n.length-1].split(/#|\?/)[0];return(/\.[^./\\]*$/.exec(t)||[""])[0]}var Fn=/(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i,Hn=e=>{if(e.type)return Un(e.type);const n=En(e.name||"");if(Fn.test(n))return!0;const t=e.thumbnailUrl||e.url||"",r=En(t);return!(!/^data:image\//.test(t)&&!Fn.test(r))};var Nn=l&&window.FileReader&&window.File;function Wn(e){return e.isDirectory}function Zn(e){return e.isFile}function qn(e){const{id:n,name:t,percentage:r,status:o,url:i,file:l,thumbnailUrl:a,type:s,fullPath:d,batchId:u}=e;return{id:n,name:t,percentage:null!=r?r:null,status:o,url:null!=i?i:null,file:null!=l?l:null,thumbnailUrl:null!=a?a:null,type:null!=s?s:null,fullPath:null!=d?d:null,batchId:null!=u?u:null}}var _n=function(e,n,t,r){return new(t||(t=Promise))(function(o,i){function l(e){try{s(r.next(e))}catch(n){i(n)}}function a(e){try{s(r.throw(e))}catch(n){i(n)}}function s(e){var n;e.done?o(e.value):(n=e.value,n instanceof t?n:new t(function(e){e(n)})).then(l,a)}s((r=r.apply(e,n||[])).next())})},Vn={paddingMedium:"0 3px",heightMedium:"24px",iconSizeMedium:"18px"},Xn=M({name:"UploadFile",props:{clsPrefix:{type:String,required:!0},file:{type:Object,required:!0},listType:{type:String,required:!0},index:{type:Number,required:!0}},setup(n){const t=H($n),r=K(null),o=K(""),i=_(()=>{const{file:e}=n;return"finished"===e.status?"success":"error"===e.status?"error":"info"}),l=_(()=>{const{file:e}=n;if("error"===e.status)return"error"}),a=_(()=>{const{file:e}=n;return"uploading"===e.status}),s=_(()=>{if(!t.showCancelButtonRef.value)return!1;const{file:e}=n;return["uploading","pending","error"].includes(e.status)}),d=_(()=>{if(!t.showRemoveButtonRef.value)return!1;const{file:e}=n;return["finished"].includes(e.status)}),u=_(()=>{if(!t.showDownloadButtonRef.value)return!1;const{file:e}=n;return["finished"].includes(e.status)}),c=_(()=>{if(!t.showRetryButtonRef.value)return!1;const{file:e}=n;return["error"].includes(e.status)}),h=e(()=>o.value||n.file.thumbnailUrl||n.file.url),f=_(()=>{if(!t.showPreviewButtonRef.value)return!1;const{file:{status:e},listType:r}=n;return["finished"].includes(e)&&h.value&&"image-card"===r});function g(e){const{xhrMap:r,doChange:o,onRemoveRef:{value:i},mergedFileListRef:{value:l}}=t;Promise.resolve(!i||i({file:Object.assign({},e),fileList:l,index:n.index})).then(n=>{if(!1===n)return;const t=Object.assign({},e,{status:"removed"});r.delete(e.id),o(t,void 0,{remove:!0})})}const v=()=>_n(this,void 0,void 0,function*(){const{listType:e}=n;"image"!==e&&"image-card"!==e||t.shouldUseThumbnailUrlRef.value(n.file)&&(o.value=yield t.getFileThumbnailUrlResolver(n.file))});return N(()=>{v()}),{mergedTheme:t.mergedThemeRef,progressStatus:i,buttonType:l,showProgress:a,disabled:t.mergedDisabledRef,showCancelButton:s,showRemoveButton:d,showDownloadButton:u,showRetryButton:c,showPreviewButton:f,mergedThumbnailUrl:h,shouldUseThumbnailUrl:t.shouldUseThumbnailUrlRef,renderIcon:t.renderIconRef,imageRef:r,handleRemoveOrCancelClick:function(e){e.preventDefault();const{file:r}=n;["finished","pending","error"].includes(r.status)?g(r):["uploading"].includes(r.status)?function(e){const{xhrMap:n}=t,r=n.get(e.id);null==r||r.abort(),g(Object.assign({},e))}(r):p("upload","The button clicked type is unknown.")},handleDownloadClick:function(e){e.preventDefault(),function(e){const{onDownloadRef:{value:n},customDownloadRef:{value:r}}=t;Promise.resolve(!n||n(Object.assign({},e))).then(n=>{!1!==n&&(r?r(Object.assign({},e)):ge(e.url,e.name))})}(n.file)},handleRetryClick:function(){return _n(this,void 0,void 0,function*(){const e=t.onRetryRef.value;e&&!1===(yield e({file:n.file}))||t.submit(n.file.id)})},handlePreviewClick:function(e){const{onPreviewRef:{value:o}}=t;if(o)o(n.file,{event:e});else if("image-card"===n.listType){const{value:e}=r;if(!e)return;e.showPreview()}}}},render(){const{clsPrefix:e,mergedTheme:t,listType:r,file:o,renderIcon:i}=this;let l;const a="image"===r;l=a||"image-card"===r?this.shouldUseThumbnailUrl(o)&&this.mergedThumbnailUrl?F("a",{rel:"noopener noreferer",target:"_blank",href:o.url||void 0,class:`${e}-upload-file-info__thumbnail`,onClick:this.handlePreviewClick},"image-card"===r?F(yn,{src:this.mergedThumbnailUrl||void 0,previewSrc:o.url||void 0,alt:o.name,ref:"imageRef"}):F("img",{src:this.mergedThumbnailUrl||void 0,alt:o.name})):F("span",{class:`${e}-upload-file-info__thumbnail`},i?i(o):Hn(o)?F(k,{clsPrefix:e},{default:jn}):F(k,{clsPrefix:e},{default:In})):F("span",{class:`${e}-upload-file-info__thumbnail`},i?i(o):F(k,{clsPrefix:e},{default:()=>F(Xe,null)}));const s=F(An,{show:this.showProgress,percentage:o.percentage||0,status:this.progressStatus}),d="text"===r||"image"===r;return F("div",{class:[`${e}-upload-file`,`${e}-upload-file--${this.progressStatus}-status`,o.url&&"error"!==o.status&&"image-card"!==r&&`${e}-upload-file--with-url`,`${e}-upload-file--${r}-type`]},F("div",{class:`${e}-upload-file-info`},l,F("div",{class:`${e}-upload-file-info__name`},d&&(o.url&&"error"!==o.status?F("a",{rel:"noopener noreferer",target:"_blank",href:o.url||void 0,onClick:this.handlePreviewClick},o.name):F("span",{onClick:this.handlePreviewClick},o.name)),a&&s),F("div",{class:[`${e}-upload-file-info__action`,`${e}-upload-file-info__action--${r}-type`]},this.showPreviewButton?F($,{key:"preview",quaternary:!0,type:this.buttonType,onClick:this.handlePreviewClick,theme:t.peers.Button,themeOverrides:t.peerOverrides.Button,builtinThemeOverrides:Vn},{icon:()=>F(k,{clsPrefix:e},{default:()=>F(ce,null)})}):null,(this.showRemoveButton||this.showCancelButton)&&!this.disabled&&F($,{key:"cancelOrTrash",theme:t.peers.Button,themeOverrides:t.peerOverrides.Button,quaternary:!0,builtinThemeOverrides:Vn,type:this.buttonType,onClick:this.handleRemoveOrCancelClick},{icon:()=>F(n,null,{default:()=>this.showRemoveButton?F(k,{clsPrefix:e,key:"trash"},{default:()=>F(nn,null)}):F(k,{clsPrefix:e,key:"cancel"},{default:()=>F(Ge,null)})})}),this.showRetryButton&&!this.disabled&&F($,{key:"retry",quaternary:!0,type:this.buttonType,onClick:this.handleRetryClick,theme:t.peers.Button,themeOverrides:t.peerOverrides.Button,builtinThemeOverrides:Vn},{icon:()=>F(k,{clsPrefix:e},{default:()=>F(Qe,null)})}),this.showDownloadButton?F($,{key:"download",quaternary:!0,type:this.buttonType,onClick:this.handleDownloadClick,theme:t.peers.Button,themeOverrides:t.peerOverrides.Button,builtinThemeOverrides:Vn},{icon:()=>F(k,{clsPrefix:e},{default:()=>F(Ye,null)})}):null)),!a&&s)}}),Gn=M({name:"UploadTrigger",props:{abstract:Boolean},slots:Object,setup(e,{slots:n}){const r=H($n,null);r||t("upload-trigger","`n-upload-trigger` must be placed inside `n-upload`.");const{mergedClsPrefixRef:i,mergedDisabledRef:l,maxReachedRef:a,listTypeRef:s,dragOverRef:d,openOpenFileDialog:u,draggerInsideRef:c,handleFileAddition:p,mergedDirectoryDndRef:h,triggerClassRef:f,triggerStyleRef:g}=r,v=_(()=>"image-card"===s.value);function m(){l.value||a.value||u()}function w(e){e.preventDefault(),d.value=!0}function b(e){e.preventDefault(),d.value=!0}function x(e){e.preventDefault(),d.value=!1}function y(e){var n;if(e.preventDefault(),!c.value||l.value||a.value)return void(d.value=!1);const t=null===(n=e.dataTransfer)||void 0===n?void 0:n.items;(null==t?void 0:t.length)?function(n,t){return Mn(this,void 0,void 0,function*(){const r=[];return yield function n(i){return Mn(this,void 0,void 0,function*(){for(const l of i)if(l)if(t&&Wn(l)){const t=l.createReader();let r,i=[];try{do{r=yield new Promise((e,n)=>{t.readEntries(e,n)}),i=i.concat(r)}while(r.length>0)}catch(e){o("upload","error happens when handling directory upload",e)}yield n(i)}else if(Zn(l))try{const e=yield new Promise((e,n)=>{l.file(e,n)});r.push({file:e,entry:l,source:"dnd"})}catch(e){o("upload","error happens when handling file upload",e)}})}(n),r})}(Array.from(t).map(e=>e.webkitGetAsEntry()),h.value).then(e=>{p(e)}).finally(()=>{d.value=!1}):d.value=!1}return()=>{var t;const{value:r}=i;return e.abstract?null===(t=n.default)||void 0===t?void 0:t.call(n,{handleClick:m,handleDrop:y,handleDragOver:w,handleDragEnter:b,handleDragLeave:x}):F("div",{class:[`${r}-upload-trigger`,(l.value||a.value)&&`${r}-upload-trigger--disabled`,v.value&&`${r}-upload-trigger--image-card`,f.value],style:g.value,onClick:m,onDrop:y,onDragover:w,onDragenter:b,onDragleave:x},v.value?F(Dn,null,{default:()=>I(n.default,()=>[F(k,{clsPrefix:r},{default:()=>F(he,null)})])}):n)}}}),Yn=M({name:"UploadFileList",setup(e,{slots:n}){const o=H($n,null);o||t("upload-file-list","`n-upload-file-list` must be placed inside `n-upload`.");const{abstractRef:i,mergedClsPrefixRef:l,listTypeRef:a,mergedFileListRef:s,fileListClassRef:d,fileListStyleRef:u,cssVarsRef:c,themeClassRef:p,maxReachedRef:h,showTriggerRef:f,imageGroupPropsRef:g}=o,v=_(()=>"image-card"===a.value),m=()=>s.value.map((e,n)=>F(Xn,{clsPrefix:l.value,key:e.id,file:e,index:n,listType:a.value}));return()=>{const{value:e}=l,{value:t}=i;return F("div",{class:[`${e}-upload-file-list`,v.value&&`${e}-upload-file-list--grid`,t?null==p?void 0:p.value:void 0,d.value],style:[t&&c?c.value:"",u.value]},v.value?F(wn,Object.assign({},g.value),{default:m}):F(r,{group:!0},{default:m}),f.value&&!h.value&&v.value&&F(Gn,null,n))}}}),Jn=function(e,n,t,r){return new(t||(t=Promise))(function(o,i){function l(e){try{s(r.next(e))}catch(n){i(n)}}function a(e){try{s(r.throw(e))}catch(n){i(n)}}function s(e){var n;e.done?o(e.value):(n=e.value,n instanceof t?n:new t(function(e){e(n)})).then(l,a)}s((r=r.apply(e,n||[])).next())})};function Qn(e,n,t){const r=function(e,n,t){const{doChange:r,xhrMap:o}=e;let i=0;function l(t){var l;let a=Object.assign({},n,{status:"error",percentage:i});o.delete(n.id),a=qn((null===(l=e.onError)||void 0===l?void 0:l.call(e,{file:a,event:t}))||a),r(a,t)}return{handleXHRLoad:function(a){var s;if(e.isErrorState){if(e.isErrorState(t))return void l(a)}else if(t.status<200||t.status>=300)return void l(a);let d=Object.assign({},n,{status:"finished",percentage:i});o.delete(n.id),d=qn((null===(s=e.onFinish)||void 0===s?void 0:s.call(e,{file:d,event:a}))||d),r(d,a)},handleXHRError:l,handleXHRAbort(e){const t=Object.assign({},n,{status:"removed",file:null,percentage:i});o.delete(n.id),r(t,e)},handleXHRProgress(e){const t=Object.assign({},n,{status:"uploading"});if(e.lengthComputable){const n=Math.ceil(e.loaded/e.total*100);t.percentage=n,i=n}r(t,e)}}}(e,n,t);t.onabort=r.handleXHRAbort,t.onerror=r.handleXHRError,t.onload=r.handleXHRLoad,t.upload&&(t.upload.onprogress=r.handleXHRProgress)}function Kn(e,n){return"function"==typeof e?e({file:n}):e||{}}function et(e,n,t,{method:r,action:o,withCredentials:i,responseType:l,headers:a,data:s}){const d=new XMLHttpRequest;d.responseType=l,e.xhrMap.set(t.id,d),d.withCredentials=i;const u=new FormData;if(function(e,n,t){const r=Kn(n,t);r&&Object.keys(r).forEach(n=>{e.append(n,r[n])})}(u,s,t),null!==t.file&&u.append(n,t.file),Qn(e,t,d),void 0!==o){d.open(r.toUpperCase(),o),function(e,n,t){const r=Kn(n,t);r&&Object.keys(r).forEach(n=>{e.setRequestHeader(n,r[n])})}(d,a,t),d.send(u);const n=Object.assign({},t,{status:"uploading"});e.doChange(n)}}var nt=M({name:"Upload",props:Object.assign(Object.assign({},u.props),{name:{type:String,default:"file"},accept:String,action:String,customRequest:Function,directory:Boolean,directoryDnd:{type:Boolean,default:void 0},method:{type:String,default:"POST"},multiple:Boolean,showFileList:{type:Boolean,default:!0},data:[Object,Function],headers:[Object,Function],withCredentials:Boolean,responseType:{type:String,default:""},disabled:{type:Boolean,default:void 0},onChange:Function,onRemove:Function,onFinish:Function,onError:Function,onRetry:Function,onBeforeUpload:Function,isErrorState:Function,onDownload:Function,customDownload:Function,defaultUpload:{type:Boolean,default:!0},fileList:Array,"onUpdate:fileList":[Function,Array],onUpdateFileList:[Function,Array],fileListClass:String,fileListStyle:[String,Object],defaultFileList:{type:Array,default:()=>[]},showCancelButton:{type:Boolean,default:!0},showRemoveButton:{type:Boolean,default:!0},showDownloadButton:Boolean,showRetryButton:{type:Boolean,default:!0},showPreviewButton:{type:Boolean,default:!0},listType:{type:String,default:"text"},onPreview:Function,shouldUseThumbnailUrl:{type:Function,default:e=>!!Nn&&Hn(e)},createThumbnailUrl:Function,abstract:Boolean,max:Number,showTrigger:{type:Boolean,default:!0},imageGroupProps:Object,inputProps:Object,triggerClass:String,triggerStyle:[String,Object],renderIcon:Function}),setup(e){e.abstract&&"image-card"===e.listType&&t("upload","when the list-type is image-card, abstract is not supported.");const{mergedClsPrefixRef:n,inlineThemeDisabled:r,mergedRtlRef:o}=y(e),i=u("Upload","-upload",Tn,de,e,n),l=a("Upload",o,n),s=O(e),d=K(e.defaultFileList),c=V(e,"fileList"),p=K(null),f={value:!1},g=K(!1),m=new Map,w=h(c,d),b=_(()=>w.value.map(qn)),x=_(()=>{const{max:n}=e;return void 0!==n&&b.value.length>=n});function C(){var e;null===(e=p.value)||void 0===e||e.click()}const k=_(()=>e.multiple||e.directory),P=(n,t,r={append:!1,remove:!1})=>{const{append:o,remove:i}=r,l=Array.from(b.value),a=l.findIndex(e=>e.id===n.id);if(o||i||~a){o?l.push(n):i?l.splice(a,1):l.splice(a,1,n);const{onChange:r}=e;r&&r({file:n,fileList:l,event:t}),function(n){const{"onUpdate:fileList":t,onUpdateFileList:r}=e;t&&v(t,n),r&&v(r,n),d.value=n}(l)}};function S(n,t){if(!n||0===n.length)return;const{onBeforeUpload:r}=e;n=k.value?n:[n[0]];const{max:o,accept:i}=e;n=n.filter(({file:e,source:n})=>"dnd"!==n||!(null==i?void 0:i.trim())||function(e,n,t){return e=e.toLowerCase(),n=n.toLocaleLowerCase(),(t=t.toLocaleLowerCase()).split(",").map(e=>e.trim()).filter(Boolean).some(t=>{if(t.startsWith(".")){if(e.endsWith(t))return!0}else{if(!t.includes("/"))return!0;{const[e,r]=n.split("/"),[o,i]=t.split("/");if(("*"===o||e&&o&&o===e)&&("*"===i||r&&i&&i===r))return!0}}return!1})}(e.name,e.type,i)),o&&(n=n.slice(0,o-b.value.length));const l=z();Promise.all(n.map(e=>Jn(this,[e],void 0,function*({file:e,entry:n}){var t;const o={id:z(),batchId:l,name:e.name,status:"pending",percentage:0,file:e,url:null,type:e.type,thumbnailUrl:null,fullPath:null!==(t=null==n?void 0:n.fullPath)&&void 0!==t?t:`/${e.webkitRelativePath||e.name}`};return r&&!1===(yield r({file:o,fileList:b.value}))?null:o}))).then(e=>Jn(this,void 0,void 0,function*(){let n=Promise.resolve();e.forEach(e=>{n=n.then(E).then(()=>{e&&P(e,t,{append:!0})})}),yield n})).then(()=>{e.defaultUpload&&L()})}function L(n){const{method:t,action:r,withCredentials:o,headers:i,data:l,name:a}=e,s=void 0!==n?b.value.filter(e=>e.id===n):b.value,d=void 0!==n;s.forEach(n=>{const{status:s}=n;("pending"===s||"error"===s&&d)&&(e.customRequest?function(e){const{inst:n,file:t,data:r,headers:o,withCredentials:i,action:l,customRequest:a}=e,{doChange:s}=e.inst;let d=0;a({file:t,data:r,headers:o,withCredentials:i,action:l,onProgress(e){const n=Object.assign({},t,{status:"uploading"}),r=e.percent;n.percentage=r,d=r,s(n)},onFinish(){var e;let r=Object.assign({},t,{status:"finished",percentage:d});r=qn((null===(e=n.onFinish)||void 0===e?void 0:e.call(n,{file:r}))||r),s(r)},onError(){var e;let r=Object.assign({},t,{status:"error",percentage:d});r=qn((null===(e=n.onError)||void 0===e?void 0:e.call(n,{file:r}))||r),s(r)}})}({inst:{doChange:P,xhrMap:m,onFinish:e.onFinish,onError:e.onError},file:n,action:r,withCredentials:o,headers:i,data:l,customRequest:e.customRequest}):et({doChange:P,xhrMap:m,onFinish:e.onFinish,onError:e.onError,isErrorState:e.isErrorState},a,n,{method:t,action:r,withCredentials:o,responseType:e.responseType,headers:i,data:l}))})}const $=_(()=>{const{common:{cubicBezierEaseInOut:e},self:{draggerColor:n,draggerBorder:t,draggerBorderHover:r,itemColorHover:o,itemColorHoverError:l,itemTextColorError:a,itemTextColorSuccess:s,itemTextColor:d,itemIconColor:u,itemDisabledOpacity:c,lineHeight:p,borderRadius:h,fontSize:f,itemBorderImageCardError:g,itemBorderImageCard:v}}=i.value;return{"--n-bezier":e,"--n-border-radius":h,"--n-dragger-border":t,"--n-dragger-border-hover":r,"--n-dragger-color":n,"--n-font-size":f,"--n-item-color-hover":o,"--n-item-color-hover-error":l,"--n-item-disabled-opacity":c,"--n-item-icon-color":u,"--n-item-text-color":d,"--n-item-text-color-error":a,"--n-item-text-color-success":s,"--n-line-height":p,"--n-item-border-image-card-error":g,"--n-item-border-image-card":v}}),T=r?R("upload",void 0,$,e):void 0;U($n,{mergedClsPrefixRef:n,mergedThemeRef:i,showCancelButtonRef:V(e,"showCancelButton"),showDownloadButtonRef:V(e,"showDownloadButton"),showRemoveButtonRef:V(e,"showRemoveButton"),showRetryButtonRef:V(e,"showRetryButton"),onRemoveRef:V(e,"onRemove"),onDownloadRef:V(e,"onDownload"),customDownloadRef:V(e,"customDownload"),mergedFileListRef:b,triggerClassRef:V(e,"triggerClass"),triggerStyleRef:V(e,"triggerStyle"),shouldUseThumbnailUrlRef:V(e,"shouldUseThumbnailUrl"),renderIconRef:V(e,"renderIcon"),xhrMap:m,submit:L,doChange:P,showPreviewButtonRef:V(e,"showPreviewButton"),onPreviewRef:V(e,"onPreview"),getFileThumbnailUrlResolver:function(n){var t;if(n.thumbnailUrl)return n.thumbnailUrl;const{createThumbnailUrl:r}=e;return r?null!==(t=r(n.file,n))&&void 0!==t?t:n.url||"":n.url?n.url:n.file?function(e){return Mn(this,void 0,void 0,function*(){return yield new Promise(n=>{e.type&&Un(e.type)?n(window.URL.createObjectURL(e)):n("")})})}(n.file):""},listTypeRef:V(e,"listType"),dragOverRef:g,openOpenFileDialog:C,draggerInsideRef:f,handleFileAddition:S,mergedDisabledRef:s.mergedDisabledRef,maxReachedRef:x,fileListClassRef:V(e,"fileListClass"),fileListStyleRef:V(e,"fileListStyle"),abstractRef:V(e,"abstract"),acceptRef:V(e,"accept"),cssVarsRef:r?void 0:$,themeClassRef:null==T?void 0:T.themeClass,onRender:null==T?void 0:T.onRender,showTriggerRef:V(e,"showTrigger"),imageGroupPropsRef:V(e,"imageGroupProps"),mergedDirectoryDndRef:_(()=>{var n;return null!==(n=e.directoryDnd)&&void 0!==n?n:e.directory}),onRetryRef:V(e,"onRetry")});const B={clear:()=>{d.value=[]},submit:L,openOpenFileDialog:C};return Object.assign({mergedClsPrefix:n,draggerInsideRef:f,rtlEnabled:l,inputElRef:p,mergedTheme:i,dragOver:g,mergedMultiple:k,cssVars:r?void 0:$,themeClass:null==T?void 0:T.themeClass,onRender:null==T?void 0:T.onRender,handleFileInputChange:function(e){const n=e.target;S(n.files?Array.from(n.files).map(e=>({file:e,entry:null,source:"input"})):null,e),n.value=""}},B)},render(){var e,n;const{draggerInsideRef:t,mergedClsPrefix:r,$slots:o,directory:i,onRender:l}=this;if(o.default&&!this.abstract){const n=o.default()[0];(null===(e=null==n?void 0:n.type)||void 0===e?void 0:e.__UPLOAD_DRAGGER__)&&(t.value=!0)}const a=F("input",Object.assign({},this.inputProps,{ref:"inputElRef",type:"file",class:`${r}-upload-file-input`,accept:this.accept,multiple:this.mergedMultiple,onChange:this.handleFileInputChange,webkitdirectory:i||void 0,directory:i||void 0}));return this.abstract?F(Y,null,null===(n=o.default)||void 0===n?void 0:n.call(o),F(q,{to:"body"},a)):(null==l||l(),F("div",{class:[`${r}-upload`,this.rtlEnabled&&`${r}-upload--rtl`,t.value&&`${r}-upload--dragger-inside`,this.dragOver&&`${r}-upload--drag-over`,this.themeClass],style:this.cssVars},a,this.showTrigger&&"image-card"!==this.listType&&F(Gn,null,o),this.showFileList&&F(Yn,null,o)))}});export{Dn as n,nt as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./_plugin-vue_export-helper-BeLZJZij.js";import{O as a,S as s,W as r,b as t,et as o,mt as i,x as l}from"./vue-vendor-BqZbbXHA.js";import{t as d}from"./WorkspacePanel-5oDKit3c.js";import{n,t as p}from"./useResponsiveDrawer-jbmqZuJs.js";import{t as v}from"./DrawerContent-ChXgZ1Xm.js";var u=e({__name:"WorkspaceDrawer",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(e,{emit:u}){const m=e,c=u,{drawerWidth:w}=p(720),b=t({get:()=>m.visible,set:e=>c("update:visible",e)}),f={padding:0,display:"flex",flexDirection:"column",overflow:"hidden"};return(e,t)=>(r(),s(i(n),{show:b.value,"onUpdate:show":t[1]||(t[1]=e=>b.value=e),width:i(w),placement:"right","mask-closable":!0},{default:o(()=>[a(i(v),{closable:"","native-scrollbar":!1,"body-content-style":f},{header:o(()=>[...t[2]||(t[2]=[l("div",{class:"drawer-header"},"工作区管理",-1)])]),default:o(()=>[a(d,{"in-drawer":!0,"hide-back":!0,"drawer-visible":b.value,onBack:t[0]||(t[0]=e=>b.value=!1)},null,8,["drawer-visible"])]),_:1})]),_:1},8,["show","width"]))}},[["__scopeId","data-v-311a4d94"]]);export{u as default};
@@ -0,0 +1 @@
1
+ .drawer-header[data-v-311a4d94]{color:var(--text-primary);font-size:16px;font-weight:600}
@@ -0,0 +1 @@
1
+ import{t as a}from"./_plugin-vue_export-helper-BeLZJZij.js";import{O as e,W as r,et as s,mt as t,w as o}from"./vue-vendor-BqZbbXHA.js";import{O as p}from"./light-Cp0t7v32.js";import{t as d}from"./WorkspacePanel-5oDKit3c.js";var m={class:"workspace-manager"},i=a({__name:"WorkspaceManager",setup:a=>(a,i)=>(r(),o("div",m,[e(t(p),{title:"工作区管理",bordered:!1},{default:s(()=>[e(d,{"in-drawer":!1,"hide-back":!0})]),_:1})]))},[["__scopeId","data-v-c6211fd6"]]);export{i as default};
@@ -0,0 +1 @@
1
+ import{Cn as e,N as a,Sn as t,Xt as s,bn as o,gn as r,gt as l,hn as n,ht as i,i as c,in as d,s as p,t as u,vn as v,xn as h,yn as b}from"./_plugin-vue_export-helper-BeLZJZij.js";import{A as m,C as f,D as g,K as w,M as y,O as k,S as x,V as _,W as j,Z as C,_t as z,b as $,et as R,g as P,ht as S,m as B,mt as I,p as G,st as M,w as W,x as U}from"./vue-vendor-BqZbbXHA.js";import{B as D,Ft as O,J as A,Mt as E,X as T,_ as N,pt as F,r as L,w as q}from"./icons-B2Vg-IOC.js";import{t as K,y as V}from"./use-message-DoLM8C1C.js";import{S as X,l as Z}from"./light-Cp0t7v32.js";import{t as H}from"./Divider-D28g1gwj.js";import{B as J,I as Y,K as Q,P as ee,V as ae,Y as te,at as se,bt as oe,ct as re,dt as le,et as ne,nt as ie,pt as ce,tt as de}from"./index-BMAUPq5K.js";import{t as pe}from"./clipboard-B46yyoz_.js";import{a as ue,c as ve,i as he,l as be,n as me,o as fe,p as ge,r as we,s as ye,t as ke}from"./workspaces-mjyPVGS8.js";function xe(e,a="default",t=[]){const{children:s}=e;if(null!==s&&"object"==typeof s&&!Array.isArray(s)){const e=s[a];if("function"==typeof e)return e()}return t}var _e=n([r("descriptions",{fontSize:"var(--n-font-size)"},[r("descriptions-separator","\n display: inline-block;\n margin: 0 8px 0 2px;\n "),r("descriptions-table-wrapper",[r("descriptions-table",[r("descriptions-table-row",[r("descriptions-table-header",{padding:"var(--n-th-padding)"}),r("descriptions-table-content",{padding:"var(--n-td-padding)"})])])]),o("bordered",[r("descriptions-table-wrapper",[r("descriptions-table",[r("descriptions-table-row",[n("&:last-child",[r("descriptions-table-content",{paddingBottom:0})])])])])]),b("left-label-placement",[r("descriptions-table-content",[n("> *",{verticalAlign:"top"})])]),b("left-label-align",[n("th",{textAlign:"left"})]),b("center-label-align",[n("th",{textAlign:"center"})]),b("right-label-align",[n("th",{textAlign:"right"})]),b("bordered",[r("descriptions-table-wrapper","\n border-radius: var(--n-border-radius);\n overflow: hidden;\n background: var(--n-merged-td-color);\n border: 1px solid var(--n-merged-border-color);\n ",[r("descriptions-table",[r("descriptions-table-row",[n("&:not(:last-child)",[r("descriptions-table-content",{borderBottom:"1px solid var(--n-merged-border-color)"}),r("descriptions-table-header",{borderBottom:"1px solid var(--n-merged-border-color)"})]),r("descriptions-table-header","\n font-weight: 400;\n background-clip: padding-box;\n background-color: var(--n-merged-th-color);\n ",[n("&:not(:last-child)",{borderRight:"1px solid var(--n-merged-border-color)"})]),r("descriptions-table-content",[n("&:not(:last-child)",{borderRight:"1px solid var(--n-merged-border-color)"})])])])])]),r("descriptions-header","\n font-weight: var(--n-th-font-weight);\n font-size: 18px;\n transition: color .3s var(--n-bezier);\n line-height: var(--n-line-height);\n margin-bottom: 16px;\n color: var(--n-title-text-color);\n "),r("descriptions-table-wrapper","\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n ",[r("descriptions-table","\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n box-sizing: border-box;\n ",[r("descriptions-table-row","\n box-sizing: border-box;\n transition: border-color .3s var(--n-bezier);\n ",[r("descriptions-table-header","\n font-weight: var(--n-th-font-weight);\n line-height: var(--n-line-height);\n display: table-cell;\n box-sizing: border-box;\n color: var(--n-th-text-color);\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n "),r("descriptions-table-content","\n vertical-align: top;\n line-height: var(--n-line-height);\n display: table-cell;\n box-sizing: border-box;\n color: var(--n-td-text-color);\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n ",[v("content","\n transition: color .3s var(--n-bezier);\n display: inline-block;\n color: var(--n-td-text-color);\n ")]),v("label","\n font-weight: var(--n-th-font-weight);\n transition: color .3s var(--n-bezier);\n display: inline-block;\n margin-right: 14px;\n color: var(--n-th-text-color);\n ")])])])]),r("descriptions-table-wrapper","\n --n-merged-th-color: var(--n-th-color);\n --n-merged-td-color: var(--n-td-color);\n --n-merged-border-color: var(--n-border-color);\n "),t(r("descriptions-table-wrapper","\n --n-merged-th-color: var(--n-th-color-modal);\n --n-merged-td-color: var(--n-td-color-modal);\n --n-merged-border-color: var(--n-border-color-modal);\n ")),e(r("descriptions-table-wrapper","\n --n-merged-th-color: var(--n-th-color-popover);\n --n-merged-td-color: var(--n-td-color-popover);\n --n-merged-border-color: var(--n-border-color-popover);\n "))]),je="DESCRIPTION_ITEM_FLAG";var Ce=m({name:"Descriptions",props:Object.assign(Object.assign({},a.props),{title:String,column:{type:Number,default:3},columns:Number,labelPlacement:{type:String,default:"top"},labelAlign:{type:String,default:"left"},separator:{type:String,default:":"},size:{type:String,default:"medium"},bordered:Boolean,labelClass:String,labelStyle:[Object,String],contentClass:String,contentStyle:[Object,String]}),slots:Object,setup(e){const{mergedClsPrefixRef:t,inlineThemeDisabled:o}=l(e),r=a("Descriptions","-descriptions",_e,te,e,t),n=$(()=>{const{size:a,bordered:t}=e,{common:{cubicBezierEaseInOut:s},self:{titleTextColor:o,thColor:l,thColorModal:n,thColorPopover:i,thTextColor:c,thFontWeight:d,tdTextColor:p,tdColor:u,tdColorModal:v,tdColorPopover:b,borderColor:m,borderColorModal:f,borderColorPopover:g,borderRadius:w,lineHeight:y,[h("fontSize",a)]:k,[h(t?"thPaddingBordered":"thPadding",a)]:x,[h(t?"tdPaddingBordered":"tdPadding",a)]:_}}=r.value;return{"--n-title-text-color":o,"--n-th-padding":x,"--n-td-padding":_,"--n-font-size":k,"--n-bezier":s,"--n-th-font-weight":d,"--n-line-height":y,"--n-th-text-color":c,"--n-td-text-color":p,"--n-th-color":l,"--n-th-color-modal":n,"--n-th-color-popover":i,"--n-td-color":u,"--n-td-color-modal":v,"--n-td-color-popover":b,"--n-border-radius":w,"--n-border-color":m,"--n-border-color-modal":f,"--n-border-color-popover":g}}),c=o?i("descriptions",$(()=>{let a="";const{size:t,bordered:s}=e;return s&&(a+="a"),a+=t[0],a}),n,e):void 0;return{mergedClsPrefix:t,cssVars:o?void 0:n,themeClass:null==c?void 0:c.themeClass,onRender:null==c?void 0:c.onRender,compitableColumn:s(e,["columns","column"]),inlineThemeDisabled:o}},render(){const e=this.$slots.default,a=e?V(e()):[];a.length;const{contentClass:t,labelClass:s,compitableColumn:o,labelPlacement:r,labelAlign:l,size:n,bordered:i,title:c,cssVars:p,mergedClsPrefix:u,separator:v,onRender:h}=this;null==h||h();const b=a.filter(e=>{return!("object"!=typeof(a=e)||!a||Array.isArray(a))&&a.type&&a.type.DESCRIPTION_ITEM_FLAG;var a}),m=b.reduce((e,a,l)=>{const n=a.props||{},c=b.length-1===l,d=["label"in n?n.label:xe(a,"label")],p=[xe(a)],h=n.span||1,m=e.span;e.span+=h;const f=n.labelStyle||n["label-style"]||this.labelStyle,g=n.contentStyle||n["content-style"]||this.contentStyle;if("left"===r)i?e.row.push(y("th",{class:[`${u}-descriptions-table-header`,s],colspan:1,style:f},d),y("td",{class:[`${u}-descriptions-table-content`,t],colspan:c?2*(o-m)+1:2*h-1,style:g},p)):e.row.push(y("td",{class:`${u}-descriptions-table-content`,colspan:c?2*(o-m):2*h},y("span",{class:[`${u}-descriptions-table-content__label`,s],style:f},[...d,v&&y("span",{class:`${u}-descriptions-separator`},v)]),y("span",{class:[`${u}-descriptions-table-content__content`,t],style:g},p)));else{const a=c?2*(o-m):2*h;e.row.push(y("th",{class:[`${u}-descriptions-table-header`,s],colspan:a,style:f},d)),e.secondRow.push(y("td",{class:[`${u}-descriptions-table-content`,t],colspan:a,style:g},p))}return(e.span>=o||c)&&(e.span=0,e.row.length&&(e.rows.push(e.row),e.row=[]),"left"!==r&&e.secondRow.length&&(e.rows.push(e.secondRow),e.secondRow=[])),e},{span:0,row:[],secondRow:[],rows:[]}).rows.map(e=>y("tr",{class:`${u}-descriptions-table-row`},e));return y("div",{style:p,class:[`${u}-descriptions`,this.themeClass,`${u}-descriptions--${r}-label-placement`,`${u}-descriptions--${l}-label-align`,`${u}-descriptions--${n}-size`,i&&`${u}-descriptions--bordered`]},c||this.$slots.header?y("div",{class:`${u}-descriptions-header`},c||oe(this,"header")):null,y("div",{class:`${u}-descriptions-table-wrapper`},y("table",{class:`${u}-descriptions-table`},y("tbody",null,"top"===r&&y("tr",{class:`${u}-descriptions-table-row`,style:{visibility:"collapse"}},d(2*o,y("td",null))),m))))}}),ze={label:String,span:{type:Number,default:1},labelClass:String,labelStyle:[Object,String],contentClass:String,contentStyle:[Object,String]},$e=m({name:"DescriptionsItem",[je]:!0,props:ze,slots:Object,render:()=>null}),Re={class:"card-header"},Pe={class:"card-title"},Se={class:"name"},Be={class:"card-body"},Ie={key:0,class:"info-row"},Ge={class:"value"},Me={class:"info-row"},We={class:"value"},Ue={class:"info-row"},De={class:"value path"},Oe={key:1,class:"info-row"},Ae={class:"value"},Ee=u({__name:"WorkspaceCard",props:{workspace:{type:Object,required:!0}},emits:["click","view","delete"],setup:e=>(a,t)=>{return j(),W("div",{class:"workspace-card",onClick:t[3]||(t[3]=t=>a.$emit("click",e.workspace))},[U("div",Re,[U("div",Pe,[U("span",Se,z(e.workspace.name),1),k(I(le),{type:e.workspace.exists?"success":"error",size:"small"},{default:R(()=>[g(z(e.workspace.exists?"存在":"不存在"),1)]),_:1},8,["type"])]),U("div",{class:"card-actions",onClick:t[2]||(t[2]=B(()=>{},["stop"]))},[k(I(p),{text:"",size:"small",onClick:t[0]||(t[0]=t=>a.$emit("view",e.workspace))},{icon:R(()=>[k(I(c),null,{default:R(()=>[k(I(T))]),_:1})]),_:1}),k(I(p),{text:"",size:"small",type:"error",onClick:t[1]||(t[1]=t=>a.$emit("delete",e.workspace))},{icon:R(()=>[k(I(c),null,{default:R(()=>[k(I(L))]),_:1})]),_:1})])]),U("div",Be,[e.workspace.description?(j(),W("div",Ie,[t[4]||(t[4]=U("span",{class:"label"},"描述",-1)),U("span",Ge,z(e.workspace.description),1)])):f("",!0),U("div",Me,[t[5]||(t[5]=U("span",{class:"label"},"项目数",-1)),U("span",We,z(e.workspace.projectCount||0),1)]),U("div",Ue,[t[6]||(t[6]=U("span",{class:"label"},"路径",-1)),U("span",De,z(e.workspace.path),1)]),e.workspace.lastUsed?(j(),W("div",Oe,[t[7]||(t[7]=U("span",{class:"label"},"最后使用",-1)),U("span",Ae,z((s=e.workspace.lastUsed,s?new Date(s).toLocaleString("zh-CN"):"-")),1)])):f("",!0)])]);var s}},[["__scopeId","data-v-74e07bc9"]]),Te={class:"project-item"},Ne={class:"item-header"},Fe={class:"item-title"},Le={class:"item-body"},qe={key:2,class:"git-options"},Ke={key:0,class:"branch-inputs"},Ve={key:1,class:"branch-inputs"},Xe={key:2,class:"branch-inputs"},Ze=u({__name:"ProjectItem",props:{project:{type:Object,required:!0},index:{type:Number,required:!0},existingOptions:{type:Array,default:()=>[]},showRemoveButton:{type:Boolean,default:!0}},emits:["remove","select-existing"],setup(e){const a=e;async function t(){if(a.project.sourcePath)try{const e=await me(a.project.sourcePath);e.success&&(a.project.isGitRepo=e.data.isGitRepo,e.data.isGitRepo&&!a.project.createWorktree&&(a.project.createWorktree=!0),e.data.isGitRepo&&!a.project.branchMode&&(a.project.branchMode="existing"))}catch(e){}}return(a,s)=>(j(),W("div",Te,[U("div",Ne,[U("span",Fe,"项目 "+z(e.index+1),1),e.showRemoveButton?(j(),x(I(p),{key:0,text:"",size:"tiny",type:"error",onClick:s[0]||(s[0]=e=>a.$emit("remove"))},{icon:R(()=>[k(I(c),null,{default:R(()=>[k(I(F))]),_:1})]),_:1})):f("",!0)]),U("div",Le,[e.project.fromExisting?(j(),W(P,{key:0},[k(I(ie),{value:e.project.selectedKey,"onUpdate:value":[s[1]||(s[1]=a=>e.project.selectedKey=a),s[2]||(s[2]=t=>a.$emit("select-existing",e.index,t))],options:e.existingOptions,placeholder:"选择已有项目",filterable:"",size:"small"},null,8,["value","options"]),k(I(re),{value:e.project.sourcePath,placeholder:"项目路径",disabled:"",size:"small"},null,8,["value"])],64)):(j(),W(P,{key:1},[k(I(re),{value:e.project.sourcePath,"onUpdate:value":s[3]||(s[3]=a=>e.project.sourcePath=a),placeholder:"项目源路径",size:"small",onBlur:t},null,8,["value"]),k(I(re),{value:e.project.name,"onUpdate:value":s[4]||(s[4]=a=>e.project.name=a),placeholder:"软链接名称(可选)",size:"small"},null,8,["value"])],64)),e.project.isGitRepo?(j(),W("div",qe,[k(I(se),{checked:e.project.createWorktree,"onUpdate:checked":s[5]||(s[5]=a=>e.project.createWorktree=a),size:"small"},{default:R(()=>[...s[10]||(s[10]=[g(" 创建 Git Worktree ",-1)])]),_:1},8,["checked"]),e.project.createWorktree?(j(),W("div",Ke,[k(I(ne),{value:e.project.branchMode,"onUpdate:value":s[6]||(s[6]=a=>e.project.branchMode=a),size:"small",class:"branch-mode-group"},{default:R(()=>[k(I(de),{value:"existing"},{default:R(()=>[...s[11]||(s[11]=[g("使用已有分支",-1)])]),_:1}),k(I(de),{value:"new"},{default:R(()=>[...s[12]||(s[12]=[g("新建分支",-1)])]),_:1})]),_:1},8,["value"])])):f("",!0),e.project.createWorktree&&"existing"===(e.project.branchMode||"existing")?(j(),W("div",Ve,[k(I(re),{value:e.project.branch,"onUpdate:value":s[7]||(s[7]=a=>e.project.branch=a),placeholder:"已有分支名(留空使用当前分支)",size:"small",style:{flex:"1"}},null,8,["value"])])):f("",!0),e.project.createWorktree&&"new"===(e.project.branchMode||"existing")?(j(),W("div",Xe,[k(I(re),{value:e.project.branch,"onUpdate:value":s[8]||(s[8]=a=>e.project.branch=a),placeholder:"新分支名",size:"small",style:{flex:"1"}},null,8,["value"]),k(I(re),{value:e.project.baseBranch,"onUpdate:value":s[9]||(s[9]=a=>e.project.baseBranch=a),placeholder:"基于分支(可选,如 main)",size:"small",style:{flex:"1"}},null,8,["value"])])):f("",!0),e.project.createWorktree?(j(),x(I(ee),{key:3,depth:"3",style:{"font-size":"11px","margin-top":"4px"}},{default:R(()=>["existing"===(e.project.branchMode||"existing")?(j(),W(P,{key:0},[g(" [INFO] 填已有分支名时优先直接检出;留空则使用当前分支 ")],64)):e.project.branch&&e.project.baseBranch?(j(),W(P,{key:1},[g(' [INFO] 将新建分支 "'+z(e.project.branch)+'",并基于 "'+z(e.project.baseBranch)+'" 创建 ',1)],64)):e.project.branch?(j(),W(P,{key:2},[g(' [INFO] 将新建分支 "'+z(e.project.branch)+'",并基于源仓库当前分支创建 ',1)],64)):(j(),W(P,{key:3},[g(" [INFO] 请输入新分支名 ")],64))]),_:1})):f("",!0)])):f("",!0),e.project.isGitRepo?(j(),x(I(ee),{key:3,depth:"3",style:{"font-size":"11px"}},{default:R(()=>[...s[13]||(s[13]=[g("[v] Git 仓库",-1)])]),_:1})):f("",!0)])]))}},[["__scopeId","data-v-1cf82955"]]);function He(e=""){const a=String(e||"").trim();if(!a)return"";const t=a.replace(/[\\/]+$/,"");if(!t)return"";const s=t.split(/[\\/]+/);return s[s.length-1]||""}function Je({fromExisting:e=!1}={}){return{sourcePath:"",name:"",createWorktree:!1,branchMode:"existing",branch:"",baseBranch:"",isGitRepo:!1,fromExisting:e,selectedKey:""}}function Ye(e){return"string"==typeof e?e.trim():""}function Qe(e={}){const a={sourcePath:Ye(e.sourcePath),name:Ye(e.name),createWorktree:!1!==e.createWorktree&&!!e.isGitRepo};if(a.name||delete a.name,!a.createWorktree)return a;a.branchMode="new"===e.branchMode?"new":"existing";const t=Ye(e.branch);if(t&&(a.branch=t),"new"===a.branchMode){const t=Ye(e.baseBranch);t&&(a.baseBranch=t)}return a}var ea={class:"projects-section"},aa={class:"projects-actions"},ta={key:0,class:"projects-list"},sa=u({__name:"WorkspaceFormModal",props:{show:{type:Boolean,default:!1}},emits:["update:show","success"],setup(e,{emit:a}){const t=e,s=a,o=K(),r=M(null),l=M(!1),n=M([]),i=M([]),c=$({get:()=>t.show,set:e=>s("update:show",e)}),d=M({name:"",description:"",baseDir:"",configTemplateId:null,projects:[]}),u={name:[{required:!0,message:"请输入工作区名称",trigger:"blur"},{pattern:/^[a-zA-Z0-9_\-\u4e00-\u9fa5]+$/,message:"名称只能包含字母、数字、下划线、中划线和中文",trigger:"blur"}],projects:[{type:"array",required:!0,min:1,message:"至少需要添加一个项目",trigger:"blur"}]},v=$(()=>n.value.map(e=>({label:e.name,value:e.id}))),h=$(()=>i.value.map(e=>({label:`${e.displayName||e.name} (${e.channel})${e.isGitRepo?" [Git]":""}`,value:`${e.channel}::${e.name}`,path:e.fullPath||e.name,isGitRepo:e.isGitRepo})));function b(e){d.value.projects.push(Je({fromExisting:e}))}function m(e,a){const t=h.value.find(e=>e.value===a);if(!t)return;const s=d.value.projects[e];s.sourcePath=t.path,s.name=He(t.path),s.isGitRepo=t.isGitRepo,s.createWorktree=t.isGitRepo,s.branchMode="existing",s.branch="",s.baseBranch=""}async function f(){try{await(r.value?.validate());for(const t of d.value.projects)if(!t.sourcePath)return void o.error("请填写项目路径");l.value=!0;const e={...d.value,projects:d.value.projects.map(Qe)},a=await we(e);a.success?(o.success("工作区创建成功"),d.value={name:"",description:"",baseDir:"",configTemplateId:null,projects:[]},s("success")):o.error(a.message||"创建失败")}catch(e){const a=e.message||"创建失败";a.includes("\n")?o.warning(a,{duration:8e3}):o.error(a),e.errors}finally{l.value=!1}}return C(c,e=>{e&&async function(){try{const[e,a]=await Promise.all([ge(),ue()]);e.success&&(n.value=e.data||[]),a.success&&(i.value=Array.isArray(a.data)?a.data:[])}catch(e){}}()}),(e,a)=>(j(),x(I(Z),{show:c.value,"onUpdate:show":a[8]||(a[8]=e=>c.value=e),preset:"card",title:"创建工作区",style:{width:"650px"},"mask-closable":!1},{footer:R(()=>[k(I(Q),{justify:"end"},{default:R(()=>[k(I(p),{onClick:a[7]||(a[7]=e=>c.value=!1)},{default:R(()=>[...a[12]||(a[12]=[g("取消",-1)])]),_:1}),k(I(p),{type:"primary",onClick:f,loading:l.value},{default:R(()=>[...a[13]||(a[13]=[g("创建",-1)])]),_:1},8,["loading"])]),_:1})]),default:R(()=>[k(I(ae),{ref_key:"formRef",ref:r,model:d.value,rules:u,"label-placement":"left","label-width":"100"},{default:R(()=>[k(I(J),{label:"工作区名称",path:"name"},{default:R(()=>[k(I(re),{value:d.value.name,"onUpdate:value":a[0]||(a[0]=e=>d.value.name=e),placeholder:"输入工作区名称",onKeydown:a[1]||(a[1]=G(B(()=>{},["prevent"]),["enter"]))},null,8,["value"])]),_:1}),k(I(J),{label:"描述",path:"description"},{default:R(()=>[k(I(re),{value:d.value.description,"onUpdate:value":a[2]||(a[2]=e=>d.value.description=e),placeholder:"可选描述",type:"textarea",rows:2},null,8,["value"])]),_:1}),k(I(J),{label:"基础目录",path:"baseDir"},{default:R(()=>[k(I(re),{value:d.value.baseDir,"onUpdate:value":a[3]||(a[3]=e=>d.value.baseDir=e),placeholder:"留空则使用第一个项目的父目录"},null,8,["value"])]),_:1}),k(I(J),{label:"配置模板",path:"configTemplateId"},{default:R(()=>[k(I(ie),{value:d.value.configTemplateId,"onUpdate:value":a[4]||(a[4]=e=>d.value.configTemplateId=e),options:v.value,placeholder:"选择配置模板",clearable:""},null,8,["value","options"])]),_:1}),k(I(J),{label:"项目列表",path:"projects"},{default:R(()=>[U("div",ea,[U("div",aa,[k(I(p),{size:"small",dashed:"",onClick:a[5]||(a[5]=e=>b(!1))},{default:R(()=>[...a[9]||(a[9]=[g("添加项目",-1)])]),_:1}),k(I(p),{size:"small",dashed:"",onClick:a[6]||(a[6]=e=>b(!0))},{default:R(()=>[...a[10]||(a[10]=[g("添加已有项目",-1)])]),_:1})]),d.value.projects.length>0?(j(),W("div",ta,[(j(!0),W(P,null,w(d.value.projects,(e,a)=>(j(),x(Ze,{key:a,project:e,index:a,"existing-options":h.value,onRemove:e=>function(e){d.value.projects.splice(e,1)}(a),onSelectExisting:m},null,8,["project","index","existing-options","onRemove"]))),128))])):(j(),x(I(ee),{key:1,depth:"3",style:{"font-size":"12px"}},{default:R(()=>[...a[11]||(a[11]=[g("请添加至少一个项目",-1)])]),_:1}))])]),_:1})]),_:1},8,["model"])]),_:1},8,["show"]))}},[["__scopeId","data-v-4b48727c"]]),oa={class:"form-section"},ra={class:"actions-row"},la=u({__name:"WorkspaceProjectFormModal",props:{show:{type:Boolean,default:!1},workspaceId:{type:String,required:!0}},emits:["update:show","success"],setup(e,{emit:a}){const t=e,s=a,o=K(),r=M(!1),l=M([]),n=M(Je()),i=$({get:()=>t.show,set:e=>s("update:show",e)}),c=$(()=>l.value.map(e=>({label:`${e.displayName||e.name} (${e.channel})${e.isGitRepo?" [Git]":""}`,value:`${e.channel}::${e.name}`,path:e.fullPath||e.name,isGitRepo:e.isGitRepo})));function d(){n.value=Je()}function u(){n.value=Je({fromExisting:!1})}function v(){n.value=Je({fromExisting:!0})}function h(e,a){const t=c.value.find(e=>e.value===a);t&&(n.value.selectedKey=a,n.value.sourcePath=t.path,n.value.name=He(t.path),n.value.isGitRepo=t.isGitRepo,n.value.createWorktree=t.isGitRepo,n.value.branchMode="existing",n.value.branch="",n.value.baseBranch="",n.value.fromExisting=!0)}async function b(){const e=Qe(n.value);if(e.sourcePath)if(!n.value.createWorktree||"new"!==n.value.branchMode||e.branch){r.value=!0;try{const a=await ke(t.workspaceId,e);if(a.success)return o.success("仓库已添加到工作区"),i.value=!1,d(),void s("success");o.error(a.message||"添加失败")}catch(a){o.error(`添加失败: ${a.message}`)}finally{r.value=!1}}else o.error("请输入新分支名");else o.error("请填写项目路径")}return C(i,e=>{e&&(d(),async function(){try{const e=await ue();e.success&&(l.value=Array.isArray(e.data)?e.data:[])}catch(e){}}())}),(e,a)=>(j(),x(I(Z),{show:i.value,"onUpdate:show":a[1]||(a[1]=e=>i.value=e),preset:"card",title:"添加仓库到工作区",style:{width:"620px"},"mask-closable":!1},{footer:R(()=>[k(I(Q),{justify:"end"},{default:R(()=>[k(I(p),{onClick:a[0]||(a[0]=e=>i.value=!1)},{default:R(()=>[...a[4]||(a[4]=[g("取消",-1)])]),_:1}),k(I(p),{type:"primary",loading:r.value,onClick:b},{default:R(()=>[...a[5]||(a[5]=[g("添加",-1)])]),_:1},8,["loading"])]),_:1})]),default:R(()=>[U("div",oa,[U("div",ra,[k(I(p),{size:"small",dashed:"",type:n.value.fromExisting?"default":"primary",onClick:u},{default:R(()=>[...a[2]||(a[2]=[g(" 手动填写路径 ",-1)])]),_:1},8,["type"]),k(I(p),{size:"small",dashed:"",type:n.value.fromExisting?"primary":"default",onClick:v},{default:R(()=>[...a[3]||(a[3]=[g(" 选择已有项目 ",-1)])]),_:1},8,["type"])]),k(Ze,{project:n.value,index:0,"existing-options":c.value,"show-remove-button":!1,onSelectExisting:h},null,8,["project","existing-options"])])]),_:1},8,["show"]))}},[["__scopeId","data-v-16febc8c"]]),na={class:"section-header"},ia={class:"section-title"},ca={key:0,class:"projects-list"},da={class:"proj-name"},pa={class:"proj-path"},ua=u({__name:"WorkspaceDetailModal",props:{show:{type:Boolean,default:!1},workspace:{type:Object,default:null}},emits:["update:show","updated"],setup(e,{emit:a}){const t=e,s=a,o=K(),r=X(),l=$({get:()=>t.show,set:e=>s("update:show",e)}),n=M(null),i=M(!1);function c(e){return e?new Date(e).toLocaleString("zh-CN"):"-"}async function d(){if(t.workspace?.id)try{const e=await ye(t.workspace.id);e.success&&(n.value=e.data)}catch(e){}}function u(){d(),s("updated")}async function v(e){if(t.workspace?.id)try{const a=await fe(t.workspace.id,e);if(a.success){const e=`cd "${a.data.cwd}" && ${a.data.command}`;if("manual"===(await pe(e))?.method)return void o.warning("自动复制失败,已弹出手动复制框");o.success("启动命令已复制到剪贴板")}else o.error(a.message||"获取命令失败")}catch(a){o.error("获取命令失败: "+a.message)}}return C(l,e=>{e&&t.workspace&&d()}),(a,s)=>(j(),x(I(Z),{show:l.value,"onUpdate:show":s[6]||(s[6]=e=>l.value=e),preset:"card",title:"工作区详情",style:{width:"700px"}},{default:R(()=>[e.workspace?(j(),W(P,{key:0},[k(I(Ce),{column:1,bordered:"",size:"small"},{default:R(()=>[k(I($e),{label:"名称"},{default:R(()=>[g(z(e.workspace.name),1)]),_:1}),k(I($e),{label:"描述"},{default:R(()=>[g(z(e.workspace.description||"-"),1)]),_:1}),k(I($e),{label:"路径"},{default:R(()=>[g(z(e.workspace.path),1)]),_:1}),k(I($e),{label:"状态"},{default:R(()=>[k(I(le),{type:e.workspace.exists?"success":"error",size:"small"},{default:R(()=>[g(z(e.workspace.exists?"存在":"不存在"),1)]),_:1},8,["type"])]),_:1}),k(I($e),{label:"创建时间"},{default:R(()=>[g(z(c(e.workspace.createdAt)),1)]),_:1}),k(I($e),{label:"最后使用"},{default:R(()=>[g(z(c(e.workspace.lastUsed)),1)]),_:1})]),_:1}),k(I(H)),s[15]||(s[15]=U("div",{class:"section-title"},"启动 CLI 工具",-1)),k(I(Q),null,{default:R(()=>[k(I(p),{type:"primary",size:"small",onClick:s[0]||(s[0]=e=>v("claude")),disabled:!e.workspace.exists},{default:R(()=>[...s[7]||(s[7]=[g(" Claude Code ",-1)])]),_:1},8,["disabled"]),k(I(p),{type:"info",size:"small",onClick:s[1]||(s[1]=e=>v("codex")),disabled:!e.workspace.exists},{default:R(()=>[...s[8]||(s[8]=[g(" Codex ",-1)])]),_:1},8,["disabled"]),k(I(p),{type:"success",size:"small",onClick:s[2]||(s[2]=e=>v("gemini")),disabled:!e.workspace.exists},{default:R(()=>[...s[9]||(s[9]=[g(" Gemini CLI ",-1)])]),_:1},8,["disabled"]),k(I(p),{type:"warning",size:"small",onClick:s[3]||(s[3]=e=>v("omp")),disabled:!e.workspace.exists},{default:R(()=>[...s[10]||(s[10]=[g(" OMP ",-1)])]),_:1},8,["disabled"])]),_:1}),k(I(ee),{depth:"3",style:{display:"block","margin-top":"6px","font-size":"11px"}},{default:R(()=>[...s[11]||(s[11]=[g(" 点击按钮将复制启动命令到剪贴板 ",-1)])]),_:1}),k(I(H)),U("div",na,[U("div",ia,"包含项目 ("+z(n.value?.projects?.length||0)+")",1),k(I(p),{size:"small",type:"primary",ghost:"",disabled:!n.value?.exists,onClick:s[4]||(s[4]=e=>i.value=!0)},{default:R(()=>[...s[12]||(s[12]=[g(" 添加仓库 ",-1)])]),_:1},8,["disabled"])]),n.value?.projects?.length?(j(),W("div",ca,[(j(!0),W(P,null,w(n.value.projects,(e,a)=>(j(),W("div",{class:"project-row",key:a},[k(I(le),{type:e.sourceExists?"success":"error",size:"small"},{default:R(()=>[g(z(e.sourceExists?"[v]":"[x]"),1)]),_:2},1032,["type"]),U("span",da,z(e.name),1),U("span",pa,z(e.sourcePath),1),e.useWorktree?(j(),x(I(le),{key:0,type:"info",size:"small"},{default:R(()=>[...s[13]||(s[13]=[g("worktree",-1)])]),_:1})):f("",!0),k(I(p),{text:"",size:"small",type:"error",onClick:a=>{return s=e,void(t.workspace?.id&&r.warning({title:"确认移除仓库",content:`确定要从工作区移除 "${s.name}" 吗?`,positiveText:"移除",negativeText:"取消",onPositiveClick:async()=>{try{const e=await be(t.workspace.id,s.name);if(e.success)return o.success("仓库已移除"),void u();o.error(e.message||"移除失败")}catch(e){o.error(`移除失败: ${e.message}`)}}}));var s}},{default:R(()=>[...s[14]||(s[14]=[g(" 移除 ",-1)])]),_:1},8,["onClick"])]))),128))])):(j(),x(I(ce),{key:1,description:"暂无项目",size:"small"}))],64)):f("",!0),k(la,{show:i.value,"onUpdate:show":s[5]||(s[5]=e=>i.value=e),"workspace-id":t.workspace?.id||"",onSuccess:u},null,8,["show","workspace-id"])]),_:1},8,["show"]))}},[["__scopeId","data-v-1ee80e2a"]]),va={key:0,class:"panel-header"},ha={class:"header-left"},ba={class:"header-right"},ma={key:1,class:"drawer-header-bar"},fa={class:"header-right"},ga={class:"stats-bar"},wa={class:"stats-text"},ya={class:"filter-bar"},ka={class:"panel-content"},xa={key:0,class:"empty-state"},_a={key:1,class:"card-list"},ja={class:"panel-footer"},Ca=u({__name:"WorkspacePanel",props:{inDrawer:{type:Boolean,default:!1},hideBack:{type:Boolean,default:!1},drawerVisible:{type:Boolean,default:!1}},emits:["back","updated"],setup(e,{emit:a}){const t=e,s=a,o=K(),r=X(),l=M(!1),n=M([]),i=M(""),d=M(!1),u=M(!1),v=M(null),h=$(()=>{if(!i.value.trim())return n.value;const e=i.value.toLowerCase();return n.value.filter(a=>a.name?.toLowerCase().includes(e)||a.description?.toLowerCase().includes(e)||a.path?.toLowerCase().includes(e))});async function b(){l.value=!0;try{const e=await ve();e.success&&(n.value=e.data||[])}catch(e){o.error("加载工作区失败: "+e.message)}finally{l.value=!1}}function m(e){v.value=e,u.value=!0}function y(e){r.warning({title:"确认删除",content:`确定要删除工作区"${e.name}"吗?`,positiveText:"删除",negativeText:"取消",onPositiveClick:async()=>{try{const a=await he(e.id,!1);a.success?(o.success("删除成功"),b(),s("updated")):o.error(a.message||"删除失败")}catch(a){o.error("删除失败: "+a.message)}}})}function B(){d.value=!1,b(),s("updated")}return _(()=>b()),C(()=>t.drawerVisible,e=>{e&&b()}),(a,t)=>(j(),W("div",{class:S(["workspace-panel",{"in-drawer":e.inDrawer}])},[e.inDrawer?f("",!0):(j(),W("div",va,[U("div",ha,[e.hideBack?f("",!0):(j(),x(I(p),{key:0,text:"",onClick:t[0]||(t[0]=e=>a.$emit("back")),class:"back-btn"},{icon:R(()=>[k(I(c),null,{default:R(()=>[k(I(E))]),_:1})]),_:1})),t[7]||(t[7]=U("span",{class:"panel-title"},"工作区管理",-1))]),U("div",ba,[k(I(p),{text:"",onClick:t[1]||(t[1]=e=>d.value=!0),class:"action-btn"},{icon:R(()=>[k(I(c),null,{default:R(()=>[k(I(O))]),_:1})]),default:R(()=>[t[8]||(t[8]=g(" 创建 ",-1))]),_:1}),k(I(p),{text:"",onClick:b,loading:l.value,class:"action-btn"},{icon:R(()=>[k(I(c),null,{default:R(()=>[k(I(q))]),_:1})]),default:R(()=>[t[9]||(t[9]=g(" 刷新 ",-1))]),_:1},8,["loading"])])])),e.inDrawer?(j(),W("div",ma,[U("div",fa,[k(I(p),{text:"",onClick:t[2]||(t[2]=e=>d.value=!0),class:"action-btn"},{icon:R(()=>[k(I(c),null,{default:R(()=>[k(I(O))]),_:1})]),default:R(()=>[t[10]||(t[10]=g(" 创建 ",-1))]),_:1}),k(I(p),{text:"",onClick:b,loading:l.value,class:"action-btn"},{icon:R(()=>[k(I(c),null,{default:R(()=>[k(I(q))]),_:1})]),default:R(()=>[t[11]||(t[11]=g(" 刷新 ",-1))]),_:1},8,["loading"])])])):f("",!0),U("div",ga,[U("span",wa," 共 "+z(n.value.length)+" 个工作区 ",1)]),U("div",ya,[k(I(re),{value:i.value,"onUpdate:value":t[3]||(t[3]=e=>i.value=e),placeholder:"搜索工作区...",clearable:"",size:"small",class:"search-input"},{prefix:R(()=>[k(I(c),null,{default:R(()=>[k(I(N))]),_:1})]),_:1},8,["value"])]),U("div",ka,[k(I(Y),{show:l.value},{default:R(()=>[0!==h.value.length||l.value?(j(),W("div",_a,[(j(!0),W(P,null,w(h.value,e=>(j(),x(Ee,{key:e.id,workspace:e,onClick:m,onView:m,onDelete:y},null,8,["workspace"]))),128))])):(j(),W("div",xa,[k(I(ce),{description:"暂无工作区"},{icon:R(()=>[k(I(c),{size:"48",color:"var(--text-quaternary)"},{default:R(()=>[k(I(A))]),_:1})]),extra:R(()=>[k(I(p),{size:"small",onClick:t[4]||(t[4]=e=>d.value=!0)},{default:R(()=>[...t[12]||(t[12]=[g("创建第一个工作区",-1)])]),_:1})]),_:1})]))]),_:1},8,["show"])]),U("div",ja,[k(I(c),{size:"14",class:"info-icon"},{default:R(()=>[k(I(D))]),_:1}),t[13]||(t[13]=U("span",null,"工作区用于管理多个项目的统一开发环境",-1))]),k(sa,{show:d.value,"onUpdate:show":t[5]||(t[5]=e=>d.value=e),onSuccess:B},null,8,["show"]),k(ua,{show:u.value,"onUpdate:show":t[6]||(t[6]=e=>u.value=e),workspace:v.value,onUpdated:b},null,8,["show","workspace"])],2))}},[["__scopeId","data-v-da5160b9"]]);export{Ca as t};
@@ -0,0 +1 @@
1
+ .workspace-card[data-v-74e07bc9]{background:var(--bg-secondary);border:1px solid var(--border-primary);cursor:pointer;border-radius:8px;padding:12px 16px;transition:all .2s}.workspace-card[data-v-74e07bc9]:hover{border-color:var(--primary-color);box-shadow:0 2px 8px #00000014}.card-header[data-v-74e07bc9]{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.card-title[data-v-74e07bc9]{align-items:center;gap:8px;display:flex}.card-title .name[data-v-74e07bc9]{color:var(--text-primary);font-size:15px;font-weight:600}.card-actions[data-v-74e07bc9]{align-items:center;gap:4px;display:flex}.card-body[data-v-74e07bc9]{flex-direction:column;gap:6px;display:flex}.info-row[data-v-74e07bc9]{align-items:flex-start;gap:8px;font-size:13px;display:flex}.info-row .label[data-v-74e07bc9]{color:var(--text-tertiary);flex-shrink:0;min-width:60px}.info-row .value[data-v-74e07bc9]{color:var(--text-secondary);word-break:break-all}.info-row .value.path[data-v-74e07bc9]{font-family:monospace;font-size:12px}.project-item[data-v-1cf82955]{background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:6px;padding:10px 12px}.item-header[data-v-1cf82955]{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.item-title[data-v-1cf82955]{color:var(--text-secondary);font-size:12px;font-weight:500}.item-body[data-v-1cf82955],.git-options[data-v-1cf82955]{flex-direction:column;gap:8px;display:flex}.branch-inputs[data-v-1cf82955]{gap:8px;width:100%;display:flex}.branch-mode-group[data-v-1cf82955],.projects-section[data-v-4b48727c]{width:100%}.projects-actions[data-v-4b48727c]{gap:8px;margin-bottom:12px;display:flex}.projects-list[data-v-4b48727c]{flex-direction:column;gap:10px;display:flex}.form-section[data-v-16febc8c]{flex-direction:column;gap:12px;display:flex}.actions-row[data-v-16febc8c]{gap:8px;display:flex}.section-title[data-v-1ee80e2a]{color:var(--text-primary);margin-bottom:10px;font-size:14px;font-weight:600}.section-header[data-v-1ee80e2a]{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.section-header .section-title[data-v-1ee80e2a]{margin-bottom:0}.projects-list[data-v-1ee80e2a]{flex-direction:column;gap:8px;display:flex}.project-row[data-v-1ee80e2a]{align-items:center;gap:8px;font-size:13px;display:flex}.proj-name[data-v-1ee80e2a]{color:var(--text-primary);font-weight:500}.proj-path[data-v-1ee80e2a]{color:var(--text-tertiary);flex:1;font-family:monospace;font-size:12px}.workspace-panel[data-v-da5160b9]{background:var(--bg-primary);flex-direction:column;flex:1;min-height:0;display:flex}.panel-header[data-v-da5160b9],.drawer-header-bar[data-v-da5160b9]{border-bottom:1px solid var(--border-primary);background:var(--bg-secondary);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.drawer-header-bar[data-v-da5160b9]{padding:8px 12px}.header-left[data-v-da5160b9],.header-right[data-v-da5160b9]{align-items:center;gap:8px;display:flex}.back-btn[data-v-da5160b9]{padding:4px}.panel-title[data-v-da5160b9]{color:var(--text-primary);font-size:15px;font-weight:600}.action-btn[data-v-da5160b9]{padding:4px 8px;font-size:12px}.stats-bar[data-v-da5160b9]{background:var(--bg-tertiary);border-bottom:1px solid var(--border-primary);align-items:center;padding:10px 16px;display:flex}.workspace-panel.in-drawer .stats-bar[data-v-da5160b9]{padding:10px 12px}.stats-text[data-v-da5160b9]{color:var(--text-tertiary);font-size:12px}.filter-bar[data-v-da5160b9]{border-bottom:1px solid var(--border-primary);gap:10px;padding:12px 16px;display:flex}.workspace-panel.in-drawer .filter-bar[data-v-da5160b9]{padding:10px 12px}.search-input[data-v-da5160b9]{flex:1}.panel-content[data-v-da5160b9]{flex:1;padding:16px;overflow-y:auto}.workspace-panel.in-drawer .panel-content[data-v-da5160b9]{padding:12px}.panel-content[data-v-da5160b9] .n-spin-container{min-height:200px}.empty-state[data-v-da5160b9]{justify-content:center;align-items:center;min-height:200px;display:flex}.card-list[data-v-da5160b9]{flex-direction:column;gap:12px;display:flex}.panel-footer[data-v-da5160b9]{color:var(--text-tertiary);border-top:1px solid var(--border-primary);background:var(--bg-secondary);align-items:center;gap:6px;padding:10px 16px;font-size:11px;display:flex}.workspace-panel.in-drawer .panel-footer[data-v-da5160b9]{padding:8px 12px}.info-icon[data-v-da5160b9]{color:var(--text-quaternary)}