uomtiles 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{BQlj8Xoe.js → 0hm88Oke.js} +1 -1
  3. package/.output/public/_nuxt/BNfSclJ4.js +1 -0
  4. package/.output/public/_nuxt/BYzlinOr2.js +1 -0
  5. package/.output/public/_nuxt/{BiWblTbb2.js → Bd1EvHmY.js} +1 -1
  6. package/.output/public/_nuxt/Be4dNlar.js +1 -0
  7. package/.output/public/_nuxt/{C4qlzA4o.js → C7fHMLd7.js} +1 -1
  8. package/.output/public/_nuxt/CQ8inUdm.js +1 -0
  9. package/.output/public/_nuxt/{C_0VY3Cv2.js → CU486JdV2.js} +2 -2
  10. package/.output/public/_nuxt/Cc_JfSB1.js +1 -0
  11. package/.output/public/_nuxt/CgcnoKpi.js +1 -0
  12. package/.output/public/_nuxt/{CgdzV712.js → CovBj6WN.js} +1 -1
  13. package/.output/public/_nuxt/CyZDc0eO2.js +1 -0
  14. package/.output/public/_nuxt/{DtFVCXI9.js → CzFefJH0.js} +1 -1
  15. package/.output/public/_nuxt/{DL1MZZLI.js → D-t0hXHB.js} +1 -1
  16. package/.output/public/_nuxt/D3Pl7yw22.js +1 -0
  17. package/.output/public/_nuxt/D4gbGuiW.js +1 -0
  18. package/.output/public/_nuxt/{DkcySee1.js → DDp9lK3g.js} +1 -1
  19. package/.output/public/_nuxt/DIIXHC50.js +1 -0
  20. package/.output/public/_nuxt/DWFUvzz0.js +1 -0
  21. package/.output/public/_nuxt/D_VoD6-f.js +1 -0
  22. package/.output/public/_nuxt/{q7DkoVkj.js → DaQqwE3R.js} +6 -6
  23. package/.output/public/_nuxt/DfXX-x_z.js +1 -0
  24. package/.output/public/_nuxt/Dgyf2aNY.js +1 -0
  25. package/.output/public/_nuxt/DpIPeY5m.js +1 -0
  26. package/.output/public/_nuxt/GM5myUL22.js +1 -0
  27. package/.output/public/_nuxt/IC4wc76W.js +1 -0
  28. package/.output/public/_nuxt/IfL46N3Z.js +1 -0
  29. package/.output/public/_nuxt/{Oxy7pKSk.js → KEU2l6zJ.js} +1 -1
  30. package/.output/public/_nuxt/{DC3bhq63.js → Q79ec-Ro.js} +1 -1
  31. package/.output/public/_nuxt/SEETjfdJ.js +1 -0
  32. package/.output/public/_nuxt/builds/latest.json +1 -1
  33. package/.output/public/_nuxt/builds/meta/2c4adba2-91b5-44e4-91d3-50a61695207b.json +1 -0
  34. package/.output/public/_nuxt/entry.CZ_dkjcs.css +1 -0
  35. package/.output/public/_nuxt/{ByRlKR9F.js → nGp0t_eD.js} +1 -1
  36. package/.output/server/chunks/_/config.mjs +58 -6
  37. package/.output/server/chunks/_/config.mjs.map +1 -1
  38. package/.output/server/chunks/_/export.mjs +7 -0
  39. package/.output/server/chunks/_/export.mjs.map +1 -0
  40. package/.output/server/chunks/_/file-workspace.mjs +153 -58
  41. package/.output/server/chunks/_/file-workspace.mjs.map +1 -1
  42. package/.output/server/chunks/_/map-service.mjs +7 -7
  43. package/.output/server/chunks/_/map-service.mjs.map +1 -1
  44. package/.output/server/chunks/_/pixel-diff.mjs +1 -1
  45. package/.output/server/chunks/_/uom-auth.mjs +7 -7
  46. package/.output/server/chunks/_/uom-auth.mjs.map +1 -1
  47. package/.output/server/chunks/_/uom-map.mjs +6 -6
  48. package/.output/server/chunks/_/uom-map.mjs.map +1 -1
  49. package/.output/server/chunks/build/Alert-DHVVSgdD.mjs +1074 -0
  50. package/.output/server/chunks/build/Alert-DHVVSgdD.mjs.map +1 -0
  51. package/.output/server/chunks/build/{Alert-0ngTJXxP.mjs → CompletedTaskSelect-CKTpyHS3.mjs} +31 -725
  52. package/.output/server/chunks/build/CompletedTaskSelect-CKTpyHS3.mjs.map +1 -0
  53. package/.output/server/chunks/build/{PopperArrow-Bqfdf2Et.mjs → DashboardSidebarToggle-CUI9NSow.mjs} +567 -5
  54. package/.output/server/chunks/build/DashboardSidebarToggle-CUI9NSow.mjs.map +1 -0
  55. package/.output/server/chunks/build/{Empty-CkW3mADt.mjs → Empty-BGIn09cL.mjs} +2 -2
  56. package/.output/server/chunks/build/{Empty-CkW3mADt.mjs.map → Empty-BGIn09cL.mjs.map} +1 -1
  57. package/.output/server/chunks/build/{FocusScope-Cf0lg0zt.mjs → FocusScope-DNZVMnza.mjs} +2 -2
  58. package/.output/server/chunks/build/{FocusScope-Cf0lg0zt.mjs.map → FocusScope-DNZVMnza.mjs.map} +1 -1
  59. package/.output/server/chunks/build/{FormField-CEUZHcv7.mjs → FormField-DnJWfrKE.mjs} +2 -2
  60. package/.output/server/chunks/build/{FormField-CEUZHcv7.mjs.map → FormField-DnJWfrKE.mjs.map} +1 -1
  61. package/.output/server/chunks/build/{Input-BeNavYXb.mjs → Input-AdlINKtJ.mjs} +1 -1
  62. package/.output/server/chunks/build/{Input-BeNavYXb.mjs.map → Input-AdlINKtJ.mjs.map} +1 -1
  63. package/.output/server/chunks/build/{MapBaseLayerTabs-4445J6yh.mjs → MapBaseLayerTabs-CRl5Zwlr.mjs} +15 -9
  64. package/.output/server/chunks/build/{MapBaseLayerTabs-4445J6yh.mjs.map → MapBaseLayerTabs-CRl5Zwlr.mjs.map} +1 -1
  65. package/.output/server/chunks/build/{Modal-DNZtVxca.mjs → Modal-CozaqIp1.mjs} +13 -5
  66. package/.output/server/chunks/build/{Modal-DNZtVxca.mjs.map → Modal-CozaqIp1.mjs.map} +1 -1
  67. package/.output/server/chunks/build/{OnlineMap-CKwiuqUY.mjs → OnlineMap-cFSicmkV.mjs} +1 -1
  68. package/.output/server/chunks/build/{OnlineMap-CKwiuqUY.mjs.map → OnlineMap-cFSicmkV.mjs.map} +1 -1
  69. package/.output/server/chunks/build/{Pagination-CDHx4HTZ.mjs → Pagination-GvNCxmOW.mjs} +1 -1
  70. package/.output/server/chunks/build/{Pagination-CDHx4HTZ.mjs.map → Pagination-GvNCxmOW.mjs.map} +1 -1
  71. package/.output/server/chunks/build/{Slider-D-n8Y0CX.mjs → Slider-zQx1c7hB.mjs} +10 -25
  72. package/.output/server/chunks/build/Slider-zQx1c7hB.mjs.map +1 -0
  73. package/.output/server/chunks/build/{Tooltip-CkpSktvJ.mjs → Tooltip-DNUdH4oF.mjs} +3 -4
  74. package/.output/server/chunks/build/{Tooltip-CkpSktvJ.mjs.map → Tooltip-DNUdH4oF.mjs.map} +1 -1
  75. package/.output/server/chunks/build/{advanced-D1onodoF.mjs → advanced-5ZGMUBqC.mjs} +17 -18
  76. package/.output/server/chunks/build/advanced-5ZGMUBqC.mjs.map +1 -0
  77. package/.output/server/chunks/build/clamp-CdZXprXk.mjs +65 -0
  78. package/.output/server/chunks/build/clamp-CdZXprXk.mjs.map +1 -0
  79. package/.output/server/chunks/build/{compare-DmSAW8oA.mjs → compare-CtgF4Anj.mjs} +17 -17
  80. package/.output/server/chunks/build/{compare-DmSAW8oA.mjs.map → compare-CtgF4Anj.mjs.map} +1 -1
  81. package/.output/server/chunks/build/{dashboard-BJxrZ19n.mjs → dashboard-GneN-WPG.mjs} +25 -10
  82. package/.output/server/chunks/build/{dashboard-BJxrZ19n.mjs.map → dashboard-GneN-WPG.mjs.map} +1 -1
  83. package/.output/server/chunks/build/{details-CBMqXYyo.mjs → details-CgufnL1d.mjs} +4 -4
  84. package/.output/server/chunks/build/{details-CBMqXYyo.mjs.map → details-CgufnL1d.mjs.map} +1 -1
  85. package/.output/server/chunks/build/error-404-D9aQjJRn.mjs +1 -1
  86. package/.output/server/chunks/build/error-500-BNyA3wrb.mjs +1 -1
  87. package/.output/server/chunks/build/{interval-BxUMpo78.mjs → interval-9B2MrM2e.mjs} +2 -2
  88. package/.output/server/chunks/build/{interval-BxUMpo78.mjs.map → interval-9B2MrM2e.mjs.map} +1 -1
  89. package/.output/server/chunks/build/{login-lbtjN0MV.mjs → login-Cf5EiCE4.mjs} +8 -8
  90. package/.output/server/chunks/build/{login-lbtjN0MV.mjs.map → login-Cf5EiCE4.mjs.map} +1 -1
  91. package/.output/server/chunks/build/{pages-Ba0Eixbd.mjs → pages-0c5sp_lv.mjs} +8 -9
  92. package/.output/server/chunks/build/pages-0c5sp_lv.mjs.map +1 -0
  93. package/.output/server/chunks/build/{services-DuJwjAB8.mjs → services-BB49kSpd.mjs} +16 -16
  94. package/.output/server/chunks/build/{services-DuJwjAB8.mjs.map → services-BB49kSpd.mjs.map} +1 -1
  95. package/.output/server/chunks/build/{tasks-D_Q5EDnn.mjs → tasks-Aa8PwjVL.mjs} +5 -5
  96. package/.output/server/chunks/build/{tasks-D_Q5EDnn.mjs.map → tasks-Aa8PwjVL.mjs.map} +1 -1
  97. package/.output/server/chunks/build/tasks-BRcMLuRW.mjs +6121 -0
  98. package/.output/server/chunks/build/tasks-BRcMLuRW.mjs.map +1 -0
  99. package/.output/server/chunks/nitro/nitro.mjs +254 -257
  100. package/.output/server/chunks/routes/api/auth/login.post.mjs +1 -1
  101. package/.output/server/chunks/routes/api/auth/login.post.mjs.map +1 -1
  102. package/.output/server/chunks/routes/api/auth/send-sms.post.mjs +2 -2
  103. package/.output/server/chunks/routes/api/auth/send-sms.post.mjs.map +1 -1
  104. package/.output/server/chunks/routes/api/map/base/_baseLayer/_zoom/_tileX/_tileY_.get.mjs +2 -2
  105. package/.output/server/chunks/routes/api/map/base/_baseLayer/_zoom/_tileX/_tileY_.get.mjs.map +1 -1
  106. package/.output/server/chunks/routes/api/map/base/status.get.mjs +24 -0
  107. package/.output/server/chunks/routes/api/map/base/status.get.mjs.map +1 -0
  108. package/.output/server/chunks/routes/api/map/live/status.get.mjs +1 -1
  109. package/.output/server/chunks/routes/api/map/live/status.get.mjs.map +1 -1
  110. package/.output/server/chunks/routes/api/map/online/_layerGroup/_zoom/_tileX/_tileY_.get.mjs +3 -3
  111. package/.output/server/chunks/routes/api/map/online/_layerGroup/_zoom/_tileX/_tileY_.get.mjs.map +1 -1
  112. package/.output/server/chunks/routes/api/map/online-root/_layerGroup/_rootX/_rootY_.get.mjs +3 -3
  113. package/.output/server/chunks/routes/api/map/online-root/_layerGroup/_rootX/_rootY_.get.mjs.map +1 -1
  114. package/.output/server/chunks/routes/api/map-service/config.post.mjs +1 -0
  115. package/.output/server/chunks/routes/api/map-service/config.post.mjs.map +1 -1
  116. package/.output/server/chunks/routes/api/map-service/file.post.mjs +4 -3
  117. package/.output/server/chunks/routes/api/map-service/file.post.mjs.map +1 -1
  118. package/.output/server/chunks/routes/api/map-service/source.post.mjs +1 -0
  119. package/.output/server/chunks/routes/api/map-service/source.post.mjs.map +1 -1
  120. package/.output/server/chunks/routes/api/map-service/status.get.mjs +1 -0
  121. package/.output/server/chunks/routes/api/map-service/status.get.mjs.map +1 -1
  122. package/.output/server/chunks/routes/api/workspace/_filename/analysis.get.mjs +4 -3
  123. package/.output/server/chunks/routes/api/workspace/_filename/analysis.get.mjs.map +1 -1
  124. package/.output/server/chunks/routes/api/workspace/_filename/download.get.mjs +2 -1
  125. package/.output/server/chunks/routes/api/workspace/_filename/download.get.mjs.map +1 -1
  126. package/.output/server/chunks/routes/api/workspace/_filename/export/_format_.get.mjs +11 -4
  127. package/.output/server/chunks/routes/api/workspace/_filename/export/_format_.get.mjs.map +1 -1
  128. package/.output/server/chunks/routes/api/workspace/_filename/export-estimate.get.mjs +39 -0
  129. package/.output/server/chunks/routes/api/workspace/_filename/export-estimate.get.mjs.map +1 -0
  130. package/.output/server/chunks/routes/api/workspace/_filename/tile.get.mjs +3 -2
  131. package/.output/server/chunks/routes/api/workspace/_filename/tile.get.mjs.map +1 -1
  132. package/.output/server/chunks/routes/api/workspace/_filename/tiles.get.mjs +2 -1
  133. package/.output/server/chunks/routes/api/workspace/_filename/tiles.get.mjs.map +1 -1
  134. package/.output/server/chunks/routes/api/workspace/_filename_.delete.mjs +2 -1
  135. package/.output/server/chunks/routes/api/workspace/_filename_.delete.mjs.map +1 -1
  136. package/.output/server/chunks/routes/api/workspace/compare/batch.get.mjs +1 -0
  137. package/.output/server/chunks/routes/api/workspace/compare/batch.get.mjs.map +1 -1
  138. package/.output/server/chunks/routes/api/workspace/compare.post.mjs +1 -0
  139. package/.output/server/chunks/routes/api/workspace/compare.post.mjs.map +1 -1
  140. package/.output/server/chunks/routes/api/workspace/fetch.post.mjs +1 -0
  141. package/.output/server/chunks/routes/api/workspace/fetch.post.mjs.map +1 -1
  142. package/.output/server/chunks/routes/api/workspace/files.get.mjs +1 -0
  143. package/.output/server/chunks/routes/api/workspace/files.get.mjs.map +1 -1
  144. package/.output/server/chunks/routes/api/workspace/files.post.mjs +4 -3
  145. package/.output/server/chunks/routes/api/workspace/files.post.mjs.map +1 -1
  146. package/.output/server/chunks/routes/api/workspace/stop.post.mjs +2 -1
  147. package/.output/server/chunks/routes/api/workspace/stop.post.mjs.map +1 -1
  148. package/.output/server/chunks/routes/api/workspace/tasks.post.mjs +2 -1
  149. package/.output/server/chunks/routes/api/workspace/tasks.post.mjs.map +1 -1
  150. package/.output/server/chunks/routes/renderer.mjs +2 -2
  151. package/.output/server/chunks/routes/services/wms.get.mjs +3 -2
  152. package/.output/server/chunks/routes/services/wms.get.mjs.map +1 -1
  153. package/.output/server/chunks/routes/services/wmts.get.mjs +3 -2
  154. package/.output/server/chunks/routes/services/wmts.get.mjs.map +1 -1
  155. package/.output/server/chunks/virtual/entry.mjs +149 -149
  156. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  157. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  158. package/.output/server/chunks/virtual/styles.mjs +1 -1
  159. package/.output/server/package.json +1 -1
  160. package/README.md +7 -1
  161. package/dist/package.json +68 -0
  162. package/dist/shared/export.js +4 -0
  163. package/dist/shared/types/export.js +1 -0
  164. package/dist/src/cli.js +20 -3
  165. package/dist/src/config.js +2 -0
  166. package/dist/src/core/grid-renderer.js +29 -15
  167. package/dist/src/core/png.js +59 -6
  168. package/dist/src/core/shell.js +37 -0
  169. package/dist/src/core/uomtiles.js +98 -14
  170. package/package.json +1 -1
  171. package/.output/public/_nuxt/1d1PDhA4.js +0 -1
  172. package/.output/public/_nuxt/981KwFWf.js +0 -1
  173. package/.output/public/_nuxt/B30dSvM4.js +0 -1
  174. package/.output/public/_nuxt/BRkljK8J.js +0 -1
  175. package/.output/public/_nuxt/B_MqTg2k2.js +0 -1
  176. package/.output/public/_nuxt/BrPwntMr.js +0 -1
  177. package/.output/public/_nuxt/BskybydR.js +0 -1
  178. package/.output/public/_nuxt/C7HxHbxA.js +0 -1
  179. package/.output/public/_nuxt/CPuhwLY1.js +0 -1
  180. package/.output/public/_nuxt/Ce26t8_Y.js +0 -1
  181. package/.output/public/_nuxt/CfW544W5.js +0 -1
  182. package/.output/public/_nuxt/D1wVNWS0.js +0 -1
  183. package/.output/public/_nuxt/Dz7VMlHR.js +0 -1
  184. package/.output/public/_nuxt/NL65vbjG2.js +0 -1
  185. package/.output/public/_nuxt/Pik8or8N2.js +0 -1
  186. package/.output/public/_nuxt/XZ59tThl.js +0 -1
  187. package/.output/public/_nuxt/ZpWjFsgV.js +0 -1
  188. package/.output/public/_nuxt/builds/meta/9f85104e-738d-4a74-8daa-40b136ce17d5.json +0 -1
  189. package/.output/public/_nuxt/dXz6dFgW2.js +0 -1
  190. package/.output/public/_nuxt/entry.P6tFNE31.css +0 -1
  191. package/.output/public/_nuxt/j0MRD-c3.js +0 -1
  192. package/.output/public/_nuxt/zZ1EGR7Y.js +0 -1
  193. package/.output/server/chunks/build/Alert-0ngTJXxP.mjs.map +0 -1
  194. package/.output/server/chunks/build/DashboardSidebarToggle-pncTaIJq.mjs +0 -569
  195. package/.output/server/chunks/build/DashboardSidebarToggle-pncTaIJq.mjs.map +0 -1
  196. package/.output/server/chunks/build/PopperArrow-Bqfdf2Et.mjs.map +0 -1
  197. package/.output/server/chunks/build/ScrollArea-BQK3em8b.mjs +0 -379
  198. package/.output/server/chunks/build/ScrollArea-BQK3em8b.mjs.map +0 -1
  199. package/.output/server/chunks/build/Slider-D-n8Y0CX.mjs.map +0 -1
  200. package/.output/server/chunks/build/advanced-D1onodoF.mjs.map +0 -1
  201. package/.output/server/chunks/build/pages-Ba0Eixbd.mjs.map +0 -1
  202. package/.output/server/chunks/build/tasks-CyN9x492.mjs +0 -915
  203. package/.output/server/chunks/build/tasks-CyN9x492.mjs.map +0 -1
