pxd 0.1.2 → 0.1.3

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 (322) hide show
  1. package/dist/components/_internal/calendar-day.vue +19 -19
  2. package/dist/components/_internal/dismiss-container.d.vue.ts +1 -1
  3. package/dist/components/_internal/dismiss-container.vue +19 -19
  4. package/dist/components/_internal/loading-mask.vue +9 -1
  5. package/dist/components/_internal/mention-editor.d.vue.ts +1 -1
  6. package/dist/components/_internal/mention-editor.vue +1 -1
  7. package/dist/components/_internal/popover-arrow.d.vue.ts +1 -1
  8. package/dist/components/_internal/popover-arrow.vue +1 -1
  9. package/dist/components/{steps → _internal}/step-item.d.vue.ts +1 -1
  10. package/dist/components/{steps → _internal}/step-item.vue +1 -1
  11. package/dist/components/_internal/tree-node.d.vue.ts +20 -20
  12. package/dist/components/_internal/tree-node.vue +53 -45
  13. package/dist/components/active-graph/index.d.vue.ts +2 -2
  14. package/dist/components/approval-card/index.d.vue.ts +1 -1
  15. package/dist/components/approval-card/index.vue +34 -17
  16. package/dist/components/approval-card/types.d.ts +1 -1
  17. package/dist/components/avatar/index.d.vue.ts +2 -2
  18. package/dist/components/avatar/index.vue +1 -1
  19. package/dist/components/backtop/index.d.vue.ts +3 -3
  20. package/dist/components/backtop/index.vue +17 -17
  21. package/dist/components/backtop/types.d.ts +1 -1
  22. package/dist/components/badge/index.d.vue.ts +3 -3
  23. package/dist/components/badge/index.vue +43 -43
  24. package/dist/components/badge/types.d.ts +1 -1
  25. package/dist/components/book/types.d.ts +1 -1
  26. package/dist/components/border-beam/index.vue +1 -1
  27. package/dist/components/border-beam/types.d.ts +1 -1
  28. package/dist/components/bubble/index.vue +1 -1
  29. package/dist/components/bubble-group/index.d.vue.ts +4 -4
  30. package/dist/components/button/index.d.vue.ts +5 -5
  31. package/dist/components/button/index.vue +13 -13
  32. package/dist/components/button/types.d.ts +1 -1
  33. package/dist/components/button-group/types.d.ts +1 -1
  34. package/dist/components/calendar/index.d.vue.ts +2 -2
  35. package/dist/components/calendar/index.vue +5 -5
  36. package/dist/components/calendar/types.d.ts +1 -1
  37. package/dist/components/card/types.d.ts +1 -1
  38. package/dist/components/carousel/index.d.vue.ts +7 -7
  39. package/dist/components/carousel/index.vue +1 -1
  40. package/dist/components/carousel/types.d.ts +1 -1
  41. package/dist/components/checkbox/index.vue +1 -1
  42. package/dist/components/checkbox/types.d.ts +1 -1
  43. package/dist/components/checkbox-group/index.d.vue.ts +2 -2
  44. package/dist/components/checkbox-group/types.d.ts +1 -1
  45. package/dist/components/chip/index.d.vue.ts +1 -1
  46. package/dist/components/chip/types.d.ts +1 -1
  47. package/dist/components/choicebox/index.d.vue.ts +3 -3
  48. package/dist/components/choicebox/types.d.ts +1 -1
  49. package/dist/components/choicebox-item/index.vue +8 -8
  50. package/dist/components/choicebox-item/types.d.ts +1 -1
  51. package/dist/components/collapse/index.vue +2 -2
  52. package/dist/components/collapse-group/index.vue +1 -1
  53. package/dist/components/collapse-group/types.d.ts +1 -1
  54. package/dist/components/command-menu/index.d.vue.ts +5 -5
  55. package/dist/components/command-menu/index.vue +10 -3
  56. package/dist/components/config-provider/index.d.vue.ts +40 -5
  57. package/dist/components/config-provider/types.d.ts +2 -1
  58. package/dist/components/confirm-popover/index.d.vue.ts +39 -0
  59. package/dist/components/confirm-popover/index.vue +177 -0
  60. package/dist/components/confirm-popover/types.d.ts +23 -0
  61. package/dist/components/copy-button/index.d.vue.ts +2 -6
  62. package/dist/components/copy-button/index.vue +4 -6
  63. package/dist/components/dash-line/index.d.vue.ts +1 -1
  64. package/dist/components/dash-line/index.vue +8 -8
  65. package/dist/components/dash-line/types.d.ts +1 -1
  66. package/dist/components/date-picker/index.d.vue.ts +1 -1
  67. package/dist/components/date-picker/index.vue +3 -3
  68. package/dist/components/date-picker/types.d.ts +1 -1
  69. package/dist/components/drawer/index.d.vue.ts +7 -7
  70. package/dist/components/drawer/index.vue +30 -15
  71. package/dist/components/drawer/types.d.ts +2 -2
  72. package/dist/components/effort-slider/index.vue +12 -18
  73. package/dist/components/effort-slider/types.d.ts +1 -1
  74. package/dist/components/ellipsis-text/index.d.vue.ts +2 -2
  75. package/dist/components/ellipsis-text/index.vue +75 -75
  76. package/dist/components/error/types.d.ts +1 -1
  77. package/dist/components/fader/index.vue +2 -2
  78. package/dist/components/fader/types.d.ts +1 -1
  79. package/dist/components/gauge/index.vue +2 -2
  80. package/dist/components/gauge/types.d.ts +1 -1
  81. package/dist/components/grid/types.d.ts +1 -1
  82. package/dist/components/grid-item/types.d.ts +1 -1
  83. package/dist/components/hint/index.d.vue.ts +32 -0
  84. package/dist/components/hint/index.vue +239 -0
  85. package/dist/components/hint/types.d.ts +17 -0
  86. package/dist/components/hold-button/index.d.vue.ts +4 -4
  87. package/dist/components/hold-button/index.vue +10 -10
  88. package/dist/components/index.d.ts +4 -0
  89. package/dist/components/index.js +4 -0
  90. package/dist/components/input/index.d.vue.ts +1 -1
  91. package/dist/components/input/index.vue +14 -7
  92. package/dist/components/input/types.d.ts +1 -1
  93. package/dist/components/intersection-observer/index.vue +3 -3
  94. package/dist/components/kbd/index.vue +2 -2
  95. package/dist/components/kbd/types.d.ts +1 -1
  96. package/dist/components/link-button/index.d.vue.ts +5 -5
  97. package/dist/components/list/index.d.vue.ts +4 -4
  98. package/dist/components/list/index.vue +126 -47
  99. package/dist/components/list/types.d.ts +1 -1
  100. package/dist/components/list-group/types.d.ts +1 -1
  101. package/dist/components/list-item/index.d.vue.ts +2 -2
  102. package/dist/components/list-item/index.vue +26 -8
  103. package/dist/components/loading-bar/index.vue +5 -5
  104. package/dist/components/marching-ants/index.d.vue.ts +2 -2
  105. package/dist/components/marching-ants/index.vue +56 -56
  106. package/dist/components/marching-ants/types.d.ts +1 -1
  107. package/dist/components/marquee/index.d.vue.ts +6 -6
  108. package/dist/components/marquee/index.vue +16 -16
  109. package/dist/components/marquee/types.d.ts +1 -1
  110. package/dist/components/material/index.d.vue.ts +3 -3
  111. package/dist/components/mention/index.d.vue.ts +5 -5
  112. package/dist/components/mention/index.vue +68 -68
  113. package/dist/components/menu/index.d.vue.ts +4 -4
  114. package/dist/components/menu/index.vue +10 -10
  115. package/dist/components/menu/types.d.ts +1 -1
  116. package/dist/components/message/index.d.vue.ts +1 -1
  117. package/dist/components/message/index.vue +19 -25
  118. package/dist/components/message/types.d.ts +1 -1
  119. package/dist/components/message-item/index.vue +2 -6
  120. package/dist/components/modal/index.d.vue.ts +7 -7
  121. package/dist/components/modal/index.vue +26 -11
  122. package/dist/components/modal/types.d.ts +2 -2
  123. package/dist/components/noise-background/types.d.ts +1 -1
  124. package/dist/components/note/index.vue +6 -2
  125. package/dist/components/note/types.d.ts +2 -1
  126. package/dist/components/number-input/index.d.vue.ts +11 -6
  127. package/dist/components/number-input/index.vue +57 -16
  128. package/dist/components/number-input/types.d.ts +2 -1
  129. package/dist/components/overlay/index.d.vue.ts +2 -3
  130. package/dist/components/overlay/index.vue +10 -62
  131. package/dist/components/overlay/types.d.ts +0 -2
  132. package/dist/components/page-number/index.vue +30 -29
  133. package/dist/components/page-number/types.d.ts +1 -1
  134. package/dist/components/pin-input/index.d.vue.ts +1 -1
  135. package/dist/components/pin-input/index.vue +6 -6
  136. package/dist/components/pin-input/types.d.ts +1 -1
  137. package/dist/components/popover/index.vue +49 -21
  138. package/dist/components/popover/types.d.ts +3 -1
  139. package/dist/components/progress/index.d.vue.ts +2 -2
  140. package/dist/components/progress/index.vue +12 -12
  141. package/dist/components/progress/types.d.ts +1 -1
  142. package/dist/components/project-banner/types.d.ts +1 -1
  143. package/dist/components/questionnaire/index.vue +14 -14
  144. package/dist/components/radio/index.vue +1 -1
  145. package/dist/components/radio/types.d.ts +1 -1
  146. package/dist/components/radio-group/index.d.vue.ts +2 -2
  147. package/dist/components/radio-group/types.d.ts +1 -1
  148. package/dist/components/rating/index.vue +28 -28
  149. package/dist/components/rating/types.d.ts +1 -1
  150. package/dist/components/resizable/index.d.vue.ts +1 -0
  151. package/dist/components/resizable/index.vue +130 -195
  152. package/dist/components/resizable/types.d.ts +2 -10
  153. package/dist/components/reveal/index.d.vue.ts +3 -3
  154. package/dist/components/reveal/index.vue +4 -4
  155. package/dist/components/reveal/types.d.ts +1 -1
  156. package/dist/components/rolling-number/index.d.vue.ts +2 -2
  157. package/dist/components/rolling-number/index.vue +15 -15
  158. package/dist/components/scalable-text/index.vue +9 -9
  159. package/dist/components/scroll-text/index.d.vue.ts +3 -3
  160. package/dist/components/scroll-text/index.vue +6 -6
  161. package/dist/components/scroll-text/types.d.ts +1 -1
  162. package/dist/components/scrollable/types.d.ts +2 -1
  163. package/dist/components/search-input/index.d.vue.ts +5 -5
  164. package/dist/components/search-input/index.vue +2 -1
  165. package/dist/components/select/index.d.vue.ts +12 -9
  166. package/dist/components/select/index.vue +165 -42
  167. package/dist/components/select/types.d.ts +3 -1
  168. package/dist/components/separator/index.d.vue.ts +1 -1
  169. package/dist/components/separator/types.d.ts +1 -1
  170. package/dist/components/skeleton/index.d.vue.ts +1 -1
  171. package/dist/components/skeleton/index.vue +11 -11
  172. package/dist/components/skeleton/types.d.ts +1 -1
  173. package/dist/components/slider/index.d.vue.ts +1 -1
  174. package/dist/components/slider/index.vue +1 -1
  175. package/dist/components/slider/types.d.ts +1 -1
  176. package/dist/components/snippet/index.d.vue.ts +3 -3
  177. package/dist/components/snippet/index.vue +7 -5
  178. package/dist/components/snippet/types.d.ts +1 -1
  179. package/dist/components/spinner/index.vue +5 -1
  180. package/dist/components/spinner-dots/index.d.vue.ts +1 -1
  181. package/dist/components/split-button/index.d.vue.ts +5 -5
  182. package/dist/components/split-button/types.d.ts +1 -1
  183. package/dist/components/stack/index.d.vue.ts +3 -3
  184. package/dist/components/stack/index.vue +28 -29
  185. package/dist/components/stack/types.d.ts +1 -1
  186. package/dist/components/status-dot/types.d.ts +1 -1
  187. package/dist/components/steps/index.d.vue.ts +2 -2
  188. package/dist/components/steps/index.vue +6 -6
  189. package/dist/components/steps/types.d.ts +1 -1
  190. package/dist/components/stick-to-bottom/types.d.ts +1 -1
  191. package/dist/components/swipe-cell/index.d.vue.ts +6 -6
  192. package/dist/components/swipe-cell/index.vue +64 -64
  193. package/dist/components/swipe-cell/types.d.ts +2 -1
  194. package/dist/components/switch/index.vue +1 -1
  195. package/dist/components/switch/types.d.ts +1 -1
  196. package/dist/components/switch-item/index.vue +1 -1
  197. package/dist/components/switch-item/types.d.ts +1 -1
  198. package/dist/components/tabs/index.d.vue.ts +1 -1
  199. package/dist/components/tabs/index.vue +48 -51
  200. package/dist/components/tabs/types.d.ts +1 -1
  201. package/dist/components/teleport/index.vue +2 -2
  202. package/dist/components/text/index.d.vue.ts +3 -3
  203. package/dist/components/text/index.vue +11 -11
  204. package/dist/components/text/types.d.ts +1 -1
  205. package/dist/components/textarea/index.vue +1 -1
  206. package/dist/components/textarea/types.d.ts +1 -1
  207. package/dist/components/theme-switcher/index.d.vue.ts +3 -2
  208. package/dist/components/theme-switcher/index.vue +15 -7
  209. package/dist/components/theme-switcher/types.d.ts +2 -2
  210. package/dist/components/time-ago/index.d.vue.ts +6 -0
  211. package/dist/components/time-ago/index.vue +143 -0
  212. package/dist/components/time-ago/types.d.ts +4 -0
  213. package/dist/components/time-picker/index.d.vue.ts +1 -1
  214. package/dist/components/time-picker/index.vue +7 -7
  215. package/dist/components/time-picker/types.d.ts +1 -1
  216. package/dist/components/toc/index.d.vue.ts +2 -2
  217. package/dist/components/toc/index.vue +1 -1
  218. package/dist/components/todo-list/index.d.vue.ts +4 -4
  219. package/dist/components/todo-list/index.vue +15 -15
  220. package/dist/components/todo-list/types.d.ts +1 -1
  221. package/dist/components/toggle/index.vue +3 -3
  222. package/dist/components/toggle/types.d.ts +1 -1
  223. package/dist/components/toggle-button/index.vue +14 -11
  224. package/dist/components/toggle-button/types.d.ts +2 -2
  225. package/dist/components/toggle-button-group/index.d.vue.ts +3 -3
  226. package/dist/components/toggle-button-group/index.vue +2 -2
  227. package/dist/components/toggle-button-group/types.d.ts +2 -2
  228. package/dist/components/tool-call/index.vue +5 -5
  229. package/dist/components/tooltip/index.d.vue.ts +4 -5
  230. package/dist/components/tooltip/index.vue +4 -49
  231. package/dist/components/tooltip/types.d.ts +3 -7
  232. package/dist/components/tour/index.d.vue.ts +33 -0
  233. package/dist/components/tour/index.vue +302 -0
  234. package/dist/components/tour/types.d.ts +29 -0
  235. package/dist/components/tree/index.d.vue.ts +24 -28
  236. package/dist/components/tree/index.vue +290 -223
  237. package/dist/components/tree/types.d.ts +38 -13
  238. package/dist/components/virtual-list/index.d.vue.ts +4 -4
  239. package/dist/composables/_internal/use-list-keyboard-controller.js +9 -10
  240. package/dist/composables/_internal/use-list-rows.d.ts +4 -0
  241. package/dist/composables/_internal/use-list-rows.js +12 -4
  242. package/dist/composables/_internal/use-list-selection.d.ts +1 -1
  243. package/dist/composables/_internal/use-lock-scroll.d.ts +8 -1
  244. package/dist/composables/_internal/use-lock-scroll.js +57 -36
  245. package/dist/composables/_internal/use-mention-editor.js +1 -1
  246. package/dist/composables/_internal/use-message-group.d.ts +22 -0
  247. package/dist/composables/_internal/use-message-group.js +143 -0
  248. package/dist/composables/_internal/use-overlay-dialog.js +1 -3
  249. package/dist/composables/_internal/use-overlay-manager.d.ts +4 -1
  250. package/dist/composables/_internal/use-overlay-manager.js +67 -8
  251. package/dist/composables/_internal/use-swipe-gesture.d.ts +1 -1
  252. package/dist/composables/_internal/use-tour-target.d.ts +29 -0
  253. package/dist/composables/_internal/use-tour-target.js +201 -0
  254. package/dist/composables/_internal/use-tree.d.ts +103 -0
  255. package/dist/composables/_internal/use-tree.js +676 -0
  256. package/dist/composables/_internal/use-word-limit.d.ts +1 -1
  257. package/dist/composables/index.d.ts +1 -0
  258. package/dist/composables/index.js +1 -0
  259. package/dist/composables/use-color-scheme.d.ts +1 -1
  260. package/dist/composables/use-color-scheme.js +7 -6
  261. package/dist/composables/use-delay-destroy.d.ts +1 -1
  262. package/dist/composables/use-document-hidden.d.ts +1 -1
  263. package/dist/composables/use-intersection-observer.d.ts +1 -1
  264. package/dist/composables/use-intersection-observer.js +1 -1
  265. package/dist/composables/{_internal/use-motion-reduce.js → use-motion-reduce.js} +2 -2
  266. package/dist/composables/use-mutation-observer.d.ts +1 -1
  267. package/dist/composables/use-mutation-observer.js +1 -1
  268. package/dist/composables/use-resize-observer.d.ts +1 -1
  269. package/dist/composables/use-resize-observer.js +1 -1
  270. package/dist/composables/use-view-transition.js +1 -0
  271. package/dist/composables/use-virtual-list.d.ts +1 -1
  272. package/dist/constants/tooltip-variants.d.ts +28 -0
  273. package/dist/constants/tooltip-variants.js +27 -0
  274. package/dist/contexts/avatar.js +1 -1
  275. package/dist/contexts/breadcrumb.js +1 -1
  276. package/dist/contexts/button.js +1 -1
  277. package/dist/contexts/checkbox.js +1 -1
  278. package/dist/contexts/choicebox.js +1 -1
  279. package/dist/contexts/collapse.js +1 -1
  280. package/dist/contexts/config-provider.js +1 -1
  281. package/dist/contexts/list.js +1 -1
  282. package/dist/contexts/radio.js +1 -1
  283. package/dist/contexts/switch.js +1 -1
  284. package/dist/contexts/toggle-button.js +1 -1
  285. package/dist/index.d.ts +2 -1
  286. package/dist/locales/en-us.d.ts +35 -0
  287. package/dist/locales/en-us.js +20 -0
  288. package/dist/locales/zh-cn.d.ts +35 -0
  289. package/dist/locales/zh-cn.js +20 -0
  290. package/dist/styles/styles.css +1 -1
  291. package/dist/styles/tw.css +43 -30
  292. package/dist/utils/{context.js → _internal/context.js} +1 -1
  293. package/dist/utils/{observer.d.ts → _internal/observer.d.ts} +1 -1
  294. package/dist/utils/{observer.js → _internal/observer.js} +4 -4
  295. package/dist/{components/swipe-cell/instances.d.ts → utils/_internal/swipe-cell-instances.d.ts} +1 -1
  296. package/dist/utils/event.d.ts +2 -1
  297. package/dist/utils/event.js +3 -0
  298. package/package.json +26 -50
  299. package/volar.d.ts +4 -0
  300. package/dist/components/message/composables/use-group-expand.d.ts +0 -13
  301. package/dist/components/message/composables/use-group-expand.js +0 -50
  302. package/dist/components/message/composables/use-message-timer.d.ts +0 -9
  303. package/dist/components/message/composables/use-message-timer.js +0 -62
  304. package/dist/components/message/composables/use-promise-message.d.ts +0 -4
  305. package/dist/components/message/composables/use-promise-message.js +0 -49
  306. package/dist/components/resizable/utils.d.ts +0 -4
  307. package/dist/components/resizable/utils.js +0 -10
  308. package/dist/composables/_internal/use-tree-drag.d.ts +0 -23
  309. package/dist/composables/_internal/use-tree-drag.js +0 -196
  310. package/dist/composables/_internal/use-tree-move.d.ts +0 -20
  311. package/dist/composables/_internal/use-tree-move.js +0 -96
  312. package/dist/composables/_internal/use-tree-rows.d.ts +0 -46
  313. package/dist/composables/_internal/use-tree-rows.js +0 -101
  314. package/dist/composables/_internal/use-tree-selection.d.ts +0 -22
  315. package/dist/composables/_internal/use-tree-selection.js +0 -87
  316. package/dist/styles/source.css +0 -675
  317. package/dist/types/shared/index.d.ts +0 -2
  318. /package/dist/composables/{_internal/use-motion-reduce.d.ts → use-motion-reduce.d.ts} +0 -0
  319. /package/dist/utils/{context.d.ts → _internal/context.d.ts} +0 -0
  320. /package/dist/utils/{mention-html.d.ts → _internal/mention-html.d.ts} +0 -0
  321. /package/dist/utils/{mention-html.js → _internal/mention-html.js} +0 -0
  322. /package/dist/{components/swipe-cell/instances.js → utils/_internal/swipe-cell-instances.js} +0 -0
