@robot-admin/naive-ui-components 0.16.0 → 0.17.1

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 (225) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +12 -9
  3. package/README_EN.md +12 -9
  4. package/dist/C_ActionBar.css +56 -48
  5. package/dist/C_ActionBar2.cjs +1 -1
  6. package/dist/C_ActionBar2.js +1 -1
  7. package/dist/C_AntV2.cjs +1 -1
  8. package/dist/C_AntV2.js +3 -3
  9. package/dist/C_Barcode.css +6 -6
  10. package/dist/C_Barcode2.cjs +1 -1
  11. package/dist/C_Barcode2.js +1 -1
  12. package/dist/C_Chat.css +269 -185
  13. package/dist/C_Chat2.cjs +1 -1
  14. package/dist/C_Chat2.js +1 -1
  15. package/dist/C_Code.css +26 -26
  16. package/dist/C_Code2.cjs +1 -1
  17. package/dist/C_Code2.js +1 -1
  18. package/dist/C_Draggable2.cjs +1 -1
  19. package/dist/C_Draggable2.js +1 -1
  20. package/dist/C_FilePreview.css +96 -57
  21. package/dist/C_FilePreview2.cjs +1 -1
  22. package/dist/C_FilePreview2.js +1 -1
  23. package/dist/C_Form.base.css +295 -277
  24. package/dist/C_Form.css +295 -277
  25. package/dist/C_Form.d.cts +2 -1
  26. package/dist/C_Form.d.ts +2 -1
  27. package/dist/C_FormModal.css +10 -10
  28. package/dist/C_FormModal2.cjs +1 -1
  29. package/dist/C_FormModal2.js +1 -1
  30. package/dist/C_FormSearch.css +67 -68
  31. package/dist/C_FormSearch.d.cts +2 -1
  32. package/dist/C_FormSearch.d.ts +2 -1
  33. package/dist/C_FormSearch2.cjs +1 -1
  34. package/dist/C_FormSearch2.js +1 -1
  35. package/dist/C_FullCalendar2.cjs +1 -1
  36. package/dist/C_FullCalendar2.js +1 -1
  37. package/dist/C_GlobalSearch.css +140 -118
  38. package/dist/C_GlobalSearch2.cjs +1 -1
  39. package/dist/C_GlobalSearch2.js +1 -1
  40. package/dist/C_ImageCropper.css +12 -10
  41. package/dist/C_ImageCropper2.cjs +1 -1
  42. package/dist/C_ImageCropper2.js +1 -1
  43. package/dist/C_Login.css +79 -79
  44. package/dist/C_Login2.cjs +1 -1
  45. package/dist/C_Login2.js +1 -1
  46. package/dist/C_Map.css +10 -10
  47. package/dist/C_Map2.cjs +1 -1
  48. package/dist/C_Map2.js +1 -1
  49. package/dist/C_OrgChart.css +28 -4
  50. package/dist/C_OrgChart2.cjs +1 -1
  51. package/dist/C_OrgChart2.js +1 -1
  52. package/dist/C_QRCode2.cjs +1 -1
  53. package/dist/C_QRCode2.js +1 -1
  54. package/dist/C_Signature.css +15 -15
  55. package/dist/C_Signature2.cjs +1 -1
  56. package/dist/C_Signature2.js +1 -1
  57. package/dist/C_SplitPane.cjs +1 -1
  58. package/dist/C_SplitPane.css +251 -109
  59. package/dist/C_SplitPane.js +1 -1
  60. package/dist/C_SplitPane2.cjs +1 -1
  61. package/dist/C_SplitPane2.js +1 -1
  62. package/dist/C_Table.base.css +491 -563
  63. package/dist/C_Table.cjs +1 -1
  64. package/dist/C_Table.css +491 -563
  65. package/dist/C_Table.d.cts +3 -2
  66. package/dist/C_Table.d.ts +4 -2
  67. package/dist/C_Table.js +1 -1
  68. package/dist/C_TagsView2.cjs +1 -1
  69. package/dist/C_TagsView2.js +1 -1
  70. package/dist/C_Transfer.css +93 -84
  71. package/dist/C_Transfer2.cjs +1 -1
  72. package/dist/C_Transfer2.js +1 -1
  73. package/dist/C_Tree.css +72 -125
  74. package/dist/C_Tree.d.cts +3 -2
  75. package/dist/C_Tree.d.ts +15 -2
  76. package/dist/C_Tree2.cjs +1 -1
  77. package/dist/C_Tree2.js +1 -1
  78. package/dist/C_Upload.css +5 -5
  79. package/dist/C_Upload2.cjs +1 -1
  80. package/dist/C_Upload2.js +1 -1
  81. package/dist/C_VideoPlayer2.cjs +4 -3
  82. package/dist/C_VideoPlayer2.js +4 -3
  83. package/dist/C_VtableGantt.css +29 -28
  84. package/dist/C_VtableGantt2.cjs +1 -1
  85. package/dist/C_VtableGantt2.js +1 -1
  86. package/dist/C_WaterFall.css +29 -29
  87. package/dist/C_WaterFall2.cjs +1 -1
  88. package/dist/C_WaterFall2.js +1 -1
  89. package/dist/C_WorkFlow2.cjs +1 -1
  90. package/dist/C_WorkFlow2.js +1 -1
  91. package/dist/Card.cjs +1 -1
  92. package/dist/Card.js +1 -1
  93. package/dist/Custom.cjs +1 -1
  94. package/dist/Custom.js +1 -1
  95. package/dist/Dynamic.cjs +1 -1
  96. package/dist/Dynamic.js +1 -1
  97. package/dist/Steps.cjs +1 -1
  98. package/dist/Steps.js +1 -1
  99. package/dist/Tabs.cjs +1 -1
  100. package/dist/Tabs.js +1 -1
  101. package/dist/constants.d.cts +2 -2
  102. package/dist/constants.d.ts +2 -2
  103. package/dist/constants2.d.cts +2 -2
  104. package/dist/constants2.d.ts +2 -2
  105. package/dist/constants3.d.cts +2 -2
  106. package/dist/constants3.d.ts +2 -2
  107. package/dist/constants4.d.cts +4 -4
  108. package/dist/constants4.d.ts +4 -4
  109. package/dist/constants5.d.cts +3 -7
  110. package/dist/constants5.d.ts +3 -7
  111. package/dist/data.d.cts +10 -10
  112. package/dist/data.d.ts +10 -10
  113. package/dist/density.cjs +1 -0
  114. package/dist/density.d.cts +15 -0
  115. package/dist/density.d.ts +15 -0
  116. package/dist/density.js +1 -0
  117. package/dist/helpers.cjs +1 -1
  118. package/dist/helpers.js +1 -1
  119. package/dist/index.cjs +1 -1
  120. package/dist/index.d.cts +3 -3
  121. package/dist/index.d.ts +5 -3
  122. package/dist/index.js +1 -1
  123. package/dist/index.vue.d.cts +5 -5
  124. package/dist/index.vue.d.ts +5 -5
  125. package/dist/index10.vue.d.cts +5 -5
  126. package/dist/index10.vue.d.ts +3 -3
  127. package/dist/index11.vue.d.cts +3 -3
  128. package/dist/index11.vue.d.ts +5 -5
  129. package/dist/index12.vue.d.cts +5 -5
  130. package/dist/index13.vue.d.ts +5 -5
  131. package/dist/index14.vue.d.cts +5 -5
  132. package/dist/index14.vue.d.ts +9 -9
  133. package/dist/index15.vue.d.cts +9 -9
  134. package/dist/index15.vue.d.ts +3 -3
  135. package/dist/index16.vue.d.cts +3 -3
  136. package/dist/index17.vue.d.ts +1 -1
  137. package/dist/index18.vue.d.cts +1 -1
  138. package/dist/index18.vue.d.ts +7 -7
  139. package/dist/index19.vue.d.cts +7 -7
  140. package/dist/index19.vue.d.ts +5 -5
  141. package/dist/index2.vue.d.cts +2 -2
  142. package/dist/index2.vue.d.ts +2 -2
  143. package/dist/index20.vue.d.cts +6 -2
  144. package/dist/index20.vue.d.ts +6 -2
  145. package/dist/index21.vue.d.cts +2 -2
  146. package/dist/index21.vue.d.ts +2 -2
  147. package/dist/index22.vue.d.cts +2 -2
  148. package/dist/index22.vue.d.ts +2 -2
  149. package/dist/index23.vue.d.cts +2 -2
  150. package/dist/index23.vue.d.ts +2 -2
  151. package/dist/index25.vue.d.cts +5 -5
  152. package/dist/index25.vue.d.ts +5 -5
  153. package/dist/index27.vue.d.cts +2 -2
  154. package/dist/index27.vue.d.ts +2 -2
  155. package/dist/index28.vue.d.cts +7 -3
  156. package/dist/index28.vue.d.ts +7 -3
  157. package/dist/index3.vue.d.cts +3 -3
  158. package/dist/index3.vue.d.ts +3 -3
  159. package/dist/index4.vue.d.cts +5 -5
  160. package/dist/index5.vue.d.ts +2 -2
  161. package/dist/index6.vue.d.cts +2 -2
  162. package/dist/index6.vue.d.ts +7 -4
  163. package/dist/index7.vue.d.cts +7 -4
  164. package/dist/index7.vue.d.ts +2 -2
  165. package/dist/index8.vue.d.cts +2 -2
  166. package/dist/index8.vue.d.ts +4 -6
  167. package/dist/index9.vue.d.cts +4 -6
  168. package/dist/index9.vue.d.ts +5 -5
  169. package/dist/mapUtils.d.cts +4 -4
  170. package/dist/mapUtils.d.ts +4 -4
  171. package/dist/presets.d.cts +4 -1
  172. package/dist/presets.d.ts +4 -1
  173. package/dist/style.css +1763 -1566
  174. package/dist/useCalendarEvents.d.cts +10 -9
  175. package/dist/useCalendarEvents.d.ts +10 -9
  176. package/dist/useCollapsePanel.d.cts +3 -3
  177. package/dist/useCollapsePanel.d.ts +3 -3
  178. package/dist/useCropperCore.d.cts +9 -9
  179. package/dist/useCropperCore.d.ts +9 -9
  180. package/dist/useDraggableLayout.d.cts +15 -13
  181. package/dist/useDraggableLayout.d.ts +15 -13
  182. package/dist/useDynamicFormState.d.cts +5 -2
  183. package/dist/useDynamicFormState.d.ts +5 -2
  184. package/dist/useEdgeInteraction.d.cts +3 -3
  185. package/dist/useEdgeInteraction.d.ts +3 -3
  186. package/dist/useFullscreen.d.cts +4 -0
  187. package/dist/useFullscreen.d.ts +4 -0
  188. package/dist/useGlobalSearch.d.cts +9 -4
  189. package/dist/useGlobalSearch.d.ts +9 -4
  190. package/dist/useInfiniteScroll.d.cts +4 -1
  191. package/dist/useInfiniteScroll.d.ts +4 -1
  192. package/dist/useQRCode.d.cts +3 -3
  193. package/dist/useQRCode.d.ts +3 -3
  194. package/dist/useSearchState.d.cts +8 -6
  195. package/dist/useSearchState.d.ts +8 -6
  196. package/dist/useSignatureHistory.d.cts +7 -7
  197. package/dist/useSignatureHistory.d.ts +7 -7
  198. package/dist/useSplitResize.d.cts +50 -61
  199. package/dist/useSplitResize.d.ts +50 -61
  200. package/dist/useTableQuery.cjs +3 -3
  201. package/dist/useTableQuery.d.cts +237 -13
  202. package/dist/useTableQuery.d.ts +237 -13
  203. package/dist/useTableQuery.js +3 -3
  204. package/dist/useTimeSelection.d.cts +2 -2
  205. package/dist/useTimeSelection.d.ts +2 -2
  206. package/dist/useWorkflowValidation.d.cts +3 -3
  207. package/dist/useWorkflowValidation.d.ts +3 -3
  208. package/dist/verification.d.cts +5 -5
  209. package/dist/verification.d.ts +5 -5
  210. package/docs/component-review-20261019.md +55 -0
  211. package/docs/guides/form-density.en.md +42 -0
  212. package/docs/guides/form-density.md +59 -0
  213. package/docs/guides/runtime-performance.md +38 -0
  214. package/docs/guides/split-pane.en.md +103 -0
  215. package/docs/guides/split-pane.md +126 -0
  216. package/docs/guides/table-density.md +87 -0
  217. package/docs/guides/transfer.md +11 -0
  218. package/docs/guides/tree.md +157 -0
  219. package/docs/guides/usage.en.md +2 -0
  220. package/docs/guides/usage.md +2 -0
  221. package/docs/runtime-review-20261019.md +41 -0
  222. package/docs/wl-ui-produce-coverage.md +62 -0
  223. package/package.json +4 -2
  224. package/dist/useTreeOperations.d.cts +0 -185
  225. package/dist/useTreeOperations.d.ts +0 -185
