uomtiles 0.1.0

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 (507) hide show
  1. package/.output/nitro.json +15 -0
  2. package/.output/public/_nuxt/1d1PDhA4.js +1 -0
  3. package/.output/public/_nuxt/3B2XYGg4.js +1 -0
  4. package/.output/public/_nuxt/981KwFWf.js +1 -0
  5. package/.output/public/_nuxt/B30dSvM4.js +1 -0
  6. package/.output/public/_nuxt/BN1Gp4Dm.js +1 -0
  7. package/.output/public/_nuxt/BQlj8Xoe.js +6 -0
  8. package/.output/public/_nuxt/BRkljK8J.js +1 -0
  9. package/.output/public/_nuxt/BSdHYVlE2.js +1 -0
  10. package/.output/public/_nuxt/B_MqTg2k2.js +1 -0
  11. package/.output/public/_nuxt/BiWblTbb2.js +64 -0
  12. package/.output/public/_nuxt/BrPwntMr.js +1 -0
  13. package/.output/public/_nuxt/BskybydR.js +1 -0
  14. package/.output/public/_nuxt/ByRlKR9F.js +1 -0
  15. package/.output/public/_nuxt/C0Zdl2EE2.js +1 -0
  16. package/.output/public/_nuxt/C4qlzA4o.js +1 -0
  17. package/.output/public/_nuxt/C7HxHbxA.js +1 -0
  18. package/.output/public/_nuxt/C97TfNgP.js +3 -0
  19. package/.output/public/_nuxt/CNs_Ozdc.js +1 -0
  20. package/.output/public/_nuxt/CPuhwLY1.js +1 -0
  21. package/.output/public/_nuxt/CVE291Pi.js +1 -0
  22. package/.output/public/_nuxt/C_0VY3Cv2.js +4 -0
  23. package/.output/public/_nuxt/Ce26t8_Y.js +1 -0
  24. package/.output/public/_nuxt/CfW544W5.js +1 -0
  25. package/.output/public/_nuxt/CgMd2Y5s.js +2 -0
  26. package/.output/public/_nuxt/CgdzV712.js +1 -0
  27. package/.output/public/_nuxt/D1wVNWS0.js +1 -0
  28. package/.output/public/_nuxt/DC3bhq63.js +1 -0
  29. package/.output/public/_nuxt/DK3Fl9T5.js +1 -0
  30. package/.output/public/_nuxt/DL1MZZLI.js +1 -0
  31. package/.output/public/_nuxt/DXm-42Fi.js +1 -0
  32. package/.output/public/_nuxt/Djg3Kzfv.js +1 -0
  33. package/.output/public/_nuxt/DkcySee1.js +1 -0
  34. package/.output/public/_nuxt/DmN-PKW1.js +1 -0
  35. package/.output/public/_nuxt/DtFVCXI9.js +1 -0
  36. package/.output/public/_nuxt/Dz7VMlHR.js +1 -0
  37. package/.output/public/_nuxt/NL65vbjG2.js +1 -0
  38. package/.output/public/_nuxt/Oxy7pKSk.js +3 -0
  39. package/.output/public/_nuxt/Pik8or8N2.js +1 -0
  40. package/.output/public/_nuxt/XZ59tThl.js +1 -0
  41. package/.output/public/_nuxt/ZpWjFsgV.js +1 -0
  42. package/.output/public/_nuxt/builds/latest.json +1 -0
  43. package/.output/public/_nuxt/builds/meta/9f85104e-738d-4a74-8daa-40b136ce17d5.json +1 -0
  44. package/.output/public/_nuxt/dXz6dFgW2.js +1 -0
  45. package/.output/public/_nuxt/entry.P6tFNE31.css +1 -0
  46. package/.output/public/_nuxt/error-404.Biv0P6cJ.css +1 -0
  47. package/.output/public/_nuxt/error-500.8ok468rV.css +1 -0
  48. package/.output/public/_nuxt/j0MRD-c3.js +1 -0
  49. package/.output/public/_nuxt/local-pixel-diff.worker-C6RdZoCq.js +2 -0
  50. package/.output/public/_nuxt/maplibre-gl-worker.nfnkSQvL.mjs +6 -0
  51. package/.output/public/_nuxt/nearest-area.worker-iSLH0Y_s.js +2 -0
  52. package/.output/public/_nuxt/q7DkoVkj.js +828 -0
  53. package/.output/public/_nuxt/raster-tile.worker-BFlOgJig.js +2 -0
  54. package/.output/public/_nuxt/services._3nQizF8.css +1 -0
  55. package/.output/public/_nuxt/sql-wasm.DfANybxk.wasm +0 -0
  56. package/.output/public/_nuxt/tile-diff.worker-CvWWI_eu.js +1 -0
  57. package/.output/public/_nuxt/zZ1EGR7Y.js +1 -0
  58. package/.output/public/apple-touch-icon.png +0 -0
  59. package/.output/public/favicon.ico +0 -0
  60. package/.output/public/favicon.svg +8 -0
  61. package/.output/public/icon-192.png +0 -0
  62. package/.output/public/icon-512.png +0 -0
  63. package/.output/public/site.webmanifest +11 -0
  64. package/.output/server/chunks/_/config.mjs +208 -0
  65. package/.output/server/chunks/_/config.mjs.map +1 -0
  66. package/.output/server/chunks/_/data-directory.mjs +24 -0
  67. package/.output/server/chunks/_/data-directory.mjs.map +1 -0
  68. package/.output/server/chunks/_/error-500.mjs +20 -0
  69. package/.output/server/chunks/_/error-500.mjs.map +1 -0
  70. package/.output/server/chunks/_/file-workspace.mjs +910 -0
  71. package/.output/server/chunks/_/file-workspace.mjs.map +1 -0
  72. package/.output/server/chunks/_/icons.mjs +6269 -0
  73. package/.output/server/chunks/_/icons.mjs.map +1 -0
  74. package/.output/server/chunks/_/map-service.mjs +233 -0
  75. package/.output/server/chunks/_/map-service.mjs.map +1 -0
  76. package/.output/server/chunks/_/missing-tile.mjs +104 -0
  77. package/.output/server/chunks/_/missing-tile.mjs.map +1 -0
  78. package/.output/server/chunks/_/pixel-diff.mjs +78 -0
  79. package/.output/server/chunks/_/pixel-diff.mjs.map +1 -0
  80. package/.output/server/chunks/_/uom-auth.mjs +334 -0
  81. package/.output/server/chunks/_/uom-auth.mjs.map +1 -0
  82. package/.output/server/chunks/_/uom-map.mjs +265 -0
  83. package/.output/server/chunks/_/uom-map.mjs.map +1 -0
  84. package/.output/server/chunks/build/Alert-0ngTJXxP.mjs +5076 -0
  85. package/.output/server/chunks/build/Alert-0ngTJXxP.mjs.map +1 -0
  86. package/.output/server/chunks/build/DashboardSidebarToggle-pncTaIJq.mjs +569 -0
  87. package/.output/server/chunks/build/DashboardSidebarToggle-pncTaIJq.mjs.map +1 -0
  88. package/.output/server/chunks/build/Empty-CkW3mADt.mjs +359 -0
  89. package/.output/server/chunks/build/Empty-CkW3mADt.mjs.map +1 -0
  90. package/.output/server/chunks/build/FocusScope-Cf0lg0zt.mjs +207 -0
  91. package/.output/server/chunks/build/FocusScope-Cf0lg0zt.mjs.map +1 -0
  92. package/.output/server/chunks/build/FormField-CEUZHcv7.mjs +278 -0
  93. package/.output/server/chunks/build/FormField-CEUZHcv7.mjs.map +1 -0
  94. package/.output/server/chunks/build/Input-BeNavYXb.mjs +592 -0
  95. package/.output/server/chunks/build/Input-BeNavYXb.mjs.map +1 -0
  96. package/.output/server/chunks/build/MapBaseLayerTabs-4445J6yh.mjs +2003 -0
  97. package/.output/server/chunks/build/MapBaseLayerTabs-4445J6yh.mjs.map +1 -0
  98. package/.output/server/chunks/build/Modal-DNZtVxca.mjs +1326 -0
  99. package/.output/server/chunks/build/Modal-DNZtVxca.mjs.map +1 -0
  100. package/.output/server/chunks/build/OnlineMap-CKwiuqUY.mjs +146 -0
  101. package/.output/server/chunks/build/OnlineMap-CKwiuqUY.mjs.map +1 -0
  102. package/.output/server/chunks/build/Pagination-CDHx4HTZ.mjs +1025 -0
  103. package/.output/server/chunks/build/Pagination-CDHx4HTZ.mjs.map +1 -0
  104. package/.output/server/chunks/build/PopperArrow-Bqfdf2Et.mjs +2066 -0
  105. package/.output/server/chunks/build/PopperArrow-Bqfdf2Et.mjs.map +1 -0
  106. package/.output/server/chunks/build/ScrollArea-BQK3em8b.mjs +379 -0
  107. package/.output/server/chunks/build/ScrollArea-BQK3em8b.mjs.map +1 -0
  108. package/.output/server/chunks/build/Slider-D-n8Y0CX.mjs +1087 -0
  109. package/.output/server/chunks/build/Slider-D-n8Y0CX.mjs.map +1 -0
  110. package/.output/server/chunks/build/Tooltip-CkpSktvJ.mjs +1345 -0
  111. package/.output/server/chunks/build/Tooltip-CkpSktvJ.mjs.map +1 -0
  112. package/.output/server/chunks/build/_virtual_public-CeOptKUP.mjs +7 -0
  113. package/.output/server/chunks/build/_virtual_public-CeOptKUP.mjs.map +1 -0
  114. package/.output/server/chunks/build/advanced-D1onodoF.mjs +1430 -0
  115. package/.output/server/chunks/build/advanced-D1onodoF.mjs.map +1 -0
  116. package/.output/server/chunks/build/compare-DmSAW8oA.mjs +1093 -0
  117. package/.output/server/chunks/build/compare-DmSAW8oA.mjs.map +1 -0
  118. package/.output/server/chunks/build/dashboard-BJxrZ19n.mjs +3217 -0
  119. package/.output/server/chunks/build/dashboard-BJxrZ19n.mjs.map +1 -0
  120. package/.output/server/chunks/build/details-CBMqXYyo.mjs +3714 -0
  121. package/.output/server/chunks/build/details-CBMqXYyo.mjs.map +1 -0
  122. package/.output/server/chunks/build/error-404-D9aQjJRn.mjs +86 -0
  123. package/.output/server/chunks/build/error-404-D9aQjJRn.mjs.map +1 -0
  124. package/.output/server/chunks/build/error-404-styles.DciiguV6.mjs +9 -0
  125. package/.output/server/chunks/build/error-404-styles.DciiguV6.mjs.map +1 -0
  126. package/.output/server/chunks/build/error-500-BNyA3wrb.mjs +74 -0
  127. package/.output/server/chunks/build/error-500-BNyA3wrb.mjs.map +1 -0
  128. package/.output/server/chunks/build/error-500-styles.C562DYMR.mjs +9 -0
  129. package/.output/server/chunks/build/error-500-styles.C562DYMR.mjs.map +1 -0
  130. package/.output/server/chunks/build/esm-Dp2lJXbp.mjs +1121 -0
  131. package/.output/server/chunks/build/esm-Dp2lJXbp.mjs.map +1 -0
  132. package/.output/server/chunks/build/interval-BxUMpo78.mjs +411 -0
  133. package/.output/server/chunks/build/interval-BxUMpo78.mjs.map +1 -0
  134. package/.output/server/chunks/build/login-lbtjN0MV.mjs +642 -0
  135. package/.output/server/chunks/build/login-lbtjN0MV.mjs.map +1 -0
  136. package/.output/server/chunks/build/pages-Ba0Eixbd.mjs +220 -0
  137. package/.output/server/chunks/build/pages-Ba0Eixbd.mjs.map +1 -0
  138. package/.output/server/chunks/build/services-DuJwjAB8.mjs +3005 -0
  139. package/.output/server/chunks/build/services-DuJwjAB8.mjs.map +1 -0
  140. package/.output/server/chunks/build/services-styles.eoO16BY9.mjs +9 -0
  141. package/.output/server/chunks/build/services-styles.eoO16BY9.mjs.map +1 -0
  142. package/.output/server/chunks/build/tasks-CyN9x492.mjs +915 -0
  143. package/.output/server/chunks/build/tasks-CyN9x492.mjs.map +1 -0
  144. package/.output/server/chunks/build/tasks-D_Q5EDnn.mjs +87 -0
  145. package/.output/server/chunks/build/tasks-D_Q5EDnn.mjs.map +1 -0
  146. package/.output/server/chunks/nitro/nitro.mjs +6215 -0
  147. package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
  148. package/.output/server/chunks/routes/api/auth/captcha.post.mjs +21 -0
  149. package/.output/server/chunks/routes/api/auth/captcha.post.mjs.map +1 -0
  150. package/.output/server/chunks/routes/api/auth/login.post.mjs +27 -0
  151. package/.output/server/chunks/routes/api/auth/login.post.mjs.map +1 -0
  152. package/.output/server/chunks/routes/api/auth/logout.post.mjs +22 -0
  153. package/.output/server/chunks/routes/api/auth/logout.post.mjs.map +1 -0
  154. package/.output/server/chunks/routes/api/auth/map-token.post.mjs +22 -0
  155. package/.output/server/chunks/routes/api/auth/map-token.post.mjs.map +1 -0
  156. package/.output/server/chunks/routes/api/auth/send-sms.post.mjs +31 -0
  157. package/.output/server/chunks/routes/api/auth/send-sms.post.mjs.map +1 -0
  158. package/.output/server/chunks/routes/api/auth/status.get.mjs +21 -0
  159. package/.output/server/chunks/routes/api/auth/status.get.mjs.map +1 -0
  160. package/.output/server/chunks/routes/api/map/base/_baseLayer/_zoom/_tileX/_tileY_.get.mjs +44 -0
  161. package/.output/server/chunks/routes/api/map/base/_baseLayer/_zoom/_tileX/_tileY_.get.mjs.map +1 -0
  162. package/.output/server/chunks/routes/api/map/live/status.get.mjs +32 -0
  163. package/.output/server/chunks/routes/api/map/live/status.get.mjs.map +1 -0
  164. package/.output/server/chunks/routes/api/map/online/_layerGroup/_zoom/_tileX/_tileY_.get.mjs +48 -0
  165. package/.output/server/chunks/routes/api/map/online/_layerGroup/_zoom/_tileX/_tileY_.get.mjs.map +1 -0
  166. package/.output/server/chunks/routes/api/map/online-root/_layerGroup/_rootX/_rootY_.get.mjs +46 -0
  167. package/.output/server/chunks/routes/api/map/online-root/_layerGroup/_rootX/_rootY_.get.mjs.map +1 -0
  168. package/.output/server/chunks/routes/api/map-service/config.post.mjs +38 -0
  169. package/.output/server/chunks/routes/api/map-service/config.post.mjs.map +1 -0
  170. package/.output/server/chunks/routes/api/map-service/file.post.mjs +41 -0
  171. package/.output/server/chunks/routes/api/map-service/file.post.mjs.map +1 -0
  172. package/.output/server/chunks/routes/api/map-service/source.post.mjs +35 -0
  173. package/.output/server/chunks/routes/api/map-service/source.post.mjs.map +1 -0
  174. package/.output/server/chunks/routes/api/map-service/status.get.mjs +32 -0
  175. package/.output/server/chunks/routes/api/map-service/status.get.mjs.map +1 -0
  176. package/.output/server/chunks/routes/api/workspace/_filename/analysis.get.mjs +47 -0
  177. package/.output/server/chunks/routes/api/workspace/_filename/analysis.get.mjs.map +1 -0
  178. package/.output/server/chunks/routes/api/workspace/_filename/download.get.mjs +38 -0
  179. package/.output/server/chunks/routes/api/workspace/_filename/download.get.mjs.map +1 -0
  180. package/.output/server/chunks/routes/api/workspace/_filename/export/_format_.get.mjs +42 -0
  181. package/.output/server/chunks/routes/api/workspace/_filename/export/_format_.get.mjs.map +1 -0
  182. package/.output/server/chunks/routes/api/workspace/_filename/tile.get.mjs +48 -0
  183. package/.output/server/chunks/routes/api/workspace/_filename/tile.get.mjs.map +1 -0
  184. package/.output/server/chunks/routes/api/workspace/_filename/tiles.get.mjs +45 -0
  185. package/.output/server/chunks/routes/api/workspace/_filename/tiles.get.mjs.map +1 -0
  186. package/.output/server/chunks/routes/api/workspace/_filename_.delete.mjs +32 -0
  187. package/.output/server/chunks/routes/api/workspace/_filename_.delete.mjs.map +1 -0
  188. package/.output/server/chunks/routes/api/workspace/compare/batch.get.mjs +38 -0
  189. package/.output/server/chunks/routes/api/workspace/compare/batch.get.mjs.map +1 -0
  190. package/.output/server/chunks/routes/api/workspace/compare.post.mjs +33 -0
  191. package/.output/server/chunks/routes/api/workspace/compare.post.mjs.map +1 -0
  192. package/.output/server/chunks/routes/api/workspace/fetch.post.mjs +33 -0
  193. package/.output/server/chunks/routes/api/workspace/fetch.post.mjs.map +1 -0
  194. package/.output/server/chunks/routes/api/workspace/files.get.mjs +27 -0
  195. package/.output/server/chunks/routes/api/workspace/files.get.mjs.map +1 -0
  196. package/.output/server/chunks/routes/api/workspace/files.post.mjs +38 -0
  197. package/.output/server/chunks/routes/api/workspace/files.post.mjs.map +1 -0
  198. package/.output/server/chunks/routes/api/workspace/stop.post.mjs +32 -0
  199. package/.output/server/chunks/routes/api/workspace/stop.post.mjs.map +1 -0
  200. package/.output/server/chunks/routes/api/workspace/tasks.post.mjs +36 -0
  201. package/.output/server/chunks/routes/api/workspace/tasks.post.mjs.map +1 -0
  202. package/.output/server/chunks/routes/renderer.mjs +422 -0
  203. package/.output/server/chunks/routes/renderer.mjs.map +1 -0
  204. package/.output/server/chunks/routes/services/wms.get.mjs +54 -0
  205. package/.output/server/chunks/routes/services/wms.get.mjs.map +1 -0
  206. package/.output/server/chunks/routes/services/wmts.get.mjs +54 -0
  207. package/.output/server/chunks/routes/services/wmts.get.mjs.map +1 -0
  208. package/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
  209. package/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
  210. package/.output/server/chunks/virtual/entry.mjs +18545 -0
  211. package/.output/server/chunks/virtual/entry.mjs.map +1 -0
  212. package/.output/server/chunks/virtual/precomputed.mjs +4 -0
  213. package/.output/server/chunks/virtual/precomputed.mjs.map +1 -0
  214. package/.output/server/chunks/virtual/styles.mjs +10 -0
  215. package/.output/server/chunks/virtual/styles.mjs.map +1 -0
  216. package/.output/server/index.mjs +12 -0
  217. package/.output/server/index.mjs.map +1 -0
  218. package/.output/server/node_modules/@babel/parser/lib/index.js +14611 -0
  219. package/.output/server/node_modules/@babel/parser/package.json +50 -0
  220. package/.output/server/node_modules/@iconify/utils/lib/colors/index.js +295 -0
  221. package/.output/server/node_modules/@iconify/utils/lib/colors/keywords.js +701 -0
  222. package/.output/server/node_modules/@iconify/utils/lib/css/common.js +75 -0
  223. package/.output/server/node_modules/@iconify/utils/lib/css/format.js +39 -0
  224. package/.output/server/node_modules/@iconify/utils/lib/css/icon.js +47 -0
  225. package/.output/server/node_modules/@iconify/utils/lib/css/icons.js +128 -0
  226. package/.output/server/node_modules/@iconify/utils/lib/customisations/bool.js +19 -0
  227. package/.output/server/node_modules/@iconify/utils/lib/customisations/defaults.js +13 -0
  228. package/.output/server/node_modules/@iconify/utils/lib/customisations/flip.js +17 -0
  229. package/.output/server/node_modules/@iconify/utils/lib/customisations/merge.js +16 -0
  230. package/.output/server/node_modules/@iconify/utils/lib/customisations/rotate.js +30 -0
  231. package/.output/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +78 -0
  232. package/.output/server/node_modules/@iconify/utils/lib/emoji/convert.js +100 -0
  233. package/.output/server/node_modules/@iconify/utils/lib/emoji/data.js +28 -0
  234. package/.output/server/node_modules/@iconify/utils/lib/emoji/format.js +58 -0
  235. package/.output/server/node_modules/@iconify/utils/lib/emoji/parse.js +48 -0
  236. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +203 -0
  237. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +33 -0
  238. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +132 -0
  239. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +165 -0
  240. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +79 -0
  241. package/.output/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +92 -0
  242. package/.output/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +26 -0
  243. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/components.js +76 -0
  244. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +66 -0
  245. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/name.js +45 -0
  246. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +103 -0
  247. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +36 -0
  248. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +92 -0
  249. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +62 -0
  250. package/.output/server/node_modules/@iconify/utils/lib/icon/defaults.js +25 -0
  251. package/.output/server/node_modules/@iconify/utils/lib/icon/merge.js +16 -0
  252. package/.output/server/node_modules/@iconify/utils/lib/icon/name.js +57 -0
  253. package/.output/server/node_modules/@iconify/utils/lib/icon/square.js +33 -0
  254. package/.output/server/node_modules/@iconify/utils/lib/icon/transformations.js +12 -0
  255. package/.output/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +125 -0
  256. package/.output/server/node_modules/@iconify/utils/lib/icon-set/expand.js +19 -0
  257. package/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +25 -0
  258. package/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +36 -0
  259. package/.output/server/node_modules/@iconify/utils/lib/icon-set/minify.js +91 -0
  260. package/.output/server/node_modules/@iconify/utils/lib/icon-set/parse.js +46 -0
  261. package/.output/server/node_modules/@iconify/utils/lib/icon-set/tree.js +23 -0
  262. package/.output/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +42 -0
  263. package/.output/server/node_modules/@iconify/utils/lib/icon-set/validate.js +123 -0
  264. package/.output/server/node_modules/@iconify/utils/lib/index.js +52 -0
  265. package/.output/server/node_modules/@iconify/utils/lib/loader/custom.js +30 -0
  266. package/.output/server/node_modules/@iconify/utils/lib/loader/loader.js +26 -0
  267. package/.output/server/node_modules/@iconify/utils/lib/loader/modern.js +27 -0
  268. package/.output/server/node_modules/@iconify/utils/lib/loader/utils.js +105 -0
  269. package/.output/server/node_modules/@iconify/utils/lib/misc/objects.js +26 -0
  270. package/.output/server/node_modules/@iconify/utils/lib/misc/strings.js +26 -0
  271. package/.output/server/node_modules/@iconify/utils/lib/misc/title.js +9 -0
  272. package/.output/server/node_modules/@iconify/utils/lib/svg/build.js +113 -0
  273. package/.output/server/node_modules/@iconify/utils/lib/svg/defs.js +31 -0
  274. package/.output/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +13 -0
  275. package/.output/server/node_modules/@iconify/utils/lib/svg/html.js +9 -0
  276. package/.output/server/node_modules/@iconify/utils/lib/svg/id.js +41 -0
  277. package/.output/server/node_modules/@iconify/utils/lib/svg/inner-html.js +22 -0
  278. package/.output/server/node_modules/@iconify/utils/lib/svg/parse.js +67 -0
  279. package/.output/server/node_modules/@iconify/utils/lib/svg/pretty.js +54 -0
  280. package/.output/server/node_modules/@iconify/utils/lib/svg/size.js +27 -0
  281. package/.output/server/node_modules/@iconify/utils/lib/svg/trim.js +7 -0
  282. package/.output/server/node_modules/@iconify/utils/lib/svg/url.js +22 -0
  283. package/.output/server/node_modules/@iconify/utils/lib/svg/viewbox.js +8 -0
  284. package/.output/server/node_modules/@iconify/utils/package.json +119 -0
  285. package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6801 -0
  286. package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
  287. package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +692 -0
  288. package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
  289. package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1420 -0
  290. package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  291. package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1903 -0
  292. package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
  293. package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6976 -0
  294. package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
  295. package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1841 -0
  296. package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
  297. package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +904 -0
  298. package/.output/server/node_modules/@vue/server-renderer/package.json +53 -0
  299. package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +609 -0
  300. package/.output/server/node_modules/@vue/shared/package.json +47 -0
  301. package/.output/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
  302. package/.output/server/node_modules/consola/dist/core.mjs +512 -0
  303. package/.output/server/node_modules/consola/dist/index.mjs +651 -0
  304. package/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  305. package/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  306. package/.output/server/node_modules/consola/package.json +136 -0
  307. package/.output/server/node_modules/devalue/index.js +17 -0
  308. package/.output/server/node_modules/devalue/package.json +39 -0
  309. package/.output/server/node_modules/devalue/src/base64.js +60 -0
  310. package/.output/server/node_modules/devalue/src/constants.js +12 -0
  311. package/.output/server/node_modules/devalue/src/operations.js +193 -0
  312. package/.output/server/node_modules/devalue/src/parse.js +270 -0
  313. package/.output/server/node_modules/devalue/src/stringify.js +428 -0
  314. package/.output/server/node_modules/devalue/src/uneval.js +582 -0
  315. package/.output/server/node_modules/devalue/src/utils.js +185 -0
  316. package/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  317. package/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  318. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  319. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  320. package/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  321. package/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  322. package/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
  323. package/.output/server/node_modules/entities/package.json +120 -0
  324. package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  325. package/.output/server/node_modules/estree-walker/package.json +37 -0
  326. package/.output/server/node_modules/fflate/esm/index.mjs +2710 -0
  327. package/.output/server/node_modules/fflate/package.json +128 -0
  328. package/.output/server/node_modules/fnv1a-64/dist/index.mjs +95 -0
  329. package/.output/server/node_modules/fnv1a-64/package.json +75 -0
  330. package/.output/server/node_modules/hookable/dist/index.mjs +257 -0
  331. package/.output/server/node_modules/hookable/package.json +53 -0
  332. package/.output/server/node_modules/nostics/dist/formatters/ansi.mjs +19 -0
  333. package/.output/server/node_modules/nostics/dist/index.mjs +187 -0
  334. package/.output/server/node_modules/nostics/package.json +125 -0
  335. package/.output/server/node_modules/object-identity/index.js +60 -0
  336. package/.output/server/node_modules/object-identity/package.json +40 -0
  337. package/.output/server/node_modules/p-limit/index.js +104 -0
  338. package/.output/server/node_modules/p-limit/package.json +58 -0
  339. package/.output/server/node_modules/pmtiles/dist/esm/index.js +2 -0
  340. package/.output/server/node_modules/pmtiles/package.json +50 -0
  341. package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
  342. package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  343. package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
  344. package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  345. package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  346. package/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  347. package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  348. package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  349. package/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
  350. package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
  351. package/.output/server/node_modules/source-map-js/package.json +71 -0
  352. package/.output/server/node_modules/source-map-js/source-map.js +8 -0
  353. package/.output/server/node_modules/tailwindcss/dist/chunk-DCG7AFIE.mjs +1 -0
  354. package/.output/server/node_modules/tailwindcss/dist/colors.mjs +1 -0
  355. package/.output/server/node_modules/tailwindcss/package.json +89 -0
  356. package/.output/server/node_modules/ufo/dist/index.mjs +645 -0
  357. package/.output/server/node_modules/ufo/package.json +48 -0
  358. package/.output/server/node_modules/unhead/dist/client.mjs +22 -0
  359. package/.output/server/node_modules/unhead/dist/index.mjs +52 -0
  360. package/.output/server/node_modules/unhead/dist/legacy.mjs +33 -0
  361. package/.output/server/node_modules/unhead/dist/minify.mjs +183 -0
  362. package/.output/server/node_modules/unhead/dist/parser.mjs +518 -0
  363. package/.output/server/node_modules/unhead/dist/plugins.mjs +631 -0
  364. package/.output/server/node_modules/unhead/dist/scripts.node.mjs +6 -0
  365. package/.output/server/node_modules/unhead/dist/server.mjs +99 -0
  366. package/.output/server/node_modules/unhead/dist/shared/unhead.BEmVMkeA.mjs +673 -0
  367. package/.output/server/node_modules/unhead/dist/shared/unhead.BGFxPGPQ.mjs +47 -0
  368. package/.output/server/node_modules/unhead/dist/shared/unhead.BQWSw36o.mjs +192 -0
  369. package/.output/server/node_modules/unhead/dist/shared/unhead.Bb4d5b9h.mjs +67 -0
  370. package/.output/server/node_modules/unhead/dist/shared/unhead.BdK3SLPN.mjs +585 -0
  371. package/.output/server/node_modules/unhead/dist/shared/unhead.Bf_fPVYA.mjs +6 -0
  372. package/.output/server/node_modules/unhead/dist/shared/unhead.Bm4Y6XQI.mjs +17 -0
  373. package/.output/server/node_modules/unhead/dist/shared/unhead.C3b2Ipoj.mjs +223 -0
  374. package/.output/server/node_modules/unhead/dist/shared/unhead.CGPOfp5O.mjs +32 -0
  375. package/.output/server/node_modules/unhead/dist/shared/unhead.CHEy9ana.mjs +7 -0
  376. package/.output/server/node_modules/unhead/dist/shared/unhead.CTjuIdzk.mjs +27 -0
  377. package/.output/server/node_modules/unhead/dist/shared/unhead.CfKy3Kuq.mjs +196 -0
  378. package/.output/server/node_modules/unhead/dist/shared/unhead.D7HkBzZn.mjs +59 -0
  379. package/.output/server/node_modules/unhead/dist/shared/unhead.DNKiVLV7.mjs +400 -0
  380. package/.output/server/node_modules/unhead/dist/shared/unhead.MC5RsXLj.mjs +19 -0
  381. package/.output/server/node_modules/unhead/dist/shared/unhead.jEy9BmRq.mjs +264 -0
  382. package/.output/server/node_modules/unhead/dist/shared/unhead.tQnRaXfX.mjs +240 -0
  383. package/.output/server/node_modules/unhead/dist/stream/client.mjs +28 -0
  384. package/.output/server/node_modules/unhead/dist/stream/iife.mjs +2 -0
  385. package/.output/server/node_modules/unhead/dist/stream/server.mjs +264 -0
  386. package/.output/server/node_modules/unhead/dist/utils.mjs +7 -0
  387. package/.output/server/node_modules/unhead/package.json +179 -0
  388. package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
  389. package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  390. package/.output/server/node_modules/vue/index.js +7 -0
  391. package/.output/server/node_modules/vue/index.mjs +1 -0
  392. package/.output/server/node_modules/vue/package.json +112 -0
  393. package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
  394. package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +278 -0
  395. package/.output/server/node_modules/vue-bundle-renderer/package.json +54 -0
  396. package/.output/server/node_modules/yocto-queue/index.js +90 -0
  397. package/.output/server/node_modules/yocto-queue/package.json +48 -0
  398. package/.output/server/node_modules/zod/index.js +4 -0
  399. package/.output/server/node_modules/zod/package.json +135 -0
  400. package/.output/server/node_modules/zod/v4/classic/checks.js +1 -0
  401. package/.output/server/node_modules/zod/v4/classic/coerce.js +17 -0
  402. package/.output/server/node_modules/zod/v4/classic/compat.js +31 -0
  403. package/.output/server/node_modules/zod/v4/classic/errors.js +48 -0
  404. package/.output/server/node_modules/zod/v4/classic/external.js +20 -0
  405. package/.output/server/node_modules/zod/v4/classic/from-json-schema.js +599 -0
  406. package/.output/server/node_modules/zod/v4/classic/iso.js +30 -0
  407. package/.output/server/node_modules/zod/v4/classic/package.json +7 -0
  408. package/.output/server/node_modules/zod/v4/classic/parse.js +15 -0
  409. package/.output/server/node_modules/zod/v4/classic/schemas.js +1395 -0
  410. package/.output/server/node_modules/zod/v4/core/api.js +1087 -0
  411. package/.output/server/node_modules/zod/v4/core/checks.js +575 -0
  412. package/.output/server/node_modules/zod/v4/core/core.js +78 -0
  413. package/.output/server/node_modules/zod/v4/core/doc.js +35 -0
  414. package/.output/server/node_modules/zod/v4/core/errors.js +185 -0
  415. package/.output/server/node_modules/zod/v4/core/index.js +16 -0
  416. package/.output/server/node_modules/zod/v4/core/json-schema-generator.js +95 -0
  417. package/.output/server/node_modules/zod/v4/core/json-schema-processors.js +601 -0
  418. package/.output/server/node_modules/zod/v4/core/json-schema.js +1 -0
  419. package/.output/server/node_modules/zod/v4/core/package.json +7 -0
  420. package/.output/server/node_modules/zod/v4/core/parse.js +93 -0
  421. package/.output/server/node_modules/zod/v4/core/regexes.js +139 -0
  422. package/.output/server/node_modules/zod/v4/core/registries.js +51 -0
  423. package/.output/server/node_modules/zod/v4/core/schemas.js +2239 -0
  424. package/.output/server/node_modules/zod/v4/core/to-json-schema.js +448 -0
  425. package/.output/server/node_modules/zod/v4/core/util.js +674 -0
  426. package/.output/server/node_modules/zod/v4/core/versions.js +5 -0
  427. package/.output/server/node_modules/zod/v4/locales/ar.js +106 -0
  428. package/.output/server/node_modules/zod/v4/locales/az.js +105 -0
  429. package/.output/server/node_modules/zod/v4/locales/be.js +156 -0
  430. package/.output/server/node_modules/zod/v4/locales/bg.js +120 -0
  431. package/.output/server/node_modules/zod/v4/locales/ca.js +107 -0
  432. package/.output/server/node_modules/zod/v4/locales/cs.js +111 -0
  433. package/.output/server/node_modules/zod/v4/locales/da.js +115 -0
  434. package/.output/server/node_modules/zod/v4/locales/de.js +108 -0
  435. package/.output/server/node_modules/zod/v4/locales/el.js +109 -0
  436. package/.output/server/node_modules/zod/v4/locales/en.js +113 -0
  437. package/.output/server/node_modules/zod/v4/locales/eo.js +109 -0
  438. package/.output/server/node_modules/zod/v4/locales/es.js +132 -0
  439. package/.output/server/node_modules/zod/v4/locales/fa.js +114 -0
  440. package/.output/server/node_modules/zod/v4/locales/fi.js +112 -0
  441. package/.output/server/node_modules/zod/v4/locales/fr-CA.js +107 -0
  442. package/.output/server/node_modules/zod/v4/locales/fr.js +125 -0
  443. package/.output/server/node_modules/zod/v4/locales/he.js +214 -0
  444. package/.output/server/node_modules/zod/v4/locales/hr.js +122 -0
  445. package/.output/server/node_modules/zod/v4/locales/hu.js +108 -0
  446. package/.output/server/node_modules/zod/v4/locales/hy.js +147 -0
  447. package/.output/server/node_modules/zod/v4/locales/id.js +106 -0
  448. package/.output/server/node_modules/zod/v4/locales/index.js +52 -0
  449. package/.output/server/node_modules/zod/v4/locales/is.js +109 -0
  450. package/.output/server/node_modules/zod/v4/locales/it.js +108 -0
  451. package/.output/server/node_modules/zod/v4/locales/ja.js +107 -0
  452. package/.output/server/node_modules/zod/v4/locales/ka.js +112 -0
  453. package/.output/server/node_modules/zod/v4/locales/kh.js +5 -0
  454. package/.output/server/node_modules/zod/v4/locales/km.js +110 -0
  455. package/.output/server/node_modules/zod/v4/locales/ko.js +111 -0
  456. package/.output/server/node_modules/zod/v4/locales/lt.js +203 -0
  457. package/.output/server/node_modules/zod/v4/locales/mk.js +109 -0
  458. package/.output/server/node_modules/zod/v4/locales/ms.js +107 -0
  459. package/.output/server/node_modules/zod/v4/locales/nl.js +110 -0
  460. package/.output/server/node_modules/zod/v4/locales/no.js +108 -0
  461. package/.output/server/node_modules/zod/v4/locales/ota.js +109 -0
  462. package/.output/server/node_modules/zod/v4/locales/package.json +7 -0
  463. package/.output/server/node_modules/zod/v4/locales/pl.js +109 -0
  464. package/.output/server/node_modules/zod/v4/locales/ps.js +114 -0
  465. package/.output/server/node_modules/zod/v4/locales/pt.js +108 -0
  466. package/.output/server/node_modules/zod/v4/locales/ro.js +119 -0
  467. package/.output/server/node_modules/zod/v4/locales/ru.js +156 -0
  468. package/.output/server/node_modules/zod/v4/locales/sl.js +109 -0
  469. package/.output/server/node_modules/zod/v4/locales/sv.js +110 -0
  470. package/.output/server/node_modules/zod/v4/locales/ta.js +110 -0
  471. package/.output/server/node_modules/zod/v4/locales/th.js +110 -0
  472. package/.output/server/node_modules/zod/v4/locales/tr.js +105 -0
  473. package/.output/server/node_modules/zod/v4/locales/ua.js +5 -0
  474. package/.output/server/node_modules/zod/v4/locales/uk.js +108 -0
  475. package/.output/server/node_modules/zod/v4/locales/ur.js +110 -0
  476. package/.output/server/node_modules/zod/v4/locales/uz.js +110 -0
  477. package/.output/server/node_modules/zod/v4/locales/vi.js +108 -0
  478. package/.output/server/node_modules/zod/v4/locales/yo.js +107 -0
  479. package/.output/server/node_modules/zod/v4/locales/zh-CN.js +109 -0
  480. package/.output/server/node_modules/zod/v4/locales/zh-TW.js +107 -0
  481. package/.output/server/package.json +37 -0
  482. package/LICENSE +3 -0
  483. package/README.md +125 -0
  484. package/dist/src/bbox.js +55 -0
  485. package/dist/src/cli.js +255 -0
  486. package/dist/src/config.js +56 -0
  487. package/dist/src/core/fetch-process.js +19 -0
  488. package/dist/src/core/grid-renderer.js +149 -0
  489. package/dist/src/core/lease.js +103 -0
  490. package/dist/src/core/paths.js +13 -0
  491. package/dist/src/core/png.js +192 -0
  492. package/dist/src/core/raster-style.js +33 -0
  493. package/dist/src/core/uomtiles.js +307 -0
  494. package/dist/src/fetcher.js +208 -0
  495. package/dist/src/geographic-grid.js +162 -0
  496. package/dist/src/grid-crawl.js +478 -0
  497. package/dist/src/mask-image.js +16 -0
  498. package/dist/src/official-grid.js +51 -0
  499. package/dist/src/quality.js +30 -0
  500. package/dist/src/token.js +206 -0
  501. package/package.json +68 -0
  502. package/public/apple-touch-icon.png +0 -0
  503. package/public/favicon.ico +0 -0
  504. package/public/favicon.svg +8 -0
  505. package/public/icon-192.png +0 -0
  506. package/public/icon-512.png +0 -0
  507. package/public/site.webmanifest +11 -0