@@ -1,96 +0,0 @@
1
- export function isTreeDescendant(index, ancestorValue, value) {
2
- const ancestor = index.byValue.get(ancestorValue);
3
- let current = index.byValue.get(value);
4
- while (current && current.parentValue !== void 0) {
5
- const parent = index.byValue.get(current.parentValue);
6
- if (!parent) {
7
- return false;
8
- }
9
- if (parent === ancestor) {
10
- return true;
11
- }
12
- current = parent;
13
- }
14
- return false;
15
- }
16
- function removeNode(list, childrenField, value, parentValue) {
17
- const at = list.findIndex((node) => node.value === value);
18
- if (at !== -1) {
19
- return {
20
- list: [...list.slice(0, at), ...list.slice(at + 1)],
21
- node: list[at],
22
- parentValue,
23
- index: at
24
- };
25
- }
26
- for (let i = 0; i < list.length; i++) {
27
- const children = list[i][childrenField];
28
- if (!Array.isArray(children)) {
29
- continue;
30
- }
31
- const result = removeNode(children, childrenField, value, list[i].value);
32
- if (!result) {
33
- continue;
34
- }
35
- const next = [...list];
36
- next[i] = { ...list[i], [childrenField]: result.list };
37
- return { ...result, list: next };
38
- }
39
- return void 0;
40
- }
41
- function insertNode(list, childrenField, target, node, parentValue) {
42
- const at = list.findIndex((item) => item.value === target.targetValue);
43
- if (at !== -1) {
44
- const next = [...list];
45
- if (target.position === "inside") {
46
- const raw = next[at][childrenField];
47
- const children = Array.isArray(raw) ? raw : [];
48
- next[at] = { ...next[at], [childrenField]: [...children, node] };
49
- return { list: next, parentValue: next[at].value, index: children.length };
50
- }
51
- const index = target.position === "after" ? at + 1 : at;
52
- next.splice(index, 0, node);
53
- return { list: next, parentValue, index };
54
- }
55
- for (let i = 0; i < list.length; i++) {
56
- const children = list[i][childrenField];
57
- if (!Array.isArray(children)) {
58
- continue;
59
- }
60
- const result = insertNode(children, childrenField, target, node, list[i].value);
61
- if (!result) {
62
- continue;
63
- }
64
- const next = [...list];
65
- next[i] = { ...list[i], [childrenField]: result.list };
66
- return { ...result, list: next };
67
- }
68
- return void 0;
69
- }
70
- export function moveTreeNode(data, childrenField, value, target) {
71
- const removal = removeNode(data, childrenField, value);
72
- if (!removal) {
73
- return void 0;
74
- }
75
- const insertion = insertNode(removal.list, childrenField, target, removal.node);
76
- if (!insertion) {
77
- return void 0;
78
- }
79
- if (removal.parentValue === insertion.parentValue && removal.index === insertion.index) {
80
- return void 0;
81
- }
82
- return {
83
- data: insertion.list,
84
- detail: {
85
- value,
86
- node: removal.node,
87
- from: { parentValue: removal.parentValue, index: removal.index },
88
- to: {
89
- parentValue: insertion.parentValue,
90
- index: insertion.index,
91
- targetValue: target.targetValue,
92
- position: target.position
93
- }
94
- }
95
- };
96
- }
@@ -1,46 +0,0 @@
1
- import type { TreeFilterFn, TreeFlatNode, TreeOptions } from '../../components/tree/types';
2
- import type { ComponentValue } from '../../types/shared';
3
- import type { ComputedRef, MaybeRefOrGetter } from 'vue';
4
- export interface TreeNodeMeta {
5
- node: TreeOptions[number];
6
- children: TreeNodeMeta[];
7
- parentValue?: ComponentValue;
8
- depth: number;
9
- /** Exclusive index in `list` right after this subtree. */
10
- end: number;
11
- }
12
- export interface TreeIndex {
13
- list: TreeNodeMeta[];
14
- byValue: Map<ComponentValue, TreeNodeMeta>;
15
- }
16
- /** Depth-first pre-order walk: `list` is document order, `end` marks subtree bounds. */
17
- export declare function createTreeIndex(data: TreeOptions, childrenField: string): TreeIndex;
18
- export declare function useTreeIndex(data: MaybeRefOrGetter<TreeOptions>, childrenField: MaybeRefOrGetter<string>): ComputedRef<TreeIndex>;
19
- export interface TreeMatched {
20
- /** Every hit plus its ancestor chain: ancestor-closed, so the row walk can prune subtrees. */
21
- visible: ReadonlySet<ComponentValue>;
22
- /** The hits alone, without the ancestors kept only for context. */
23
- exact: ReadonlySet<ComponentValue>;
24
- }
25
- /**
26
- * Splits the current query into the two sets the row walk needs: the ancestor-closed one that
27
- * prunes whole subtrees, and the hits on their own.
28
- */
29
- export declare function useTreeMatched(index: MaybeRefOrGetter<TreeIndex>, query: MaybeRefOrGetter<string>, filter: MaybeRefOrGetter<TreeFilterFn | undefined>): ComputedRef<TreeMatched>;
30
- export interface UseTreeRowsOptions {
31
- query: MaybeRefOrGetter<string>;
32
- expanded: MaybeRefOrGetter<ReadonlySet<ComponentValue>>;
33
- matched: MaybeRefOrGetter<ReadonlySet<ComponentValue>>;
34
- /** The hits without their ancestors; only read when `matchesOnly` is on. */
35
- exactMatched?: MaybeRefOrGetter<ReadonlySet<ComponentValue> | undefined>;
36
- /** Drop the ancestors that only stayed visible for context, and flatten what is left. */
37
- matchesOnly?: MaybeRefOrGetter<boolean | undefined>;
38
- }
39
- /**
40
- * Visible rows in document order. Collapsed subtrees and, while searching,
41
- * everything outside the matched ancestor chains are pruned.
42
- *
43
- * Selection state is deliberately absent: it changes on every click, and putting it here would
44
- * rebuild all N rows for a change that touches two of them. Read the sets at render time instead.
45
- */
46
- export declare function useTreeRows(index: MaybeRefOrGetter<TreeIndex>, options: UseTreeRowsOptions): ComputedRef<TreeFlatNode[]>;
@@ -1,101 +0,0 @@
1
- import { computed } from "vue";
2
- import { isFuzzyMatch } from "../../utils/fuzzy-match.js";
3
- import { toValue } from "../../utils/helper.js";
4
- export function createTreeIndex(data, childrenField) {
5
- const list = [];
6
- const byValue = /* @__PURE__ */ new Map();
7
- function visit(node, parentValue, depth) {
8
- const meta = { node, children: [], parentValue, depth, end: 0 };
9
- list.push(meta);
10
- byValue.set(node.value, meta);
11
- const children = node[childrenField];
12
- if (Array.isArray(children)) {
13
- for (const child of children) {
14
- meta.children.push(visit(child, node.value, depth + 1));
15
- }
16
- }
17
- meta.end = list.length;
18
- return meta;
19
- }
20
- for (const node of data) {
21
- visit(node, void 0, 0);
22
- }
23
- return { list, byValue };
24
- }
25
- export function useTreeIndex(data, childrenField) {
26
- return computed(() => createTreeIndex(toValue(data) ?? [], toValue(childrenField) ?? "children"));
27
- }
28
- function defaultFilter(node, query) {
29
- return isFuzzyMatch(String(node.label ?? ""), query, node.keywords);
30
- }
31
- export function useTreeMatched(index, query, filter) {
32
- return computed(() => {
33
- const visible = /* @__PURE__ */ new Set();
34
- const exact = /* @__PURE__ */ new Set();
35
- const needle = (toValue(query) ?? "").trim();
36
- if (!needle) {
37
- return { visible, exact };
38
- }
39
- const match = toValue(filter) ?? defaultFilter;
40
- const { list, byValue } = toValue(index);
41
- for (const meta of list) {
42
- if (!match(meta.node, needle)) {
43
- continue;
44
- }
45
- exact.add(meta.node.value);
46
- visible.add(meta.node.value);
47
- let parentValue = meta.parentValue;
48
- while (parentValue !== void 0 && !visible.has(parentValue)) {
49
- visible.add(parentValue);
50
- parentValue = byValue.get(parentValue)?.parentValue;
51
- }
52
- }
53
- return { visible, exact };
54
- });
55
- }
56
- export function useTreeRows(index, options) {
57
- return computed(() => {
58
- const { list } = toValue(index);
59
- const expanded = toValue(options.expanded);
60
- const matched = toValue(options.matched);
61
- const searching = (toValue(options.query) ?? "").trim().length > 0;
62
- const matchesOnly = searching && toValue(options.matchesOnly) === true;
63
- const exact = toValue(options.exactMatched) ?? matched;
64
- const rows = [];
65
- let cursor = 0;
66
- while (cursor < list.length) {
67
- const meta = list[cursor];
68
- if (searching && !matched.has(meta.node.value)) {
69
- cursor = meta.end;
70
- continue;
71
- }
72
- const value = meta.node.value;
73
- if (matchesOnly && !exact.has(value)) {
74
- cursor++;
75
- continue;
76
- }
77
- rows.push({
78
- key: value,
79
- node: meta.node,
80
- depth: matchesOnly ? 0 : meta.depth,
81
- index: rows.length,
82
- parentValue: matchesOnly ? void 0 : meta.parentValue,
83
- hasChildren: meta.children.length > 0,
84
- expanded: expanded.has(value),
85
- matched: matched.has(value)
86
- });
87
- cursor++;
88
- if (meta.children.length > 0 && !searching && !expanded.has(value)) {
89
- cursor = meta.end;
90
- }
91
- }
92
- if (searching) {
93
- for (let i = 0; i < rows.length - 1; i++) {
94
- if (rows[i].hasChildren) {
95
- rows[i].expanded = rows[i + 1].depth > rows[i].depth;
96
- }
97
- }
98
- }
99
- return rows;
100
- });
101
- }
@@ -1,22 +0,0 @@
1
- import type { TreeModelValue } from '../../components/tree/types';
2
- import type { ComponentValue } from '../../types/shared';
3
- import type { TreeIndex } from './use-tree-rows';
4
- import type { ComputedRef, MaybeRefOrGetter } from 'vue';
5
- export interface UseTreeSelectionOptions {
6
- index: MaybeRefOrGetter<TreeIndex>;
7
- modelValue: MaybeRefOrGetter<TreeModelValue | undefined>;
8
- multiple: MaybeRefOrGetter<boolean>;
9
- /** Keep every node on its own: no cascade, and no parent lit up by its children. */
10
- checkStrictly?: MaybeRefOrGetter<boolean | undefined>;
11
- }
12
- export interface TreeToggleResult {
13
- value: TreeModelValue;
14
- /** Parents left partially checked by the new selection, empty without the cascade. */
15
- halfCheckedValues: ComponentValue[];
16
- }
17
- export interface UseTreeSelectionReturn {
18
- checked: ComputedRef<Set<ComponentValue>>;
19
- indeterminate: ComputedRef<Set<ComponentValue>>;
20
- toggle: (value: ComponentValue) => TreeToggleResult;
21
- }
22
- export declare function useTreeSelection(options: UseTreeSelectionOptions): UseTreeSelectionReturn;
@@ -1,87 +0,0 @@
1
- import { computed } from "vue";
2
- import { toValue } from "../../utils/helper.js";
3
- function collect(modelValue) {
4
- if (Array.isArray(modelValue)) {
5
- return new Set(modelValue);
6
- }
7
- return modelValue == null ? /* @__PURE__ */ new Set() : /* @__PURE__ */ new Set([modelValue]);
8
- }
9
- function derive(list, selected) {
10
- const checked = /* @__PURE__ */ new Set();
11
- const indeterminate = /* @__PURE__ */ new Set();
12
- const stats = /* @__PURE__ */ new Map();
13
- for (let i = list.length - 1; i >= 0; i--) {
14
- const meta = list[i];
15
- let total = 0;
16
- let hit = 0;
17
- for (const child of meta.children) {
18
- const childStat = stats.get(child);
19
- total += childStat?.total ?? 0;
20
- hit += childStat?.hit ?? 0;
21
- }
22
- const selectable = meta.node.disabled !== true;
23
- const isChecked = total > 0 ? hit === total : selected.has(meta.node.value);
24
- if (isChecked) {
25
- checked.add(meta.node.value);
26
- } else if (hit > 0) {
27
- indeterminate.add(meta.node.value);
28
- }
29
- stats.set(meta, {
30
- total: total + (selectable ? 1 : 0),
31
- hit: hit + (isChecked && selectable ? 1 : 0)
32
- });
33
- }
34
- return { checked, indeterminate };
35
- }
36
- export function useTreeSelection(options) {
37
- const selected = computed(() => collect(toValue(options.modelValue)));
38
- const state = computed(() => {
39
- if (!toValue(options.multiple) || toValue(options.checkStrictly)) {
40
- return { checked: selected.value, indeterminate: /* @__PURE__ */ new Set() };
41
- }
42
- return derive(toValue(options.index).list, selected.value);
43
- });
44
- function toToggleResult(list, result) {
45
- return {
46
- value: list.filter((item) => result.checked.has(item.node.value)).map((item) => item.node.value),
47
- halfCheckedValues: list.filter((item) => result.indeterminate.has(item.node.value)).map((item) => item.node.value)
48
- };
49
- }
50
- function toggle(value) {
51
- if (!toValue(options.multiple)) {
52
- return { value: selected.value.has(value) ? null : value, halfCheckedValues: [] };
53
- }
54
- const { list, byValue } = toValue(options.index);
55
- const meta = byValue.get(value);
56
- if (!meta || toValue(options.checkStrictly) && meta.node.disabled) {
57
- return toToggleResult(list, state.value);
58
- }
59
- const next = new Set(selected.value);
60
- const willCheck = !state.value.checked.has(value);
61
- if (toValue(options.checkStrictly)) {
62
- if (willCheck) {
63
- next.add(value);
64
- } else {
65
- next.delete(value);
66
- }
67
- return toToggleResult(list, { checked: next, indeterminate: /* @__PURE__ */ new Set() });
68
- }
69
- for (let i = list.indexOf(meta); i < meta.end; i++) {
70
- const item = list[i];
71
- if (item.node.disabled) {
72
- continue;
73
- }
74
- if (willCheck) {
75
- next.add(item.node.value);
76
- } else {
77
- next.delete(item.node.value);
78
- }
79
- }
80
- return toToggleResult(list, derive(list, next));
81
- }
82
- return {
83
- checked: computed(() => state.value.checked),
84
- indeterminate: computed(() => state.value.indeterminate),
85
- toggle
86
- };
87
- }