package/dist/C_Tree.css CHANGED
@@ -1,159 +1,106 @@
1
1
  :root{--c-primary: var(--primary-color, #2080f0);--c-primary-hover: var(--primary-color-hover, #4098fc);--c-primary-pressed: var(--primary-color-pressed, #1060c9);--c-success: var(--success-color, #18a058);--c-warning: var(--warning-color, #f0a020);--c-error: var(--error-color, #d03050);--c-info: var(--info-color, #2080f0);--c-bg-body: var(--body-color, #ffffff);--c-bg-card: var(--card-color, #ffffff);--c-bg-surface: var(--popover-color, #ffffff);--c-text-1: var(--text-color-1, #262626);--c-text-2: var(--text-color-2, #525252);--c-text-3: var(--text-color-3, #a3a3a3);--c-text-4: var(--text-color-4, #c0c0c0);--c-border: var(--border-color, #e5e7eb);--c-radius-sm: var(--border-radius-small, 4px);--c-radius: var(--border-radius, 6px);--c-transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);--c-transition-base: 0.3s cubic-bezier(0.4, 0, 0.2, 1);--c-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);--c-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);--c-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1)}
2
2
 
3
- .c-tree[data-v-57df315a] {
3
+ .c-tree[data-v-0673677b] {
4
+ --c-tree-padding: 12px;
5
+ --c-tree-gap: 10px;
4
6
  display: flex;
5
7
  flex-direction: column;
8
+ min-width: 0;
9
+ min-height: 0;
6
10
  height: 100%;
11
+ gap: var(--c-tree-gap);
12
+ }
13
+ .c-tree--compact[data-v-0673677b] {
14
+ --c-tree-padding: 8px;
15
+ --c-tree-gap: 8px;
16
+ }
17
+ .c-tree--comfortable[data-v-0673677b] {
18
+ --c-tree-padding: 16px;
19
+ --c-tree-gap: 14px;
7
20
  }
8
- .c-tree .c-tree-toolbar[data-v-57df315a] {
21
+ .c-tree .c-tree-toolbar[data-v-0673677b] {
9
22
  display: flex;
10
- justify-content: space-between;
23
+ flex-wrap: wrap;
11
24
  align-items: center;
12
- padding: 12px 16px;
13
- background: #fafafa;
14
- border-radius: 6px;
15
- margin-bottom: 12px;
25
+ gap: var(--c-tree-gap);
26
+ padding: var(--c-tree-padding);
27
+ background: var(--c-tree-surface);
28
+ border-radius: var(--c-tree-radius);
16
29
  flex-shrink: 0;
17
30
  }
18
- .c-tree .c-tree-toolbar .toolbar-left .search-input[data-v-57df315a] {
19
- width: 260px;
31
+ .c-tree .toolbar-left[data-v-0673677b] {
32
+ flex: 1 1 140px;
33
+ min-width: 0;
20
34
  }
21
- .c-tree .c-tree-toolbar .toolbar-right[data-v-57df315a] {
35
+ .c-tree .toolbar-left .search-input[data-v-0673677b] {
36
+ width: 100%;
37
+ }
38
+ .c-tree .toolbar-right[data-v-0673677b] {
22
39
  display: flex;
23
- gap: 8px;
40
+ flex-wrap: wrap;
41
+ align-items: center;
42
+ gap: 6px;
43
+ margin-left: auto;
24
44
  }
25
- .c-tree .c-tree-container[data-v-57df315a] {
26
- flex: 1;
45
+ .c-tree .c-tree-container[data-v-0673677b] {
46
+ flex: 1 1 auto;
47
+ min-width: 0;
27
48
  min-height: 0;
28
- border: 1px solid #e0e0e6;
29
- border-radius: 6px;
30
- padding: 12px;
31
- overflow-y: auto;
49
+ border: 1px solid var(--c-tree-border);
50
+ border-radius: var(--c-tree-radius);
51
+ padding: var(--c-tree-padding);
52
+ overflow: auto;
32
53
  scrollbar-width: thin;
33
- scrollbar-color: rgba(0, 0, 0, 0.12) transparent;
34
- }
35
- .c-tree .c-tree-container[data-v-57df315a]::-webkit-scrollbar {
36
- width: 6px;
37
- }
38
- .c-tree .c-tree-container[data-v-57df315a]::-webkit-scrollbar-thumb {
39
- background: rgba(0, 0, 0, 0.12);
40
- border-radius: 3px;
41
- transition: background 0.2s;
42
- }
43
- .c-tree .c-tree-container[data-v-57df315a]::-webkit-scrollbar-thumb:hover {
44
- background: rgba(0, 0, 0, 0.25);
45
54
  }
46
- .c-tree .c-tree-container[data-v-57df315a]::-webkit-scrollbar-track {
47
- background: transparent;
55
+ .c-tree--virtual .c-tree-container[data-v-0673677b] {
56
+ overflow: hidden;
48
57
  }
49
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node {
50
- margin-bottom: 4px;
51
- }
52
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node .n-tree-node-wrapper {
53
- padding: 2px 0;
54
- }
55
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node .n-tree-node-content {
56
- padding: 12px 8px;
57
- border-radius: 6px;
58
- transition: all 0.2s ease;
59
- align-items: center;
60
- min-height: 44px;
61
- }
62
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node .n-tree-node-content:hover {
63
- background-color: #f0f9ff;
64
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
65
- }
66
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node .n-tree-node-content:hover .tree-actions {
67
- opacity: 1 !important;
58
+ .c-tree--virtual .tree-instance[data-v-0673677b] {
59
+ height: 100%;
68
60
  }
69
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node .n-tree-node-content:focus-within .tree-actions {
70
- opacity: 1 !important;
61
+ .c-tree[data-v-0673677b] .n-tree-node-content,
62
+ .c-tree[data-v-0673677b] .n-tree-node-content__text {
63
+ min-width: 0;
71
64
  }
72
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node .n-tree-node-content .n-tree-node-content__prefix {
73
- margin-right: 0;
65
+ .c-tree[data-v-0673677b] .c-tree-node-label {
74
66
  display: flex;
75
67
  align-items: center;
68
+ min-width: 0;
69
+ width: 100%;
70
+ gap: 6px;
76
71
  }
77
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node .n-tree-node-content .n-tree-node-content__text {
78
- flex: 1;
79
- display: flex;
80
- align-items: center;
72
+ .c-tree[data-v-0673677b] .c-tree-node-title {
73
+ overflow: hidden;
74
+ white-space: nowrap;
75
+ text-overflow: ellipsis;
81
76
  }
82
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node .n-tree-node-content .n-tree-node-content__suffix {
83
- margin-left: auto;
84
- display: flex;
85
- align-items: center;
77
+ .c-tree[data-v-0673677b] .c-tree-node-status,
78
+ .c-tree[data-v-0673677b] .c-tree-node-icon {
79
+ flex-shrink: 0;
86
80
  }
87
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node .n-tree-node-switcher {
88
- width: 24px;
89
- height: 24px;
90
- display: flex;
81
+ .c-tree[data-v-0673677b] .tree-actions {
82
+ display: inline-flex;
91
83
  align-items: center;
92
- justify-content: center;
93
- margin-right: 8px;
94
- }
95
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node .n-tree-node-switcher .n-tree-node-switcher__icon {
96
- font-size: 14px;
97
- transition: transform 0.2s ease;
98
- }
99
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node.n-tree-node--selected .n-tree-node-content {
100
- background-color: #e6f3ff;
101
- border: 1px solid #1890ff;
102
- }
103
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node.n-tree-node--disabled .n-tree-node-content {
104
- opacity: 0.6;
105
- cursor: not-allowed;
106
- }
107
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree .n-tree-node-indent {
108
- width: 24px;
109
- }
110
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .n-tree-node:hover .tree-actions {
111
- opacity: 1 !important;
112
- }
113
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .tree-actions {
114
- opacity: 0;
115
- transition: opacity 0.2s ease;
116
- }
117
- .c-tree .c-tree-container .tree-instance[data-v-57df315a] .tree-actions:hover {
118
- opacity: 1 !important;
119
- }
120
- .c-tree[data-v-57df315a] .n-tree-node-content:hover .tree-actions,
121
- .c-tree[data-v-57df315a] .n-tree-node:hover .tree-actions {
122
- opacity: 1 !important;
123
- }
124
- .c-tree[data-v-57df315a] .tree-actions {
84
+ gap: 2px;
85
+ margin-left: 6px;
125
86
  opacity: 0;
126
- transition: opacity 0.2s ease-in-out;
87
+ transition: opacity 0.15s ease;
127
88
  }
128
-
129
- /* responsive */
130
- @media (max-width: 768px) {
131
- .c-tree .c-tree-toolbar[data-v-57df315a] {
132
- flex-direction: column;
133
- gap: 12px;
89
+ .c-tree[data-v-0673677b] .n-tree-node:hover .tree-actions,
90
+ .c-tree[data-v-0673677b] .n-tree-node:focus-within .tree-actions,
91
+ .c-tree[data-v-0673677b] .tree-actions:focus-within {
92
+ opacity: 1;
134
93
  }
135
- .c-tree .c-tree-toolbar .toolbar-left .search-input[data-v-57df315a] {
136
- width: 100%;
94
+ @media (hover: none), (max-width: 640px) {
95
+ .c-tree[data-v-0673677b] .tree-actions {
96
+ opacity: 1;
137
97
  }
138
- .c-tree .c-tree-toolbar .toolbar-right[data-v-57df315a] {
139
- width: 100%;
140
- justify-content: center;
141
98
  }
142
- .c-tree[data-v-57df315a] .tree-actions {
143
- opacity: 1 !important;
99
+ @media (prefers-reduced-motion: reduce) {
100
+ .c-tree[data-v-0673677b] .tree-actions {
101
+ transition: none;
144
102
  }
145
103
  }
146
104
 
147
105
  /* layer: default */
148
- .ml-2[data-v-57df315a]{margin-left:0.5rem;}
149
- .mr-3[data-v-57df315a]{margin-right:0.75rem;}
150
- .min-w-0[data-v-57df315a]{min-width:0;}
151
- .flex[data-v-57df315a]{display:flex;}
152
- .flex-1[data-v-57df315a]{flex:1 1 0%;}
153
- .flex-shrink-0[data-v-57df315a]{flex-shrink:0;}
154
- .items-center[data-v-57df315a]{align-items:center;}
155
- .py-1[data-v-57df315a]{padding-top:0.25rem;padding-bottom:0.25rem;}
156
- .text-sm[data-v-57df315a]{font-size:0.875rem;line-height:1.25rem;}
157
- .font-medium[data-v-57df315a]{font-weight:500;}
158
- .transition[data-v-57df315a]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
159
- .ease[data-v-57df315a]{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}
106
+ .filter[data-v-0673677b]{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);}
package/dist/C_Tree.d.cts CHANGED
@@ -1,2 +1,3 @@
1
- import { a as ButtonType, c as StatusConfig, d as TreeExpose, f as TreeMode, h as TreeProps, i as ActionConfig, l as StatusType, m as TreeOption, n as presetConfigs, o as DropInfo, p as TreeNodeData, r as _default, s as IconConfig, t as useTreeOperations, u as TreeEmits } from "./useTreeOperations.cjs";
2
- export { type ActionConfig, type ButtonType, _default as C_Tree, type DropInfo, type IconConfig, type StatusConfig, type StatusType, type TreeEmits, type TreeExpose, type TreeMode, type TreeNodeData, type TreeOption, type TreeProps, presetConfigs as treePresetConfigs, useTreeOperations };
1
+ import { C as TreeNodeData, D as TreeSlots, E as TreeRenderContext, O as TreeUpdateMeta, S as TreeNativeProps, T as TreeProps, _ as StatusType, b as TreeKey, d as _default, f as ActionConfig, g as StatusConfig, h as IconConfig, l as useTreeOperations, m as DropInfo, p as ButtonType, u as presetConfigs, v as TreeEmits, w as TreeOption, x as TreeMode, y as TreeExpose } from "./useTableQuery.cjs";
2
+ import { t as ComponentDensity } from "./density.cjs";
3
+ export { type ActionConfig, type ButtonType, _default as C_Tree, type ComponentDensity, type DropInfo, type IconConfig, type StatusConfig, type StatusType, type TreeEmits, type TreeExpose, type TreeKey, type TreeMode, type TreeNativeProps, type TreeNodeData, type TreeOption, type TreeProps, type TreeRenderContext, type TreeSlots, type TreeUpdateMeta, presetConfigs as treePresetConfigs, useTreeOperations };
package/dist/C_Tree.d.ts CHANGED
@@ -1,2 +1,15 @@
1
- import { a as ButtonType, c as StatusConfig, d as TreeExpose, f as TreeMode, h as TreeProps, i as ActionConfig, l as StatusType, m as TreeOption, n as presetConfigs, o as DropInfo, p as TreeNodeData, r as _default, s as IconConfig, t as useTreeOperations, u as TreeEmits } from "./useTreeOperations.js";
2
- export { type ActionConfig, type ButtonType, _default as C_Tree, type DropInfo, type IconConfig, type StatusConfig, type StatusType, type TreeEmits, type TreeExpose, type TreeMode, type TreeNodeData, type TreeOption, type TreeProps, presetConfigs as treePresetConfigs, useTreeOperations };
1
+ import "./presets.js";
2
+ import "./useEdgeInteraction.js";
3
+ import "./public.js";
4
+ import "./index4.vue.js";
5
+ import { C as TreeNodeData, D as TreeSlots, E as TreeRenderContext, O as TreeUpdateMeta, S as TreeNativeProps, T as TreeProps, _ as StatusType, b as TreeKey, d as _default, f as ActionConfig, g as StatusConfig, h as IconConfig, l as useTreeOperations, m as DropInfo, p as ButtonType, u as presetConfigs, v as TreeEmits, w as TreeOption, x as TreeMode, y as TreeExpose } from "./useTableQuery.js";
6
+ import "./useDraggableLayout.js";
7
+ import "./useDynamicFormState.js";
8
+ import { t as ComponentDensity } from "./density.js";
9
+ import "./index12.vue.js";
10
+ import "./useSearchState.js";
11
+ import "./mapUtils.js";
12
+ import "./index19.vue.js";
13
+ import "./constants5.js";
14
+ import "./index26.vue.js";
15
+ export { type ActionConfig, type ButtonType, _default as C_Tree, type ComponentDensity, type DropInfo, type IconConfig, type StatusConfig, type StatusType, type TreeEmits, type TreeExpose, type TreeKey, type TreeMode, type TreeNativeProps, type TreeNodeData, type TreeOption, type TreeProps, type TreeRenderContext, type TreeSlots, type TreeUpdateMeta, presetConfigs as treePresetConfigs, useTreeOperations };
package/dist/C_Tree2.cjs CHANGED
@@ -1 +1 @@
1
- require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={menu:{draggable:!0,showLine:!0,iconConfig:{typeMap:{directory:`mdi:folder`,menu:`mdi:file-document`,button:`mdi:button-cursor`}},actions:[{key:`add`,text:`新增子菜单`,icon:`mdi:plus`,type:`primary`},{key:`edit`,text:`编辑`,icon:`mdi:pencil`,type:`info`},{key:`delete`,text:`删除`,icon:`mdi:delete`,type:`error`,confirm:`确认删除该菜单吗?`}]},file:{draggable:!1,showLine:!1,iconConfig:{typeMap:{folder:`mdi:folder`,file:`mdi:file-document`,image:`mdi:file-image`,video:`mdi:file-video`,audio:`mdi:file-music`}},actions:[{key:`open`,text:`打开`,icon:`mdi:folder-open`,type:`primary`},{key:`rename`,text:`重命名`,icon:`mdi:rename-box`,type:`info`},{key:`delete`,text:`删除`,icon:`mdi:delete`,type:`error`,confirm:`确认删除该文件吗?`}]},org:{draggable:!1,showLine:!0,iconConfig:{typeMap:{department:`mdi:domain`,user:`mdi:account`,manager:`mdi:account-tie`}},actions:[{key:`add`,text:`新增下级`,icon:`mdi:plus`,type:`primary`},{key:`edit`,text:`编辑`,icon:`mdi:pencil`,type:`info`}]},custom:{}};function a(e,t,n){let r=new Set,i=new WeakSet,a=[...e].reverse();for(;a.length;){let e=a.pop();if(i.has(e))continue;i.add(e);let o=e[n];if(!Array.isArray(o)||o.length===0)continue;let s=e[t];(typeof s==`string`||typeof s==`number`)&&r.add(s),a.push(...o.slice().reverse())}return[...r]}function o(e,t,n,r){let i=new WeakSet,a=[...e].reverse();for(;a.length;){let e=a.pop();if(i.has(e))continue;if(i.add(e),e[n]===t)return e;let o=e[r];Array.isArray(o)&&a.push(...o.slice().reverse())}return null}function s(t,s){let c=(0,n.ref)(``),l=(0,n.ref)(t.defaultExpandAll?a(t.data,t.keyField??`id`,t.childrenField??`children`):[...t.defaultExpandedKeys??[]]),u=(0,n.ref)([...t.defaultSelectedKeys??[]]),d=(0,n.computed)(()=>t.keyField??`id`),f=(0,n.computed)(()=>t.labelField??`name`),p=(0,n.computed)(()=>t.childrenField??`children`),m=(0,n.computed)(()=>t.iconField??`icon`),h=(0,n.computed)(()=>a(t.data,d.value,p.value)),g=(0,n.computed)(()=>{let e=h.value,t=new Set(l.value);return e.length>0&&e.every(e=>t.has(e))}),_=(0,n.computed)(()=>{let e=i[t.mode??`custom`]||{};return{...e,...t,iconConfig:{...e.iconConfig,...t.iconConfig},actions:t.actions?.length?t.actions:e.actions||[]}}),v=(0,n.computed)(()=>t.data),y=(0,n.computed)(()=>t.searchPattern||c.value),b=(0,n.computed)(()=>u.value.length===0?null:o(t.data,u.value[0],d.value,p.value)),x=e=>{let t=_.value.iconConfig;return e[m.value]?e[m.value]:e.type&&t.typeMap?.[e.type]?t.typeMap[e.type]:t.default||`mdi:circle-outline`},S=e=>{let t=_.value.iconConfig;return e.type&&t.colorMap?.[e.type]?t.colorMap[e.type]:`currentColor`},C=({option:t})=>{let r=t;return(0,n.h)(e.t,{name:x(r),size:18,color:S(r),class:`mr-3 flex-shrink-0`})},w=({option:e})=>{let i=e,a=t.statusConfigs?.map(e=>{let t=i[e.field],a=e.values[t];return a?.text?(0,n.h)(r.NTag,{type:a.type,size:`small`,class:`ml-2`,style:{fontSize:`12px`}},{default:()=>a.text}):null}).filter(Boolean)||[];return(0,n.h)(`div`,{class:`flex items-center flex-1 min-w-0 py-1`,style:{lineHeight:`1.5`}},[(0,n.h)(`span`,{class:`mr-3 font-medium text-sm`},i[f.value]),...a])},T=({option:t})=>{let i=t,a=(_.value.actions||[]).filter(e=>!e.show||e.show(i)).map(t=>{let a={size:`tiny`,type:t.type||`default`,secondary:!0,"aria-label":t.text||t.key,style:{padding:`4px 6px`,minWidth:`24px`,height:`24px`},onClick:e=>{e.stopPropagation(),A(t.key,i)}},o=(0,n.h)(e.t,{name:t.icon,size:12,title:t.text});return t.confirm?(0,n.h)(r.NPopconfirm,{onPositiveClick:()=>A(t.key,i)},{trigger:()=>(0,n.h)(r.NButton,{...a,onClick:e=>e.stopPropagation()},{icon:()=>o}),default:()=>t.confirm}):(0,n.h)(r.NButton,a,{icon:()=>o})});return(0,n.h)(`div`,{class:`tree-actions`,style:{display:`flex`,alignItems:`center`,marginLeft:`8px`,opacity:`0`,transition:`opacity 0.2s ease`}},[(0,n.h)(r.NSpace,{size:4},{default:()=>a})])},E=()=>{l.value=g.value?[]:h.value},D=e=>{l.value=e},O=e=>{u.value=e,s(`node-select`,b.value,e)},k=e=>s(`node-drop`,e),A=(e,t)=>{e===`add`?s(`add`,t):s(`node-action`,e,t)};return{internalSearchPattern:c,expandedKeys:l,selectedKeys:u,isAllExpanded:g,treeData:v,currentSearchPattern:y,renderPrefix:C,renderLabel:w,renderSuffix:T,toggleExpandAll:E,handleExpandedKeysChange:D,handleSelectedKeysChange:O,handleDrop:k,handleAdd:()=>s(`add`),handleRefresh:()=>s(`refresh`),expose:{expandAll:()=>{l.value=h.value},collapseAll:()=>{l.value=[]},selectNode:e=>{u.value=[e]},getSelectedNode:()=>b.value,expandedKeys:l,selectedKeys:u}}}const c={class:`c-tree`},l={key:0,class:`c-tree-toolbar`},u={class:`toolbar-left`},d={class:`toolbar-right`},f={class:`c-tree-container`},p=(0,n.defineComponent)({name:`C_Tree`,__name:`index`,props:{data:{},mode:{default:`custom`},keyField:{default:`id`},labelField:{default:`name`},childrenField:{default:`children`},searchPattern:{default:``},searchable:{type:Boolean,default:!0},searchPlaceholder:{default:`搜索...`},draggable:{type:Boolean,default:!1},showLine:{type:Boolean,default:!0},showToolbar:{type:Boolean,default:!0},addable:{type:Boolean,default:!0},addText:{default:`新增`},refreshable:{type:Boolean,default:!0},iconField:{default:`icon`},iconConfig:{default:()=>({default:`mdi:circle-outline`,typeMap:{},colorMap:{}})},statusConfigs:{default:()=>[]},actions:{default:()=>[]},defaultExpandAll:{type:Boolean,default:!1},defaultExpandedKeys:{default:()=>[]},defaultSelectedKeys:{default:()=>[]}},emits:[`node-select`,`node-action`,`node-drop`,`add`,`refresh`],setup(t,{expose:i,emit:a}){let{internalSearchPattern:o,expandedKeys:p,selectedKeys:m,isAllExpanded:h,treeData:g,currentSearchPattern:_,renderPrefix:v,renderLabel:y,renderSuffix:b,toggleExpandAll:x,handleExpandedKeysChange:S,handleSelectedKeysChange:C,handleDrop:w,handleAdd:T,handleRefresh:E,expose:D}=s(t,a);return i(D),(i,a)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,c,[t.showToolbar?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,l,[(0,n.createElementVNode)(`div`,u,[t.searchable?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NInput),{key:0,value:(0,n.unref)(o),"onUpdate:value":a[0]||=e=>(0,n.isRef)(o)?o.value=e:null,placeholder:t.searchPlaceholder,"aria-label":`搜索树节点`,clearable:``,class:`search-input`},{prefix:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:magnify`,size:16})]),_:1},8,[`value`,`placeholder`])):(0,n.createCommentVNode)(`v-if`,!0)]),(0,n.createElementVNode)(`div`,d,[(0,n.renderSlot)(i.$slots,`toolbar-actions`,{},()=>[t.addable?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NButton),{key:0,type:`primary`,onClick:a[1]||=e=>(0,n.unref)(T)()},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:plus`,size:16})]),default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` `+(0,n.toDisplayString)(t.addText),1)]),_:1})):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createVNode)((0,n.unref)(r.NButton),{onClick:(0,n.unref)(x)},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:file-tree`,size:16})]),default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(h)?`收起全部`:`展开全部`),1)]),_:1},8,[`onClick`]),t.refreshable?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NButton),{key:1,onClick:(0,n.unref)(E)},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:refresh`,size:16})]),default:(0,n.withCtx)(()=>[a[2]||=(0,n.createTextVNode)(` 刷新 `,-1)]),_:1},8,[`onClick`])):(0,n.createCommentVNode)(`v-if`,!0)],!0)])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createElementVNode)(`div`,f,[(0,n.createVNode)((0,n.unref)(r.NTree),{data:(0,n.unref)(g),pattern:(0,n.unref)(_),"expanded-keys":(0,n.unref)(p),"selected-keys":(0,n.unref)(m),draggable:t.draggable,"show-line":t.showLine,"render-prefix":(0,n.unref)(v),"render-suffix":(0,n.unref)(b),"render-label":(0,n.unref)(y),"key-field":t.keyField,"label-field":t.labelField,"children-field":t.childrenField,"onUpdate:expandedKeys":(0,n.unref)(S),"onUpdate:selectedKeys":(0,n.unref)(C),onDrop:(0,n.unref)(w),class:`tree-instance`},null,8,[`data`,`pattern`,`expanded-keys`,`selected-keys`,`draggable`,`show-line`,`render-prefix`,`render-suffix`,`render-label`,`key-field`,`label-field`,`children-field`,`onUpdate:expandedKeys`,`onUpdate:selectedKeys`,`onDrop`])])]))}});var m=t.t(p,[[`__scopeId`,`data-v-57df315a`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return m}});
1
+ require(`./chunk.cjs`);const e=require(`./density.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`);const a={menu:{draggable:!0,showLine:!0,iconConfig:{typeMap:{directory:`mdi:folder`,menu:`mdi:file-document`,button:`mdi:button-cursor`}},actions:[{key:`add`,text:`新增子菜单`,icon:`mdi:plus`,type:`primary`},{key:`edit`,text:`编辑`,icon:`mdi:pencil`,type:`info`},{key:`delete`,text:`删除`,icon:`mdi:delete`,type:`error`,confirm:`确认删除该菜单吗?`}]},file:{draggable:!1,showLine:!1,iconConfig:{typeMap:{folder:`mdi:folder`,file:`mdi:file-document`,image:`mdi:file-image`,video:`mdi:file-video`,audio:`mdi:file-music`}},actions:[{key:`open`,text:`打开`,icon:`mdi:folder-open`,type:`primary`},{key:`rename`,text:`重命名`,icon:`mdi:rename-box`,type:`info`},{key:`delete`,text:`删除`,icon:`mdi:delete`,type:`error`,confirm:`确认删除该文件吗?`}]},org:{draggable:!1,showLine:!0,iconConfig:{typeMap:{department:`mdi:domain`,user:`mdi:account`,manager:`mdi:account-tie`}},actions:[{key:`add`,text:`新增下级`,icon:`mdi:plus`,type:`primary`},{key:`edit`,text:`编辑`,icon:`mdi:pencil`,type:`info`}]},custom:{}},o=e=>typeof e==`string`||typeof e==`number`,s=e=>!!e&&typeof e==`object`;function c(e,t,n,r){let i=new Map,a=new Set,c=new WeakSet,l=[],u=e=>{for(let t=e.length-1;t>=0;t--)l.push(e[t])};for(u(e);l.length;){let e=l.pop();if(!s(e)||c.has(e))continue;c.add(e);let d=e[t],f=o(d);f&&!i.has(d)&&i.set(d,e);let p=r?r(e):e[n];Array.isArray(p)&&p.length&&(f&&a.add(d),u(p))}return{nodes:i,expandableKeys:[...a]}}function l(n,o,s={}){let l=(0,r.computed)(()=>n.treeProps??{}),u=(0,r.computed)(()=>a[n.mode??`custom`]),d=(0,r.computed)(()=>n.draggable??l.value.draggable??u.value.draggable??!1),f=(0,r.computed)(()=>n.showLine??l.value.showLine??u.value.showLine??!0),p=(0,r.computed)(()=>({...u.value,...n,draggable:d.value,showLine:f.value,iconConfig:{default:`mdi:circle-outline`,...u.value.iconConfig,...n.iconConfig,typeMap:{...u.value.iconConfig?.typeMap,...n.iconConfig?.typeMap},colorMap:{...u.value.iconConfig?.colorMap,...n.iconConfig?.colorMap}},actions:n.actions??u.value.actions??[]})),m=(0,r.computed)(()=>n.keyField??l.value.keyField??`id`),h=(0,r.computed)(()=>n.labelField??l.value.labelField??`name`),g=(0,r.computed)(()=>n.childrenField??l.value.childrenField??`children`),_=(0,r.computed)(()=>c(n.data,m.value,g.value,l.value.getChildren)),v=()=>n.defaultExpandAll??l.value.defaultExpandAll??!1,y=(0,r.ref)(v()),b=e=>{let t=`default${e}Keys`;return[...n[t]??l.value[t]??[]]},x=(0,r.ref)(v()?_.value.expandableKeys:b(`Expanded`)),S=(0,r.ref)(b(`Selected`)),C=(0,r.ref)(b(`Checked`)),w=(0,r.computed)({get:()=>n.expandedKeys??l.value.expandedKeys??x.value,set:e=>M(e)}),T=(0,r.computed)({get:()=>n.selectedKeys??l.value.selectedKeys??S.value,set:e=>N(e)}),E=(0,r.computed)({get:()=>n.checkedKeys??l.value.checkedKeys??C.value,set:e=>P(e)}),D=(0,r.ref)(``),O=(0,r.computed)({get:()=>n.searchPattern??l.value.pattern??D.value,set:e=>{D.value=e,o(`update:searchPattern`,e)}}),k=(0,r.computed)(()=>{let e=_.value.expandableKeys,t=new Set(w.value);return e.length>0&&e.every(e=>t.has(e))});(0,r.watch)(()=>_.value.expandableKeys,e=>{y.value&&(x.value=[...e])}),(0,r.watch)(v,e=>{y.value=e,e&&(x.value=[..._.value.expandableKeys])});for(let[e,t]of[[`Expanded`,x],[`Selected`,S],[`Checked`,C]]){let i=`default${e}Keys`;(0,r.watch)(()=>n[i]??l.value[i],n=>{l.value.watchProps?.includes(i)&&(t.value=e===`Expanded`&&v()?[..._.value.expandableKeys]:[...n??[]])})}let A=e=>e.map(e=>_.value.nodes.get(e)??null),j=(e,t)=>{let n=l.value[e],r=Array.isArray(n)?n:[n];for(let e of r)typeof e==`function`&&e(...t)},M=(e,t=A(e),n={node:null,action:`expand`})=>{n.action!==`filter`&&(y.value=!1),x.value=[...e],o(`update:expandedKeys`,e,t,n),j(`onUpdateExpandedKeys`,[e,t,n]),j(`onUpdate:expandedKeys`,[e,t,n])},N=(e,t=A(e),n={node:t[0]??null,action:e.length?`select`:`unselect`})=>{S.value=[...e],o(`update:selectedKeys`,e,t,n),o(`node-select`,t[0]??null,e),j(`onUpdateSelectedKeys`,[e,t,n]),j(`onUpdate:selectedKeys`,[e,t,n])},P=(e,t=A(e),n={node:null,action:e.length?`check`:`uncheck`})=>{C.value=[...e],o(`update:checkedKeys`,e,t,n),j(`onUpdateCheckedKeys`,[e,t,n]),j(`onUpdate:checkedKeys`,[e,t,n])},F=(0,r.computed)(()=>_.value.nodes.get(T.value[0])??null),I=e=>{if(s.prefix)return s.prefix(e);if(l.value.renderPrefix)return l.value.renderPrefix(e);if(typeof e.option.prefix==`function`)return e.option.prefix();let i=e.option,a=p.value.iconConfig,o=typeof i.type==`string`?i.type:``,c=i[n.iconField??`icon`];return(0,r.h)(t.t,{name:typeof c==`string`?c:a.typeMap[o]??a.default,size:16,color:a.colorMap[o]??`currentColor`,class:`c-tree-node-icon`})},L=e=>{if(s.label)return s.label(e);if(l.value.renderLabel)return l.value.renderLabel(e);let t=String(e.option[h.value]??``);return(0,r.h)(`span`,{class:`c-tree-node-label`},[(0,r.h)(`span`,{class:`c-tree-node-title`,title:t},t),...(n.statusConfigs??[]).flatMap(t=>{let n=e.option[t.field],a=typeof n==`number`||typeof n==`string`?t.values[n]:void 0;return a?.text?[(0,r.h)(i.NTag,{type:a.type,size:`small`,class:`c-tree-node-status`},{default:()=>a.text})]:[]})])},R=(e,t)=>{e===`add`?o(`add`,t):o(`node-action`,e,t)},z=e=>{if(s.suffix)return s.suffix(e);if(l.value.renderSuffix)return l.value.renderSuffix(e);if(typeof e.option.suffix==`function`)return e.option.suffix();let n=e.option,a=p.value.actions.filter(e=>!e.show||e.show(n));return a.length?(0,r.h)(`span`,{class:`tree-actions`,onClick:e=>e.stopPropagation()},a.map(e=>{let a=a=>(0,r.h)(i.NButton,{size:`tiny`,type:e.type??`default`,quaternary:!0,disabled:!!(l.value.disabled||n[l.value.disabledField??`disabled`]),"aria-label":e.text||e.key,title:e.text,onClick:t=>{t.stopPropagation(),a||R(e.key,n)}},{icon:()=>(0,r.h)(t.t,{name:e.icon,size:14})});return e.confirm?(0,r.h)(i.NPopconfirm,{onPositiveClick:()=>R(e.key,n)},{trigger:()=>a(!0),default:()=>e.confirm}):a(!1)})):null},B=!0;(0,r.getCurrentScope)()&&(0,r.onScopeDispose)(()=>{B=!1});let V=(0,r.computed)(()=>{let e=l.value.onLoad;if(e)return async t=>{try{return await e(t)}catch(e){let n=t[m.value],i=typeof n==`string`||typeof n==`number`?_.value.nodes.get(n):void 0;return B&&i&&(0,r.toRaw)(i)===(0,r.toRaw)(t)&&o(`load-error`,e,t),!1}}}),H=(0,r.computed)(()=>{if(!n.data.length)return!1;let e=O.value;if(!l.value.virtualScroll||!e||l.value.showIrrelevantNodes!==!1)return!0;let t=e.toLowerCase(),r=l.value.filter??((e,n)=>{let r=n[h.value];return typeof r==`string`&&r.toLowerCase().includes(t)});for(let t of _.value.nodes.values())if(r(e,t))return!0;return!1}),U=(0,r.shallowRef)(),W=(0,r.computed)(()=>e.t(n.density)),G=(0,r.computed)(()=>({...l.value,data:n.data,virtualScroll:!!(l.value.virtualScroll&&H.value),keyField:m.value,labelField:h.value,childrenField:g.value,draggable:p.value.draggable,showLine:p.value.showLine,blockLine:l.value.blockLine??!0,blockNode:l.value.blockNode??!0,pattern:O.value,expandedKeys:w.value,selectedKeys:T.value,checkedKeys:E.value,renderPrefix:I,renderLabel:L,renderSuffix:z,themeOverrides:{nodeHeight:n.density===`compact`?`28px`:n.density===`comfortable`?`40px`:`34px`,nodeWrapperPadding:`0`,...l.value.themeOverrides},onLoad:V.value,onUpdateExpandedKeys:void 0,onUpdateSelectedKeys:void 0,onUpdateCheckedKeys:void 0,"onUpdate:expandedKeys":M,"onUpdate:selectedKeys":N,"onUpdate:checkedKeys":P,onDrop:e=>{o(`node-drop`,e),j(`onDrop`,[e])}})),K=()=>k.value?J():q(),q=()=>{M([..._.value.expandableKeys]),y.value=!0},J=()=>M([],[],{node:null,action:`collapse`}),Y=()=>o(`add`),X=()=>o(`refresh`),Z={expandAll:q,collapseAll:J,selectNode:e=>N([e]),clearSelection:()=>N([]),setCheckedKeys:e=>P([...e]),clearChecked:()=>P([]),getSelectedNode:()=>F.value,getCheckedData:()=>U.value?.getCheckedData()??{keys:[...E.value],options:A(E.value)},getIndeterminateData:()=>U.value?.getIndeterminateData()??{keys:[],options:[]},scrollTo:(...e)=>{let t=U.value?.scrollTo;t?.(...e)},expandedKeys:w,selectedKeys:T,checkedKeys:E};return{internalSearchPattern:D,expandedKeys:w,selectedKeys:T,checkedKeys:E,isAllExpanded:k,treeData:(0,r.computed)(()=>n.data),currentSearchPattern:O,renderPrefix:I,renderLabel:L,renderSuffix:z,treeBindings:G,treeRef:U,density:W,toggleExpandAll:K,handleExpandedKeysChange:M,handleSelectedKeysChange:N,handleCheckedKeysChange:P,handleDrop:e=>o(`node-drop`,e),handleAdd:Y,handleRefresh:X,expose:Z}}const u={key:0,class:`c-tree-toolbar`},d={class:`toolbar-left`},f={class:`toolbar-right`},p={class:`c-tree-container`},m=(0,r.defineComponent)({name:`C_Tree`,__name:`index`,props:{data:{},mode:{default:`custom`},treeProps:{},density:{default:`default`},keyField:{},labelField:{},childrenField:{},searchPattern:{},searchable:{type:Boolean,default:!0},searchPlaceholder:{default:`搜索...`},draggable:{type:Boolean,default:void 0},showLine:{type:Boolean,default:void 0},showToolbar:{type:Boolean,default:!0},addable:{type:Boolean,default:!0},addText:{default:`新增`},refreshable:{type:Boolean,default:!0},iconField:{},iconConfig:{},statusConfigs:{},actions:{},defaultExpandAll:{type:Boolean,default:void 0},defaultExpandedKeys:{},defaultSelectedKeys:{},defaultCheckedKeys:{},expandedKeys:{},selectedKeys:{},checkedKeys:{}},emits:[`update:searchPattern`,`update:expandedKeys`,`update:selectedKeys`,`update:checkedKeys`,`node-select`,`node-action`,`node-drop`,`load-error`,`add`,`refresh`],setup(e,{expose:n,emit:a}){let o=e,s=a,c=(0,r.useSlots)(),m=(0,i.useThemeVars)(),h=(0,r.computed)(()=>({"--c-tree-border":m.value.borderColor,"--c-tree-surface":m.value.actionColor,"--c-tree-radius":m.value.borderRadius})),{currentSearchPattern:g,isAllExpanded:_,treeBindings:v,treeRef:y,density:b,toggleExpandAll:x,handleAdd:S,handleRefresh:C,expose:w}=l(o,s,c);return n(w),(n,a)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{class:(0,r.normalizeClass)([`c-tree`,[`c-tree--${(0,r.unref)(b).density}`,{"c-tree--virtual":(0,r.unref)(v).virtualScroll}]]),style:(0,r.normalizeStyle)(h.value)},[e.showToolbar?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,u,[(0,r.createElementVNode)(`div`,d,[e.searchable?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NInput),{key:0,value:(0,r.unref)(g),"onUpdate:value":a[0]||=e=>(0,r.isRef)(g)?g.value=e:null,size:(0,r.unref)(b).size,placeholder:e.searchPlaceholder,"input-props":{"aria-label":`搜索树节点`},clearable:``,class:`search-input`},{prefix:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:magnify`,size:16})]),_:1},8,[`value`,`size`,`placeholder`])):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createElementVNode)(`div`,f,[(0,r.renderSlot)(n.$slots,`toolbar-actions`,{},()=>[e.addable?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:0,type:`primary`,size:(0,r.unref)(b).size,onClick:a[1]||=e=>(0,r.unref)(S)()},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:plus`,size:16})]),default:(0,r.withCtx)(()=>[(0,r.createTextVNode)(` `+(0,r.toDisplayString)(e.addText),1)]),_:1},8,[`size`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NButton),{size:(0,r.unref)(b).size,disabled:!e.data.length,"aria-pressed":(0,r.unref)(_),onClick:(0,r.unref)(x)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:file-tree`,size:16})]),default:(0,r.withCtx)(()=>[(0,r.createTextVNode)(` `+(0,r.toDisplayString)((0,r.unref)(_)?`收起全部`:`展开全部`),1)]),_:1},8,[`size`,`disabled`,`aria-pressed`,`onClick`]),e.refreshable?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:1,size:(0,r.unref)(b).size,onClick:(0,r.unref)(C)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:refresh`,size:16})]),default:(0,r.withCtx)(()=>[a[2]||=(0,r.createTextVNode)(` 刷新 `,-1)]),_:1},8,[`size`,`onClick`])):(0,r.createCommentVNode)(`v-if`,!0)],!0)])])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createElementVNode)(`div`,p,[(0,r.createVNode)((0,r.unref)(i.NTree),(0,r.mergeProps)({ref_key:`treeRef`,ref:y},(0,r.unref)(v),{class:`tree-instance`}),(0,r.createSlots)({_:2},[n.$slots.empty?{name:`empty`,fn:(0,r.withCtx)(()=>[(0,r.renderSlot)(n.$slots,`empty`,{},void 0,!0)]),key:`0`}:void 0]),1040)])],6))}});var h=n.t(m,[[`__scopeId`,`data-v-0673677b`]]);Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return h}});
package/dist/C_Tree2.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{computed as n,createBlock as r,createCommentVNode as i,createElementBlock as a,createElementVNode as o,createTextVNode as s,createVNode as c,defineComponent as l,h as u,isRef as d,openBlock as f,ref as p,renderSlot as m,toDisplayString as h,unref as g,withCtx as _}from"vue";import{NButton as v,NInput as y,NPopconfirm as b,NSpace as x,NTag as S,NTree as C}from"naive-ui";const w={menu:{draggable:!0,showLine:!0,iconConfig:{typeMap:{directory:`mdi:folder`,menu:`mdi:file-document`,button:`mdi:button-cursor`}},actions:[{key:`add`,text:`新增子菜单`,icon:`mdi:plus`,type:`primary`},{key:`edit`,text:`编辑`,icon:`mdi:pencil`,type:`info`},{key:`delete`,text:`删除`,icon:`mdi:delete`,type:`error`,confirm:`确认删除该菜单吗?`}]},file:{draggable:!1,showLine:!1,iconConfig:{typeMap:{folder:`mdi:folder`,file:`mdi:file-document`,image:`mdi:file-image`,video:`mdi:file-video`,audio:`mdi:file-music`}},actions:[{key:`open`,text:`打开`,icon:`mdi:folder-open`,type:`primary`},{key:`rename`,text:`重命名`,icon:`mdi:rename-box`,type:`info`},{key:`delete`,text:`删除`,icon:`mdi:delete`,type:`error`,confirm:`确认删除该文件吗?`}]},org:{draggable:!1,showLine:!0,iconConfig:{typeMap:{department:`mdi:domain`,user:`mdi:account`,manager:`mdi:account-tie`}},actions:[{key:`add`,text:`新增下级`,icon:`mdi:plus`,type:`primary`},{key:`edit`,text:`编辑`,icon:`mdi:pencil`,type:`info`}]},custom:{}};function T(e,t,n){let r=new Set,i=new WeakSet,a=[...e].reverse();for(;a.length;){let e=a.pop();if(i.has(e))continue;i.add(e);let o=e[n];if(!Array.isArray(o)||o.length===0)continue;let s=e[t];(typeof s==`string`||typeof s==`number`)&&r.add(s),a.push(...o.slice().reverse())}return[...r]}function E(e,t,n,r){let i=new WeakSet,a=[...e].reverse();for(;a.length;){let e=a.pop();if(i.has(e))continue;if(i.add(e),e[n]===t)return e;let o=e[r];Array.isArray(o)&&a.push(...o.slice().reverse())}return null}function D(t,r){let i=p(``),a=p(t.defaultExpandAll?T(t.data,t.keyField??`id`,t.childrenField??`children`):[...t.defaultExpandedKeys??[]]),o=p([...t.defaultSelectedKeys??[]]),s=n(()=>t.keyField??`id`),c=n(()=>t.labelField??`name`),l=n(()=>t.childrenField??`children`),d=n(()=>t.iconField??`icon`),f=n(()=>T(t.data,s.value,l.value)),m=n(()=>{let e=f.value,t=new Set(a.value);return e.length>0&&e.every(e=>t.has(e))}),h=n(()=>{let e=w[t.mode??`custom`]||{};return{...e,...t,iconConfig:{...e.iconConfig,...t.iconConfig},actions:t.actions?.length?t.actions:e.actions||[]}}),g=n(()=>t.data),_=n(()=>t.searchPattern||i.value),y=n(()=>o.value.length===0?null:E(t.data,o.value[0],s.value,l.value)),C=e=>{let t=h.value.iconConfig;return e[d.value]?e[d.value]:e.type&&t.typeMap?.[e.type]?t.typeMap[e.type]:t.default||`mdi:circle-outline`},D=e=>{let t=h.value.iconConfig;return e.type&&t.colorMap?.[e.type]?t.colorMap[e.type]:`currentColor`},O=({option:t})=>{let n=t;return u(e,{name:C(n),size:18,color:D(n),class:`mr-3 flex-shrink-0`})},k=({option:e})=>{let n=e,r=t.statusConfigs?.map(e=>{let t=n[e.field],r=e.values[t];return r?.text?u(S,{type:r.type,size:`small`,class:`ml-2`,style:{fontSize:`12px`}},{default:()=>r.text}):null}).filter(Boolean)||[];return u(`div`,{class:`flex items-center flex-1 min-w-0 py-1`,style:{lineHeight:`1.5`}},[u(`span`,{class:`mr-3 font-medium text-sm`},n[c.value]),...r])},A=({option:t})=>{let n=t,r=(h.value.actions||[]).filter(e=>!e.show||e.show(n)).map(t=>{let r={size:`tiny`,type:t.type||`default`,secondary:!0,"aria-label":t.text||t.key,style:{padding:`4px 6px`,minWidth:`24px`,height:`24px`},onClick:e=>{e.stopPropagation(),F(t.key,n)}},i=u(e,{name:t.icon,size:12,title:t.text});return t.confirm?u(b,{onPositiveClick:()=>F(t.key,n)},{trigger:()=>u(v,{...r,onClick:e=>e.stopPropagation()},{icon:()=>i}),default:()=>t.confirm}):u(v,r,{icon:()=>i})});return u(`div`,{class:`tree-actions`,style:{display:`flex`,alignItems:`center`,marginLeft:`8px`,opacity:`0`,transition:`opacity 0.2s ease`}},[u(x,{size:4},{default:()=>r})])},j=()=>{a.value=m.value?[]:f.value},M=e=>{a.value=e},N=e=>{o.value=e,r(`node-select`,y.value,e)},P=e=>r(`node-drop`,e),F=(e,t)=>{e===`add`?r(`add`,t):r(`node-action`,e,t)};return{internalSearchPattern:i,expandedKeys:a,selectedKeys:o,isAllExpanded:m,treeData:g,currentSearchPattern:_,renderPrefix:O,renderLabel:k,renderSuffix:A,toggleExpandAll:j,handleExpandedKeysChange:M,handleSelectedKeysChange:N,handleDrop:P,handleAdd:()=>r(`add`),handleRefresh:()=>r(`refresh`),expose:{expandAll:()=>{a.value=f.value},collapseAll:()=>{a.value=[]},selectNode:e=>{o.value=[e]},getSelectedNode:()=>y.value,expandedKeys:a,selectedKeys:o}}}const O={class:`c-tree`},k={key:0,class:`c-tree-toolbar`},A={class:`toolbar-left`},j={class:`toolbar-right`},M={class:`c-tree-container`};var N=t(l({name:`C_Tree`,__name:`index`,props:{data:{},mode:{default:`custom`},keyField:{default:`id`},labelField:{default:`name`},childrenField:{default:`children`},searchPattern:{default:``},searchable:{type:Boolean,default:!0},searchPlaceholder:{default:`搜索...`},draggable:{type:Boolean,default:!1},showLine:{type:Boolean,default:!0},showToolbar:{type:Boolean,default:!0},addable:{type:Boolean,default:!0},addText:{default:`新增`},refreshable:{type:Boolean,default:!0},iconField:{default:`icon`},iconConfig:{default:()=>({default:`mdi:circle-outline`,typeMap:{},colorMap:{}})},statusConfigs:{default:()=>[]},actions:{default:()=>[]},defaultExpandAll:{type:Boolean,default:!1},defaultExpandedKeys:{default:()=>[]},defaultSelectedKeys:{default:()=>[]}},emits:[`node-select`,`node-action`,`node-drop`,`add`,`refresh`],setup(t,{expose:n,emit:l}){let{internalSearchPattern:u,expandedKeys:p,selectedKeys:b,isAllExpanded:x,treeData:S,currentSearchPattern:w,renderPrefix:T,renderLabel:E,renderSuffix:N,toggleExpandAll:P,handleExpandedKeysChange:F,handleSelectedKeysChange:I,handleDrop:L,handleAdd:R,handleRefresh:z,expose:B}=D(t,l);return n(B),(n,l)=>(f(),a(`div`,O,[t.showToolbar?(f(),a(`div`,k,[o(`div`,A,[t.searchable?(f(),r(g(y),{key:0,value:g(u),"onUpdate:value":l[0]||=e=>d(u)?u.value=e:null,placeholder:t.searchPlaceholder,"aria-label":`搜索树节点`,clearable:``,class:`search-input`},{prefix:_(()=>[c(e,{name:`mdi:magnify`,size:16})]),_:1},8,[`value`,`placeholder`])):i(`v-if`,!0)]),o(`div`,j,[m(n.$slots,`toolbar-actions`,{},()=>[t.addable?(f(),r(g(v),{key:0,type:`primary`,onClick:l[1]||=e=>g(R)()},{icon:_(()=>[c(e,{name:`mdi:plus`,size:16})]),default:_(()=>[s(` `+h(t.addText),1)]),_:1})):i(`v-if`,!0),c(g(v),{onClick:g(P)},{icon:_(()=>[c(e,{name:`mdi:file-tree`,size:16})]),default:_(()=>[s(` `+h(g(x)?`收起全部`:`展开全部`),1)]),_:1},8,[`onClick`]),t.refreshable?(f(),r(g(v),{key:1,onClick:g(z)},{icon:_(()=>[c(e,{name:`mdi:refresh`,size:16})]),default:_(()=>[l[2]||=s(` 刷新 `,-1)]),_:1},8,[`onClick`])):i(`v-if`,!0)],!0)])])):i(`v-if`,!0),o(`div`,M,[c(g(C),{data:g(S),pattern:g(w),"expanded-keys":g(p),"selected-keys":g(b),draggable:t.draggable,"show-line":t.showLine,"render-prefix":g(T),"render-suffix":g(N),"render-label":g(E),"key-field":t.keyField,"label-field":t.labelField,"children-field":t.childrenField,"onUpdate:expandedKeys":g(F),"onUpdate:selectedKeys":g(I),onDrop:g(L),class:`tree-instance`},null,8,[`data`,`pattern`,`expanded-keys`,`selected-keys`,`draggable`,`show-line`,`render-prefix`,`render-suffix`,`render-label`,`key-field`,`label-field`,`children-field`,`onUpdate:expandedKeys`,`onUpdate:selectedKeys`,`onDrop`])])]))}}),[[`__scopeId`,`data-v-57df315a`]]);export{D as n,w as r,N as t};
1
+ import{t as e}from"./density.js";import{t}from"./C_Icon2.js";import{t as n}from"./export-helper.js";import{computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createSlots as c,createTextVNode as l,createVNode as u,defineComponent as d,getCurrentScope as f,h as p,isRef as m,mergeProps as h,normalizeClass as g,normalizeStyle as _,onScopeDispose as v,openBlock as y,ref as b,renderSlot as x,shallowRef as S,toDisplayString as C,toRaw as w,unref as T,useSlots as E,watch as D,withCtx as O}from"vue";import{NButton as k,NInput as A,NPopconfirm as j,NTag as M,NTree as N,useThemeVars as P}from"naive-ui";const F={menu:{draggable:!0,showLine:!0,iconConfig:{typeMap:{directory:`mdi:folder`,menu:`mdi:file-document`,button:`mdi:button-cursor`}},actions:[{key:`add`,text:`新增子菜单`,icon:`mdi:plus`,type:`primary`},{key:`edit`,text:`编辑`,icon:`mdi:pencil`,type:`info`},{key:`delete`,text:`删除`,icon:`mdi:delete`,type:`error`,confirm:`确认删除该菜单吗?`}]},file:{draggable:!1,showLine:!1,iconConfig:{typeMap:{folder:`mdi:folder`,file:`mdi:file-document`,image:`mdi:file-image`,video:`mdi:file-video`,audio:`mdi:file-music`}},actions:[{key:`open`,text:`打开`,icon:`mdi:folder-open`,type:`primary`},{key:`rename`,text:`重命名`,icon:`mdi:rename-box`,type:`info`},{key:`delete`,text:`删除`,icon:`mdi:delete`,type:`error`,confirm:`确认删除该文件吗?`}]},org:{draggable:!1,showLine:!0,iconConfig:{typeMap:{department:`mdi:domain`,user:`mdi:account`,manager:`mdi:account-tie`}},actions:[{key:`add`,text:`新增下级`,icon:`mdi:plus`,type:`primary`},{key:`edit`,text:`编辑`,icon:`mdi:pencil`,type:`info`}]},custom:{}},I=e=>typeof e==`string`||typeof e==`number`,L=e=>!!e&&typeof e==`object`;function R(e,t,n,r){let i=new Map,a=new Set,o=new WeakSet,s=[],c=e=>{for(let t=e.length-1;t>=0;t--)s.push(e[t])};for(c(e);s.length;){let e=s.pop();if(!L(e)||o.has(e))continue;o.add(e);let l=e[t],u=I(l);u&&!i.has(l)&&i.set(l,e);let d=r?r(e):e[n];Array.isArray(d)&&d.length&&(u&&a.add(l),c(d))}return{nodes:i,expandableKeys:[...a]}}function z(n,i,a={}){let o=r(()=>n.treeProps??{}),s=r(()=>F[n.mode??`custom`]),c=r(()=>n.draggable??o.value.draggable??s.value.draggable??!1),l=r(()=>n.showLine??o.value.showLine??s.value.showLine??!0),u=r(()=>({...s.value,...n,draggable:c.value,showLine:l.value,iconConfig:{default:`mdi:circle-outline`,...s.value.iconConfig,...n.iconConfig,typeMap:{...s.value.iconConfig?.typeMap,...n.iconConfig?.typeMap},colorMap:{...s.value.iconConfig?.colorMap,...n.iconConfig?.colorMap}},actions:n.actions??s.value.actions??[]})),d=r(()=>n.keyField??o.value.keyField??`id`),m=r(()=>n.labelField??o.value.labelField??`name`),h=r(()=>n.childrenField??o.value.childrenField??`children`),g=r(()=>R(n.data,d.value,h.value,o.value.getChildren)),_=()=>n.defaultExpandAll??o.value.defaultExpandAll??!1,y=b(_()),x=e=>{let t=`default${e}Keys`;return[...n[t]??o.value[t]??[]]},C=b(_()?g.value.expandableKeys:x(`Expanded`)),T=b(x(`Selected`)),E=b(x(`Checked`)),O=r({get:()=>n.expandedKeys??o.value.expandedKeys??C.value,set:e=>V(e)}),A=r({get:()=>n.selectedKeys??o.value.selectedKeys??T.value,set:e=>H(e)}),N=r({get:()=>n.checkedKeys??o.value.checkedKeys??E.value,set:e=>U(e)}),P=b(``),I=r({get:()=>n.searchPattern??o.value.pattern??P.value,set:e=>{P.value=e,i(`update:searchPattern`,e)}}),L=r(()=>{let e=g.value.expandableKeys,t=new Set(O.value);return e.length>0&&e.every(e=>t.has(e))});D(()=>g.value.expandableKeys,e=>{y.value&&(C.value=[...e])}),D(_,e=>{y.value=e,e&&(C.value=[...g.value.expandableKeys])});for(let[e,t]of[[`Expanded`,C],[`Selected`,T],[`Checked`,E]]){let r=`default${e}Keys`;D(()=>n[r]??o.value[r],n=>{o.value.watchProps?.includes(r)&&(t.value=e===`Expanded`&&_()?[...g.value.expandableKeys]:[...n??[]])})}let z=e=>e.map(e=>g.value.nodes.get(e)??null),B=(e,t)=>{let n=o.value[e],r=Array.isArray(n)?n:[n];for(let e of r)typeof e==`function`&&e(...t)},V=(e,t=z(e),n={node:null,action:`expand`})=>{n.action!==`filter`&&(y.value=!1),C.value=[...e],i(`update:expandedKeys`,e,t,n),B(`onUpdateExpandedKeys`,[e,t,n]),B(`onUpdate:expandedKeys`,[e,t,n])},H=(e,t=z(e),n={node:t[0]??null,action:e.length?`select`:`unselect`})=>{T.value=[...e],i(`update:selectedKeys`,e,t,n),i(`node-select`,t[0]??null,e),B(`onUpdateSelectedKeys`,[e,t,n]),B(`onUpdate:selectedKeys`,[e,t,n])},U=(e,t=z(e),n={node:null,action:e.length?`check`:`uncheck`})=>{E.value=[...e],i(`update:checkedKeys`,e,t,n),B(`onUpdateCheckedKeys`,[e,t,n]),B(`onUpdate:checkedKeys`,[e,t,n])},W=r(()=>g.value.nodes.get(A.value[0])??null),G=e=>{if(a.prefix)return a.prefix(e);if(o.value.renderPrefix)return o.value.renderPrefix(e);if(typeof e.option.prefix==`function`)return e.option.prefix();let r=e.option,i=u.value.iconConfig,s=typeof r.type==`string`?r.type:``,c=r[n.iconField??`icon`];return p(t,{name:typeof c==`string`?c:i.typeMap[s]??i.default,size:16,color:i.colorMap[s]??`currentColor`,class:`c-tree-node-icon`})},K=e=>{if(a.label)return a.label(e);if(o.value.renderLabel)return o.value.renderLabel(e);let t=String(e.option[m.value]??``);return p(`span`,{class:`c-tree-node-label`},[p(`span`,{class:`c-tree-node-title`,title:t},t),...(n.statusConfigs??[]).flatMap(t=>{let n=e.option[t.field],r=typeof n==`number`||typeof n==`string`?t.values[n]:void 0;return r?.text?[p(M,{type:r.type,size:`small`,class:`c-tree-node-status`},{default:()=>r.text})]:[]})])},q=(e,t)=>{e===`add`?i(`add`,t):i(`node-action`,e,t)},J=e=>{if(a.suffix)return a.suffix(e);if(o.value.renderSuffix)return o.value.renderSuffix(e);if(typeof e.option.suffix==`function`)return e.option.suffix();let n=e.option,r=u.value.actions.filter(e=>!e.show||e.show(n));return r.length?p(`span`,{class:`tree-actions`,onClick:e=>e.stopPropagation()},r.map(e=>{let r=r=>p(k,{size:`tiny`,type:e.type??`default`,quaternary:!0,disabled:!!(o.value.disabled||n[o.value.disabledField??`disabled`]),"aria-label":e.text||e.key,title:e.text,onClick:t=>{t.stopPropagation(),r||q(e.key,n)}},{icon:()=>p(t,{name:e.icon,size:14})});return e.confirm?p(j,{onPositiveClick:()=>q(e.key,n)},{trigger:()=>r(!0),default:()=>e.confirm}):r(!1)})):null},Y=!0;f()&&v(()=>{Y=!1});let X=r(()=>{let e=o.value.onLoad;if(e)return async t=>{try{return await e(t)}catch(e){let n=t[d.value],r=typeof n==`string`||typeof n==`number`?g.value.nodes.get(n):void 0;return Y&&r&&w(r)===w(t)&&i(`load-error`,e,t),!1}}}),ee=r(()=>{if(!n.data.length)return!1;let e=I.value;if(!o.value.virtualScroll||!e||o.value.showIrrelevantNodes!==!1)return!0;let t=e.toLowerCase(),r=o.value.filter??((e,n)=>{let r=n[m.value];return typeof r==`string`&&r.toLowerCase().includes(t)});for(let t of g.value.nodes.values())if(r(e,t))return!0;return!1}),Z=S(),te=r(()=>e(n.density)),ne=r(()=>({...o.value,data:n.data,virtualScroll:!!(o.value.virtualScroll&&ee.value),keyField:d.value,labelField:m.value,childrenField:h.value,draggable:u.value.draggable,showLine:u.value.showLine,blockLine:o.value.blockLine??!0,blockNode:o.value.blockNode??!0,pattern:I.value,expandedKeys:O.value,selectedKeys:A.value,checkedKeys:N.value,renderPrefix:G,renderLabel:K,renderSuffix:J,themeOverrides:{nodeHeight:n.density===`compact`?`28px`:n.density===`comfortable`?`40px`:`34px`,nodeWrapperPadding:`0`,...o.value.themeOverrides},onLoad:X.value,onUpdateExpandedKeys:void 0,onUpdateSelectedKeys:void 0,onUpdateCheckedKeys:void 0,"onUpdate:expandedKeys":V,"onUpdate:selectedKeys":H,"onUpdate:checkedKeys":U,onDrop:e=>{i(`node-drop`,e),B(`onDrop`,[e])}})),re=()=>L.value?$():Q(),Q=()=>{V([...g.value.expandableKeys]),y.value=!0},$=()=>V([],[],{node:null,action:`collapse`}),ie=()=>i(`add`),ae=()=>i(`refresh`),oe={expandAll:Q,collapseAll:$,selectNode:e=>H([e]),clearSelection:()=>H([]),setCheckedKeys:e=>U([...e]),clearChecked:()=>U([]),getSelectedNode:()=>W.value,getCheckedData:()=>Z.value?.getCheckedData()??{keys:[...N.value],options:z(N.value)},getIndeterminateData:()=>Z.value?.getIndeterminateData()??{keys:[],options:[]},scrollTo:(...e)=>{let t=Z.value?.scrollTo;t?.(...e)},expandedKeys:O,selectedKeys:A,checkedKeys:N};return{internalSearchPattern:P,expandedKeys:O,selectedKeys:A,checkedKeys:N,isAllExpanded:L,treeData:r(()=>n.data),currentSearchPattern:I,renderPrefix:G,renderLabel:K,renderSuffix:J,treeBindings:ne,treeRef:Z,density:te,toggleExpandAll:re,handleExpandedKeysChange:V,handleSelectedKeysChange:H,handleCheckedKeysChange:U,handleDrop:e=>i(`node-drop`,e),handleAdd:ie,handleRefresh:ae,expose:oe}}const B={key:0,class:`c-tree-toolbar`},V={class:`toolbar-left`},H={class:`toolbar-right`},U={class:`c-tree-container`};var W=n(d({name:`C_Tree`,__name:`index`,props:{data:{},mode:{default:`custom`},treeProps:{},density:{default:`default`},keyField:{},labelField:{},childrenField:{},searchPattern:{},searchable:{type:Boolean,default:!0},searchPlaceholder:{default:`搜索...`},draggable:{type:Boolean,default:void 0},showLine:{type:Boolean,default:void 0},showToolbar:{type:Boolean,default:!0},addable:{type:Boolean,default:!0},addText:{default:`新增`},refreshable:{type:Boolean,default:!0},iconField:{},iconConfig:{},statusConfigs:{},actions:{},defaultExpandAll:{type:Boolean,default:void 0},defaultExpandedKeys:{},defaultSelectedKeys:{},defaultCheckedKeys:{},expandedKeys:{},selectedKeys:{},checkedKeys:{}},emits:[`update:searchPattern`,`update:expandedKeys`,`update:selectedKeys`,`update:checkedKeys`,`node-select`,`node-action`,`node-drop`,`load-error`,`add`,`refresh`],setup(e,{expose:n,emit:d}){let f=e,p=d,v=E(),b=P(),S=r(()=>({"--c-tree-border":b.value.borderColor,"--c-tree-surface":b.value.actionColor,"--c-tree-radius":b.value.borderRadius})),{currentSearchPattern:w,isAllExpanded:D,treeBindings:j,treeRef:M,density:F,toggleExpandAll:I,handleAdd:L,handleRefresh:R,expose:W}=z(f,p,v);return n(W),(n,r)=>(y(),o(`div`,{class:g([`c-tree`,[`c-tree--${T(F).density}`,{"c-tree--virtual":T(j).virtualScroll}]]),style:_(S.value)},[e.showToolbar?(y(),o(`div`,B,[s(`div`,V,[e.searchable?(y(),i(T(A),{key:0,value:T(w),"onUpdate:value":r[0]||=e=>m(w)?w.value=e:null,size:T(F).size,placeholder:e.searchPlaceholder,"input-props":{"aria-label":`搜索树节点`},clearable:``,class:`search-input`},{prefix:O(()=>[u(t,{name:`mdi:magnify`,size:16})]),_:1},8,[`value`,`size`,`placeholder`])):a(`v-if`,!0)]),s(`div`,H,[x(n.$slots,`toolbar-actions`,{},()=>[e.addable?(y(),i(T(k),{key:0,type:`primary`,size:T(F).size,onClick:r[1]||=e=>T(L)()},{icon:O(()=>[u(t,{name:`mdi:plus`,size:16})]),default:O(()=>[l(` `+C(e.addText),1)]),_:1},8,[`size`])):a(`v-if`,!0),u(T(k),{size:T(F).size,disabled:!e.data.length,"aria-pressed":T(D),onClick:T(I)},{icon:O(()=>[u(t,{name:`mdi:file-tree`,size:16})]),default:O(()=>[l(` `+C(T(D)?`收起全部`:`展开全部`),1)]),_:1},8,[`size`,`disabled`,`aria-pressed`,`onClick`]),e.refreshable?(y(),i(T(k),{key:1,size:T(F).size,onClick:T(R)},{icon:O(()=>[u(t,{name:`mdi:refresh`,size:16})]),default:O(()=>[r[2]||=l(` 刷新 `,-1)]),_:1},8,[`size`,`onClick`])):a(`v-if`,!0)],!0)])])):a(`v-if`,!0),s(`div`,U,[u(T(N),h({ref_key:`treeRef`,ref:M},T(j),{class:`tree-instance`}),c({_:2},[n.$slots.empty?{name:`empty`,fn:O(()=>[x(n.$slots,`empty`,{},void 0,!0)]),key:`0`}:void 0]),1040)])],6))}}),[[`__scopeId`,`data-v-0673677b`]]);export{z as n,F as r,W as t};
package/dist/C_Upload.css CHANGED
@@ -285,7 +285,7 @@
285
285
  .transition[data-v-705892ab]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