@@ -0,0 +1,1074 @@
1
+ import { d as useComponentProps, e as useLocale, f as useAppConfig, t as tv, P as Primitive, p as _sfc_main$3, _ as _sfc_main$5, b as _sfc_main$2, I as useScroll, J as unrefElement, G as refAutoReset, s as usePrimitiveElement, V as VisuallyHidden_default, H as getActiveElement } from '../virtual/entry.mjs';
2
+ import { u as useVirtualizer } from './esm-Dp2lJXbp.mjs';
3
+ import { computed, useTemplateRef, toRef, watch, unref, mergeProps, withCtx, openBlock, createBlock, Fragment, renderList, renderSlot, useSlots, createCommentVNode, createVNode, createTextVNode, toDisplayString, defineComponent, ref, toValue, createElementBlock, watchEffect, nextTick, useSSRContext } from 'vue';
4
+ import { D as defu } from '../nitro/nitro.mjs';
5
+ import { ssrRenderComponent, ssrRenderClass, ssrRenderStyle, ssrRenderList, ssrRenderAttr, ssrRenderSlot, ssrInterpolate, ssrRenderAttrs } from 'vue/server-renderer';
6
+
7
+ //#region node_modules/.pnpm/reka-ui@2.10.1_vue@3.5.41_typescript@6.0.3_/node_modules/reka-ui/dist/shared/useComposing.js
8
+ function useComposing(onEnd) {
9
+ const isComposing = ref(false);
10
+ function handleCompositionStart() {
11
+ isComposing.value = true;
12
+ }
13
+ function handleCompositionEnd(event) {
14
+ nextTick(() => {
15
+ isComposing.value = false;
16
+ onEnd?.(event);
17
+ });
18
+ }
19
+ return {
20
+ isComposing,
21
+ handleCompositionStart,
22
+ handleCompositionEnd
23
+ };
24
+ }
25
+ /**
26
+ * Injects a pair of focus guards at the edges of the whole DOM tree
27
+ * to ensure `focusin` & `focusout` events can be caught consistently.
28
+ */
29
+ function useFocusGuards() {
30
+ watchEffect((cleanupFn) => {});
31
+ }
32
+ //#endregion
33
+ //#region node_modules/.pnpm/reka-ui@2.10.1_vue@3.5.41_typescript@6.0.3_/node_modules/reka-ui/dist/shared/useFormControl.js
34
+ function useFormControl(el) {
35
+ return computed(() => toValue(el) ? Boolean(unrefElement(el)?.closest("form")) : true);
36
+ }
37
+ //#endregion
38
+ //#region node_modules/.pnpm/reka-ui@2.10.1_vue@3.5.41_typescript@6.0.3_/node_modules/reka-ui/dist/shared/useKbd.js
39
+ function useKbd() {
40
+ return {
41
+ ALT: "Alt",
42
+ ARROW_DOWN: "ArrowDown",
43
+ ARROW_LEFT: "ArrowLeft",
44
+ ARROW_RIGHT: "ArrowRight",
45
+ ARROW_UP: "ArrowUp",
46
+ BACKSPACE: "Backspace",
47
+ CAPS_LOCK: "CapsLock",
48
+ CONTROL: "Control",
49
+ DELETE: "Delete",
50
+ END: "End",
51
+ ENTER: "Enter",
52
+ ESCAPE: "Escape",
53
+ F1: "F1",
54
+ F10: "F10",
55
+ F11: "F11",
56
+ F12: "F12",
57
+ F2: "F2",
58
+ F3: "F3",
59
+ F4: "F4",
60
+ F5: "F5",
61
+ F6: "F6",
62
+ F7: "F7",
63
+ F8: "F8",
64
+ F9: "F9",
65
+ HOME: "Home",
66
+ META: "Meta",
67
+ PAGE_DOWN: "PageDown",
68
+ PAGE_UP: "PageUp",
69
+ SHIFT: "Shift",
70
+ SPACE: " ",
71
+ TAB: "Tab",
72
+ CTRL: "Control",
73
+ ASTERISK: "*",
74
+ SPACE_CODE: "Space"
75
+ };
76
+ }
77
+ //#endregion
78
+ //#region node_modules/.pnpm/reka-ui@2.10.1_vue@3.5.41_typescript@6.0.3_/node_modules/reka-ui/dist/shared/useTypeahead.js
79
+ function useTypeahead(callback) {
80
+ const search = refAutoReset("", 1e3);
81
+ const handleTypeaheadSearch = (key, items) => {
82
+ search.value = search.value + key;
83
+ {
84
+ const currentItem = getActiveElement();
85
+ const itemsWithTextValue = items.map((item) => ({
86
+ ...item,
87
+ textValue: item.value?.textValue ?? item.ref.textContent?.trim() ?? ""
88
+ }));
89
+ const currentMatch = itemsWithTextValue.find((item) => item.ref === currentItem);
90
+ const nextMatch = getNextMatch(itemsWithTextValue.map((item) => item.textValue), search.value, currentMatch?.textValue);
91
+ const newItem = itemsWithTextValue.find((item) => item.textValue === nextMatch);
92
+ if (newItem) newItem.ref.focus();
93
+ return newItem?.ref;
94
+ }
95
+ };
96
+ const resetTypeahead = () => {
97
+ search.value = "";
98
+ };
99
+ return {
100
+ search,
101
+ handleTypeaheadSearch,
102
+ resetTypeahead
103
+ };
104
+ }
105
+ /**
106
+ * Wraps an array around itself at a given start index
107
+ * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`
108
+ */
109
+ function wrapArray(array, startIndex) {
110
+ return array.map((_, index) => array[(startIndex + index) % array.length]);
111
+ }
112
+ /**
113
+ * This is the "meat" of the typeahead matching logic. It takes in all the values,
114
+ * the search and the current match, and returns the next match (or `undefined`).
115
+ *
116
+ * We normalize the search because if a user has repeatedly pressed a character,
117
+ * we want the exact same behavior as if we only had that one character
118
+ * (ie. cycle through options starting with that character)
119
+ *
120
+ * We also reorder the values by wrapping the array around the current match.
121
+ * This is so we always look forward from the current match, and picking the first
122
+ * match will always be the correct one.
123
+ *
124
+ * Finally, if the normalized search is exactly one character, we exclude the
125
+ * current match from the values because otherwise it would be the first to match always
126
+ * and focus would never move. This is as opposed to the regular case, where we
127
+ * don't want focus to move if the current match still matches.
128
+ */
129
+ function getNextMatch(values, search, currentMatch) {
130
+ const normalizedSearch = search.length > 1 && Array.from(search).every((char) => char === search[0]) ? search[0] : search;
131
+ const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;
132
+ let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));
133
+ if (normalizedSearch.length === 1) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);
134
+ const nextMatch = wrappedValues.find((value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase()));
135
+ return nextMatch !== currentMatch ? nextMatch : void 0;
136
+ }
137
+ //#endregion
138
+ //#region node_modules/.pnpm/reka-ui@2.10.1_vue@3.5.41_typescript@6.0.3_/node_modules/reka-ui/dist/VisuallyHidden/VisuallyHiddenInputBubble.js
139
+ var VisuallyHiddenInputBubble_default = /* @__PURE__ */ defineComponent({
140
+ inheritAttrs: false,
141
+ __name: "VisuallyHiddenInputBubble",
142
+ props: {
143
+ name: {
144
+ type: String,
145
+ required: true
146
+ },
147
+ value: {
148
+ type: null,
149
+ required: true
150
+ },
151
+ checked: {
152
+ type: Boolean,
153
+ required: false,
154
+ default: void 0
155
+ },
156
+ required: {
157
+ type: Boolean,
158
+ required: false
159
+ },
160
+ disabled: {
161
+ type: Boolean,
162
+ required: false
163
+ },
164
+ feature: {
165
+ type: String,
166
+ required: false,
167
+ default: "fully-hidden"
168
+ }
169
+ },
170
+ setup(__props) {
171
+ const props = __props;
172
+ const { primitiveElement, currentElement } = usePrimitiveElement();
173
+ const valueState = computed(() => props.checked ?? props.value);
174
+ watch(valueState, (cur, prev) => {
175
+ if (!currentElement.value) return;
176
+ const input = currentElement.value;
177
+ const inputProto = (void 0).HTMLInputElement.prototype;
178
+ const setValue = Object.getOwnPropertyDescriptor(inputProto, "value").set;
179
+ if (setValue && cur !== prev) {
180
+ const inputEvent = new Event("input", { bubbles: true });
181
+ const changeEvent = new Event("change", { bubbles: true });
182
+ setValue.call(input, cur);
183
+ input.dispatchEvent(inputEvent);
184
+ input.dispatchEvent(changeEvent);
185
+ }
186
+ });
187
+ return (_ctx, _cache) => {
188
+ return openBlock(), createBlock(VisuallyHidden_default, mergeProps({
189
+ ref_key: "primitiveElement",
190
+ ref: primitiveElement
191
+ }, {
192
+ ...props,
193
+ ..._ctx.$attrs
194
+ }, { as: "input" }), null, 16);
195
+ };
196
+ }
197
+ });
198
+ //#endregion
199
+ //#region node_modules/.pnpm/reka-ui@2.10.1_vue@3.5.41_typescript@6.0.3_/node_modules/reka-ui/dist/VisuallyHidden/VisuallyHiddenInput.js
200
+ var VisuallyHiddenInput_default = /* @__PURE__ */ defineComponent({
201
+ inheritAttrs: false,
202
+ __name: "VisuallyHiddenInput",
203
+ props: {
204
+ name: {
205
+ type: String,
206
+ required: true
207
+ },
208
+ value: {
209
+ type: null,
210
+ required: true
211
+ },
212
+ checked: {
213
+ type: Boolean,
214
+ required: false,
215
+ default: void 0
216
+ },
217
+ required: {
218
+ type: Boolean,
219
+ required: false
220
+ },
221
+ disabled: {
222
+ type: Boolean,
223
+ required: false
224
+ },
225
+ feature: {
226
+ type: String,
227
+ required: false,
228
+ default: "fully-hidden"
229
+ }
230
+ },
231
+ setup(__props) {
232
+ const props = __props;
233
+ const isFormArrayEmptyAndRequired = computed(() => typeof props.value === "object" && Array.isArray(props.value) && props.value.length === 0 && props.required);
234
+ const parsedValue = computed(() => {
235
+ if (typeof props.value === "string" || typeof props.value === "number" || typeof props.value === "boolean" || props.value === null || props.value === void 0) return [{
236
+ name: props.name,
237
+ value: props.value
238
+ }];
239
+ else if (typeof props.value === "object" && Array.isArray(props.value)) return props.value.flatMap((obj, index) => {
240
+ if (typeof obj === "object") return Object.entries(obj).map(([key, value]) => ({
241
+ name: `${props.name}[${index}][${key}]`,
242
+ value
243
+ }));
244
+ else return {
245
+ name: `${props.name}[${index}]`,
246
+ value: obj
247
+ };
248
+ });
249
+ else if (props.value !== null && typeof props.value === "object" && !Array.isArray(props.value)) return Object.entries(props.value).map(([key, value]) => ({
250
+ name: `${props.name}[${key}]`,
251
+ value
252
+ }));
253
+ return [];
254
+ });
255
+ return (_ctx, _cache) => {
256
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" We render single input if it's required "), isFormArrayEmptyAndRequired.value ? (openBlock(), createBlock(VisuallyHiddenInputBubble_default, mergeProps({ key: _ctx.name }, {
257
+ ...props,
258
+ ..._ctx.$attrs
259
+ }, {
260
+ name: _ctx.name,
261
+ value: _ctx.value
262
+ }), null, 16, ["name", "value"])) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(parsedValue.value, (parsed) => {
263
+ return openBlock(), createBlock(VisuallyHiddenInputBubble_default, mergeProps({ key: parsed.name }, { ref_for: true }, {
264
+ ...props,
265
+ ..._ctx.$attrs
266
+ }, {
267
+ name: parsed.name,
268
+ value: parsed.value
269
+ }), null, 16, ["name", "value"]);
270
+ }), 128))], 2112);
271
+ };
272
+ }
273
+ });
274
+ //#endregion
275
+ //#region app/components/FileDropZone.vue?vue&type=script&setup=true&lang.ts
276
+ var FileDropZone_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
277
+ __name: "FileDropZone",
278
+ __ssrInlineRender: true,
279
+ props: {
280
+ accept: {},
281
+ title: {},
282
+ description: {},
283
+ fileName: {},
284
+ pending: {
285
+ type: Boolean,
286
+ default: false
287
+ }
288
+ },
289
+ emits: ["select"],
290
+ setup(__props, { emit: __emit }) {
291
+ useTemplateRef("input");
292
+ const dragging = ref(false);
293
+ return (_ctx, _push, _parent, _attrs) => {
294
+ const _component_UIcon = _sfc_main$5;
295
+ const _component_UButton = _sfc_main$2;
296
+ _push(`<div${ssrRenderAttrs(mergeProps({
297
+ class: ["group flex min-h-28 cursor-pointer items-center gap-4 border border-dashed px-4 py-4 transition-colors focus-within:outline-2 focus-within:outline-primary", unref(dragging) ? "border-primary bg-primary/5" : "border-default hover:border-accented hover:bg-elevated/60"],
298
+ role: "button",
299
+ tabindex: "0"
300
+ }, _attrs))}><input type="file"${ssrRenderAttr("accept", __props.accept)} class="sr-only"><span class="grid size-10 shrink-0 place-items-center bg-muted text-muted group-hover:text-default">`);
301
+ _push(ssrRenderComponent(_component_UIcon, {
302
+ name: __props.pending ? "i-lucide-loader-circle" : __props.fileName ? "i-lucide-file-check-2" : "i-lucide-file-up",
303
+ class: ["size-5", __props.pending ? "animate-spin" : ""]
304
+ }, null, _parent));
305
+ _push(`</span><div class="min-w-0 flex-1"><p class="truncate text-sm font-medium text-highlighted">${ssrInterpolate(__props.fileName || __props.title)}</p>`);
306
+ if (__props.pending || __props.fileName || __props.description) _push(`<p class="mt-1 text-xs text-muted">${ssrInterpolate(__props.pending ? "正在读取文件" : __props.fileName ? "点击或拖入文件以替换" : __props.description)}</p>`);
307
+ else _push(`<!---->`);
308
+ _push(`</div>`);
309
+ _push(ssrRenderComponent(_component_UButton, {
310
+ type: "button",
311
+ icon: "i-lucide-folder-open",
312
+ label: "选择文件",
313
+ color: "neutral",
314
+ variant: "outline",
315
+ loading: __props.pending,
316
+ tabindex: "-1"
317
+ }, null, _parent));
318
+ _push(`</div>`);
319
+ };
320
+ }
321
+ });
322
+ //#endregion
323
+ //#region app/components/FileDropZone.vue
324
+ var _sfc_setup$2 = FileDropZone_vue_vue_type_script_setup_true_lang_default.setup;
325
+ FileDropZone_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
326
+ const ssrContext = useSSRContext();
327
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/FileDropZone.vue");
328
+ return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
329
+ };
330
+ var FileDropZone_default = Object.assign(FileDropZone_vue_vue_type_script_setup_true_lang_default, { __name: "FileDropZone" });
331
+ //#endregion
332
+ //#region node_modules/.pnpm/@nuxt+ui@4.10.0_e299f0a9b209424c2a6c150f5a1a8167/node_modules/@nuxt/ui/dist/runtime/composables/useScrollShadow.js
333
+ function useScrollShadow(element, options = {}) {
334
+ const { arrivedState } = useScroll(element);
335
+ return {
336
+ style: computed(() => {
337
+ const el = toValue(element);
338
+ const orientation = toValue(options.orientation) ?? "vertical";
339
+ const [startKey, endKey] = orientation === "horizontal" ? ["left", "right"] : ["top", "bottom"];
340
+ const showStart = !arrivedState[startKey];
341
+ const showEnd = !arrivedState[endKey];
342
+ if (!showStart && !showEnd) return void 0;
343
+ if (!(el ? orientation === "horizontal" ? el.scrollWidth > el.clientWidth : el.scrollHeight > el.clientHeight : false)) return void 0;
344
+ const size = `${toValue(options.size) ?? 24}px`;
345
+ const angle = orientation === "horizontal" ? "90deg" : "180deg";
346
+ if (showStart && showEnd) return { maskImage: `linear-gradient(${angle}, transparent, #000 ${size}, #000 calc(100% - ${size}), transparent)` };
347
+ if (showStart) return { maskImage: `linear-gradient(${angle}, transparent, #000 ${size})` };
348
+ return { maskImage: `linear-gradient(${angle}, #000, #000 calc(100% - ${size}), transparent)` };
349
+ }),
350
+ isOverflowing: computed(() => {
351
+ arrivedState.top, arrivedState.bottom, arrivedState.left, arrivedState.right;
352
+ const el = toValue(element);
353
+ if (!el) return false;
354
+ return (toValue(options.orientation) ?? "vertical") === "horizontal" ? el.scrollWidth > el.clientWidth : el.scrollHeight > el.clientHeight;
355
+ }),
356
+ arrivedState
357
+ };
358
+ }
359
+ //#endregion
360
+ //#region virtual:nuxt:node_modules%2F.cache%2Fnuxt%2F.nuxt%2Fui%2Fscroll-area.ts
361
+ var virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Fui_2Fscroll_area_default = {
362
+ "slots": {
363
+ "root": "relative outline-primary/25 focus-visible:outline-3",
364
+ "viewport": "relative flex",
365
+ "item": ""
366
+ },
367
+ "variants": {
368
+ "orientation": {
369
+ "vertical": {
370
+ "root": "overflow-y-auto overflow-x-hidden",
371
+ "viewport": "flex-col",
372
+ "item": ""
373
+ },
374
+ "horizontal": {
375
+ "root": "overflow-x-auto overflow-y-hidden",
376
+ "viewport": "flex-row",
377
+ "item": ""
378
+ }
379
+ },
380
+ "externalScroll": { "true": { "root": "overflow-visible" } }
381
+ }
382
+ };
383
+ //#endregion
384
+ //#region node_modules/.pnpm/@nuxt+ui@4.10.0_e299f0a9b209424c2a6c150f5a1a8167/node_modules/@nuxt/ui/dist/runtime/components/ScrollArea.vue
385
+ var _sfc_main$1 = {
386
+ __name: "UScrollArea",
387
+ __ssrInlineRender: true,
388
+ props: {
389
+ as: {
390
+ type: null,
391
+ required: false
392
+ },
393
+ orientation: {
394
+ type: null,
395
+ required: false,
396
+ default: "vertical"
397
+ },
398
+ items: {
399
+ type: Array,
400
+ required: false
401
+ },
402
+ virtualize: {
403
+ type: [Boolean, Object],
404
+ required: false,
405
+ default: false
406
+ },
407
+ shadow: {
408
+ type: [Boolean, Object],
409
+ required: false,
410
+ default: false
411
+ },
412
+ class: {
413
+ type: null,
414
+ required: false
415
+ },
416
+ ui: {
417
+ type: Object,
418
+ required: false
419
+ }
420
+ },
421
+ emits: ["scroll"],
422
+ setup(__props, { expose: __expose, emit: __emit }) {
423
+ const _props = __props;
424
+ const emits = __emit;
425
+ const props = useComponentProps("scrollArea", _props);
426
+ const { dir } = useLocale();
427
+ const appConfig = useAppConfig();
428
+ const isExternalScroll = computed(() => typeof props.virtualize === "object" && !!props.virtualize.getScrollElement);
429
+ const ui = computed(() => tv({
430
+ extend: virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Fui_2Fscroll_area_default,
431
+ ...appConfig.ui?.scrollArea || {}
432
+ })({
433
+ orientation: props.orientation,
434
+ externalScroll: isExternalScroll.value
435
+ }));
436
+ const rootRef = useTemplateRef("rootRef");
437
+ const scrollShadowStyle = props.shadow ? useScrollShadow(computed(() => rootRef.value?.$el), {
438
+ orientation: () => props.orientation ?? "vertical",
439
+ size: typeof props.shadow === "object" ? props.shadow.size : void 0
440
+ }).style : void 0;
441
+ const isRtl = computed(() => dir.value === "rtl");
442
+ const isHorizontal = computed(() => props.orientation === "horizontal");
443
+ const isVertical = computed(() => !isHorizontal.value);
444
+ const getScrollElement = () => (isExternalScroll.value ? virtualizerProps.value.getScrollElement?.() : rootRef.value?.$el) ?? null;
445
+ const virtualizerProps = toRef(() => {
446
+ const options = typeof props.virtualize === "boolean" ? {} : props.virtualize;
447
+ return defu(options, {
448
+ estimateSize: 100,
449
+ overscan: 12,
450
+ gap: 0,
451
+ paddingStart: 0,
452
+ paddingEnd: 0,
453
+ scrollMargin: 0
454
+ });
455
+ });
456
+ const lanes = computed(() => {
457
+ const value = virtualizerProps.value.lanes;
458
+ return typeof value === "number" ? value : void 0;
459
+ });
460
+ const skipMeasurement = computed(() => {
461
+ return typeof props.virtualize === "object" && props.virtualize.skipMeasurement === true;
462
+ });
463
+ const virtualizer = !!props.virtualize && useVirtualizer({
464
+ ...virtualizerProps.value,
465
+ get overscan() {
466
+ return virtualizerProps.value.overscan;
467
+ },
468
+ get gap() {
469
+ return virtualizerProps.value.gap;
470
+ },
471
+ get paddingStart() {
472
+ return virtualizerProps.value.paddingStart;
473
+ },
474
+ get paddingEnd() {
475
+ return virtualizerProps.value.paddingEnd;
476
+ },
477
+ get scrollMargin() {
478
+ return virtualizerProps.value.scrollMargin;
479
+ },
480
+ get lanes() {
481
+ return lanes.value;
482
+ },
483
+ get isRtl() {
484
+ return isRtl.value;
485
+ },
486
+ get count() {
487
+ return props.items?.length || 0;
488
+ },
489
+ getScrollElement,
490
+ get horizontal() {
491
+ return isHorizontal.value;
492
+ },
493
+ estimateSize: (index) => {
494
+ const estimate = virtualizerProps.value.estimateSize;
495
+ return typeof estimate === "function" ? estimate(index) : estimate;
496
+ }
497
+ });
498
+ const virtualItems = computed(() => virtualizer ? virtualizer.value.getVirtualItems() : []);
499
+ const totalSize = computed(() => virtualizer ? virtualizer.value.getTotalSize() : 0);
500
+ const virtualViewportStyle = computed(() => ({
501
+ position: "relative",
502
+ inlineSize: isHorizontal.value ? `${totalSize.value}px` : "100%",
503
+ blockSize: isVertical.value ? `${totalSize.value}px` : "100%"
504
+ }));
505
+ function getVirtualItemStyle(virtualItem) {
506
+ const hasLanes = lanes.value !== void 0 && lanes.value > 1;
507
+ const lane = virtualItem.lane;
508
+ const gap = virtualizerProps.value.gap ?? 0;
509
+ const offset = virtualItem.start - virtualizerProps.value.scrollMargin;
510
+ const laneSize = hasLanes ? `calc((100% - ${(lanes.value - 1) * gap}px) / ${lanes.value})` : "100%";
511
+ const lanePosition = hasLanes && lane !== void 0 ? `calc(${lane} * ((100% - ${(lanes.value - 1) * gap}px) / ${lanes.value} + ${gap}px))` : 0;
512
+ return {
513
+ position: "absolute",
514
+ insetBlockStart: isHorizontal.value && hasLanes ? lanePosition : 0,
515
+ insetInlineStart: isVertical.value && hasLanes ? lanePosition : 0,
516
+ blockSize: isHorizontal.value ? hasLanes ? laneSize : "100%" : void 0,
517
+ inlineSize: isVertical.value ? hasLanes ? laneSize : "100%" : void 0,
518
+ transform: isHorizontal.value ? `translateX(${isRtl.value ? -offset : offset}px)` : `translateY(${offset}px)`
519
+ };
520
+ }
521
+ let resizeObserver = null;
522
+ let rafId = null;
523
+ watch(getScrollElement, (el) => {
524
+ resizeObserver?.disconnect();
525
+ resizeObserver = null;
526
+ if (!virtualizer || !el) return;
527
+ resizeObserver = new ResizeObserver(() => {
528
+ if (rafId !== null) return;
529
+ rafId = requestAnimationFrame(() => {
530
+ rafId = null;
531
+ virtualizer.value.measure();
532
+ });
533
+ });
534
+ resizeObserver.observe(el);
535
+ }, { immediate: true });
536
+ function measureElement(el) {
537
+ if (el && virtualizer && !skipMeasurement.value) {
538
+ const element = el instanceof Element ? el : el.$el;
539
+ virtualizer.value.measureElement(element);
540
+ }
541
+ }
542
+ watch(() => virtualizer ? virtualizer.value.isScrolling : false, (isScrolling) => emits("scroll", isScrolling));
543
+ function getItemKey(item, index) {
544
+ if (virtualizerProps.value.getItemKey) return virtualizerProps.value.getItemKey(index);
545
+ if (item && typeof item === "object" && "id" in item) return item.id;
546
+ return index;
547
+ }
548
+ __expose({
549
+ get $el() {
550
+ return rootRef.value?.$el;
551
+ },
552
+ virtualizer: virtualizer || void 0
553
+ });
554
+ return (_ctx, _push, _parent, _attrs) => {
555
+ _push(ssrRenderComponent(unref(Primitive), mergeProps({
556
+ ref_key: "rootRef",
557
+ ref: rootRef,
558
+ as: unref(props).as,
559
+ "data-slot": "root",
560
+ "data-orientation": unref(props).orientation,
561
+ class: ui.value.root({ class: [unref(props).ui?.root, unref(props).class] }),
562
+ style: unref(scrollShadowStyle)
563
+ }, _attrs), {
564
+ default: withCtx((_, _push, _parent, _scopeId) => {
565
+ if (_push) {
566
+ if (unref(virtualizer)) {
567
+ _push(`<div data-slot="viewport" class="${ssrRenderClass(ui.value.viewport({ class: unref(props).ui?.viewport }))}" style="${ssrRenderStyle(virtualViewportStyle.value)}"${_scopeId}><!--[-->`);
568
+ ssrRenderList(virtualItems.value, (virtualItem) => {
569
+ _push(`<div${ssrRenderAttr("data-index", virtualItem.index)} data-slot="item" class="${ssrRenderClass(ui.value.item({ class: unref(props).ui?.item }))}" style="${ssrRenderStyle(getVirtualItemStyle(virtualItem))}"${_scopeId}>`);
570
+ ssrRenderSlot(_ctx.$slots, "default", {
571
+ item: unref(props).items?.[virtualItem.index],
572
+ index: virtualItem.index,
573
+ virtualItem
574
+ }, null, _push, _parent, _scopeId);
575
+ _push(`</div>`);
576
+ });
577
+ _push(`<!--]--></div>`);
578
+ } else {
579
+ _push(`<div data-slot="viewport" class="${ssrRenderClass(ui.value.viewport({ class: unref(props).ui?.viewport }))}"${_scopeId}>`);
580
+ if (unref(props).items) {
581
+ _push(`<!--[-->`);
582
+ ssrRenderList(unref(props).items, (item, index) => {
583
+ _push(`<div data-slot="item" class="${ssrRenderClass(ui.value.item({ class: unref(props).ui?.item }))}"${_scopeId}>`);
584
+ ssrRenderSlot(_ctx.$slots, "default", {
585
+ item,
586
+ index
587
+ }, null, _push, _parent, _scopeId);
588
+ _push(`</div>`);
589
+ });
590
+ _push(`<!--]-->`);
591
+ } else ssrRenderSlot(_ctx.$slots, "default", {
592
+ item: {},
593
+ index: 0
594
+ }, null, _push, _parent, _scopeId);
595
+ _push(`</div>`);
596
+ }
597
+ } else return [unref(virtualizer) ? (openBlock(), createBlock("div", {
598
+ key: 0,
599
+ "data-slot": "viewport",
600
+ class: ui.value.viewport({ class: unref(props).ui?.viewport }),
601
+ style: virtualViewportStyle.value
602
+ }, [(openBlock(true), createBlock(Fragment, null, renderList(virtualItems.value, (virtualItem) => {
603
+ return openBlock(), createBlock("div", {
604
+ key: String(virtualItem.key),
605
+ ref_for: true,
606
+ ref: measureElement,
607
+ "data-index": virtualItem.index,
608
+ "data-slot": "item",
609
+ class: ui.value.item({ class: unref(props).ui?.item }),
610
+ style: getVirtualItemStyle(virtualItem)
611
+ }, [renderSlot(_ctx.$slots, "default", {
612
+ item: unref(props).items?.[virtualItem.index],
613
+ index: virtualItem.index,
614
+ virtualItem
615
+ })], 14, ["data-index"]);
616
+ }), 128))], 6)) : (openBlock(), createBlock("div", {
617
+ key: 1,
618
+ "data-slot": "viewport",
619
+ class: ui.value.viewport({ class: unref(props).ui?.viewport })
620
+ }, [unref(props).items ? (openBlock(true), createBlock(Fragment, { key: 0 }, renderList(unref(props).items, (item, index) => {
621
+ return openBlock(), createBlock("div", {
622
+ key: getItemKey(item, index),
623
+ "data-slot": "item",
624
+ class: ui.value.item({ class: unref(props).ui?.item })
625
+ }, [renderSlot(_ctx.$slots, "default", {
626
+ item,
627
+ index
628
+ })], 2);
629
+ }), 128)) : renderSlot(_ctx.$slots, "default", {
630
+ item: {},
631
+ index: 0
632
+ }, void 0, void 0, 1)], 2))];
633
+ }),
634
+ _: 3
635
+ }, _parent));
636
+ };
637
+ }
638
+ };
639
+ var _sfc_setup$1 = _sfc_main$1.setup;
640
+ _sfc_main$1.setup = (props, ctx) => {
641
+ const ssrContext = useSSRContext();
642
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("../node_modules/.pnpm/@nuxt+ui@4.10.0_e299f0a9b209424c2a6c150f5a1a8167/node_modules/@nuxt/ui/dist/runtime/components/ScrollArea.vue");
643
+ return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
644
+ };
645
+ //#endregion
646
+ //#region virtual:nuxt:node_modules%2F.cache%2Fnuxt%2F.nuxt%2Fui%2Falert.ts
647
+ var virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Fui_2Falert_default = {
648
+ "slots": {
649
+ "root": "relative overflow-hidden w-full rounded-lg p-4 flex gap-2.5",
650
+ "wrapper": "min-w-0 flex-1 flex flex-col",
651
+ "title": "text-sm font-medium",
652
+ "description": "text-sm opacity-90",
653
+ "icon": "shrink-0 size-5",
654
+ "avatar": "shrink-0",
655
+ "avatarSize": "2xl",
656
+ "actions": "flex flex-wrap gap-1.5 shrink-0",
657
+ "close": "p-0"
658
+ },
659
+ "variants": {
660
+ "color": {
661
+ "primary": "",
662
+ "secondary": "",
663
+ "success": "",
664
+ "info": "",
665
+ "warning": "",
666
+ "error": "",
667
+ "neutral": ""
668
+ },
669
+ "variant": {
670
+ "solid": "",
671
+ "outline": "",
672
+ "soft": "",
673
+ "subtle": ""
674
+ },
675
+ "orientation": {
676
+ "horizontal": {
677
+ "root": "items-center",
678
+ "actions": "items-center"
679
+ },
680
+ "vertical": {
681
+ "root": "items-start",
682
+ "actions": "items-start mt-2.5"
683
+ }
684
+ },
685
+ "title": { "true": { "description": "mt-1" } }
686
+ },
687
+ "compoundVariants": [
688
+ {
689
+ "color": "primary",
690
+ "variant": "solid",
691
+ "class": { "root": "bg-primary text-inverted" }
692
+ },
693
+ {
694
+ "color": "secondary",
695
+ "variant": "solid",
696
+ "class": { "root": "bg-secondary text-inverted" }
697
+ },
698
+ {
699
+ "color": "success",
700
+ "variant": "solid",
701
+ "class": { "root": "bg-success text-inverted" }
702
+ },
703
+ {
704
+ "color": "info",
705
+ "variant": "solid",
706
+ "class": { "root": "bg-info text-inverted" }
707
+ },
708
+ {
709
+ "color": "warning",
710
+ "variant": "solid",
711
+ "class": { "root": "bg-warning text-inverted" }
712
+ },
713
+ {
714
+ "color": "error",
715
+ "variant": "solid",
716
+ "class": { "root": "bg-error text-inverted" }
717
+ },
718
+ {
719
+ "color": "primary",
720
+ "variant": "outline",
721
+ "class": { "root": "text-primary ring ring-inset ring-primary/25" }
722
+ },
723
+ {
724
+ "color": "secondary",
725
+ "variant": "outline",
726
+ "class": { "root": "text-secondary ring ring-inset ring-secondary/25" }
727
+ },
728
+ {
729
+ "color": "success",
730
+ "variant": "outline",
731
+ "class": { "root": "text-success ring ring-inset ring-success/25" }
732
+ },
733
+ {
734
+ "color": "info",
735
+ "variant": "outline",
736
+ "class": { "root": "text-info ring ring-inset ring-info/25" }
737
+ },
738
+ {
739
+ "color": "warning",
740
+ "variant": "outline",
741
+ "class": { "root": "text-warning ring ring-inset ring-warning/25" }
742
+ },
743
+ {
744
+ "color": "error",
745
+ "variant": "outline",
746
+ "class": { "root": "text-error ring ring-inset ring-error/25" }
747
+ },
748
+ {
749
+ "color": "primary",
750
+ "variant": "soft",
751
+ "class": { "root": "bg-primary/10 text-primary" }
752
+ },
753
+ {
754
+ "color": "secondary",
755
+ "variant": "soft",
756
+ "class": { "root": "bg-secondary/10 text-secondary" }
757
+ },
758
+ {
759
+ "color": "success",
760
+ "variant": "soft",
761
+ "class": { "root": "bg-success/10 text-success" }
762
+ },
763
+ {
764
+ "color": "info",
765
+ "variant": "soft",
766
+ "class": { "root": "bg-info/10 text-info" }
767
+ },
768
+ {
769
+ "color": "warning",
770
+ "variant": "soft",
771
+ "class": { "root": "bg-warning/10 text-warning" }
772
+ },
773
+ {
774
+ "color": "error",
775
+ "variant": "soft",
776
+ "class": { "root": "bg-error/10 text-error" }
777
+ },
778
+ {
779
+ "color": "primary",
780
+ "variant": "subtle",
781
+ "class": { "root": "bg-primary/10 text-primary ring ring-inset ring-primary/25" }
782
+ },
783
+ {
784
+ "color": "secondary",
785
+ "variant": "subtle",
786
+ "class": { "root": "bg-secondary/10 text-secondary ring ring-inset ring-secondary/25" }
787
+ },
788
+ {
789
+ "color": "success",
790
+ "variant": "subtle",
791
+ "class": { "root": "bg-success/10 text-success ring ring-inset ring-success/25" }
792
+ },
793
+ {
794
+ "color": "info",
795
+ "variant": "subtle",
796
+ "class": { "root": "bg-info/10 text-info ring ring-inset ring-info/25" }
797
+ },
798
+ {
799
+ "color": "warning",
800
+ "variant": "subtle",
801
+ "class": { "root": "bg-warning/10 text-warning ring ring-inset ring-warning/25" }
802
+ },
803
+ {
804
+ "color": "error",
805
+ "variant": "subtle",
806
+ "class": { "root": "bg-error/10 text-error ring ring-inset ring-error/25" }
807
+ },
808
+ {
809
+ "color": "neutral",
810
+ "variant": "solid",
811
+ "class": { "root": "text-inverted bg-inverted" }
812
+ },
813
+ {
814
+ "color": "neutral",
815
+ "variant": "outline",
816
+ "class": { "root": "text-highlighted bg-default ring ring-inset ring-default" }
817
+ },
818
+ {
819
+ "color": "neutral",
820
+ "variant": "soft",
821
+ "class": { "root": "text-highlighted bg-elevated/50" }
822
+ },
823
+ {
824
+ "color": "neutral",
825
+ "variant": "subtle",
826
+ "class": { "root": "text-highlighted bg-elevated/50 ring ring-inset ring-accented" }
827
+ }
828
+ ],
829
+ "defaultVariants": {
830
+ "color": "primary",
831
+ "variant": "solid"
832
+ }
833
+ };
834
+ //#endregion
835
+ //#region node_modules/.pnpm/@nuxt+ui@4.10.0_e299f0a9b209424c2a6c150f5a1a8167/node_modules/@nuxt/ui/dist/runtime/components/Alert.vue
836
+ var _sfc_main = {
837
+ __name: "UAlert",
838
+ __ssrInlineRender: true,
839
+ props: {
840
+ as: {
841
+ type: null,
842
+ required: false
843
+ },
844
+ title: {
845
+ type: String,
846
+ required: false
847
+ },
848
+ description: {
849
+ type: String,
850
+ required: false
851
+ },
852
+ icon: {
853
+ type: null,
854
+ required: false
855
+ },
856
+ avatar: {
857
+ type: Object,
858
+ required: false
859
+ },
860
+ color: {
861
+ type: null,
862
+ required: false
863
+ },
864
+ variant: {
865
+ type: null,
866
+ required: false
867
+ },
868
+ orientation: {
869
+ type: null,
870
+ required: false,
871
+ default: "vertical"
872
+ },
873
+ actions: {
874
+ type: Array,
875
+ required: false
876
+ },
877
+ close: {
878
+ type: [Boolean, Object],
879
+ required: false
880
+ },
881
+ closeIcon: {
882
+ type: null,
883
+ required: false
884
+ },
885
+ class: {
886
+ type: null,
887
+ required: false
888
+ },
889
+ ui: {
890
+ type: Object,
891
+ required: false
892
+ }
893
+ },
894
+ emits: ["update:open"],
895
+ setup(__props, { emit: __emit }) {
896
+ const _props = __props;
897
+ const emits = __emit;
898
+ const slots = useSlots();
899
+ const props = useComponentProps("alert", _props);
900
+ const { t } = useLocale();
901
+ const appConfig = useAppConfig();
902
+ const ui = computed(() => tv({
903
+ extend: virtual_nuxt_node_modules_2F_cache_2Fnuxt_2F_nuxt_2Fui_2Falert_default,
904
+ ...appConfig.ui?.alert || {}
905
+ })({
906
+ color: props.color,
907
+ variant: props.variant,
908
+ orientation: props.orientation,
909
+ title: !!props.title || !!slots.title
910
+ }));
911
+ return (_ctx, _push, _parent, _attrs) => {
912
+ _push(ssrRenderComponent(unref(Primitive), mergeProps({
913
+ as: unref(props).as,
914
+ "data-orientation": unref(props).orientation,
915
+ "data-slot": "root",
916
+ class: ui.value.root({ class: [unref(props).ui?.root, unref(props).class] })
917
+ }, _attrs), {
918
+ default: withCtx((_, _push, _parent, _scopeId) => {
919
+ if (_push) {
920
+ ssrRenderSlot(_ctx.$slots, "leading", { ui: ui.value }, () => {
921
+ if (unref(props).avatar) _push(ssrRenderComponent(_sfc_main$3, mergeProps({ size: unref(props).ui?.avatarSize || ui.value.avatarSize() }, unref(props).avatar, {
922
+ "data-slot": "avatar",
923
+ class: ui.value.avatar({ class: unref(props).ui?.avatar })
924
+ }), null, _parent, _scopeId));
925
+ else if (unref(props).icon) _push(ssrRenderComponent(_sfc_main$5, {
926
+ name: unref(props).icon,
927
+ "data-slot": "icon",
928
+ class: ui.value.icon({ class: unref(props).ui?.icon })
929
+ }, null, _parent, _scopeId));
930
+ else _push(`<!---->`);
931
+ }, _push, _parent, _scopeId);
932
+ _push(`<div data-slot="wrapper" class="${ssrRenderClass(ui.value.wrapper({ class: unref(props).ui?.wrapper }))}"${_scopeId}>`);
933
+ if (unref(props).title || !!slots.title) {
934
+ _push(`<div data-slot="title" class="${ssrRenderClass(ui.value.title({ class: unref(props).ui?.title }))}"${_scopeId}>`);
935
+ ssrRenderSlot(_ctx.$slots, "title", {}, () => {
936
+ _push(`${ssrInterpolate(unref(props).title)}`);
937
+ }, _push, _parent, _scopeId);
938
+ _push(`</div>`);
939
+ } else _push(`<!---->`);
940
+ if (unref(props).description || !!slots.description) {
941
+ _push(`<div data-slot="description" class="${ssrRenderClass(ui.value.description({ class: unref(props).ui?.description }))}"${_scopeId}>`);
942
+ ssrRenderSlot(_ctx.$slots, "description", {}, () => {
943
+ _push(`${ssrInterpolate(unref(props).description)}`);
944
+ }, _push, _parent, _scopeId);
945
+ _push(`</div>`);
946
+ } else _push(`<!---->`);
947
+ if (unref(props).orientation === "vertical" && (unref(props).actions?.length || !!slots.actions)) {
948
+ _push(`<div data-slot="actions" class="${ssrRenderClass(ui.value.actions({ class: unref(props).ui?.actions }))}"${_scopeId}>`);
949
+ ssrRenderSlot(_ctx.$slots, "actions", {}, () => {
950
+ _push(`<!--[-->`);
951
+ ssrRenderList(unref(props).actions, (action, index) => {
952
+ _push(ssrRenderComponent(_sfc_main$2, mergeProps({
953
+ key: index,
954
+ size: "xs"
955
+ }, { ref_for: true }, action), null, _parent, _scopeId));
956
+ });
957
+ _push(`<!--]-->`);
958
+ }, _push, _parent, _scopeId);
959
+ _push(`</div>`);
960
+ } else _push(`<!---->`);
961
+ _push(`</div>`);
962
+ if (unref(props).orientation === "horizontal" && (unref(props).actions?.length || !!slots.actions) || unref(props).close) {
963
+ _push(`<div data-slot="actions" class="${ssrRenderClass(ui.value.actions({
964
+ class: unref(props).ui?.actions,
965
+ orientation: "horizontal"
966
+ }))}"${_scopeId}>`);
967
+ if (unref(props).orientation === "horizontal" && (unref(props).actions?.length || !!slots.actions)) ssrRenderSlot(_ctx.$slots, "actions", {}, () => {
968
+ _push(`<!--[-->`);
969
+ ssrRenderList(unref(props).actions, (action, index) => {
970
+ _push(ssrRenderComponent(_sfc_main$2, mergeProps({
971
+ key: index,
972
+ size: "xs"
973
+ }, { ref_for: true }, action), null, _parent, _scopeId));
974
+ });
975
+ _push(`<!--]-->`);
976
+ }, _push, _parent, _scopeId);
977
+ else _push(`<!---->`);
978
+ ssrRenderSlot(_ctx.$slots, "close", { ui: ui.value }, () => {
979
+ if (unref(props).close) _push(ssrRenderComponent(_sfc_main$2, mergeProps({
980
+ icon: unref(props).closeIcon || unref(appConfig).ui.icons.close,
981
+ color: "neutral",
982
+ variant: "link",
983
+ "aria-label": unref(t)("alert.close")
984
+ }, typeof unref(props).close === "object" ? unref(props).close : {}, {
985
+ "data-slot": "close",
986
+ class: ui.value.close({ class: unref(props).ui?.close }),
987
+ onClick: ($event) => emits("update:open", false)
988
+ }), null, _parent, _scopeId));
989
+ else _push(`<!---->`);
990
+ }, _push, _parent, _scopeId);
991
+ _push(`</div>`);
992
+ } else _push(`<!---->`);
993
+ } else return [
994
+ renderSlot(_ctx.$slots, "leading", { ui: ui.value }, () => [unref(props).avatar ? (openBlock(), createBlock(_sfc_main$3, mergeProps({
995
+ key: 0,
996
+ size: unref(props).ui?.avatarSize || ui.value.avatarSize()
997
+ }, unref(props).avatar, {
998
+ "data-slot": "avatar",
999
+ class: ui.value.avatar({ class: unref(props).ui?.avatar })
1000
+ }), null, 16, ["size", "class"])) : unref(props).icon ? (openBlock(), createBlock(_sfc_main$5, {
1001
+ key: 1,
1002
+ name: unref(props).icon,
1003
+ "data-slot": "icon",
1004
+ class: ui.value.icon({ class: unref(props).ui?.icon })
1005
+ }, null, 8, ["name", "class"])) : createCommentVNode("", true)]),
1006
+ createVNode("div", {
1007
+ "data-slot": "wrapper",
1008
+ class: ui.value.wrapper({ class: unref(props).ui?.wrapper })
1009
+ }, [
1010
+ unref(props).title || !!slots.title ? (openBlock(), createBlock("div", {
1011
+ key: 0,
1012
+ "data-slot": "title",
1013
+ class: ui.value.title({ class: unref(props).ui?.title })
1014
+ }, [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(unref(props).title), 1)])], 2)) : createCommentVNode("", true),
1015
+ unref(props).description || !!slots.description ? (openBlock(), createBlock("div", {
1016
+ key: 1,
1017
+ "data-slot": "description",
1018
+ class: ui.value.description({ class: unref(props).ui?.description })
1019
+ }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(unref(props).description), 1)])], 2)) : createCommentVNode("", true),
1020
+ unref(props).orientation === "vertical" && (unref(props).actions?.length || !!slots.actions) ? (openBlock(), createBlock("div", {
1021
+ key: 2,
1022
+ "data-slot": "actions",
1023
+ class: ui.value.actions({ class: unref(props).ui?.actions })
1024
+ }, [renderSlot(_ctx.$slots, "actions", {}, () => [(openBlock(true), createBlock(Fragment, null, renderList(unref(props).actions, (action, index) => {
1025
+ return openBlock(), createBlock(_sfc_main$2, mergeProps({
1026
+ key: index,
1027
+ size: "xs"
1028
+ }, { ref_for: true }, action), null, 16);
1029
+ }), 128))])], 2)) : createCommentVNode("", true)
1030
+ ], 2),
1031
+ unref(props).orientation === "horizontal" && (unref(props).actions?.length || !!slots.actions) || unref(props).close ? (openBlock(), createBlock("div", {
1032
+ key: 0,
1033
+ "data-slot": "actions",
1034
+ class: ui.value.actions({
1035
+ class: unref(props).ui?.actions,
1036
+ orientation: "horizontal"
1037
+ })
1038
+ }, [unref(props).orientation === "horizontal" && (unref(props).actions?.length || !!slots.actions) ? renderSlot(_ctx.$slots, "actions", {}, () => [(openBlock(true), createBlock(Fragment, null, renderList(unref(props).actions, (action, index) => {
1039
+ return openBlock(), createBlock(_sfc_main$2, mergeProps({
1040
+ key: index,
1041
+ size: "xs"
1042
+ }, { ref_for: true }, action), null, 16);
1043
+ }), 128))], void 0, 0) : createCommentVNode("", true), renderSlot(_ctx.$slots, "close", { ui: ui.value }, () => [unref(props).close ? (openBlock(), createBlock(_sfc_main$2, mergeProps({
1044
+ key: 0,
1045
+ icon: unref(props).closeIcon || unref(appConfig).ui.icons.close,
1046
+ color: "neutral",
1047
+ variant: "link",
1048
+ "aria-label": unref(t)("alert.close")
1049
+ }, typeof unref(props).close === "object" ? unref(props).close : {}, {
1050
+ "data-slot": "close",
1051
+ class: ui.value.close({ class: unref(props).ui?.close }),
1052
+ onClick: ($event) => emits("update:open", false)
1053
+ }), null, 16, [
1054
+ "icon",
1055
+ "aria-label",
1056
+ "class",
1057
+ "onClick"
1058
+ ])) : createCommentVNode("", true)])], 2)) : createCommentVNode("", true)
1059
+ ];
1060
+ }),
1061
+ _: 3
1062
+ }, _parent));
1063
+ };
1064
+ }
1065
+ };
1066
+ var _sfc_setup = _sfc_main.setup;
1067
+ _sfc_main.setup = (props, ctx) => {
1068
+ const ssrContext = useSSRContext();
1069
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("../node_modules/.pnpm/@nuxt+ui@4.10.0_e299f0a9b209424c2a6c150f5a1a8167/node_modules/@nuxt/ui/dist/runtime/components/Alert.vue");
1070
+ return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
1071
+ };
1072
+
1073
+ export { FileDropZone_default as F, VisuallyHiddenInput_default as V, _sfc_main$1 as _, _sfc_main as a, useTypeahead as b, useFormControl as c, useFocusGuards as d, useKbd as e, getNextMatch as g, useComposing as u };
1074
+ //# sourceMappingURL=Alert-DHVVSgdD.mjs.map