@@ -0,0 +1,915 @@
1
+ import { u as useSeoMeta$1, av as useRoute$1, a as useToast, R as useState, ah as navigateTo, b as _sfc_main$1, c as _sfc_main$7, _ as _sfc_main$5, aw as page_default } from '../virtual/entry.mjs';
2
+ import { _ as _sfc_main$6 } from './Modal-DNZtVxca.mjs';
3
+ import { _ as _sfc_main$3, d as _sfc_main$1$1, a as _sfc_main$4, M as MapBaseLayerTabs_default, b as _sfc_main$2$1 } from './MapBaseLayerTabs-4445J6yh.mjs';
4
+ import { _ as _sfc_main$9 } from './FormField-CEUZHcv7.mjs';
5
+ import { F as FileDropZone_default, _ as _sfc_main } from './ScrollArea-BQK3em8b.mjs';
6
+ import { _ as _sfc_main$a } from './Input-BeNavYXb.mjs';
7
+ import { u as useFileWorkspace, _ as _sfc_main$2 } from './Empty-CkW3mADt.mjs';
8
+ import { _ as _sfc_main$8 } from './interval-BxUMpo78.mjs';
9
+ import { defineComponent, ref, reactive, computed, watch, withCtx, unref, createVNode, toDisplayString, openBlock, createBlock, createCommentVNode, Fragment, renderList, isRef, useSSRContext } from 'vue';
10
+ import { ssrRenderComponent, ssrInterpolate, ssrRenderList } from 'vue/server-renderer';
11
+ import { z } from 'zod';
12
+ import 'unhead/plugins';
13
+ import 'unhead/utils';
14
+ import '../routes/renderer.mjs';
15
+ import '../nitro/nitro.mjs';
16
+ import 'node:http';
17
+ import 'node:https';
18
+ import 'node:events';
19
+ import 'node:buffer';
20
+ import 'node:fs';
21
+ import 'node:path';
22
+ import 'node:crypto';
23
+ import 'node:url';
24
+ import '@iconify/utils';
25
+ import 'consola';
26
+ import 'unhead/server';
27
+ import 'unhead/legacy';
28
+ import 'nostics';
29
+ import 'vue-bundle-renderer/runtime';
30
+ import 'devalue';
31
+ import 'fnv1a-64';
32
+ import 'object-identity';
33
+ import 'tailwindcss/colors';
34
+ import './DashboardSidebarToggle-pncTaIJq.mjs';
35
+ import './FocusScope-Cf0lg0zt.mjs';
36
+ import './esm-Dp2lJXbp.mjs';
37
+
38
+ //#region app/pages/tasks.vue?vue&type=script&setup=true&lang.ts
39
+ var tasks_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
40
+ __name: "tasks",
41
+ __ssrInlineRender: true,
42
+ setup(__props) {
43
+ useSeoMeta$1({ title: "地图下载任务" });
44
+ const route = useRoute$1();
45
+ const toast = useToast();
46
+ const workspace = useFileWorkspace();
47
+ const baseMap = useState("tasks-base-map", () => "tianditu");
48
+ const taskView = ref(route.path === "/tasks/details" ? "details" : "preview");
49
+ const confirmStart = ref(false);
50
+ const confirmDeleteTask = ref(false);
51
+ const createTaskOpen = ref(false);
52
+ const createTaskState = reactive({ filename: "" });
53
+ const createTaskSchema = z.object({ filename: z.string().trim().min(1, "请输入文件名").max(120, "文件名不能超过 120 个字符").refine((filename) => !filename.toLowerCase().endsWith(".uomtiles"), "扩展名由系统自动添加") });
54
+ const tasks = computed(() => workspace.files.value.filter((file) => file.kind === "uomtiles"));
55
+ const selectedTask = computed(() => workspace.selected.value?.kind === "uomtiles" ? workspace.selected.value : null);
56
+ const selectedIsRunning = computed(() => Boolean(selectedTask.value?.locked));
57
+ const taskState = computed(() => selectedIsRunning.value ? "running" : selectedTask.value?.summary?.state || "incomplete");
58
+ const canStart = computed(() => Boolean(selectedTask.value && taskState.value !== "completed" && !selectedIsRunning.value));
59
+ const canDelete = computed(() => Boolean(selectedTask.value && !selectedIsRunning.value && !selectedTask.value.locked));
60
+ const startLabel = computed(() => selectedTask.value?.summary?.startedAt ? "继续下载" : "开始下载");
61
+ const dateTime = new Intl.DateTimeFormat("zh-CN", {
62
+ month: "2-digit",
63
+ day: "2-digit",
64
+ hour: "2-digit",
65
+ minute: "2-digit"
66
+ });
67
+ const now = ref(Date.now());
68
+ const viewItems = computed(() => [{
69
+ label: "实时预览",
70
+ icon: "i-lucide-map",
71
+ value: "preview",
72
+ disabled: !selectedTask.value
73
+ }, {
74
+ label: "任务明细",
75
+ icon: "i-lucide-list",
76
+ value: "details",
77
+ disabled: !selectedTask.value
78
+ }]);
79
+ watch(() => route.path, (path) => {
80
+ taskView.value = path === "/tasks/details" ? "details" : "preview";
81
+ });
82
+ watch(taskView, (view) => {
83
+ if (!selectedTask.value) return;
84
+ if (view === "details" && route.path !== "/tasks/details") navigateTo({ name: "tasks-details" });
85
+ if (view === "preview" && route.path !== "/tasks") navigateTo({ name: "tasks" });
86
+ });
87
+ async function start() {
88
+ try {
89
+ await workspace.start();
90
+ confirmStart.value = false;
91
+ toast.add({
92
+ title: "抓取已启动",
93
+ color: "success",
94
+ icon: "i-lucide-play"
95
+ });
96
+ } catch (error) {
97
+ toast.add({
98
+ title: "无法启动",
99
+ description: error?.data?.statusMessage || error?.message,
100
+ color: "error"
101
+ });
102
+ }
103
+ }
104
+ function stateOf(task) {
105
+ return task.locked ? "running" : task.summary?.state || "incomplete";
106
+ }
107
+ function stateLabel(state) {
108
+ return state === "running" ? "进行中" : state === "completed" ? "已完成" : "未完成";
109
+ }
110
+ function stateColor(state) {
111
+ if (state === "running") return "info";
112
+ if (state === "completed") return "success";
113
+ return "neutral";
114
+ }
115
+ function taskColor(task) {
116
+ if (selectedTask.value?.filename === task.filename) return "primary";
117
+ if (stateOf(task) === "running") return "info";
118
+ return "neutral";
119
+ }
120
+ function taskVariant(task) {
121
+ return selectedTask.value?.filename === task.filename || stateOf(task) === "running" ? "soft" : "ghost";
122
+ }
123
+ function displayName(name) {
124
+ return workspace.displayWorkspaceName(name);
125
+ }
126
+ function progressFor(task) {
127
+ const summary = task.summary;
128
+ const roots = summary?.roots || {};
129
+ const total = Object.values(roots).reduce((sum, value) => sum + Number(value), 0);
130
+ const completed = Number(roots.completed || 0);
131
+ return {
132
+ summary,
133
+ total,
134
+ completed,
135
+ percent: total > 0 ? completed / total * 100 : 0
136
+ };
137
+ }
138
+ function formatDuration(milliseconds) {
139
+ const seconds = Math.max(0, Math.round(milliseconds / 1e3));
140
+ const hours = Math.floor(seconds / 3600);
141
+ const minutes = Math.floor(seconds % 3600 / 60);
142
+ return hours > 0 ? `${hours}小时${minutes}分` : `${Math.max(1, minutes)}分钟`;
143
+ }
144
+ function etaFor(task) {
145
+ const progress = progressFor(task);
146
+ const startedAt = progress.summary?.startedAt ? Date.parse(progress.summary.startedAt) : NaN;
147
+ if (!Number.isFinite(startedAt) || progress.completed <= 0 || progress.total <= progress.completed) return "EST 计算中";
148
+ const elapsed = now.value - startedAt;
149
+ return `EST ${formatDuration((progress.total - progress.completed) * elapsed / progress.completed)}`;
150
+ }
151
+ function openCreateTask() {
152
+ const local = (/* @__PURE__ */ new Date(Date.now() - (/* @__PURE__ */ new Date()).getTimezoneOffset() * 6e4)).toISOString().slice(0, 19).replace(/:/g, "-");
153
+ createTaskState.filename = `uom-${local}`;
154
+ createTaskOpen.value = true;
155
+ }
156
+ async function createTask() {
157
+ try {
158
+ const created = await workspace.createTask(createTaskState.filename);
159
+ createTaskOpen.value = false;
160
+ toast.add({
161
+ title: "任务已创建",
162
+ description: displayName(created.filename),
163
+ color: "success",
164
+ icon: "i-lucide-file-check-2"
165
+ });
166
+ } catch (error) {
167
+ toast.add({
168
+ title: "无法创建任务",
169
+ description: error?.data?.statusMessage || error?.message,
170
+ color: "error"
171
+ });
172
+ }
173
+ }
174
+ async function deleteTask() {
175
+ if (!selectedTask.value) return;
176
+ try {
177
+ await workspace.deleteTask(selectedTask.value.filename);
178
+ confirmDeleteTask.value = false;
179
+ toast.add({
180
+ title: "任务已删除",
181
+ color: "success",
182
+ icon: "i-lucide-trash-2"
183
+ });
184
+ } catch (error) {
185
+ toast.add({
186
+ title: "无法删除任务",
187
+ description: error?.data?.statusMessage || error?.message,
188
+ color: "error"
189
+ });
190
+ }
191
+ }
192
+ async function openTask(file) {
193
+ if (!file.name.toLowerCase().endsWith(".uomtiles")) {
194
+ toast.add({
195
+ title: "请选择 .uomtiles 文件",
196
+ color: "error"
197
+ });
198
+ return;
199
+ }
200
+ try {
201
+ const imported = await workspace.importFile(file);
202
+ workspace.selectTask(imported.filename);
203
+ } catch (error) {
204
+ toast.add({
205
+ title: "无法打开任务文件",
206
+ description: error?.data?.message || error?.message,
207
+ color: "error"
208
+ });
209
+ }
210
+ }
211
+ return (_ctx, _push, _parent, _attrs) => {
212
+ const _component_UDashboardPanel = _sfc_main$3;
213
+ const _component_UDashboardNavbar = _sfc_main$2$1;
214
+ const _component_UButton = _sfc_main$1;
215
+ const _component_FileDropZone = FileDropZone_default;
216
+ const _component_UScrollArea = _sfc_main;
217
+ const _component_UBadge = _sfc_main$1$1;
218
+ const _component_UProgress = _sfc_main$7;
219
+ const _component_UIcon = _sfc_main$5;
220
+ const _component_UEmpty = _sfc_main$2;
221
+ const _component_UTabs = _sfc_main$4;
222
+ const _component_MapBaseLayerTabs = MapBaseLayerTabs_default;
223
+ const _component_NuxtPage = page_default;
224
+ const _component_UModal = _sfc_main$6;
225
+ const _component_UForm = _sfc_main$8;
226
+ const _component_UFormField = _sfc_main$9;
227
+ const _component_UInput = _sfc_main$a;
228
+ _push(`<!--[-->`);
229
+ _push(ssrRenderComponent(_component_UDashboardPanel, {
230
+ id: "download-tasks",
231
+ class: "h-svh min-w-0 overflow-hidden",
232
+ ui: { body: "gap-0 overflow-hidden p-0 sm:gap-0 sm:p-0" }
233
+ }, {
234
+ header: withCtx((_, _push, _parent, _scopeId) => {
235
+ if (_push) _push(ssrRenderComponent(_component_UDashboardNavbar, { title: "地图下载任务" }, {
236
+ right: withCtx((_, _push, _parent, _scopeId) => {
237
+ if (_push) {
238
+ _push(ssrRenderComponent(_component_UButton, {
239
+ icon: "i-lucide-plus",
240
+ label: "新建任务",
241
+ color: "neutral",
242
+ variant: "outline",
243
+ size: "sm",
244
+ onClick: openCreateTask
245
+ }, null, _parent, _scopeId));
246
+ _push(ssrRenderComponent(_component_UButton, {
247
+ icon: "i-lucide-refresh-cw",
248
+ label: "刷新",
249
+ color: "neutral",
250
+ variant: "outline",
251
+ size: "sm",
252
+ loading: unref(workspace).pending.value,
253
+ onClick: unref(workspace).refresh
254
+ }, null, _parent, _scopeId));
255
+ if (unref(selectedTask)) _push(ssrRenderComponent(_component_UButton, {
256
+ icon: "i-lucide-trash-2",
257
+ label: "删除任务",
258
+ color: "error",
259
+ variant: "outline",
260
+ size: "sm",
261
+ disabled: !unref(canDelete),
262
+ onClick: ($event) => confirmDeleteTask.value = true
263
+ }, null, _parent, _scopeId));
264
+ else _push(`<!---->`);
265
+ if (unref(selectedTask) && unref(taskState) === "completed") {
266
+ _push(`<!--[-->`);
267
+ _push(ssrRenderComponent(_component_UButton, {
268
+ to: `/api/workspace/${encodeURIComponent(unref(selectedTask).filename)}/download`,
269
+ target: "_blank",
270
+ icon: "i-lucide-download",
271
+ label: "UOMTiles",
272
+ color: "neutral",
273
+ variant: "outline",
274
+ size: "sm"
275
+ }, null, _parent, _scopeId));
276
+ _push(ssrRenderComponent(_component_UButton, {
277
+ to: `/api/workspace/${encodeURIComponent(unref(selectedTask).filename)}/export/mbtiles`,
278
+ target: "_blank",
279
+ icon: "i-lucide-database",
280
+ label: "MBTiles",
281
+ color: "neutral",
282
+ variant: "outline",
283
+ size: "sm"
284
+ }, null, _parent, _scopeId));
285
+ _push(ssrRenderComponent(_component_UButton, {
286
+ to: `/api/workspace/${encodeURIComponent(unref(selectedTask).filename)}/export/pmtiles`,
287
+ target: "_blank",
288
+ icon: "i-lucide-package",
289
+ label: "PMTiles",
290
+ color: "neutral",
291
+ variant: "outline",
292
+ size: "sm"
293
+ }, null, _parent, _scopeId));
294
+ _push(`<!--]-->`);
295
+ } else _push(`<!---->`);
296
+ if (unref(selectedIsRunning)) _push(ssrRenderComponent(_component_UButton, {
297
+ icon: "i-lucide-square",
298
+ label: "停止下载",
299
+ color: "warning",
300
+ variant: "outline",
301
+ size: "sm",
302
+ onClick: ($event) => unref(workspace).stop(unref(selectedTask)?.filename)
303
+ }, null, _parent, _scopeId));
304
+ else if (unref(canStart)) _push(ssrRenderComponent(_component_UButton, {
305
+ icon: "i-lucide-play",
306
+ label: unref(startLabel),
307
+ variant: "outline",
308
+ size: "sm",
309
+ onClick: ($event) => confirmStart.value = true
310
+ }, null, _parent, _scopeId));
311
+ else _push(`<!---->`);
312
+ } else return [
313
+ createVNode(_component_UButton, {
314
+ icon: "i-lucide-plus",
315
+ label: "新建任务",
316
+ color: "neutral",
317
+ variant: "outline",
318
+ size: "sm",
319
+ onClick: openCreateTask
320
+ }),
321
+ createVNode(_component_UButton, {
322
+ icon: "i-lucide-refresh-cw",
323
+ label: "刷新",
324
+ color: "neutral",
325
+ variant: "outline",
326
+ size: "sm",
327
+ loading: unref(workspace).pending.value,
328
+ onClick: unref(workspace).refresh
329
+ }, null, 8, ["loading", "onClick"]),
330
+ unref(selectedTask) ? (openBlock(), createBlock(_component_UButton, {
331
+ key: 0,
332
+ icon: "i-lucide-trash-2",
333
+ label: "删除任务",
334
+ color: "error",
335
+ variant: "outline",
336
+ size: "sm",
337
+ disabled: !unref(canDelete),
338
+ onClick: ($event) => confirmDeleteTask.value = true
339
+ }, null, 8, ["disabled", "onClick"])) : createCommentVNode("", true),
340
+ unref(selectedTask) && unref(taskState) === "completed" ? (openBlock(), createBlock(Fragment, { key: 1 }, [
341
+ createVNode(_component_UButton, {
342
+ to: `/api/workspace/${encodeURIComponent(unref(selectedTask).filename)}/download`,
343
+ target: "_blank",
344
+ icon: "i-lucide-download",
345
+ label: "UOMTiles",
346
+ color: "neutral",
347
+ variant: "outline",
348
+ size: "sm"
349
+ }, null, 8, ["to"]),
350
+ createVNode(_component_UButton, {
351
+ to: `/api/workspace/${encodeURIComponent(unref(selectedTask).filename)}/export/mbtiles`,
352
+ target: "_blank",
353
+ icon: "i-lucide-database",
354
+ label: "MBTiles",
355
+ color: "neutral",
356
+ variant: "outline",
357
+ size: "sm"
358
+ }, null, 8, ["to"]),
359
+ createVNode(_component_UButton, {
360
+ to: `/api/workspace/${encodeURIComponent(unref(selectedTask).filename)}/export/pmtiles`,
361
+ target: "_blank",
362
+ icon: "i-lucide-package",
363
+ label: "PMTiles",
364
+ color: "neutral",
365
+ variant: "outline",
366
+ size: "sm"
367
+ }, null, 8, ["to"])
368
+ ], 64)) : createCommentVNode("", true),
369
+ unref(selectedIsRunning) ? (openBlock(), createBlock(_component_UButton, {
370
+ key: 2,
371
+ icon: "i-lucide-square",
372
+ label: "停止下载",
373
+ color: "warning",
374
+ variant: "outline",
375
+ size: "sm",
376
+ onClick: ($event) => unref(workspace).stop(unref(selectedTask)?.filename)
377
+ }, null, 8, ["onClick"])) : unref(canStart) ? (openBlock(), createBlock(_component_UButton, {
378
+ key: 3,
379
+ icon: "i-lucide-play",
380
+ label: unref(startLabel),
381
+ variant: "outline",
382
+ size: "sm",
383
+ onClick: ($event) => confirmStart.value = true
384
+ }, null, 8, ["label", "onClick"])) : createCommentVNode("", true)
385
+ ];
386
+ }),
387
+ _: 1
388
+ }, _parent, _scopeId));
389
+ else return [createVNode(_component_UDashboardNavbar, { title: "地图下载任务" }, {
390
+ right: withCtx(() => [
391
+ createVNode(_component_UButton, {
392
+ icon: "i-lucide-plus",
393
+ label: "新建任务",
394
+ color: "neutral",
395
+ variant: "outline",
396
+ size: "sm",
397
+ onClick: openCreateTask
398
+ }),
399
+ createVNode(_component_UButton, {
400
+ icon: "i-lucide-refresh-cw",
401
+ label: "刷新",
402
+ color: "neutral",
403
+ variant: "outline",
404
+ size: "sm",
405
+ loading: unref(workspace).pending.value,
406
+ onClick: unref(workspace).refresh
407
+ }, null, 8, ["loading", "onClick"]),
408
+ unref(selectedTask) ? (openBlock(), createBlock(_component_UButton, {
409
+ key: 0,
410
+ icon: "i-lucide-trash-2",
411
+ label: "删除任务",
412
+ color: "error",
413
+ variant: "outline",
414
+ size: "sm",
415
+ disabled: !unref(canDelete),
416
+ onClick: ($event) => confirmDeleteTask.value = true
417
+ }, null, 8, ["disabled", "onClick"])) : createCommentVNode("", true),
418
+ unref(selectedTask) && unref(taskState) === "completed" ? (openBlock(), createBlock(Fragment, { key: 1 }, [
419
+ createVNode(_component_UButton, {
420
+ to: `/api/workspace/${encodeURIComponent(unref(selectedTask).filename)}/download`,
421
+ target: "_blank",
422
+ icon: "i-lucide-download",
423
+ label: "UOMTiles",
424
+ color: "neutral",
425
+ variant: "outline",
426
+ size: "sm"
427
+ }, null, 8, ["to"]),
428
+ createVNode(_component_UButton, {
429
+ to: `/api/workspace/${encodeURIComponent(unref(selectedTask).filename)}/export/mbtiles`,
430
+ target: "_blank",
431
+ icon: "i-lucide-database",
432
+ label: "MBTiles",
433
+ color: "neutral",
434
+ variant: "outline",
435
+ size: "sm"
436
+ }, null, 8, ["to"]),
437
+ createVNode(_component_UButton, {
438
+ to: `/api/workspace/${encodeURIComponent(unref(selectedTask).filename)}/export/pmtiles`,
439
+ target: "_blank",
440
+ icon: "i-lucide-package",
441
+ label: "PMTiles",
442
+ color: "neutral",
443
+ variant: "outline",
444
+ size: "sm"
445
+ }, null, 8, ["to"])
446
+ ], 64)) : createCommentVNode("", true),
447
+ unref(selectedIsRunning) ? (openBlock(), createBlock(_component_UButton, {
448
+ key: 2,
449
+ icon: "i-lucide-square",
450
+ label: "停止下载",
451
+ color: "warning",
452
+ variant: "outline",
453
+ size: "sm",
454
+ onClick: ($event) => unref(workspace).stop(unref(selectedTask)?.filename)
455
+ }, null, 8, ["onClick"])) : unref(canStart) ? (openBlock(), createBlock(_component_UButton, {
456
+ key: 3,
457
+ icon: "i-lucide-play",
458
+ label: unref(startLabel),
459
+ variant: "outline",
460
+ size: "sm",
461
+ onClick: ($event) => confirmStart.value = true
462
+ }, null, 8, ["label", "onClick"])) : createCommentVNode("", true)
463
+ ]),
464
+ _: 1
465
+ })];
466
+ }),
467
+ body: withCtx((_, _push, _parent, _scopeId) => {
468
+ if (_push) {
469
+ _push(`<div class="grid min-h-0 flex-1 lg:grid-cols-[20rem_minmax(0,1fr)]"${_scopeId}><aside class="flex max-h-[24rem] min-h-0 flex-col overflow-hidden border-b border-default lg:max-h-none lg:border-r lg:border-b-0"${_scopeId}><div class="border-b border-default p-3"${_scopeId}>`);
470
+ _push(ssrRenderComponent(_component_FileDropZone, {
471
+ accept: ".uomtiles",
472
+ title: "导入任务",
473
+ pending: unref(workspace).pending.value,
474
+ onSelect: openTask
475
+ }, null, _parent, _scopeId));
476
+ _push(`</div><div class="flex items-center justify-between gap-2 border-b border-default px-4 py-3"${_scopeId}><div class="flex items-center gap-2"${_scopeId}><h2 class="text-sm font-semibold"${_scopeId}>任务列表</h2><span class="uom-mono text-xs text-muted"${_scopeId}>${ssrInterpolate(unref(tasks).length)}</span></div></div>`);
477
+ if (unref(workspace).ready.value && unref(tasks).length) _push(ssrRenderComponent(_component_UScrollArea, { class: "min-h-0 flex-1" }, {
478
+ default: withCtx((_, _push, _parent, _scopeId) => {
479
+ if (_push) {
480
+ _push(`<div class="space-y-1 p-1"${_scopeId}><!--[-->`);
481
+ ssrRenderList(unref(tasks), (task) => {
482
+ _push(ssrRenderComponent(_component_UButton, {
483
+ key: task.filename,
484
+ type: "button",
485
+ block: "",
486
+ color: taskColor(task),
487
+ variant: taskVariant(task),
488
+ class: "h-auto min-h-16 w-full items-start justify-start px-3 py-3 text-left",
489
+ "aria-pressed": unref(selectedTask)?.filename === task.filename,
490
+ onClick: ($event) => unref(workspace).selectTask(task.filename)
491
+ }, {
492
+ default: withCtx((_, _push, _parent, _scopeId) => {
493
+ if (_push) {
494
+ _push(`<div class="w-full min-w-0"${_scopeId}><div class="flex items-center gap-2"${_scopeId}><span class="min-w-0 flex-1 truncate text-sm font-medium"${_scopeId}>${ssrInterpolate(displayName(task.filename))}</span>`);
495
+ _push(ssrRenderComponent(_component_UBadge, {
496
+ label: stateLabel(stateOf(task)),
497
+ color: stateColor(stateOf(task)),
498
+ variant: "subtle",
499
+ size: "xs"
500
+ }, null, _parent, _scopeId));
501
+ _push(`</div>`);
502
+ if (stateOf(task) === "running") {
503
+ _push(`<div class="mt-2 space-y-1.5"${_scopeId}><div class="flex items-center justify-between gap-2 text-[11px] text-muted"${_scopeId}><span${_scopeId}>${ssrInterpolate(progressFor(task).completed)} / ${ssrInterpolate(progressFor(task).total || 6030)} 个网格</span><span class="uom-mono"${_scopeId}>${ssrInterpolate(Math.floor(progressFor(task).percent))}%</span></div>`);
504
+ _push(ssrRenderComponent(_component_UProgress, {
505
+ "model-value": progressFor(task).percent,
506
+ max: 100,
507
+ size: "sm",
508
+ color: "info"
509
+ }, null, _parent, _scopeId));
510
+ _push(`<div class="flex items-center justify-between gap-2 text-[11px] text-muted"${_scopeId}><span${_scopeId}>正在下载</span><span class="uom-mono"${_scopeId}>${ssrInterpolate(etaFor(task))}</span></div></div>`);
511
+ } else {
512
+ _push(`<div class="mt-1.5 flex items-center justify-between gap-3 text-xs text-muted"${_scopeId}><span${_scopeId}>${ssrInterpolate(unref(dateTime).format(new Date(task.modifiedAt)))}</span>`);
513
+ if (task.summary?.roots.completed) _push(`<span class="uom-mono"${_scopeId}>${ssrInterpolate(task.summary.roots.completed)} / 6030</span>`);
514
+ else _push(`<!---->`);
515
+ _push(`</div>`);
516
+ }
517
+ _push(`</div>`);
518
+ } else return [createVNode("div", { class: "w-full min-w-0" }, [createVNode("div", { class: "flex items-center gap-2" }, [createVNode("span", { class: "min-w-0 flex-1 truncate text-sm font-medium" }, toDisplayString(displayName(task.filename)), 1), createVNode(_component_UBadge, {
519
+ label: stateLabel(stateOf(task)),
520
+ color: stateColor(stateOf(task)),
521
+ variant: "subtle",
522
+ size: "xs"
523
+ }, null, 8, ["label", "color"])]), stateOf(task) === "running" ? (openBlock(), createBlock("div", {
524
+ key: 0,
525
+ class: "mt-2 space-y-1.5"
526
+ }, [
527
+ createVNode("div", { class: "flex items-center justify-between gap-2 text-[11px] text-muted" }, [createVNode("span", null, toDisplayString(progressFor(task).completed) + " / " + toDisplayString(progressFor(task).total || 6030) + " 个网格", 1), createVNode("span", { class: "uom-mono" }, toDisplayString(Math.floor(progressFor(task).percent)) + "%", 1)]),
528
+ createVNode(_component_UProgress, {
529
+ "model-value": progressFor(task).percent,
530
+ max: 100,
531
+ size: "sm",
532
+ color: "info"
533
+ }, null, 8, ["model-value"]),
534
+ createVNode("div", { class: "flex items-center justify-between gap-2 text-[11px] text-muted" }, [createVNode("span", null, "正在下载"), createVNode("span", { class: "uom-mono" }, toDisplayString(etaFor(task)), 1)])
535
+ ])) : (openBlock(), createBlock("div", {
536
+ key: 1,
537
+ class: "mt-1.5 flex items-center justify-between gap-3 text-xs text-muted"
538
+ }, [createVNode("span", null, toDisplayString(unref(dateTime).format(new Date(task.modifiedAt))), 1), task.summary?.roots.completed ? (openBlock(), createBlock("span", {
539
+ key: 0,
540
+ class: "uom-mono"
541
+ }, toDisplayString(task.summary.roots.completed) + " / 6030", 1)) : createCommentVNode("", true)]))])];
542
+ }),
543
+ _: 2
544
+ }, _parent, _scopeId));
545
+ });
546
+ _push(`<!--]--></div>`);
547
+ } else return [createVNode("div", { class: "space-y-1 p-1" }, [(openBlock(true), createBlock(Fragment, null, renderList(unref(tasks), (task) => {
548
+ return openBlock(), createBlock(_component_UButton, {
549
+ key: task.filename,
550
+ type: "button",
551
+ block: "",
552
+ color: taskColor(task),
553
+ variant: taskVariant(task),
554
+ class: "h-auto min-h-16 w-full items-start justify-start px-3 py-3 text-left",
555
+ "aria-pressed": unref(selectedTask)?.filename === task.filename,
556
+ onClick: ($event) => unref(workspace).selectTask(task.filename)
557
+ }, {
558
+ default: withCtx(() => [createVNode("div", { class: "w-full min-w-0" }, [createVNode("div", { class: "flex items-center gap-2" }, [createVNode("span", { class: "min-w-0 flex-1 truncate text-sm font-medium" }, toDisplayString(displayName(task.filename)), 1), createVNode(_component_UBadge, {
559
+ label: stateLabel(stateOf(task)),
560
+ color: stateColor(stateOf(task)),
561
+ variant: "subtle",
562
+ size: "xs"
563
+ }, null, 8, ["label", "color"])]), stateOf(task) === "running" ? (openBlock(), createBlock("div", {
564
+ key: 0,
565
+ class: "mt-2 space-y-1.5"
566
+ }, [
567
+ createVNode("div", { class: "flex items-center justify-between gap-2 text-[11px] text-muted" }, [createVNode("span", null, toDisplayString(progressFor(task).completed) + " / " + toDisplayString(progressFor(task).total || 6030) + " 个网格", 1), createVNode("span", { class: "uom-mono" }, toDisplayString(Math.floor(progressFor(task).percent)) + "%", 1)]),
568
+ createVNode(_component_UProgress, {
569
+ "model-value": progressFor(task).percent,
570
+ max: 100,
571
+ size: "sm",
572
+ color: "info"
573
+ }, null, 8, ["model-value"]),
574
+ createVNode("div", { class: "flex items-center justify-between gap-2 text-[11px] text-muted" }, [createVNode("span", null, "正在下载"), createVNode("span", { class: "uom-mono" }, toDisplayString(etaFor(task)), 1)])
575
+ ])) : (openBlock(), createBlock("div", {
576
+ key: 1,
577
+ class: "mt-1.5 flex items-center justify-between gap-3 text-xs text-muted"
578
+ }, [createVNode("span", null, toDisplayString(unref(dateTime).format(new Date(task.modifiedAt))), 1), task.summary?.roots.completed ? (openBlock(), createBlock("span", {
579
+ key: 0,
580
+ class: "uom-mono"
581
+ }, toDisplayString(task.summary.roots.completed) + " / 6030", 1)) : createCommentVNode("", true)]))])]),
582
+ _: 2
583
+ }, 1032, [
584
+ "color",
585
+ "variant",
586
+ "aria-pressed",
587
+ "onClick"
588
+ ]);
589
+ }), 128))])];
590
+ }),
591
+ _: 1
592
+ }, _parent, _scopeId));
593
+ else if (!unref(workspace).ready.value) {
594
+ _push(`<div class="flex min-h-48 flex-1 flex-col items-center justify-center gap-3 px-4 text-sm text-muted"${_scopeId}>`);
595
+ _push(ssrRenderComponent(_component_UIcon, {
596
+ name: "i-lucide-loader-circle",
597
+ class: "size-5 animate-spin text-primary"
598
+ }, null, _parent, _scopeId));
599
+ _push(`<span${_scopeId}>加载任务</span></div>`);
600
+ } else {
601
+ _push(`<div class="flex min-h-48 flex-1 items-center justify-center px-4 py-8"${_scopeId}>`);
602
+ _push(ssrRenderComponent(_component_UEmpty, {
603
+ icon: "i-lucide-files",
604
+ title: "暂无任务"
605
+ }, null, _parent, _scopeId));
606
+ _push(`</div>`);
607
+ }
608
+ _push(`</aside><div class="flex min-h-0 flex-col"${_scopeId}><div class="flex min-h-12 flex-wrap items-center justify-between gap-2 border-b border-default px-4 py-1.5"${_scopeId}>`);
609
+ _push(ssrRenderComponent(_component_UTabs, {
610
+ modelValue: unref(taskView),
611
+ "onUpdate:modelValue": ($event) => isRef(taskView) ? taskView.value = $event : null,
612
+ items: unref(viewItems),
613
+ content: false,
614
+ size: "sm"
615
+ }, null, _parent, _scopeId));
616
+ _push(ssrRenderComponent(_component_MapBaseLayerTabs, {
617
+ modelValue: unref(baseMap),
618
+ "onUpdate:modelValue": ($event) => isRef(baseMap) ? baseMap.value = $event : null
619
+ }, null, _parent, _scopeId));
620
+ _push(`</div><div class="min-h-0 flex-1"${_scopeId}>`);
621
+ _push(ssrRenderComponent(_component_NuxtPage, null, null, _parent, _scopeId));
622
+ _push(`</div></div></div>`);
623
+ } else return [createVNode("div", { class: "grid min-h-0 flex-1 lg:grid-cols-[20rem_minmax(0,1fr)]" }, [createVNode("aside", { class: "flex max-h-[24rem] min-h-0 flex-col overflow-hidden border-b border-default lg:max-h-none lg:border-r lg:border-b-0" }, [
624
+ createVNode("div", { class: "border-b border-default p-3" }, [createVNode(_component_FileDropZone, {
625
+ accept: ".uomtiles",
626
+ title: "导入任务",
627
+ pending: unref(workspace).pending.value,
628
+ onSelect: openTask
629
+ }, null, 8, ["pending"])]),
630
+ createVNode("div", { class: "flex items-center justify-between gap-2 border-b border-default px-4 py-3" }, [createVNode("div", { class: "flex items-center gap-2" }, [createVNode("h2", { class: "text-sm font-semibold" }, "任务列表"), createVNode("span", { class: "uom-mono text-xs text-muted" }, toDisplayString(unref(tasks).length), 1)])]),
631
+ unref(workspace).ready.value && unref(tasks).length ? (openBlock(), createBlock(_component_UScrollArea, {
632
+ key: 0,
633
+ class: "min-h-0 flex-1"
634
+ }, {
635
+ default: withCtx(() => [createVNode("div", { class: "space-y-1 p-1" }, [(openBlock(true), createBlock(Fragment, null, renderList(unref(tasks), (task) => {
636
+ return openBlock(), createBlock(_component_UButton, {
637
+ key: task.filename,
638
+ type: "button",
639
+ block: "",
640
+ color: taskColor(task),
641
+ variant: taskVariant(task),
642
+ class: "h-auto min-h-16 w-full items-start justify-start px-3 py-3 text-left",
643
+ "aria-pressed": unref(selectedTask)?.filename === task.filename,
644
+ onClick: ($event) => unref(workspace).selectTask(task.filename)
645
+ }, {
646
+ default: withCtx(() => [createVNode("div", { class: "w-full min-w-0" }, [createVNode("div", { class: "flex items-center gap-2" }, [createVNode("span", { class: "min-w-0 flex-1 truncate text-sm font-medium" }, toDisplayString(displayName(task.filename)), 1), createVNode(_component_UBadge, {
647
+ label: stateLabel(stateOf(task)),
648
+ color: stateColor(stateOf(task)),
649
+ variant: "subtle",
650
+ size: "xs"
651
+ }, null, 8, ["label", "color"])]), stateOf(task) === "running" ? (openBlock(), createBlock("div", {
652
+ key: 0,
653
+ class: "mt-2 space-y-1.5"
654
+ }, [
655
+ createVNode("div", { class: "flex items-center justify-between gap-2 text-[11px] text-muted" }, [createVNode("span", null, toDisplayString(progressFor(task).completed) + " / " + toDisplayString(progressFor(task).total || 6030) + " 个网格", 1), createVNode("span", { class: "uom-mono" }, toDisplayString(Math.floor(progressFor(task).percent)) + "%", 1)]),
656
+ createVNode(_component_UProgress, {
657
+ "model-value": progressFor(task).percent,
658
+ max: 100,
659
+ size: "sm",
660
+ color: "info"
661
+ }, null, 8, ["model-value"]),
662
+ createVNode("div", { class: "flex items-center justify-between gap-2 text-[11px] text-muted" }, [createVNode("span", null, "正在下载"), createVNode("span", { class: "uom-mono" }, toDisplayString(etaFor(task)), 1)])
663
+ ])) : (openBlock(), createBlock("div", {
664
+ key: 1,
665
+ class: "mt-1.5 flex items-center justify-between gap-3 text-xs text-muted"
666
+ }, [createVNode("span", null, toDisplayString(unref(dateTime).format(new Date(task.modifiedAt))), 1), task.summary?.roots.completed ? (openBlock(), createBlock("span", {
667
+ key: 0,
668
+ class: "uom-mono"
669
+ }, toDisplayString(task.summary.roots.completed) + " / 6030", 1)) : createCommentVNode("", true)]))])]),
670
+ _: 2
671
+ }, 1032, [
672
+ "color",
673
+ "variant",
674
+ "aria-pressed",
675
+ "onClick"
676
+ ]);
677
+ }), 128))])]),
678
+ _: 1
679
+ })) : !unref(workspace).ready.value ? (openBlock(), createBlock("div", {
680
+ key: 1,
681
+ class: "flex min-h-48 flex-1 flex-col items-center justify-center gap-3 px-4 text-sm text-muted"
682
+ }, [createVNode(_component_UIcon, {
683
+ name: "i-lucide-loader-circle",
684
+ class: "size-5 animate-spin text-primary"
685
+ }), createVNode("span", null, "加载任务")])) : (openBlock(), createBlock("div", {
686
+ key: 2,
687
+ class: "flex min-h-48 flex-1 items-center justify-center px-4 py-8"
688
+ }, [createVNode(_component_UEmpty, {
689
+ icon: "i-lucide-files",
690
+ title: "暂无任务"
691
+ })]))
692
+ ]), createVNode("div", { class: "flex min-h-0 flex-col" }, [createVNode("div", { class: "flex min-h-12 flex-wrap items-center justify-between gap-2 border-b border-default px-4 py-1.5" }, [createVNode(_component_UTabs, {
693
+ modelValue: unref(taskView),
694
+ "onUpdate:modelValue": ($event) => isRef(taskView) ? taskView.value = $event : null,
695
+ items: unref(viewItems),
696
+ content: false,
697
+ size: "sm"
698
+ }, null, 8, [
699
+ "modelValue",
700
+ "onUpdate:modelValue",
701
+ "items"
702
+ ]), createVNode(_component_MapBaseLayerTabs, {
703
+ modelValue: unref(baseMap),
704
+ "onUpdate:modelValue": ($event) => isRef(baseMap) ? baseMap.value = $event : null
705
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]), createVNode("div", { class: "min-h-0 flex-1" }, [createVNode(_component_NuxtPage)])])])];
706
+ }),
707
+ _: 1
708
+ }, _parent));
709
+ _push(ssrRenderComponent(_component_UModal, {
710
+ open: unref(createTaskOpen),
711
+ "onUpdate:open": ($event) => isRef(createTaskOpen) ? createTaskOpen.value = $event : null,
712
+ title: "新建地图下载任务"
713
+ }, {
714
+ body: withCtx((_, _push, _parent, _scopeId) => {
715
+ if (_push) _push(ssrRenderComponent(_component_UForm, {
716
+ id: "create-task-form",
717
+ schema: unref(createTaskSchema),
718
+ state: unref(createTaskState),
719
+ onSubmit: createTask
720
+ }, {
721
+ default: withCtx((_, _push, _parent, _scopeId) => {
722
+ if (_push) _push(ssrRenderComponent(_component_UFormField, {
723
+ name: "filename",
724
+ label: "任务文件名",
725
+ required: ""
726
+ }, {
727
+ default: withCtx((_, _push, _parent, _scopeId) => {
728
+ if (_push) _push(ssrRenderComponent(_component_UInput, {
729
+ modelValue: unref(createTaskState).filename,
730
+ "onUpdate:modelValue": ($event) => unref(createTaskState).filename = $event,
731
+ class: "w-full",
732
+ autocomplete: "off",
733
+ icon: "i-lucide-file-database"
734
+ }, {
735
+ trailing: withCtx((_, _push, _parent, _scopeId) => {
736
+ if (_push) _push(`<span class="uom-mono text-xs text-muted"${_scopeId}>.uomtiles</span>`);
737
+ else return [createVNode("span", { class: "uom-mono text-xs text-muted" }, ".uomtiles")];
738
+ }),
739
+ _: 1
740
+ }, _parent, _scopeId));
741
+ else return [createVNode(_component_UInput, {
742
+ modelValue: unref(createTaskState).filename,
743
+ "onUpdate:modelValue": ($event) => unref(createTaskState).filename = $event,
744
+ class: "w-full",
745
+ autocomplete: "off",
746
+ icon: "i-lucide-file-database"
747
+ }, {
748
+ trailing: withCtx(() => [createVNode("span", { class: "uom-mono text-xs text-muted" }, ".uomtiles")]),
749
+ _: 1
750
+ }, 8, ["modelValue", "onUpdate:modelValue"])];
751
+ }),
752
+ _: 1
753
+ }, _parent, _scopeId));
754
+ else return [createVNode(_component_UFormField, {
755
+ name: "filename",
756
+ label: "任务文件名",
757
+ required: ""
758
+ }, {
759
+ default: withCtx(() => [createVNode(_component_UInput, {
760
+ modelValue: unref(createTaskState).filename,
761
+ "onUpdate:modelValue": ($event) => unref(createTaskState).filename = $event,
762
+ class: "w-full",
763
+ autocomplete: "off",
764
+ icon: "i-lucide-file-database"
765
+ }, {
766
+ trailing: withCtx(() => [createVNode("span", { class: "uom-mono text-xs text-muted" }, ".uomtiles")]),
767
+ _: 1
768
+ }, 8, ["modelValue", "onUpdate:modelValue"])]),
769
+ _: 1
770
+ })];
771
+ }),
772
+ _: 1
773
+ }, _parent, _scopeId));
774
+ else return [createVNode(_component_UForm, {
775
+ id: "create-task-form",
776
+ schema: unref(createTaskSchema),
777
+ state: unref(createTaskState),
778
+ onSubmit: createTask
779
+ }, {
780
+ default: withCtx(() => [createVNode(_component_UFormField, {
781
+ name: "filename",
782
+ label: "任务文件名",
783
+ required: ""
784
+ }, {
785
+ default: withCtx(() => [createVNode(_component_UInput, {
786
+ modelValue: unref(createTaskState).filename,
787
+ "onUpdate:modelValue": ($event) => unref(createTaskState).filename = $event,
788
+ class: "w-full",
789
+ autocomplete: "off",
790
+ icon: "i-lucide-file-database"
791
+ }, {
792
+ trailing: withCtx(() => [createVNode("span", { class: "uom-mono text-xs text-muted" }, ".uomtiles")]),
793
+ _: 1
794
+ }, 8, ["modelValue", "onUpdate:modelValue"])]),
795
+ _: 1
796
+ })]),
797
+ _: 1
798
+ }, 8, ["schema", "state"])];
799
+ }),
800
+ footer: withCtx((_, _push, _parent, _scopeId) => {
801
+ if (_push) {
802
+ _push(ssrRenderComponent(_component_UButton, {
803
+ label: "取消",
804
+ color: "neutral",
805
+ variant: "ghost",
806
+ onClick: ($event) => createTaskOpen.value = false
807
+ }, null, _parent, _scopeId));
808
+ _push(ssrRenderComponent(_component_UButton, {
809
+ type: "submit",
810
+ form: "create-task-form",
811
+ label: "创建",
812
+ icon: "i-lucide-plus",
813
+ loading: unref(workspace).pending.value
814
+ }, null, _parent, _scopeId));
815
+ } else return [createVNode(_component_UButton, {
816
+ label: "取消",
817
+ color: "neutral",
818
+ variant: "ghost",
819
+ onClick: ($event) => createTaskOpen.value = false
820
+ }, null, 8, ["onClick"]), createVNode(_component_UButton, {
821
+ type: "submit",
822
+ form: "create-task-form",
823
+ label: "创建",
824
+ icon: "i-lucide-plus",
825
+ loading: unref(workspace).pending.value
826
+ }, null, 8, ["loading"])];
827
+ }),
828
+ _: 1
829
+ }, _parent));
830
+ _push(ssrRenderComponent(_component_UModal, {
831
+ open: unref(confirmStart),
832
+ "onUpdate:open": ($event) => isRef(confirmStart) ? confirmStart.value = $event : null,
833
+ title: unref(startLabel)
834
+ }, {
835
+ footer: withCtx((_, _push, _parent, _scopeId) => {
836
+ if (_push) {
837
+ _push(ssrRenderComponent(_component_UButton, {
838
+ label: "取消",
839
+ color: "neutral",
840
+ variant: "ghost",
841
+ onClick: ($event) => confirmStart.value = false
842
+ }, null, _parent, _scopeId));
843
+ _push(ssrRenderComponent(_component_UButton, {
844
+ label: unref(startLabel),
845
+ icon: "i-lucide-play",
846
+ onClick: start
847
+ }, null, _parent, _scopeId));
848
+ } else return [createVNode(_component_UButton, {
849
+ label: "取消",
850
+ color: "neutral",
851
+ variant: "ghost",
852
+ onClick: ($event) => confirmStart.value = false
853
+ }, null, 8, ["onClick"]), createVNode(_component_UButton, {
854
+ label: unref(startLabel),
855
+ icon: "i-lucide-play",
856
+ onClick: start
857
+ }, null, 8, ["label"])];
858
+ }),
859
+ _: 1
860
+ }, _parent));
861
+ _push(ssrRenderComponent(_component_UModal, {
862
+ open: unref(confirmDeleteTask),
863
+ "onUpdate:open": ($event) => isRef(confirmDeleteTask) ? confirmDeleteTask.value = $event : null,
864
+ title: "删除地图下载任务"
865
+ }, {
866
+ body: withCtx((_, _push, _parent, _scopeId) => {
867
+ if (_push) _push(`<p class="text-sm text-muted"${_scopeId}>确定删除“${ssrInterpolate(unref(selectedTask) ? displayName(unref(selectedTask).filename) : "")}”吗?任务文件和已抓取数据将被永久删除。</p>`);
868
+ else return [createVNode("p", { class: "text-sm text-muted" }, "确定删除“" + toDisplayString(unref(selectedTask) ? displayName(unref(selectedTask).filename) : "") + "”吗?任务文件和已抓取数据将被永久删除。", 1)];
869
+ }),
870
+ footer: withCtx((_, _push, _parent, _scopeId) => {
871
+ if (_push) {
872
+ _push(ssrRenderComponent(_component_UButton, {
873
+ label: "取消",
874
+ color: "neutral",
875
+ variant: "ghost",
876
+ onClick: ($event) => confirmDeleteTask.value = false
877
+ }, null, _parent, _scopeId));
878
+ _push(ssrRenderComponent(_component_UButton, {
879
+ label: "确认删除",
880
+ icon: "i-lucide-trash-2",
881
+ color: "error",
882
+ loading: unref(workspace).pending.value,
883
+ onClick: deleteTask
884
+ }, null, _parent, _scopeId));
885
+ } else return [createVNode(_component_UButton, {
886
+ label: "取消",
887
+ color: "neutral",
888
+ variant: "ghost",
889
+ onClick: ($event) => confirmDeleteTask.value = false
890
+ }, null, 8, ["onClick"]), createVNode(_component_UButton, {
891
+ label: "确认删除",
892
+ icon: "i-lucide-trash-2",
893
+ color: "error",
894
+ loading: unref(workspace).pending.value,
895
+ onClick: deleteTask
896
+ }, null, 8, ["loading"])];
897
+ }),
898
+ _: 1
899
+ }, _parent));
900
+ _push(`<!--]-->`);
901
+ };
902
+ }
903
+ });
904
+ //#endregion
905
+ //#region app/pages/tasks.vue
906
+ var _sfc_setup = tasks_vue_vue_type_script_setup_true_lang_default.setup;
907
+ tasks_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
908
+ const ssrContext = useSSRContext();
909
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/tasks.vue");
910
+ return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
911
+ };
912
+ var tasks_default = tasks_vue_vue_type_script_setup_true_lang_default;
913
+
914
+ export { tasks_default as default };
915
+ //# sourceMappingURL=tasks-CyN9x492.mjs.map