286
286
  .ease[data-v-705892ab]{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}
287
287
 
288
- .c-upload[data-v-7674f0c8] {
288
+ .c-upload[data-v-58ca8e42] {
289
289
  --c-upload-progress-bg: var(--body-color, #fff);
290
290
  --c-upload-progress-border: var(--border-color, #e5e7eb);
291
291
  --c-upload-progress-radius: 8px;
@@ -293,14 +293,14 @@
293
293
  --c-upload-label-size: 12px;
294
294
  width: 100%;
295
295
  }
296
- .c-upload__total-progress[data-v-7674f0c8] {
296
+ .c-upload__total-progress[data-v-58ca8e42] {
297
297
  margin-top: 12px;
298
298
  padding: 8px 12px;
299
299
  border-radius: var(--c-upload-progress-radius);
300
300
  background: var(--c-upload-progress-bg);
301
301
  border: 1px solid var(--c-upload-progress-border);
302
302
  }
303
- .c-upload__total-label[data-v-7674f0c8] {
303
+ .c-upload__total-label[data-v-58ca8e42] {
304
304
  display: flex;
305
305
  justify-content: space-between;
306
306
  margin-bottom: 6px;
@@ -309,5 +309,5 @@
309
309
  }
310
310
 
311
311
  /* layer: default */
312
- .flex[data-v-7674f0c8]{display:flex;}
313
- .border[data-v-7674f0c8]{border-width:1px;}
312
+ .flex[data-v-58ca8e42]{display:flex;}
313
+ .border[data-v-58ca8e42]{border-width:1px;}
@@ -1 +1 @@
1
- const e=require(`./chunk.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`spark-md5`);a=e.t(a);const o=2*1024*1024,s={pending:`等待上传`,validating:`校验文件…`,hashing:`计算校验…`,uploading:`上传中…`,success:`上传成功`,error:`上传失败`,paused:`已暂停`,instant:`秒传成功`},c={pending:`default`,validating:`info`,hashing:`info`,uploading:`info`,success:`success`,error:`error`,paused:`warning`,instant:`success`},l={"image/":`mdi:file-image-outline`,"video/":`mdi:file-video-outline`,"audio/":`mdi:file-music-outline`,"application/pdf":`mdi:file-pdf-box`,"application/zip":`mdi:folder-zip-outline`,"application/x-rar":`mdi:folder-zip-outline`,"application/vnd.ms-excel":`mdi:file-excel-outline`,"application/vnd.openxmlformats-officedocument.spreadsheetml":`mdi:file-excel-outline`,"application/msword":`mdi:file-word-outline`,"application/vnd.openxmlformats-officedocument.wordprocessingml":`mdi:file-word-outline`,"text/":`mdi:file-document-outline`,default:`mdi:file-outline`};function u(e){for(let[t,n]of Object.entries(l))if(t!==`default`&&e.startsWith(t))return n;return l.default}function d(e){if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=Math.floor(Math.log(e)/Math.log(1024));return`${(e/1024**n).toFixed(n>0?1:0)} ${t[n]}`}const f=()=>new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0)});function p(e){let t=(0,r.ref)(0),n=(0,r.ref)(0),i=(0,r.computed)(()=>t.value>0);async function o(r,i){t.value+=1,n.value=0,i?.(0);let o=new a.default.ArrayBuffer,s=Math.max(1,Math.trunc(Number(e.value)||1)),c=Math.max(1,Math.ceil(r.size/s));try{if(r.size===0)return o.append(new ArrayBuffer(0)),n.value=100,i?.(100),o.end();for(let e=0;e<c;e+=1){let t=e*s,a=await r.slice(t,t+s).arrayBuffer();o.append(a),n.value=Math.round((e+1)/c*100),i?.(n.value),await f()}return o.end()}finally{t.value=Math.max(0,t.value-1)}}return{hashing:i,hashProgress:(0,r.readonly)(n),calculateHash:o}}function m(e){let t=new Map,n=new Map;function r(t){let n=Math.max(1,Math.trunc(Number(e.chunkSize.value)||1)),r=[],i=0,a=0;for(;a<t.size;){let e=Math.min(a+n,t.size);r.push({index:i,blob:t.slice(a,e),size:e-a,uploaded:!1}),a=e,i++}return r}async function i(t,n){if(e.uploadedChunksQuery?.value)try{let r=await e.uploadedChunksQuery.value(t);for(let e of r){let t=n[e];t&&(t.uploaded=!0)}}catch{}}function a(t){return new Promise((n,r)=>{let i=!1,a=()=>{i||(i=!0,n())},o=e=>{i||(i=!0,t.setError(),r(e instanceof Error?e:Error(String(e))))},s={action:e.action.value,headers:e.headers.value,data:{...e.data.value,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,filename:t.file.name},file:t.chunk.blob,filename:t.file.name,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,onProgress:()=>{},onSuccess:()=>{if(!i){if(t.isCancelled()){a();return}t.chunk.uploaded=!0,t.setUploadedBytes(t.chunk.size),t.onProgress({uploadedChunks:t.chunks.filter(e=>e.uploaded).length,totalChunks:t.totalChunks,uploadedBytes:t.chunks.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),totalBytes:t.totalBytes}),a()}},onError:o};try{let n=e.customRequest?.value?e.customRequest.value(s):h(s);t.abortControllers.push(()=>{try{n.abort()}catch{}finally{a()}})}catch(e){o(e)}})}async function o(o){let{uid:c,file:l,hash:u,onProgress:d,onSuccess:f,onError:p,isPaused:m}=o,h=Symbol(c);n.set(c,h);let g=()=>n.get(c)!==h,_=()=>{g()||n.delete(c)},v=r(l),y=v.length,b=l.size,x=0;if(await i(u,v),g()||m()){_();return}x=v.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),d({uploadedChunks:v.filter(e=>e.uploaded).length,totalChunks:y,uploadedBytes:x,totalBytes:b});let S=v.filter(e=>!e.uploaded);if(S.length===0){try{g()||await s(u,l.name,y,f,p,g)}finally{_()}return}let C=[];t.set(c,C);let w=Math.max(1,Math.trunc(Number(e.concurrency.value)||1)),T=0,E=!1;async function D(){for(;T<S.length&&!E&&!m()&&!g();){let e=S[T++];await a({chunk:e,hash:u,file:l,totalChunks:y,chunks:v,totalBytes:b,abortControllers:C,onProgress:e=>{g()||d(e)},setUploadedBytes:e=>{x+=e},setError:()=>{E=!0},isCancelled:g})}}let O=Array.from({length:Math.min(w,S.length)},()=>D());try{let e=(await Promise.allSettled(O)).find(e=>e.status===`rejected`);e&&!g()?p(e.reason instanceof Error?e.reason:Error(String(e.reason))):!E&&!m()&&!g()&&await s(u,l.name,y,f,p,g)}finally{g()||t.delete(c),_()}}async function s(t,n,r,i,a,o){if(e.mergeChunks?.value)try{let a=await e.mergeChunks.value(t,n,r);o()||i(a)}catch(e){o()||a(e instanceof Error?e:Error(`分片合并失败`))}else o()||i({message:`分片上传完成(未配置合并函数)`})}function c(e){n.delete(e),t.get(e)?.forEach(e=>e()),t.delete(e)}function l(){n.clear(),t.forEach(e=>{e.forEach(e=>e())}),t.clear()}return{createChunks:r,uploadChunks:o,abortUpload:c,abortAll:l}}function h(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),e.headers&&Object.entries(e.headers).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n;try{n=JSON.parse(t.responseText)}catch{n=t.responseText}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>{e.onError?.(Error(`网络错误`))}),t.addEventListener(`abort`,()=>{e.onError?.(new DOMException(`上传已取消`,`AbortError`))});let n=new FormData;return n.append(`file`,e.file,e.filename),e.data&&Object.entries(e.data).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function g(e){return e instanceof Error?e:Error(String(e))}function _(e){let t=[],n=(0,r.ref)(0),i=new Map,a=()=>{n.value=i.size},o=()=>Math.max(1,Math.trunc(Number(e.concurrency.value)||1));function s(){for(;i.size<o()&&t.length>0;){let n=t.shift(),{file:r}=n;if(!r.raw||i.has(r.uid))continue;let o=!1,c=e=>{o||(o=!0,i.delete(r.uid),a(),e?.error?n.onError(r.uid,e.error):e&&`response`in e&&n.onSuccess(r.uid,e.response),s())},l={action:e.action.value,headers:e.headers.value,data:e.data.value,file:r.raw,filename:r.name,onProgress:e=>n.onProgress(r.uid,e),onSuccess:e=>c({response:e}),onError:e=>c({error:e})};i.set(r.uid,{abort:()=>void 0,settle:c}),a();try{let t=e.customRequest?.value?e.customRequest.value(l):v(l),n=i.get(r.uid);n&&(n.abort=t.abort)}catch(e){c({error:g(e)})}}}function c(e,n,r,i){l(e.uid),t.push({file:e,onProgress:n,onSuccess:r,onError:i}),s()}function l(e){for(let n=t.length-1;n>=0;--n)t[n].file.uid===e&&t.splice(n,1);let n=i.get(e);if(n){n.settle();try{n.abort()}catch{}}}function u(){t.length=0;let e=[...i.values()];i.clear(),a(),e.forEach(e=>{e.settle();try{e.abort()}catch{}})}return(0,r.watch)(e.concurrency,s),{activeCount:(0,r.readonly)(n),enqueue:c,abort:l,abortAll:u}}function v(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),Object.entries(e.headers??{}).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n=t.responseText;try{n=JSON.parse(t.responseText)}catch{}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>e.onError?.(Error(`网络错误`)));let n=new FormData;return n.append(`file`,e.file,e.filename),Object.entries(e.data??{}).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function y(e){let t=(0,r.computed)(()=>e.action??``),n=(0,r.computed)(()=>e.headers??{}),i=(0,r.computed)(()=>e.data??{}),a=(0,r.computed)(()=>{let t=Math.trunc(Number(e.chunkSize));return Number.isFinite(t)&&t>0?t:o}),s=(0,r.computed)(()=>{let t=Math.trunc(Number(e.concurrency));return Number.isFinite(t)&&t>0?t:3}),c=(0,r.computed)(()=>e.customRequest),l=(0,r.computed)(()=>e.instantCheck),u=(0,r.computed)(()=>e.uploadedChunksQuery),d=(0,r.computed)(()=>e.mergeChunks),f=(0,r.ref)((e.defaultFileList??[]).map(e=>({...e}))),h=(0,r.reactive)(new Set),g=new Map,v=new Set,{hashing:y,hashProgress:b,calculateHash:x}=p(a),S=m({chunkSize:a,concurrency:s,action:t,headers:n,data:i,customRequest:c,uploadedChunksQuery:u,mergeChunks:d}),C=_({concurrency:s,action:t,headers:n,data:i,customRequest:c}),w=(0,r.computed)(()=>{let e=f.value;if(e.length===0)return 0;let t=e.reduce((e,t)=>e+t.percent,0);return Math.round(t/e.length)});function T(){return typeof crypto<`u`&&`randomUUID`in crypto?`upload-${crypto.randomUUID()}`:`upload-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function E(e){if(e.type.startsWith(`image/`)){let t=URL.createObjectURL(e);return v.add(t),t}}function D(t){let n=[];for(let r of t){if(Number.isFinite(e.maxCount)&&(e.maxCount??0)>0&&f.value.length+n.length>=Math.trunc(e.maxCount))break;let t={uid:T(),name:r.name,size:r.size,type:r.type,status:`pending`,percent:0,raw:r,thumbUrl:E(r)};n.push(t)}return f.value.push(...n),n}function O(e,t){let n=f.value.find(t=>t.uid===e);n&&Object.assign(n,t)}function k(e){g.set(e,Symbol(e)),S.abortUpload(e),C.abort(e),h.delete(e);let t=f.value.findIndex(t=>t.uid===e);if(t!==-1){let e=f.value[t];M(e.thumbUrl),f.value.splice(t,1)}}function A(){S.abortAll(),C.abortAll(),h.clear(),f.value.forEach(e=>{M(e.thumbUrl)}),f.value=[],g.clear()}async function j(t){if((e.maxSize??0)>0&&t.size>e.maxSize)return null;if(e.beforeUpload){let n=await e.beforeUpload(t);if(n===!1)return null;if(n instanceof File)return(e.maxSize??0)>0&&n.size>e.maxSize?null:n}return t}function M(e){!e||!v.has(e)||(URL.revokeObjectURL(e),v.delete(e))}function N(e,t){return g.get(e)===t&&!h.has(e)&&f.value.some(t=>t.uid===e)}function P(e,t){return x(e.raw,n=>{N(e.uid,t)&&O(e.uid,{percent:n})})}async function F(n){if(!n.raw)return;let r=Symbol(n.uid);g.set(n.uid,r),O(n.uid,{status:`validating`,error:void 0});let i;try{i=await j(n.raw)}catch(e){N(n.uid,r)&&O(n.uid,{status:`error`,error:e instanceof Error?e.message:`文件校验失败`});return}if(N(n.uid,r)){if(!i){O(n.uid,{status:`error`,error:`文件校验未通过`});return}if(i!==n.raw&&(M(n.thumbUrl),Object.assign(n,{raw:i,name:i.name,size:i.size,type:i.type,hash:void 0,chunkProgress:void 0,thumbUrl:E(i)})),!c.value&&!t.value.trim()){O(n.uid,{status:`error`,error:`未配置上传地址`});return}if(l.value&&!n.hash){O(n.uid,{status:`hashing`});try{let e=await P(n,r);if(!N(n.uid,r))return;O(n.uid,{hash:e});let t=await l.value(e,n.raw.name);if(!N(n.uid,r))return;if(t.exists){O(n.uid,{status:`instant`,percent:100,url:t.url});return}}catch{if(!N(n.uid,r))return}}e.chunked&&n.raw.size>a.value?await I(n,r):L(n,r)}}async function I(e,t){let n=e.raw,{hash:r}=e;if(!r){O(e.uid,{status:`hashing`});try{if(r=await P(e,t),!N(e.uid,t))return;O(e.uid,{hash:r})}catch{N(e.uid,t)&&O(e.uid,{status:`error`,error:`Hash 计算失败`});return}}O(e.uid,{status:`uploading`,percent:0}),await S.uploadChunks({uid:e.uid,file:n,hash:r,onProgress:n=>{if(!N(e.uid,t))return;let r=Math.round(n.uploadedBytes/n.totalBytes*100);O(e.uid,{percent:r,chunkProgress:n})},onSuccess:n=>{N(e.uid,t)&&O(e.uid,{status:`success`,percent:100,response:n})},onError:n=>{N(e.uid,t)&&O(e.uid,{status:`error`,error:n.message})},isPaused:()=>h.has(e.uid)})}function L(e,t){O(e.uid,{status:`uploading`,percent:0}),C.enqueue(e,(e,n)=>{N(e,t)&&O(e,{percent:n})},(e,n)=>{N(e,t)&&O(e,{status:`success`,percent:100,response:n})},(e,n)=>{N(e,t)&&O(e,{status:`error`,error:n.message})})}function R(){f.value.filter(e=>e.status===`pending`).forEach(e=>void F(e))}function z(){f.value.forEach(e=>{(e.status===`uploading`||e.status===`hashing`||e.status===`validating`)&&(h.add(e.uid),g.set(e.uid,Symbol(e.uid)),S.abortUpload(e.uid),C.abort(e.uid),O(e.uid,{status:`paused`}))})}function B(){f.value.forEach(e=>{e.status===`paused`&&(h.delete(e.uid),O(e.uid,{status:`pending`}))}),R()}function V(e){let t=f.value.find(t=>t.uid===e);t&&t.status===`error`&&(O(e,{status:`pending`,percent:0,error:void 0}),F(t))}function H(){return f.value.filter(e=>e.status===`success`||e.status===`instant`)}return(0,r.onBeforeUnmount)(()=>{S.abortAll(),C.abortAll(),g.clear(),f.value.forEach(e=>{M(e.thumbUrl)})}),{fileList:f,totalPercent:w,hashing:y,hashProgress:b,addFiles:D,removeFile:k,clearAll:A,startUpload:R,pauseAll:z,resumeAll:B,retryFile:V,processFile:F,getSuccessList:H}}function b(e,t,n,i,a){let o=(0,r.ref)(!1),s=null,c=!1;function l(e){t.value&&(e.preventDefault(),o.value=!0)}function u(e){t.value&&(e.preventDefault(),o.value=!0)}function d(n){if(!t.value)return;n.preventDefault();let r=e.value;r&&!r.contains(n.relatedTarget)&&(o.value=!1)}async function f(e){if(!t.value)return;e.preventDefault(),o.value=!1;let n=e.dataTransfer?.items;if(!n)return;let r=await x(n,e.dataTransfer);if(c||!t.value)return;let s=C(r,i.value);s.length>0&&a(s)}function p(e){if(!n.value)return;let t=e.clipboardData?.items;if(!t)return;let r=[];for(let e=0;e<t.length;e++){let n=t[e];if(n.kind===`file`){let e=n.getAsFile();e&&r.push(e)}}let o=C(r,i.value);o.length>0&&(e.preventDefault(),a(o))}function m(){let t=e.value;!t||s===t||(s=t,t.addEventListener(`dragenter`,l),t.addEventListener(`dragover`,u),t.addEventListener(`dragleave`,d),t.addEventListener(`drop`,f),n.value&&t.addEventListener(`paste`,p))}function h(){let e=s;e&&(e.removeEventListener(`dragenter`,l),e.removeEventListener(`dragover`,u),e.removeEventListener(`dragleave`,d),e.removeEventListener(`drop`,f)),e?.removeEventListener(`paste`,p),s=null}return(0,r.onMounted)(()=>{c=!1,m()}),(0,r.onBeforeUnmount)(()=>{c=!0,h()}),(0,r.watch)([e,t,n],()=>{h(),m()}),{isDragOver:(0,r.readonly)(o)}}async function x(e,t){let n=[];for(let t=0;t<e.length;t++){let r=e[t].webkitGetAsEntry?.();r&&n.push(r)}if(n.length>0)return(await Promise.all(n.map(S))).flat();let r=[],i=t?.files;if(i)for(let e=0;e<i.length;e++)r.push(i[e]);return r}async function S(e){if(e.isFile)return new Promise(t=>{e.file(e=>t([e]),()=>t([]))});if(e.isDirectory){let t=e.createReader(),n=[];for(;;){let e=await new Promise(e=>{t.readEntries(t=>e(t),()=>e([]))});if(e.length===0)break;n.push(...e)}return(await Promise.all(n.map(S))).flat()}return[]}function C(e,t){if(!t)return e;let n=t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(e=>n.some(t=>{if(t.startsWith(`.`))return e.name.toLowerCase().endsWith(t);if(t.endsWith(`/*`)){let n=t.replace(`/*`,``);return e.type.toLowerCase().startsWith(`${n}/`)}return e.type.toLowerCase()===t}))}const w=[`tabindex`,`aria-disabled`,`onKeydown`],T=[`accept`,`multiple`,`webkitdirectory`,`disabled`],E={class:`upload-area__default`},D={class:`upload-area__text`},O={key:0},k={key:1},A={key:0,class:`upload-area__tip`},j=(0,r.defineComponent)({__name:`UploadArea`,props:{accept:{default:``},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},tip:{default:``}},emits:[`files`],setup(e,{expose:n,emit:i}){let a=e,o=i,s=(0,r.ref)(),c=(0,r.ref)(),{isDragOver:l}=b(s,(0,r.computed)(()=>a.draggable&&!a.disabled),(0,r.computed)(()=>a.pasteable&&!a.disabled),(0,r.computed)(()=>a.accept),e=>o(`files`,e));function u(){a.disabled||c.value?.click()}function d(e){let t=e.target,n=a.disabled?[]:C(Array.from(t.files??[]),a.accept);n.length>0&&o(`files`,n),t.value=``}return n({triggerSelect:u}),(n,i)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{ref_key:`areaRef`,ref:s,class:(0,r.normalizeClass)([`upload-area`,{"upload-area--drag-over":(0,r.unref)(l),"upload-area--disabled":e.disabled}]),role:`button`,tabindex:e.disabled?-1:0,"aria-disabled":e.disabled,onClick:u,onKeydown:[(0,r.withKeys)((0,r.withModifiers)(u,[`prevent`]),[`enter`]),(0,r.withKeys)((0,r.withModifiers)(u,[`prevent`]),[`space`])]},[(0,r.createElementVNode)(`input`,{ref_key:`inputRef`,ref:c,type:`file`,class:`upload-area__input`,accept:e.accept,multiple:e.multiple,webkitdirectory:e.directory||void 0,disabled:e.disabled,onClick:i[0]||=(0,r.withModifiers)(()=>{},[`stop`]),onChange:d},null,40,T),(0,r.renderSlot)(n.$slots,`default`,{},()=>[(0,r.createElementVNode)(`div`,E,[(0,r.createVNode)(t.t,{name:(0,r.unref)(l)?`mdi:cloud-download-outline`:`mdi:cloud-upload-outline`,class:`upload-area__icon`},null,8,[`name`]),(0,r.createElementVNode)(`div`,D,[(0,r.unref)(l)?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,O,`释放文件到此处`)):((0,r.openBlock)(),(0,r.createElementBlock)(`span`,k,[i[4]||=(0,r.createTextVNode)(` 点击或拖拽文件到此区域上传 `,-1),e.pasteable?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[i[1]||=(0,r.createTextVNode)(` ,支持 `,-1),i[2]||=(0,r.createElementVNode)(`kbd`,null,`Ctrl+V`,-1),i[3]||=(0,r.createTextVNode)(` 粘贴 `,-1)],64)):(0,r.createCommentVNode)(`v-if`,!0)]))]),e.tip?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,A,(0,r.toDisplayString)(e.tip),1)):(0,r.createCommentVNode)(`v-if`,!0)])],!0)],42,w))}});var M=n.t(j,[[`__scopeId`,`data-v-705892ab`]]);const N={class:`file-list__thumb`},P=[`src`,`alt`],F={class:`file-list__info`},I={class:`file-list__name`},L={class:`file-list__meta`},R={class:`file-list__size`},z={key:0,class:`file-list__instant`},B={key:1,class:`file-list__chunk-info`},V={key:2,class:`file-list__error`},H={class:`file-list__actions`},U=(0,r.defineComponent)({__name:`FileList`,props:{fileList:{},showThumbnail:{type:Boolean}},emits:[`remove`,`retry`],setup(e,{emit:n}){let a=n;return(n,o)=>((0,r.openBlock)(),(0,r.createBlock)(r.TransitionGroup,{name:`file-list`,tag:`div`,class:`file-list`},{default:(0,r.withCtx)(()=>[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.fileList,n=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:n.uid,class:(0,r.normalizeClass)([`file-list__item`,`file-list__item--${n.status}`])},[(0,r.createCommentVNode)(` 缩略图 / 图标 `),(0,r.createElementVNode)(`div`,N,[e.showThumbnail&&n.thumbUrl?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:n.thumbUrl,alt:n.name,class:`file-list__thumb-img`},null,8,P)):((0,r.openBlock)(),(0,r.createBlock)(t.t,{key:1,name:(0,r.unref)(u)(n.type),class:`file-list__thumb-icon`},null,8,[`name`]))]),(0,r.createCommentVNode)(` 文件信息 `),(0,r.createElementVNode)(`div`,F,[(0,r.createElementVNode)(`div`,I,[(0,r.createVNode)((0,r.unref)(i.NEllipsis),{"line-clamp":1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)(n.name),1)]),_:2},1024)]),(0,r.createElementVNode)(`div`,L,[(0,r.createElementVNode)(`span`,R,(0,r.toDisplayString)((0,r.unref)(d)(n.size)),1),(0,r.createVNode)((0,r.unref)(i.NTag),{type:(0,r.unref)(c)[n.status]||`default`,size:`tiny`,bordered:!1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)((0,r.unref)(s)[n.status]||n.status),1)]),_:2},1032,[`type`]),n.status===`instant`?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,z,` ⚡ `)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 进度条 `),n.status===`uploading`||n.status===`hashing`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NProgress),{key:0,percentage:n.percent,height:4,"border-radius":2,"show-indicator":!1,status:n.status===`hashing`?`info`:`success`},null,8,[`percentage`,`status`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 分片进度描述 `),n.chunkProgress&&n.status===`uploading`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,B,` 分片 `+(0,r.toDisplayString)(n.chunkProgress.uploadedChunks)+`/`+(0,r.toDisplayString)(n.chunkProgress.totalChunks),1)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 错误信息 `),n.status===`error`&&n.error?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,V,(0,r.toDisplayString)(n.error),1)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 操作按钮 `),(0,r.createElementVNode)(`div`,H,[n.status===`error`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:0,text:``,type:`warning`,size:`tiny`,"aria-label":`重试上传`,onClick:e=>a(`retry`,n.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NButton),{text:``,type:`error`,size:`tiny`,"aria-label":`移除文件`,onClick:e=>a(`remove`,n.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:close`})]),_:1},8,[`onClick`])])],2))),128))]),_:1}))}});var W=n.t(U,[[`__scopeId`,`data-v-04f26012`]]);const G={key:0,class:`image-preview`},K=[`src`,`alt`],q={class:`image-preview__overlay`},J={key:0,class:`image-preview__progress`},Y={class:`image-preview__actions`},X={class:`image-preview__name`},Z=(0,r.defineComponent)({__name:`ImagePreview`,props:{fileList:{}},emits:[`remove`,`retry`],setup(e,{emit:n}){let a=e,o=n,s=(0,r.computed)(()=>a.fileList.filter(e=>e.type?.startsWith(`image/`)));return(e,n)=>s.value.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,G,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(s.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.uid,class:(0,r.normalizeClass)([`image-preview__item`,`image-preview__item--${e.status}`])},[e.thumbUrl?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:e.thumbUrl,alt:e.name,class:`image-preview__img`},null,8,K)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 遮罩层 `),(0,r.createElementVNode)(`div`,q,[(0,r.createCommentVNode)(` 上传中进度 `),e.status===`uploading`||e.status===`hashing`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,J,[(0,r.createVNode)((0,r.unref)(i.NProgress),{type:`circle`,percentage:e.percent,"stroke-width":3,style:{width:`40px`}},null,8,[`percentage`])])):e.status===`success`||e.status===`instant`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[(0,r.createCommentVNode)(` 状态图标 `),(0,r.createVNode)(t.t,{name:`mdi:check-circle`,class:`image-preview__status-icon image-preview__status-icon--success`})],2112)):e.status===`error`?((0,r.openBlock)(),(0,r.createBlock)(t.t,{key:2,name:`mdi:alert-circle`,class:`image-preview__status-icon image-preview__status-icon--error`})):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 操作 `),(0,r.createElementVNode)(`div`,Y,[e.status===`error`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:0,circle:``,size:`tiny`,type:`warning`,"aria-label":`重试上传`,onClick:t=>o(`retry`,e.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NButton),{circle:``,size:`tiny`,type:`error`,"aria-label":`移除文件`,onClick:t=>o(`remove`,e.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:close`})]),_:1},8,[`onClick`])])]),(0,r.createCommentVNode)(` 文件名 `),(0,r.createElementVNode)(`div`,X,[(0,r.createVNode)((0,r.unref)(i.NEllipsis),{"line-clamp":1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)(e.name),1)]),_:2},1024)])],2))),128))])):(0,r.createCommentVNode)(`v-if`,!0)}});var Q=n.t(Z,[[`__scopeId`,`data-v-32d39ae9`]]);const $={class:`c-upload`},ee={key:0,class:`c-upload__total-progress`},te={class:`c-upload__total-label`},ne=(0,r.defineComponent)({__name:`index`,props:{action:{default:``},headers:{default:()=>({})},data:{default:()=>({})},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},accept:{default:``},maxSize:{default:0},maxCount:{default:0},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},chunked:{type:Boolean,default:!1},chunkSize:{default:o},concurrency:{default:3},showFileList:{type:Boolean,default:!0},listType:{default:`text`},showThumbnail:{type:Boolean,default:!0},customRequest:{},instantCheck:{},uploadedChunksQuery:{},mergeChunks:{},beforeUpload:{},tip:{default:``},defaultFileList:{default:()=>[]}},emits:[`change`,`success`,`error`,`progress`,`remove`,`finish`,`exceed`],setup(e,{expose:t,emit:n}){let a=e,o=n,s=(0,r.ref)(),{fileList:c,totalPercent:l,addFiles:u,removeFile:d,clearAll:f,startUpload:p,pauseAll:m,resumeAll:h,retryFile:g,processFile:_,getSuccessList:v}=y(a),b=(0,r.computed)(()=>c.value.some(e=>e.status===`uploading`||e.status===`hashing`||e.status===`validating`)),x=e=>({...e}),S=()=>c.value.map(x);function C(e){let t=Math.max(0,Math.trunc(Number(a.maxCount)||0));if(t>0&&c.value.length+e.length>t){o(`exceed`,e,S());let n=t-c.value.length;if(n<=0)return;e=e.slice(0,n)}let n=u(e);o(`change`,S()),n.forEach(e=>void _(e))}function w(e){let t=c.value.find(t=>t.uid===e);t&&(o(`remove`,x(t)),d(e),o(`change`,S()))}function T(e){g(e)}let E=new Map,D=!1;return(0,r.watch)(c,e=>{let t=new Set(e.map(e=>e.uid));E.forEach((e,n)=>{t.has(n)||E.delete(n)}),e.forEach(e=>{let t=E.get(e.uid);t&&t.percent!==e.percent&&o(`progress`,x(e),e.percent),t&&t.status!==e.status&&(e.status===`success`||e.status===`instant`)&&o(`success`,x(e),e.response),t&&t.status!==`error`&&e.status===`error`&&o(`error`,x(e),Error(e.error||`上传失败`)),E.set(e.uid,{status:e.status,percent:e.percent})}),e.length>0&&e.every(e=>e.status===`success`||e.status===`instant`||e.status===`error`)?(D||o(`finish`,S()),D=!0):D=!1},{deep:!0}),t({selectFiles:()=>s.value?.triggerSelect(),startUpload:p,pauseAll:m,resumeAll:h,clearAll:()=>{f(),o(`change`,S())},removeFile:e=>{w(e)},retryFile:g,getFileList:S,getSuccessList:()=>v().map(x),get totalPercent(){return l.value}}),(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,$,[(0,r.createCommentVNode)(` 上传区域 `),(0,r.createVNode)(M,{ref_key:`uploadAreaRef`,ref:s,accept:a.accept,multiple:a.multiple,directory:a.directory,disabled:a.disabled,draggable:a.draggable,pasteable:a.pasteable,tip:a.tip,onFiles:C},{default:(0,r.withCtx)(()=>[(0,r.renderSlot)(e.$slots,`area`,{},void 0,!0)]),_:3},8,[`accept`,`multiple`,`directory`,`disabled`,`draggable`,`pasteable`,`tip`]),(0,r.createCommentVNode)(` 总进度条 `),b.value?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,ee,[(0,r.createElementVNode)(`div`,te,[t[0]||=(0,r.createElementVNode)(`span`,null,`总进度`,-1),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)((0,r.unref)(l))+`%`,1)]),(0,r.createVNode)((0,r.unref)(i.NProgress),{percentage:(0,r.unref)(l),height:6,"border-radius":3,"show-indicator":!1,status:`success`},null,8,[`percentage`])])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 图片预览模式 `),a.listType===`image`?((0,r.openBlock)(),(0,r.createBlock)(Q,{key:1,"file-list":(0,r.unref)(c),onRemove:w,onRetry:T},null,8,[`file-list`])):a.showFileList&&(0,r.unref)(c).length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:2},[(0,r.createCommentVNode)(` 文件列表模式 `),(0,r.createVNode)(W,{"file-list":(0,r.unref)(c),"show-thumbnail":a.showThumbnail,onRemove:w,onRetry:T},null,8,[`file-list`,`show-thumbnail`])],2112)):(0,r.createCommentVNode)(`v-if`,!0)]))}});var re=n.t(ne,[[`__scopeId`,`data-v-7674f0c8`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return re}});
1
+ const e=require(`./chunk.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`spark-md5`);a=e.t(a);const o=2*1024*1024,s={pending:`等待上传`,validating:`校验文件…`,hashing:`计算校验…`,uploading:`上传中…`,success:`上传成功`,error:`上传失败`,paused:`已暂停`,instant:`秒传成功`},c={pending:`default`,validating:`info`,hashing:`info`,uploading:`info`,success:`success`,error:`error`,paused:`warning`,instant:`success`},l={"image/":`mdi:file-image-outline`,"video/":`mdi:file-video-outline`,"audio/":`mdi:file-music-outline`,"application/pdf":`mdi:file-pdf-box`,"application/zip":`mdi:folder-zip-outline`,"application/x-rar":`mdi:folder-zip-outline`,"application/vnd.ms-excel":`mdi:file-excel-outline`,"application/vnd.openxmlformats-officedocument.spreadsheetml":`mdi:file-excel-outline`,"application/msword":`mdi:file-word-outline`,"application/vnd.openxmlformats-officedocument.wordprocessingml":`mdi:file-word-outline`,"text/":`mdi:file-document-outline`,default:`mdi:file-outline`};function u(e){for(let[t,n]of Object.entries(l))if(t!==`default`&&e.startsWith(t))return n;return l.default}function d(e){if(e===0)return`0 B`;let t=[`B`,`KB`,`MB`,`GB`,`TB`],n=Math.floor(Math.log(e)/Math.log(1024));return`${(e/1024**n).toFixed(n>0?1:0)} ${t[n]}`}const f=()=>new Promise(e=>{typeof requestAnimationFrame==`function`?requestAnimationFrame(()=>e()):setTimeout(e,0)});function p(e){let t=(0,r.ref)(0),n=(0,r.ref)(0),i=(0,r.computed)(()=>t.value>0);async function o(r,i){t.value+=1,n.value=0,i?.(0);let o=new a.default.ArrayBuffer,s=Math.max(1,Math.trunc(Number(e.value)||1)),c=Math.max(1,Math.ceil(r.size/s));try{if(r.size===0)return o.append(new ArrayBuffer(0)),n.value=100,i?.(100),o.end();for(let e=0;e<c;e+=1){let t=e*s,a=await r.slice(t,t+s).arrayBuffer();o.append(a),n.value=Math.round((e+1)/c*100),i?.(n.value),await f()}return o.end()}finally{t.value=Math.max(0,t.value-1)}}return{hashing:i,hashProgress:(0,r.readonly)(n),calculateHash:o}}function m(e){let t=new Map,n=new Map;function r(t){let n=Math.max(1,Math.trunc(Number(e.chunkSize.value)||1)),r=[],i=0,a=0;for(;a<t.size;){let e=Math.min(a+n,t.size);r.push({index:i,blob:t.slice(a,e),size:e-a,uploaded:!1}),a=e,i++}return r}async function i(t,n){if(e.uploadedChunksQuery?.value)try{let r=await e.uploadedChunksQuery.value(t);for(let e of r){let t=n[e];t&&(t.uploaded=!0)}}catch{}}function a(t){return new Promise((n,r)=>{let i=!1,a=()=>{i||(i=!0,n())},o=e=>{i||(i=!0,t.setError(),r(e instanceof Error?e:Error(String(e))))},s={action:e.action.value,headers:e.headers.value,data:{...e.data.value,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,filename:t.file.name},file:t.chunk.blob,filename:t.file.name,hash:t.hash,chunkIndex:t.chunk.index,totalChunks:t.totalChunks,onProgress:()=>{},onSuccess:()=>{if(!i){if(t.isCancelled()){a();return}t.chunk.uploaded=!0,t.setUploadedBytes(t.chunk.size),t.onProgress({uploadedChunks:t.chunks.filter(e=>e.uploaded).length,totalChunks:t.totalChunks,uploadedBytes:t.chunks.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),totalBytes:t.totalBytes}),a()}},onError:o};try{let n=e.customRequest?.value?e.customRequest.value(s):h(s);t.abortControllers.push(()=>{try{n.abort()}catch{}finally{a()}})}catch(e){o(e)}})}async function o(o){let{uid:c,file:l,hash:u,onProgress:d,onSuccess:f,onError:p,isPaused:m}=o,h=Symbol(c);n.set(c,h);let g=()=>n.get(c)!==h,_=()=>{g()||n.delete(c)},v=r(l),y=v.length,b=l.size,x=0;if(await i(u,v),g()||m()){_();return}x=v.filter(e=>e.uploaded).reduce((e,t)=>e+t.size,0),d({uploadedChunks:v.filter(e=>e.uploaded).length,totalChunks:y,uploadedBytes:x,totalBytes:b});let S=v.filter(e=>!e.uploaded);if(S.length===0){try{g()||await s(u,l.name,y,f,p,g)}finally{_()}return}let C=[];t.set(c,C);let w=Math.max(1,Math.trunc(Number(e.concurrency.value)||1)),T=0,E=!1;async function D(){for(;T<S.length&&!E&&!m()&&!g();){let e=S[T++];await a({chunk:e,hash:u,file:l,totalChunks:y,chunks:v,totalBytes:b,abortControllers:C,onProgress:e=>{g()||d(e)},setUploadedBytes:e=>{x+=e},setError:()=>{E=!0},isCancelled:g})}}let O=Array.from({length:Math.min(w,S.length)},()=>D());try{let e=(await Promise.allSettled(O)).find(e=>e.status===`rejected`);e&&!g()?p(e.reason instanceof Error?e.reason:Error(String(e.reason))):!E&&!m()&&!g()&&await s(u,l.name,y,f,p,g)}finally{g()||t.delete(c),_()}}async function s(t,n,r,i,a,o){if(e.mergeChunks?.value)try{let a=await e.mergeChunks.value(t,n,r);o()||i(a)}catch(e){o()||a(e instanceof Error?e:Error(`分片合并失败`))}else o()||i({message:`分片上传完成(未配置合并函数)`})}function c(e){n.delete(e),t.get(e)?.forEach(e=>e()),t.delete(e)}function l(){n.clear(),t.forEach(e=>{e.forEach(e=>e())}),t.clear()}return{createChunks:r,uploadChunks:o,abortUpload:c,abortAll:l}}function h(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),e.headers&&Object.entries(e.headers).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n;try{n=JSON.parse(t.responseText)}catch{n=t.responseText}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>{e.onError?.(Error(`网络错误`))}),t.addEventListener(`abort`,()=>{e.onError?.(new DOMException(`上传已取消`,`AbortError`))});let n=new FormData;return n.append(`file`,e.file,e.filename),e.data&&Object.entries(e.data).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function g(e){return e instanceof Error?e:Error(String(e))}function _(e){let t=[],n=(0,r.ref)(0),i=new Map,a=()=>{n.value=i.size},o=()=>Math.max(1,Math.trunc(Number(e.concurrency.value)||1));function s(){for(;i.size<o()&&t.length>0;){let n=t.shift(),{file:r}=n;if(!r.raw||i.has(r.uid))continue;let o=!1,c=e=>{o||(o=!0,i.delete(r.uid),a(),e?.error?n.onError(r.uid,e.error):e&&`response`in e&&n.onSuccess(r.uid,e.response),s())},l={action:e.action.value,headers:e.headers.value,data:e.data.value,file:r.raw,filename:r.name,onProgress:e=>n.onProgress(r.uid,e),onSuccess:e=>c({response:e}),onError:e=>c({error:e})};i.set(r.uid,{abort:()=>void 0,settle:c}),a();try{let t=e.customRequest?.value?e.customRequest.value(l):v(l),n=i.get(r.uid);n&&(n.abort=t.abort)}catch(e){c({error:g(e)})}}}function c(e,n,r,i){l(e.uid),t.push({file:e,onProgress:n,onSuccess:r,onError:i}),s()}function l(e){for(let n=t.length-1;n>=0;--n)t[n].file.uid===e&&t.splice(n,1);let n=i.get(e);if(n){n.settle();try{n.abort()}catch{}}}function u(){t.length=0;let e=[...i.values()];i.clear(),a(),e.forEach(e=>{e.settle();try{e.abort()}catch{}})}return(0,r.watch)(e.concurrency,s),{activeCount:(0,r.readonly)(n),enqueue:c,abort:l,abortAll:u}}function v(e){let t=new XMLHttpRequest;t.open(`POST`,e.action),Object.entries(e.headers??{}).forEach(([e,n])=>{t.setRequestHeader(e,n)}),t.upload.addEventListener(`progress`,t=>{t.lengthComputable&&e.onProgress?.(Math.round(t.loaded/t.total*100))}),t.addEventListener(`load`,()=>{if(t.status>=200&&t.status<300){let n=t.responseText;try{n=JSON.parse(t.responseText)}catch{}e.onSuccess?.(n)}else e.onError?.(Error(`上传失败: HTTP ${t.status}`))}),t.addEventListener(`error`,()=>e.onError?.(Error(`网络错误`)));let n=new FormData;return n.append(`file`,e.file,e.filename),Object.entries(e.data??{}).forEach(([e,t])=>{n.append(e,String(t))}),t.send(n),{abort:()=>t.abort()}}function y(e){let t=(0,r.computed)(()=>e.action??``),n=(0,r.computed)(()=>e.headers??{}),i=(0,r.computed)(()=>e.data??{}),a=(0,r.computed)(()=>{let t=Math.trunc(Number(e.chunkSize));return Number.isFinite(t)&&t>0?t:o}),s=(0,r.computed)(()=>{let t=Math.trunc(Number(e.concurrency));return Number.isFinite(t)&&t>0?t:3}),c=(0,r.computed)(()=>e.customRequest),l=(0,r.computed)(()=>e.instantCheck),u=(0,r.computed)(()=>e.uploadedChunksQuery),d=(0,r.computed)(()=>e.mergeChunks),f=(0,r.ref)((e.defaultFileList??[]).map(e=>({...e}))),h=(0,r.reactive)(new Set),g=new Map,v=new Set,{hashing:y,hashProgress:b,calculateHash:x}=p(a),S=m({chunkSize:a,concurrency:s,action:t,headers:n,data:i,customRequest:c,uploadedChunksQuery:u,mergeChunks:d}),C=_({concurrency:s,action:t,headers:n,data:i,customRequest:c}),w=(0,r.computed)(()=>{let e=f.value;if(e.length===0)return 0;let t=e.reduce((e,t)=>e+t.percent,0);return Math.round(t/e.length)});function T(){return typeof crypto<`u`&&`randomUUID`in crypto?`upload-${crypto.randomUUID()}`:`upload-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function E(e){if(e.type.startsWith(`image/`)){let t=URL.createObjectURL(e);return v.add(t),t}}function D(t){let n=[];for(let r of t){if(Number.isFinite(e.maxCount)&&(e.maxCount??0)>0&&f.value.length+n.length>=Math.trunc(e.maxCount))break;let t={uid:T(),name:r.name,size:r.size,type:r.type,status:`pending`,percent:0,raw:r,thumbUrl:E(r)};n.push(t)}return f.value.push(...n),n}function O(e,t){let n=f.value.find(t=>t.uid===e);n&&Object.assign(n,t)}function k(e){g.set(e,Symbol(e)),S.abortUpload(e),C.abort(e),h.delete(e);let t=f.value.findIndex(t=>t.uid===e);if(t!==-1){let e=f.value[t];M(e.thumbUrl),f.value.splice(t,1)}}function A(){S.abortAll(),C.abortAll(),h.clear(),f.value.forEach(e=>{M(e.thumbUrl)}),f.value=[],g.clear()}async function j(t){if((e.maxSize??0)>0&&t.size>e.maxSize)return null;if(e.beforeUpload){let n=await e.beforeUpload(t);if(n===!1)return null;if(n instanceof File)return(e.maxSize??0)>0&&n.size>e.maxSize?null:n}return t}function M(e){!e||!v.has(e)||(URL.revokeObjectURL(e),v.delete(e))}function N(e,t){return g.get(e)===t&&!h.has(e)&&f.value.some(t=>t.uid===e)}function P(e,t){return x(e.raw,n=>{N(e.uid,t)&&O(e.uid,{percent:n})})}async function F(n){if(!n.raw)return;let r=Symbol(n.uid);g.set(n.uid,r),O(n.uid,{status:`validating`,error:void 0});let i;try{i=await j(n.raw)}catch(e){N(n.uid,r)&&O(n.uid,{status:`error`,error:e instanceof Error?e.message:`文件校验失败`});return}if(N(n.uid,r)){if(!i){O(n.uid,{status:`error`,error:`文件校验未通过`});return}if(i!==n.raw&&(M(n.thumbUrl),Object.assign(n,{raw:i,name:i.name,size:i.size,type:i.type,hash:void 0,chunkProgress:void 0,thumbUrl:E(i)})),!c.value&&!t.value.trim()){O(n.uid,{status:`error`,error:`未配置上传地址`});return}if(l.value&&!n.hash){O(n.uid,{status:`hashing`});try{let e=await P(n,r);if(!N(n.uid,r))return;O(n.uid,{hash:e});let t=await l.value(e,n.raw.name);if(!N(n.uid,r))return;if(t.exists){O(n.uid,{status:`instant`,percent:100,url:t.url});return}}catch{if(!N(n.uid,r))return}}e.chunked&&n.raw.size>a.value?await I(n,r):L(n,r)}}async function I(e,t){let n=e.raw,{hash:r}=e;if(!r){O(e.uid,{status:`hashing`});try{if(r=await P(e,t),!N(e.uid,t))return;O(e.uid,{hash:r})}catch{N(e.uid,t)&&O(e.uid,{status:`error`,error:`Hash 计算失败`});return}}O(e.uid,{status:`uploading`,percent:0}),await S.uploadChunks({uid:e.uid,file:n,hash:r,onProgress:n=>{if(!N(e.uid,t))return;let r=Math.round(n.uploadedBytes/n.totalBytes*100);O(e.uid,{percent:r,chunkProgress:n})},onSuccess:n=>{N(e.uid,t)&&O(e.uid,{status:`success`,percent:100,response:n})},onError:n=>{N(e.uid,t)&&O(e.uid,{status:`error`,error:n.message})},isPaused:()=>h.has(e.uid)})}function L(e,t){O(e.uid,{status:`uploading`,percent:0}),C.enqueue(e,(e,n)=>{N(e,t)&&O(e,{percent:n})},(e,n)=>{N(e,t)&&O(e,{status:`success`,percent:100,response:n})},(e,n)=>{N(e,t)&&O(e,{status:`error`,error:n.message})})}function R(){f.value.filter(e=>e.status===`pending`).forEach(e=>void F(e))}function z(){f.value.forEach(e=>{(e.status===`uploading`||e.status===`hashing`||e.status===`validating`)&&(h.add(e.uid),g.set(e.uid,Symbol(e.uid)),S.abortUpload(e.uid),C.abort(e.uid),O(e.uid,{status:`paused`}))})}function B(){f.value.forEach(e=>{e.status===`paused`&&(h.delete(e.uid),O(e.uid,{status:`pending`}))}),R()}function V(e){let t=f.value.find(t=>t.uid===e);t&&t.status===`error`&&(O(e,{status:`pending`,percent:0,error:void 0}),F(t))}function H(){return f.value.filter(e=>e.status===`success`||e.status===`instant`)}return(0,r.onBeforeUnmount)(()=>{S.abortAll(),C.abortAll(),g.clear(),f.value.forEach(e=>{M(e.thumbUrl)})}),{fileList:f,totalPercent:w,hashing:y,hashProgress:b,addFiles:D,removeFile:k,clearAll:A,startUpload:R,pauseAll:z,resumeAll:B,retryFile:V,processFile:F,getSuccessList:H}}function b(e,t,n,i,a){let o=(0,r.ref)(!1),s=null,c=!1;function l(e){t.value&&(e.preventDefault(),o.value=!0)}function u(e){t.value&&(e.preventDefault(),o.value=!0)}function d(n){if(!t.value)return;n.preventDefault();let r=e.value;r&&!r.contains(n.relatedTarget)&&(o.value=!1)}async function f(e){if(!t.value)return;e.preventDefault(),o.value=!1;let n=e.dataTransfer?.items;if(!n)return;let r=await x(n,e.dataTransfer);if(c||!t.value)return;let s=C(r,i.value);s.length>0&&a(s)}function p(e){if(!n.value)return;let t=e.clipboardData?.items;if(!t)return;let r=[];for(let e=0;e<t.length;e++){let n=t[e];if(n.kind===`file`){let e=n.getAsFile();e&&r.push(e)}}let o=C(r,i.value);o.length>0&&(e.preventDefault(),a(o))}function m(){let t=e.value;!t||s===t||(s=t,t.addEventListener(`dragenter`,l),t.addEventListener(`dragover`,u),t.addEventListener(`dragleave`,d),t.addEventListener(`drop`,f),n.value&&t.addEventListener(`paste`,p))}function h(){let e=s;e&&(e.removeEventListener(`dragenter`,l),e.removeEventListener(`dragover`,u),e.removeEventListener(`dragleave`,d),e.removeEventListener(`drop`,f)),e?.removeEventListener(`paste`,p),s=null}return(0,r.onMounted)(()=>{c=!1,m()}),(0,r.onBeforeUnmount)(()=>{c=!0,h()}),(0,r.watch)([e,t,n],()=>{h(),m()}),{isDragOver:(0,r.readonly)(o)}}async function x(e,t){let n=[];for(let t=0;t<e.length;t++){let r=e[t].webkitGetAsEntry?.();r&&n.push(r)}if(n.length>0)return(await Promise.all(n.map(S))).flat();let r=[],i=t?.files;if(i)for(let e=0;e<i.length;e++)r.push(i[e]);return r}async function S(e){if(e.isFile)return new Promise(t=>{e.file(e=>t([e]),()=>t([]))});if(e.isDirectory){let t=e.createReader(),n=[];for(;;){let e=await new Promise(e=>{t.readEntries(t=>e(t),()=>e([]))});if(e.length===0)break;n.push(...e)}return(await Promise.all(n.map(S))).flat()}return[]}function C(e,t){if(!t)return e;let n=t.split(`,`).map(e=>e.trim().toLowerCase()).filter(Boolean);return n.length===0?e:e.filter(e=>n.some(t=>{if(t.startsWith(`.`))return e.name.toLowerCase().endsWith(t);if(t.endsWith(`/*`)){let n=t.replace(`/*`,``);return e.type.toLowerCase().startsWith(`${n}/`)}return e.type.toLowerCase()===t}))}const w=[`tabindex`,`aria-disabled`,`onKeydown`],T=[`accept`,`multiple`,`webkitdirectory`,`disabled`],E={class:`upload-area__default`},D={class:`upload-area__text`},O={key:0},k={key:1},A={key:0,class:`upload-area__tip`},j=(0,r.defineComponent)({__name:`UploadArea`,props:{accept:{default:``},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},tip:{default:``}},emits:[`files`],setup(e,{expose:n,emit:i}){let a=e,o=i,s=(0,r.ref)(),c=(0,r.ref)(),{isDragOver:l}=b(s,(0,r.computed)(()=>a.draggable&&!a.disabled),(0,r.computed)(()=>a.pasteable&&!a.disabled),(0,r.computed)(()=>a.accept),e=>o(`files`,e));function u(){a.disabled||c.value?.click()}function d(e){let t=e.target,n=a.disabled?[]:C(Array.from(t.files??[]),a.accept);n.length>0&&o(`files`,n),t.value=``}return n({triggerSelect:u}),(n,i)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{ref_key:`areaRef`,ref:s,class:(0,r.normalizeClass)([`upload-area`,{"upload-area--drag-over":(0,r.unref)(l),"upload-area--disabled":e.disabled}]),role:`button`,tabindex:e.disabled?-1:0,"aria-disabled":e.disabled,onClick:u,onKeydown:[(0,r.withKeys)((0,r.withModifiers)(u,[`prevent`]),[`enter`]),(0,r.withKeys)((0,r.withModifiers)(u,[`prevent`]),[`space`])]},[(0,r.createElementVNode)(`input`,{ref_key:`inputRef`,ref:c,type:`file`,class:`upload-area__input`,accept:e.accept,multiple:e.multiple,webkitdirectory:e.directory||void 0,disabled:e.disabled,onClick:i[0]||=(0,r.withModifiers)(()=>{},[`stop`]),onChange:d},null,40,T),(0,r.renderSlot)(n.$slots,`default`,{},()=>[(0,r.createElementVNode)(`div`,E,[(0,r.createVNode)(t.t,{name:(0,r.unref)(l)?`mdi:cloud-download-outline`:`mdi:cloud-upload-outline`,class:`upload-area__icon`},null,8,[`name`]),(0,r.createElementVNode)(`div`,D,[(0,r.unref)(l)?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,O,`释放文件到此处`)):((0,r.openBlock)(),(0,r.createElementBlock)(`span`,k,[i[4]||=(0,r.createTextVNode)(` 点击或拖拽文件到此区域上传 `,-1),e.pasteable?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:0},[i[1]||=(0,r.createTextVNode)(` ,支持 `,-1),i[2]||=(0,r.createElementVNode)(`kbd`,null,`Ctrl+V`,-1),i[3]||=(0,r.createTextVNode)(` 粘贴 `,-1)],64)):(0,r.createCommentVNode)(`v-if`,!0)]))]),e.tip?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,A,(0,r.toDisplayString)(e.tip),1)):(0,r.createCommentVNode)(`v-if`,!0)])],!0)],42,w))}});var M=n.t(j,[[`__scopeId`,`data-v-705892ab`]]);const N={class:`file-list__thumb`},P=[`src`,`alt`],F={class:`file-list__info`},I={class:`file-list__name`},L={class:`file-list__meta`},R={class:`file-list__size`},z={key:0,class:`file-list__instant`},B={key:1,class:`file-list__chunk-info`},V={key:2,class:`file-list__error`},H={class:`file-list__actions`},U=(0,r.defineComponent)({__name:`FileList`,props:{fileList:{},showThumbnail:{type:Boolean}},emits:[`remove`,`retry`],setup(e,{emit:n}){let a=n;return(n,o)=>((0,r.openBlock)(),(0,r.createBlock)(r.TransitionGroup,{name:`file-list`,tag:`div`,class:`file-list`},{default:(0,r.withCtx)(()=>[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(e.fileList,n=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:n.uid,class:(0,r.normalizeClass)([`file-list__item`,`file-list__item--${n.status}`])},[(0,r.createCommentVNode)(` 缩略图 / 图标 `),(0,r.createElementVNode)(`div`,N,[e.showThumbnail&&n.thumbUrl?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:n.thumbUrl,alt:n.name,class:`file-list__thumb-img`},null,8,P)):((0,r.openBlock)(),(0,r.createBlock)(t.t,{key:1,name:(0,r.unref)(u)(n.type),class:`file-list__thumb-icon`},null,8,[`name`]))]),(0,r.createCommentVNode)(` 文件信息 `),(0,r.createElementVNode)(`div`,F,[(0,r.createElementVNode)(`div`,I,[(0,r.createVNode)((0,r.unref)(i.NEllipsis),{"line-clamp":1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)(n.name),1)]),_:2},1024)]),(0,r.createElementVNode)(`div`,L,[(0,r.createElementVNode)(`span`,R,(0,r.toDisplayString)((0,r.unref)(d)(n.size)),1),(0,r.createVNode)((0,r.unref)(i.NTag),{type:(0,r.unref)(c)[n.status]||`default`,size:`tiny`,bordered:!1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)((0,r.unref)(s)[n.status]||n.status),1)]),_:2},1032,[`type`]),n.status===`instant`?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,z,` ⚡ `)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 进度条 `),n.status===`uploading`||n.status===`hashing`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NProgress),{key:0,percentage:n.percent,height:4,"border-radius":2,"show-indicator":!1,status:n.status===`hashing`?`info`:`success`},null,8,[`percentage`,`status`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 分片进度描述 `),n.chunkProgress&&n.status===`uploading`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,B,` 分片 `+(0,r.toDisplayString)(n.chunkProgress.uploadedChunks)+`/`+(0,r.toDisplayString)(n.chunkProgress.totalChunks),1)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 错误信息 `),n.status===`error`&&n.error?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,V,(0,r.toDisplayString)(n.error),1)):(0,r.createCommentVNode)(`v-if`,!0)]),(0,r.createCommentVNode)(` 操作按钮 `),(0,r.createElementVNode)(`div`,H,[n.status===`error`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:0,text:``,type:`warning`,size:`tiny`,"aria-label":`重试上传`,onClick:e=>a(`retry`,n.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NButton),{text:``,type:`error`,size:`tiny`,"aria-label":`移除文件`,onClick:e=>a(`remove`,n.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:close`})]),_:1},8,[`onClick`])])],2))),128))]),_:1}))}});var W=n.t(U,[[`__scopeId`,`data-v-04f26012`]]);const G={key:0,class:`image-preview`},K=[`src`,`alt`],q={class:`image-preview__overlay`},J={key:0,class:`image-preview__progress`},Y={class:`image-preview__actions`},X={class:`image-preview__name`},Z=(0,r.defineComponent)({__name:`ImagePreview`,props:{fileList:{}},emits:[`remove`,`retry`],setup(e,{emit:n}){let a=e,o=n,s=(0,r.computed)(()=>a.fileList.filter(e=>e.type?.startsWith(`image/`)));return(e,n)=>s.value.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,G,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(s.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:e.uid,class:(0,r.normalizeClass)([`image-preview__item`,`image-preview__item--${e.status}`])},[e.thumbUrl?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:e.thumbUrl,alt:e.name,class:`image-preview__img`},null,8,K)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 遮罩层 `),(0,r.createElementVNode)(`div`,q,[(0,r.createCommentVNode)(` 上传中进度 `),e.status===`uploading`||e.status===`hashing`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,J,[(0,r.createVNode)((0,r.unref)(i.NProgress),{type:`circle`,percentage:e.percent,"stroke-width":3,style:{width:`40px`}},null,8,[`percentage`])])):e.status===`success`||e.status===`instant`?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:1},[(0,r.createCommentVNode)(` 状态图标 `),(0,r.createVNode)(t.t,{name:`mdi:check-circle`,class:`image-preview__status-icon image-preview__status-icon--success`})],2112)):e.status===`error`?((0,r.openBlock)(),(0,r.createBlock)(t.t,{key:2,name:`mdi:alert-circle`,class:`image-preview__status-icon image-preview__status-icon--error`})):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 操作 `),(0,r.createElementVNode)(`div`,Y,[e.status===`error`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NButton),{key:0,circle:``,size:`tiny`,type:`warning`,"aria-label":`重试上传`,onClick:t=>o(`retry`,e.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:refresh`})]),_:1},8,[`onClick`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createVNode)((0,r.unref)(i.NButton),{circle:``,size:`tiny`,type:`error`,"aria-label":`移除文件`,onClick:t=>o(`remove`,e.uid)},{icon:(0,r.withCtx)(()=>[(0,r.createVNode)(t.t,{name:`mdi:close`})]),_:1},8,[`onClick`])])]),(0,r.createCommentVNode)(` 文件名 `),(0,r.createElementVNode)(`div`,X,[(0,r.createVNode)((0,r.unref)(i.NEllipsis),{"line-clamp":1},{default:(0,r.withCtx)(()=>[(0,r.createTextVNode)((0,r.toDisplayString)(e.name),1)]),_:2},1024)])],2))),128))])):(0,r.createCommentVNode)(`v-if`,!0)}});var Q=n.t(Z,[[`__scopeId`,`data-v-32d39ae9`]]);const $={class:`c-upload`},ee={key:0,class:`c-upload__total-progress`},te={class:`c-upload__total-label`},ne=(0,r.defineComponent)({__name:`index`,props:{action:{default:``},headers:{default:()=>({})},data:{default:()=>({})},multiple:{type:Boolean,default:!1},directory:{type:Boolean,default:!1},accept:{default:``},maxSize:{default:0},maxCount:{default:0},disabled:{type:Boolean,default:!1},draggable:{type:Boolean,default:!0},pasteable:{type:Boolean,default:!1},chunked:{type:Boolean,default:!1},chunkSize:{default:o},concurrency:{default:3},showFileList:{type:Boolean,default:!0},listType:{default:`text`},showThumbnail:{type:Boolean,default:!0},customRequest:{},instantCheck:{},uploadedChunksQuery:{},mergeChunks:{},beforeUpload:{},tip:{default:``},defaultFileList:{default:()=>[]}},emits:[`change`,`success`,`error`,`progress`,`remove`,`finish`,`exceed`],setup(e,{expose:t,emit:n}){let a=e,o=n,s=(0,r.ref)(),{fileList:c,totalPercent:l,addFiles:u,removeFile:d,clearAll:f,startUpload:p,pauseAll:m,resumeAll:h,retryFile:g,processFile:_,getSuccessList:v}=y(a),b=(0,r.computed)(()=>c.value.some(e=>e.status===`uploading`||e.status===`hashing`||e.status===`validating`)),x=e=>({...e}),S=()=>c.value.map(x);function C(e){let t=Math.max(0,Math.trunc(Number(a.maxCount)||0));if(t>0&&c.value.length+e.length>t){o(`exceed`,e,S());let n=t-c.value.length;if(n<=0)return;e=e.slice(0,n)}let n=u(e);o(`change`,S()),n.forEach(e=>void _(e))}function w(e){let t=c.value.find(t=>t.uid===e);t&&(o(`remove`,x(t)),d(e),o(`change`,S()))}function T(e){g(e)}let E=new Map,D=!1;return(0,r.watch)(c,e=>{let t=new Set(e.map(e=>e.uid));E.forEach((e,n)=>{t.has(n)||E.delete(n)}),e.forEach(e=>{let t=E.get(e.uid);t&&t.percent!==e.percent&&o(`progress`,x(e),e.percent),t&&t.status!==e.status&&(e.status===`success`||e.status===`instant`)&&o(`success`,x(e),e.response),t&&t.status!==`error`&&e.status===`error`&&o(`error`,x(e),Error(e.error||`上传失败`)),E.set(e.uid,{status:e.status,percent:e.percent})}),e.length>0&&e.every(e=>e.status===`success`||e.status===`instant`||e.status===`error`)?(D||o(`finish`,S()),D=!0):D=!1,o(`change`,S())},{deep:!0}),t({selectFiles:()=>s.value?.triggerSelect(),startUpload:p,pauseAll:m,resumeAll:h,clearAll:()=>{f(),o(`change`,S())},removeFile:e=>{w(e)},retryFile:g,getFileList:S,getSuccessList:()=>v().map(x),get totalPercent(){return l.value}}),(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,$,[(0,r.createCommentVNode)(` 上传区域 `),(0,r.createVNode)(M,{ref_key:`uploadAreaRef`,ref:s,accept:a.accept,multiple:a.multiple,directory:a.directory,disabled:a.disabled,draggable:a.draggable,pasteable:a.pasteable,tip:a.tip,onFiles:C},{default:(0,r.withCtx)(()=>[(0,r.renderSlot)(e.$slots,`area`,{},void 0,!0)]),_:3},8,[`accept`,`multiple`,`directory`,`disabled`,`draggable`,`pasteable`,`tip`]),(0,r.createCommentVNode)(` 总进度条 `),b.value?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,ee,[(0,r.createElementVNode)(`div`,te,[t[0]||=(0,r.createElementVNode)(`span`,null,`总进度`,-1),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)((0,r.unref)(l))+`%`,1)]),(0,r.createVNode)((0,r.unref)(i.NProgress),{percentage:(0,r.unref)(l),height:6,"border-radius":3,"show-indicator":!1,status:`success`},null,8,[`percentage`])])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createCommentVNode)(` 图片预览模式 `),a.listType===`image`?((0,r.openBlock)(),(0,r.createBlock)(Q,{key:1,"file-list":(0,r.unref)(c),onRemove:w,onRetry:T},null,8,[`file-list`])):a.showFileList&&(0,r.unref)(c).length>0?((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:2},[(0,r.createCommentVNode)(` 文件列表模式 `),(0,r.createVNode)(W,{"file-list":(0,r.unref)(c),"show-thumbnail":a.showThumbnail,onRemove:w,onRetry:T},null,8,[`file-list`,`show-thumbnail`])],2112)):(0,r.createCommentVNode)(`v-if`,!0)]))}});var re=n.t(ne,[[`__scopeId`,`data-v-58ca8e42`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return re}});