pxd 0.0.64 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/README.md +21 -10
  2. package/dist/components/_internal/calendar-day.d.vue.ts +33 -0
  3. package/dist/components/_internal/calendar-day.vue +85 -0
  4. package/dist/components/_internal/dismiss-container.vue +68 -121
  5. package/dist/components/_internal/fragment-container.vue +3 -3
  6. package/dist/components/_internal/loading-mask.d.vue.ts +8 -0
  7. package/dist/components/_internal/loading-mask.vue +25 -0
  8. package/dist/components/_internal/mention-editor.d.vue.ts +42 -0
  9. package/dist/components/_internal/mention-editor.vue +114 -0
  10. package/dist/components/_internal/popover-arrow.vue +8 -5
  11. package/dist/components/_internal/tree-node.d.vue.ts +72 -0
  12. package/dist/components/_internal/tree-node.vue +260 -0
  13. package/dist/components/active-graph/index.d.vue.ts +2 -2
  14. package/dist/components/active-graph/index.vue +381 -239
  15. package/dist/components/active-graph/types.d.ts +2 -1
  16. package/dist/components/approval-card/index.d.vue.ts +28 -0
  17. package/dist/components/approval-card/index.vue +235 -0
  18. package/dist/components/approval-card/types.d.ts +37 -0
  19. package/dist/components/avatar/index.d.vue.ts +2 -2
  20. package/dist/components/avatar/index.vue +43 -72
  21. package/dist/components/avatar-group/index.d.vue.ts +1 -1
  22. package/dist/components/avatar-group/index.vue +38 -25
  23. package/dist/components/backtop/index.d.vue.ts +10 -3
  24. package/dist/components/backtop/index.vue +97 -54
  25. package/dist/components/backtop/types.d.ts +10 -3
  26. package/dist/components/badge/index.d.vue.ts +6 -3
  27. package/dist/components/badge/index.vue +126 -79
  28. package/dist/components/badge/types.d.ts +3 -2
  29. package/dist/components/book/index.vue +57 -162
  30. package/dist/components/border-beam/index.d.vue.ts +18 -0
  31. package/dist/components/border-beam/index.vue +64 -0
  32. package/dist/components/border-beam/types.d.ts +8 -0
  33. package/dist/components/{resizable-panel → breadcrumb}/index.d.vue.ts +3 -4
  34. package/dist/components/breadcrumb/index.vue +32 -0
  35. package/dist/components/breadcrumb/types.d.ts +6 -0
  36. package/dist/components/breadcrumb-item/index.d.vue.ts +16 -0
  37. package/dist/components/breadcrumb-item/index.vue +50 -0
  38. package/dist/components/breadcrumb-item/types.d.ts +4 -0
  39. package/dist/components/browser/index.d.vue.ts +2 -2
  40. package/dist/components/browser/index.vue +13 -28
  41. package/dist/components/bubble/index.d.vue.ts +6 -3
  42. package/dist/components/bubble/index.vue +85 -18
  43. package/dist/components/bubble/types.d.ts +3 -1
  44. package/dist/components/bubble-group/index.d.vue.ts +19 -0
  45. package/dist/components/bubble-group/index.vue +86 -0
  46. package/dist/components/bubble-group/types.d.ts +6 -0
  47. package/dist/components/bubble-group/types.js +0 -0
  48. package/dist/components/button/index.d.vue.ts +2 -1
  49. package/dist/components/button/index.vue +121 -86
  50. package/dist/components/button-group/index.vue +20 -7
  51. package/dist/components/calendar/index.d.vue.ts +41 -0
  52. package/dist/components/calendar/index.vue +247 -0
  53. package/dist/components/calendar/types.d.ts +37 -0
  54. package/dist/components/card/index.d.vue.ts +21 -0
  55. package/dist/components/card/index.vue +47 -0
  56. package/dist/components/card/types.d.ts +6 -0
  57. package/dist/components/carousel/index.d.vue.ts +8 -4
  58. package/dist/components/carousel/index.vue +232 -283
  59. package/dist/components/carousel/types.d.ts +15 -1
  60. package/dist/components/checkbox/index.d.vue.ts +6 -5
  61. package/dist/components/checkbox/index.vue +107 -90
  62. package/dist/components/checkbox/types.d.ts +6 -4
  63. package/dist/components/checkbox-group/index.d.vue.ts +6 -6
  64. package/dist/components/checkbox-group/index.vue +26 -11
  65. package/dist/components/checkbox-group/types.d.ts +3 -1
  66. package/dist/components/checkerboard/index.d.vue.ts +14 -0
  67. package/dist/components/checkerboard/index.vue +37 -0
  68. package/dist/components/checkerboard/types.d.ts +5 -0
  69. package/dist/components/chip/index.d.vue.ts +3 -1
  70. package/dist/components/chip/index.vue +49 -46
  71. package/dist/components/choicebox/index.d.vue.ts +7 -7
  72. package/dist/components/choicebox/index.vue +52 -30
  73. package/dist/components/choicebox-item/index.d.vue.ts +7 -5
  74. package/dist/components/choicebox-item/index.vue +172 -53
  75. package/dist/components/choicebox-item/types.d.ts +3 -7
  76. package/dist/components/collapse/index.d.vue.ts +2 -2
  77. package/dist/components/collapse/index.vue +72 -98
  78. package/dist/components/collapse-group/index.vue +43 -32
  79. package/dist/components/color-selector/index.vue +45 -41
  80. package/dist/components/command-menu/index.d.vue.ts +10 -7
  81. package/dist/components/command-menu/index.vue +103 -45
  82. package/dist/components/command-menu/types.d.ts +3 -2
  83. package/dist/components/config-provider/index.d.vue.ts +77 -3
  84. package/dist/components/config-provider/index.vue +54 -11
  85. package/dist/components/config-provider/types.d.ts +5 -3
  86. package/dist/components/copy-button/index.d.vue.ts +24 -0
  87. package/dist/components/copy-button/index.vue +40 -0
  88. package/dist/components/copy-button/types.d.ts +7 -0
  89. package/dist/components/countdown/index.d.vue.ts +1 -1
  90. package/dist/components/countdown/index.vue +77 -29
  91. package/dist/components/dash-line/index.d.vue.ts +2 -1
  92. package/dist/components/dash-line/index.vue +78 -76
  93. package/dist/components/date-picker/index.d.vue.ts +16 -0
  94. package/dist/components/date-picker/index.vue +295 -0
  95. package/dist/components/date-picker/types.d.ts +20 -0
  96. package/dist/components/description/index.vue +16 -7
  97. package/dist/components/drawer/index.d.vue.ts +5 -5
  98. package/dist/components/drawer/index.vue +138 -67
  99. package/dist/components/drawer/types.d.ts +1 -0
  100. package/dist/components/effort-slider/index.d.vue.ts +10 -0
  101. package/dist/components/effort-slider/index.vue +347 -0
  102. package/dist/components/effort-slider/types.d.ts +14 -0
  103. package/dist/components/ellipsis-text/index.d.vue.ts +1 -1
  104. package/dist/components/ellipsis-text/index.vue +208 -165
  105. package/dist/components/empty-state/index.vue +11 -4
  106. package/dist/components/error/index.d.vue.ts +3 -1
  107. package/dist/components/error/index.vue +42 -28
  108. package/dist/components/error/types.d.ts +1 -0
  109. package/dist/components/fader/index.d.vue.ts +1 -1
  110. package/dist/components/fader/index.vue +56 -112
  111. package/dist/components/fader/types.d.ts +2 -1
  112. package/dist/components/feedback-bar/index.d.vue.ts +12 -0
  113. package/dist/components/feedback-bar/index.vue +81 -0
  114. package/dist/components/feedback-bar/types.d.ts +9 -0
  115. package/dist/components/gauge/index.vue +89 -69
  116. package/dist/components/grid/index.vue +58 -52
  117. package/dist/components/grid-item/index.vue +44 -39
  118. package/dist/components/hold-button/index.vue +111 -115
  119. package/dist/components/hue-text/index.d.vue.ts +16 -0
  120. package/dist/components/hue-text/index.vue +48 -0
  121. package/dist/components/hue-text/types.d.ts +4 -0
  122. package/dist/components/index.d.ts +40 -5
  123. package/dist/components/index.js +40 -5
  124. package/dist/components/input/index.d.vue.ts +5 -4
  125. package/dist/components/input/index.vue +250 -134
  126. package/dist/components/input/types.d.ts +9 -6
  127. package/dist/components/intersection-observer/index.vue +65 -42
  128. package/dist/components/kbd/index.vue +45 -23
  129. package/dist/components/label/index.vue +7 -3
  130. package/dist/components/link-button/index.vue +49 -32
  131. package/dist/components/list/index.d.vue.ts +22 -14
  132. package/dist/components/list/index.vue +238 -77
  133. package/dist/components/list/types.d.ts +39 -11
  134. package/dist/components/list-group/index.d.vue.ts +4 -0
  135. package/dist/components/list-group/index.vue +22 -0
  136. package/dist/components/list-group/types.d.ts +5 -0
  137. package/dist/components/list-item/index.d.vue.ts +7 -7
  138. package/dist/components/list-item/index.vue +78 -76
  139. package/dist/components/list-item/types.d.ts +7 -4
  140. package/dist/components/loading-bar/index.vue +152 -145
  141. package/dist/components/loading-dots/index.d.vue.ts +1 -13
  142. package/dist/components/loading-dots/index.vue +13 -15
  143. package/dist/components/marching-ants/index.d.vue.ts +25 -0
  144. package/dist/components/marching-ants/index.vue +486 -0
  145. package/dist/components/marching-ants/types.d.ts +9 -0
  146. package/dist/components/marquee/index.d.vue.ts +37 -0
  147. package/dist/components/marquee/index.vue +242 -0
  148. package/dist/components/marquee/types.d.ts +18 -0
  149. package/dist/components/material/index.vue +22 -28
  150. package/dist/components/mention/index.d.vue.ts +38 -0
  151. package/dist/components/mention/index.vue +251 -0
  152. package/dist/components/mention/types.d.ts +35 -0
  153. package/dist/components/menu/index.d.vue.ts +17 -10
  154. package/dist/components/menu/index.vue +98 -27
  155. package/dist/components/menu/types.d.ts +7 -5
  156. package/dist/components/message/composables/use-group-expand.js +1 -1
  157. package/dist/components/message/composables/use-message-timer.js +2 -1
  158. package/dist/components/message/composables/use-promise-message.js +4 -4
  159. package/dist/components/message/index.d.vue.ts +7 -7
  160. package/dist/components/message/index.vue +141 -234
  161. package/dist/components/message-item/index.vue +50 -62
  162. package/dist/components/modal/index.d.vue.ts +4 -4
  163. package/dist/components/modal/index.vue +125 -63
  164. package/dist/components/modal/types.d.ts +1 -3
  165. package/dist/components/more-button/index.vue +25 -13
  166. package/dist/components/noise-background/index.d.vue.ts +0 -16
  167. package/dist/components/noise-background/index.vue +70 -9
  168. package/dist/components/noise-background/types.d.ts +4 -0
  169. package/dist/components/note/index.d.vue.ts +1 -1
  170. package/dist/components/note/index.vue +108 -98
  171. package/dist/components/note/types.d.ts +1 -0
  172. package/dist/components/number-input/index.d.vue.ts +1 -3
  173. package/dist/components/number-input/index.vue +196 -161
  174. package/dist/components/number-input/types.d.ts +1 -2
  175. package/dist/components/overlay/index.d.vue.ts +2 -2
  176. package/dist/components/overlay/index.vue +110 -68
  177. package/dist/components/page-number/index.d.vue.ts +18 -0
  178. package/dist/components/page-number/index.vue +232 -0
  179. package/dist/components/page-number/types.d.ts +18 -0
  180. package/dist/components/pagination/index.vue +14 -7
  181. package/dist/components/pin-input/index.d.vue.ts +2 -2
  182. package/dist/components/pin-input/index.vue +191 -173
  183. package/dist/components/placeholder/index.vue +22 -32
  184. package/dist/components/popover/index.d.vue.ts +0 -47
  185. package/dist/components/popover/index.vue +528 -345
  186. package/dist/components/popover/types.d.ts +7 -0
  187. package/dist/components/progress/index.d.vue.ts +2 -8
  188. package/dist/components/progress/index.vue +84 -62
  189. package/dist/components/progress/types.d.ts +0 -5
  190. package/dist/components/project-banner/index.d.vue.ts +3 -1
  191. package/dist/components/project-banner/index.vue +36 -34
  192. package/dist/components/project-banner/types.d.ts +1 -1
  193. package/dist/components/questionnaire/index.d.vue.ts +10 -0
  194. package/dist/components/questionnaire/index.vue +353 -0
  195. package/dist/components/questionnaire/types.d.ts +30 -0
  196. package/dist/components/radial-burst/index.d.vue.ts +14 -0
  197. package/dist/components/radial-burst/index.vue +53 -0
  198. package/dist/components/radial-burst/types.d.ts +5 -0
  199. package/dist/components/radio/index.d.vue.ts +4 -4
  200. package/dist/components/radio/index.vue +56 -74
  201. package/dist/components/radio-group/index.d.vue.ts +4 -4
  202. package/dist/components/radio-group/index.vue +26 -12
  203. package/dist/components/rating/index.d.vue.ts +17 -0
  204. package/dist/components/rating/index.vue +253 -0
  205. package/dist/components/rating/types.d.ts +18 -0
  206. package/dist/components/reasoning/index.d.vue.ts +16 -0
  207. package/dist/components/reasoning/index.vue +68 -0
  208. package/dist/components/reasoning/types.d.ts +3 -0
  209. package/dist/components/resizable/index.d.vue.ts +27 -4
  210. package/dist/components/resizable/index.vue +404 -158
  211. package/dist/components/resizable/types.d.ts +20 -13
  212. package/dist/components/resizable/utils.d.ts +4 -0
  213. package/dist/components/resizable/utils.js +10 -0
  214. package/dist/components/reveal/index.d.vue.ts +22 -0
  215. package/dist/components/reveal/index.vue +100 -0
  216. package/dist/components/reveal/types.d.ts +15 -0
  217. package/dist/components/rolling-number/index.d.vue.ts +17 -0
  218. package/dist/components/rolling-number/index.vue +252 -0
  219. package/dist/components/rolling-number/types.d.ts +11 -0
  220. package/dist/components/scalable-text/index.vue +113 -110
  221. package/dist/components/scroll-progress/index.d.vue.ts +22 -0
  222. package/dist/components/scroll-progress/index.vue +75 -0
  223. package/dist/components/scroll-progress/types.d.ts +9 -0
  224. package/dist/components/scroll-text/index.d.vue.ts +18 -0
  225. package/dist/components/scroll-text/index.vue +123 -0
  226. package/dist/components/scroll-text/types.d.ts +7 -0
  227. package/dist/components/scrollable/index.d.vue.ts +3 -3
  228. package/dist/components/scrollable/index.vue +281 -222
  229. package/dist/components/search-input/index.d.vue.ts +152 -0
  230. package/dist/components/search-input/index.vue +55 -0
  231. package/dist/components/search-input/types.d.ts +7 -0
  232. package/dist/components/select/index.d.vue.ts +33 -0
  233. package/dist/components/select/index.vue +134 -0
  234. package/dist/components/select/types.d.ts +23 -0
  235. package/dist/components/separator/index.vue +9 -6
  236. package/dist/components/shimmer-text/index.d.vue.ts +18 -0
  237. package/dist/components/shimmer-text/index.vue +216 -0
  238. package/dist/components/shimmer-text/types.d.ts +14 -0
  239. package/dist/components/skeleton/index.d.vue.ts +2 -2
  240. package/dist/components/skeleton/index.vue +59 -51
  241. package/dist/components/slider/index.d.vue.ts +2 -2
  242. package/dist/components/slider/index.vue +391 -261
  243. package/dist/components/slider/types.d.ts +3 -1
  244. package/dist/components/snippet/index.d.vue.ts +2 -1
  245. package/dist/components/snippet/index.vue +80 -69
  246. package/dist/components/snippet/types.d.ts +3 -3
  247. package/dist/components/spinner/index.vue +9 -8
  248. package/dist/components/spinner-dots/index.d.vue.ts +7 -0
  249. package/dist/components/spinner-dots/index.vue +232 -0
  250. package/dist/components/spinner-dots/types.d.ts +9 -0
  251. package/dist/components/split-button/index.d.vue.ts +31 -0
  252. package/dist/components/split-button/index.vue +93 -0
  253. package/dist/components/split-button/types.d.ts +18 -0
  254. package/dist/components/stack/index.d.vue.ts +1 -1
  255. package/dist/components/stack/index.vue +98 -84
  256. package/dist/components/status-dot/index.d.vue.ts +1 -1
  257. package/dist/components/status-dot/index.vue +34 -20
  258. package/dist/components/steps/index.d.vue.ts +28 -0
  259. package/dist/components/steps/index.vue +143 -0
  260. package/dist/components/steps/step-item.d.vue.ts +24 -0
  261. package/dist/components/steps/step-item.vue +86 -0
  262. package/dist/components/steps/types.d.ts +25 -0
  263. package/dist/components/stick-to-bottom/index.d.vue.ts +35 -0
  264. package/dist/components/stick-to-bottom/index.vue +78 -0
  265. package/dist/components/stick-to-bottom/types.d.ts +13 -0
  266. package/dist/components/swipe-cell/index.d.vue.ts +53 -0
  267. package/dist/components/swipe-cell/index.vue +412 -0
  268. package/dist/components/swipe-cell/instances.d.ts +7 -0
  269. package/dist/components/swipe-cell/instances.js +17 -0
  270. package/dist/components/swipe-cell/types.d.ts +52 -0
  271. package/dist/components/switch/index.d.vue.ts +1 -1
  272. package/dist/components/switch/index.vue +42 -21
  273. package/dist/components/switch-item/index.vue +36 -37
  274. package/dist/components/tabs/index.d.vue.ts +8 -6
  275. package/dist/components/tabs/index.vue +242 -196
  276. package/dist/components/tabs/tab-slot.d.ts +24 -0
  277. package/dist/components/tabs/tab-slot.js +13 -0
  278. package/dist/components/tabs/types.d.ts +11 -5
  279. package/dist/components/teleport/index.vue +69 -60
  280. package/dist/components/text/index.d.vue.ts +1 -1
  281. package/dist/components/text/index.vue +68 -57
  282. package/dist/components/textarea/index.d.vue.ts +7 -5
  283. package/dist/components/textarea/index.vue +148 -71
  284. package/dist/components/textarea/types.d.ts +5 -2
  285. package/dist/components/theme-switcher/index.d.vue.ts +2 -2
  286. package/dist/components/theme-switcher/index.vue +8 -12
  287. package/dist/components/time-picker/index.d.vue.ts +7 -8
  288. package/dist/components/time-picker/index.vue +246 -183
  289. package/dist/components/time-picker/types.d.ts +7 -7
  290. package/dist/components/timeline/index.d.vue.ts +6 -0
  291. package/dist/components/timeline/index.vue +52 -0
  292. package/dist/components/timeline/types.d.ts +6 -0
  293. package/dist/components/timeline-item/index.d.vue.ts +22 -0
  294. package/dist/components/timeline-item/index.vue +110 -0
  295. package/dist/components/timeline-item/types.d.ts +16 -0
  296. package/dist/components/toc/index.d.vue.ts +37 -0
  297. package/dist/components/toc/index.vue +199 -0
  298. package/dist/components/toc/types.d.ts +28 -0
  299. package/dist/components/todo-list/index.d.vue.ts +64 -0
  300. package/dist/components/todo-list/index.vue +357 -0
  301. package/dist/components/todo-list/types.d.ts +53 -0
  302. package/dist/components/toggle/index.d.vue.ts +6 -6
  303. package/dist/components/toggle/index.vue +92 -41
  304. package/dist/components/toggle/types.d.ts +1 -1
  305. package/dist/components/toggle-button/index.d.vue.ts +5 -5
  306. package/dist/components/toggle-button/index.vue +120 -84
  307. package/dist/components/toggle-button/types.d.ts +6 -4
  308. package/dist/components/toggle-button-group/index.d.vue.ts +7 -6
  309. package/dist/components/toggle-button-group/index.vue +63 -43
  310. package/dist/components/tool-call/index.d.vue.ts +6 -0
  311. package/dist/components/tool-call/index.vue +209 -0
  312. package/dist/components/tool-call/types.d.ts +8 -0
  313. package/dist/components/tooltip/index.d.vue.ts +5 -2
  314. package/dist/components/tooltip/index.vue +105 -50
  315. package/dist/components/tooltip/types.d.ts +1 -0
  316. package/dist/components/tree/index.d.vue.ts +108 -0
  317. package/dist/components/tree/index.vue +684 -0
  318. package/dist/components/tree/types.d.ts +126 -0
  319. package/dist/components/virtual-list/index.d.vue.ts +7 -9
  320. package/dist/components/virtual-list/index.vue +120 -54
  321. package/dist/components/virtual-list/types.d.ts +0 -1
  322. package/dist/composables/_internal/use-collapse-motion.d.ts +6 -0
  323. package/dist/composables/_internal/use-collapse-motion.js +85 -0
  324. package/dist/composables/{use-focus-trap.d.ts → _internal/use-focus-trap.d.ts} +2 -2
  325. package/dist/composables/_internal/use-focus-trap.js +64 -0
  326. package/dist/composables/{use-forward-ref-expose.js → _internal/use-forward-ref-expose.js} +1 -1
  327. package/dist/composables/_internal/use-list-filter.d.ts +15 -0
  328. package/dist/composables/_internal/use-list-filter.js +48 -0
  329. package/dist/composables/_internal/use-list-keyboard-controller.d.ts +21 -0
  330. package/dist/composables/_internal/use-list-keyboard-controller.js +27 -0
  331. package/dist/composables/_internal/use-list-navigation.d.ts +25 -0
  332. package/dist/composables/_internal/use-list-navigation.js +141 -0
  333. package/dist/composables/_internal/use-list-rows.d.ts +29 -0
  334. package/dist/composables/_internal/use-list-rows.js +58 -0
  335. package/dist/composables/_internal/use-list-selection.d.ts +23 -0
  336. package/dist/composables/_internal/use-list-selection.js +41 -0
  337. package/dist/composables/_internal/use-lock-scroll.js +57 -0
  338. package/dist/composables/_internal/use-mention-editor.d.ts +35 -0
  339. package/dist/composables/_internal/use-mention-editor.js +508 -0
  340. package/dist/composables/_internal/use-mention-suggest.d.ts +23 -0
  341. package/dist/composables/_internal/use-mention-suggest.js +113 -0
  342. package/dist/composables/{use-model-value.d.ts → _internal/use-model-value.d.ts} +1 -1
  343. package/dist/composables/_internal/use-model-value.js +13 -0
  344. package/dist/composables/_internal/use-motion-reduce.d.ts +6 -0
  345. package/dist/composables/_internal/use-motion-reduce.js +40 -0
  346. package/dist/composables/_internal/use-overlay-dialog.d.ts +25 -0
  347. package/dist/composables/_internal/use-overlay-dialog.js +25 -0
  348. package/dist/composables/{use-overlay-manager.js → _internal/use-overlay-manager.js} +2 -2
  349. package/dist/composables/{use-popover-responsive.js → _internal/use-popover-responsive.js} +1 -1
  350. package/dist/composables/_internal/use-selected-list-item.d.ts +6 -0
  351. package/dist/composables/_internal/use-selected-list-item.js +36 -0
  352. package/dist/composables/_internal/use-swipe-gesture.d.ts +88 -0
  353. package/dist/composables/_internal/use-swipe-gesture.js +345 -0
  354. package/dist/composables/_internal/use-tailwind-variant.d.ts +31 -0
  355. package/dist/composables/_internal/use-tailwind-variant.js +62 -0
  356. package/dist/composables/_internal/use-tree-drag.d.ts +23 -0
  357. package/dist/composables/_internal/use-tree-drag.js +196 -0
  358. package/dist/composables/_internal/use-tree-move.d.ts +20 -0
  359. package/dist/composables/_internal/use-tree-move.js +96 -0
  360. package/dist/composables/_internal/use-tree-rows.d.ts +46 -0
  361. package/dist/composables/_internal/use-tree-rows.js +101 -0
  362. package/dist/composables/_internal/use-tree-selection.d.ts +22 -0
  363. package/dist/composables/_internal/use-tree-selection.js +87 -0
  364. package/dist/composables/_internal/use-word-limit.d.ts +24 -0
  365. package/dist/composables/_internal/use-word-limit.js +36 -0
  366. package/dist/composables/index.d.ts +7 -10
  367. package/dist/composables/index.js +7 -10
  368. package/dist/composables/use-backoff-retry.d.ts +51 -0
  369. package/dist/composables/use-backoff-retry.js +116 -0
  370. package/dist/composables/use-color-scheme.js +28 -25
  371. package/dist/composables/use-copy-click.d.ts +2 -1
  372. package/dist/composables/use-copy-click.js +21 -18
  373. package/dist/composables/use-countdown.d.ts +0 -9
  374. package/dist/composables/use-countdown.js +12 -4
  375. package/dist/composables/use-deferred-value.js +1 -1
  376. package/dist/composables/use-delay-change.js +6 -2
  377. package/dist/composables/use-delay-destroy.d.ts +1 -1
  378. package/dist/composables/use-delay-destroy.js +16 -9
  379. package/dist/composables/use-intersection-observer.d.ts +6 -0
  380. package/dist/composables/use-intersection-observer.js +38 -0
  381. package/dist/composables/use-media-query.d.ts +0 -3
  382. package/dist/composables/use-media-query.js +19 -19
  383. package/dist/composables/use-mutation-observer.d.ts +6 -0
  384. package/dist/composables/use-mutation-observer.js +42 -0
  385. package/dist/composables/use-outside-click.d.ts +6 -4
  386. package/dist/composables/use-outside-click.js +18 -10
  387. package/dist/composables/use-repeat-action.js +31 -20
  388. package/dist/composables/use-resize-observer.d.ts +6 -0
  389. package/dist/composables/use-resize-observer.js +22 -0
  390. package/dist/composables/use-scrollspy.d.ts +15 -0
  391. package/dist/composables/use-scrollspy.js +98 -0
  392. package/dist/composables/use-stick-to-bottom.d.ts +32 -0
  393. package/dist/composables/use-stick-to-bottom.js +106 -0
  394. package/dist/composables/use-view-transition.d.ts +20 -0
  395. package/dist/composables/use-view-transition.js +79 -0
  396. package/dist/composables/use-virtual-list.d.ts +8 -5
  397. package/dist/composables/use-virtual-list.js +86 -19
  398. package/dist/contexts/breadcrumb.d.ts +2 -0
  399. package/dist/contexts/breadcrumb.js +2 -0
  400. package/dist/contexts/choicebox.d.ts +1 -0
  401. package/dist/contexts/config-provider.d.ts +3 -2
  402. package/dist/contexts/config-provider.js +4 -3
  403. package/dist/contexts/list.d.ts +4 -25
  404. package/dist/contexts/list.js +0 -8
  405. package/dist/locales/en-us.d.ts +56 -28
  406. package/dist/locales/en-us.js +56 -28
  407. package/dist/locales/index.d.ts +1 -0
  408. package/dist/locales/zh-cn.d.ts +55 -28
  409. package/dist/locales/zh-cn.js +69 -28
  410. package/dist/plugins/dayjs-millisecond-token.d.ts +2 -4
  411. package/dist/plugins/dayjs-millisecond-token.js +1 -2
  412. package/dist/styles/source.css +55 -20
  413. package/dist/styles/styles.css +2 -2
  414. package/dist/styles/tw.css +54 -20
  415. package/dist/types/shared/props.d.ts +5 -3
  416. package/dist/types/shared/utils.d.ts +7 -0
  417. package/dist/utils/context.js +2 -1
  418. package/dist/utils/date.d.ts +1 -15
  419. package/dist/utils/date.js +2 -11
  420. package/dist/utils/dom.d.ts +19 -21
  421. package/dist/utils/dom.js +57 -28
  422. package/dist/utils/event.d.ts +14 -2
  423. package/dist/utils/event.js +65 -27
  424. package/dist/utils/format.d.ts +5 -4
  425. package/dist/utils/format.js +33 -13
  426. package/dist/utils/fuzzy-match.d.ts +2 -0
  427. package/dist/utils/fuzzy-match.js +182 -0
  428. package/dist/utils/helper.d.ts +17 -0
  429. package/dist/utils/helper.js +57 -0
  430. package/dist/utils/is.d.ts +5 -1
  431. package/dist/utils/is.js +10 -2
  432. package/dist/utils/mention-html.d.ts +33 -0
  433. package/dist/utils/mention-html.js +146 -0
  434. package/dist/utils/merge.d.ts +1 -0
  435. package/dist/utils/merge.js +19 -0
  436. package/dist/utils/observer.d.ts +42 -0
  437. package/dist/utils/observer.js +173 -0
  438. package/dist/utils/timing.d.ts +19 -6
  439. package/dist/utils/timing.js +74 -16
  440. package/package.json +48 -37
  441. package/volar.d.ts +40 -5
  442. package/dist/components/carousel-item/index.d.vue.ts +0 -13
  443. package/dist/components/carousel-item/index.vue +0 -54
  444. package/dist/components/command-menu-group/index.d.vue.ts +0 -14
  445. package/dist/components/command-menu-group/index.vue +0 -31
  446. package/dist/components/command-menu-group/types.d.ts +0 -5
  447. package/dist/components/resizable-handle/index.d.vue.ts +0 -6
  448. package/dist/components/resizable-handle/index.vue +0 -116
  449. package/dist/components/resizable-panel/index.vue +0 -57
  450. package/dist/components/resizable-panel/types.d.ts +0 -4
  451. package/dist/components/tabs-item/index.d.vue.ts +0 -4
  452. package/dist/components/tabs-item/index.vue +0 -16
  453. package/dist/components/tabs-item/types.d.ts +0 -10
  454. package/dist/composables/use-browser-observer.d.ts +0 -12
  455. package/dist/composables/use-browser-observer.js +0 -74
  456. package/dist/composables/use-focus-trap.js +0 -54
  457. package/dist/composables/use-list-filter.d.ts +0 -11
  458. package/dist/composables/use-list-filter.js +0 -56
  459. package/dist/composables/use-list-navigation.d.ts +0 -27
  460. package/dist/composables/use-list-navigation.js +0 -159
  461. package/dist/composables/use-lock-scroll.js +0 -37
  462. package/dist/composables/use-model-value.js +0 -13
  463. package/dist/composables/use-swipe-gesture.d.ts +0 -65
  464. package/dist/composables/use-swipe-gesture.js +0 -98
  465. package/dist/contexts/carousel.d.ts +0 -14
  466. package/dist/contexts/carousel.js +0 -2
  467. package/dist/contexts/resizable.d.ts +0 -27
  468. package/dist/contexts/resizable.js +0 -2
  469. package/dist/contexts/tabs.d.ts +0 -15
  470. package/dist/contexts/tabs.js +0 -2
  471. package/dist/plugins/any-touch.d.ts +0 -213
  472. package/dist/plugins/any-touch.js +0 -592
  473. package/dist/utils/fuzzy-search.d.ts +0 -7
  474. package/dist/utils/fuzzy-search.js +0 -61
  475. package/dist/utils/get.d.ts +0 -9
  476. package/dist/utils/get.js +0 -55
  477. package/dist/utils/index.d.ts +0 -10
  478. package/dist/utils/index.js +0 -10
  479. package/dist/utils/ref.d.ts +0 -5
  480. package/dist/utils/ref.js +0 -8
  481. package/dist/utils/uid.d.ts +0 -1
  482. package/dist/utils/uid.js +0 -4
  483. /package/dist/composables/{use-forward-ref-expose.d.ts → _internal/use-forward-ref-expose.d.ts} +0 -0
  484. /package/dist/composables/{use-lock-scroll.d.ts → _internal/use-lock-scroll.d.ts} +0 -0
  485. /package/dist/composables/{use-overlay-manager.d.ts → _internal/use-overlay-manager.d.ts} +0 -0
  486. /package/dist/composables/{use-popover-responsive.d.ts → _internal/use-popover-responsive.d.ts} +0 -0
@@ -0,0 +1,196 @@
1
+ import { onScopeDispose, shallowRef } from "vue";
2
+ import { getElement } from "../../utils/dom.js";
3
+ import { toValue } from "../../utils/helper.js";
4
+ const DRAG_THRESHOLD = 5;
5
+ const EDGE_SIZE = 32;
6
+ const EDGE_SPEED = 12;
7
+ const EXPAND_DELAY = 500;
8
+ export function useTreeDrag(options) {
9
+ const value = shallowRef();
10
+ const target = shallowRef();
11
+ const x = shallowRef(0);
12
+ const y = shallowRef(0);
13
+ let armed;
14
+ let frame;
15
+ let autoScroll = 0;
16
+ let expandTimer;
17
+ let expandValue;
18
+ let cachedRects = [];
19
+ let contentOrigin = 0;
20
+ function measureRows(container, items) {
21
+ const rows = toValue(options.rows);
22
+ const origin = container.getBoundingClientRect().top - container.scrollTop;
23
+ const list = [];
24
+ for (const item of Array.from(items)) {
25
+ const row = rows[Number(item.dataset.index)];
26
+ if (!row) {
27
+ continue;
28
+ }
29
+ const rect = item.getBoundingClientRect();
30
+ list.push({ row, top: rect.top - origin, height: rect.height });
31
+ }
32
+ cachedRects = list;
33
+ contentOrigin = origin;
34
+ }
35
+ function isCacheStale(items) {
36
+ if (items.length !== cachedRects.length) {
37
+ return true;
38
+ }
39
+ return Number(items[0]?.dataset.index) !== cachedRects[0]?.row.index;
40
+ }
41
+ function resolveTarget(clientY) {
42
+ const container = getElement(options.container);
43
+ if (!container) {
44
+ return void 0;
45
+ }
46
+ const items = container.querySelectorAll("[data-tree-item]");
47
+ if (isCacheStale(items)) {
48
+ measureRows(container, items);
49
+ }
50
+ if (cachedRects.length === 0) {
51
+ return void 0;
52
+ }
53
+ const y2 = clientY - contentOrigin;
54
+ let nearest;
55
+ for (const entry of cachedRects) {
56
+ if (y2 >= entry.top && y2 <= entry.top + entry.height) {
57
+ return toTarget(entry, y2);
58
+ }
59
+ if (!nearest || Math.abs(entry.top - y2) < Math.abs(nearest.top - y2)) {
60
+ nearest = entry;
61
+ }
62
+ }
63
+ return nearest ? toTarget(nearest, y2) : void 0;
64
+ }
65
+ function toTarget(entry, y2) {
66
+ const dragged = value.value;
67
+ if (dragged === void 0) {
68
+ return void 0;
69
+ }
70
+ const row = entry.row;
71
+ const ratio = (y2 - entry.top) / (entry.height || 1);
72
+ const position = row.hasChildren && ratio > 0.25 && ratio < 0.75 ? "inside" : ratio < 0.5 ? "before" : "after";
73
+ return options.canDrop(dragged, row.key, position) ? { targetValue: row.key, position } : void 0;
74
+ }
75
+ function scheduleExpand(next) {
76
+ if (!next || next.position !== "inside") {
77
+ clearExpand();
78
+ return;
79
+ }
80
+ if (expandValue === next.targetValue) {
81
+ return;
82
+ }
83
+ clearExpand();
84
+ expandValue = next.targetValue;
85
+ expandTimer = setTimeout(() => {
86
+ expandTimer = void 0;
87
+ if (expandValue !== void 0) {
88
+ options.onExpand(expandValue);
89
+ }
90
+ }, EXPAND_DELAY);
91
+ }
92
+ function clearExpand() {
93
+ if (expandTimer !== void 0) {
94
+ clearTimeout(expandTimer);
95
+ expandTimer = void 0;
96
+ }
97
+ expandValue = void 0;
98
+ }
99
+ function tick() {
100
+ frame = void 0;
101
+ const container = getElement(options.container);
102
+ if (container && autoScroll !== 0) {
103
+ container.scrollTop += autoScroll;
104
+ target.value = resolveTarget(y.value);
105
+ }
106
+ if (autoScroll !== 0) {
107
+ frame = requestAnimationFrame(tick);
108
+ }
109
+ }
110
+ function updateAutoScroll(clientY) {
111
+ const container = getElement(options.container);
112
+ if (!container) {
113
+ return;
114
+ }
115
+ const rect = container.getBoundingClientRect();
116
+ if (clientY - rect.top < EDGE_SIZE) {
117
+ autoScroll = -EDGE_SPEED;
118
+ } else if (rect.bottom - clientY < EDGE_SIZE) {
119
+ autoScroll = EDGE_SPEED;
120
+ } else {
121
+ autoScroll = 0;
122
+ }
123
+ if (autoScroll !== 0 && frame === void 0) {
124
+ frame = requestAnimationFrame(tick);
125
+ }
126
+ }
127
+ function stopAutoScroll() {
128
+ autoScroll = 0;
129
+ if (frame !== void 0) {
130
+ cancelAnimationFrame(frame);
131
+ frame = void 0;
132
+ }
133
+ }
134
+ function detach() {
135
+ window.removeEventListener("pointermove", onPointerMove);
136
+ window.removeEventListener("pointerup", onPointerUp);
137
+ window.removeEventListener("pointercancel", onPointerCancel);
138
+ window.removeEventListener("keydown", onKeydown);
139
+ armed = void 0;
140
+ cachedRects = [];
141
+ stopAutoScroll();
142
+ clearExpand();
143
+ }
144
+ function reset() {
145
+ value.value = void 0;
146
+ target.value = void 0;
147
+ detach();
148
+ }
149
+ function onPointerMove(event) {
150
+ if (armed) {
151
+ const moved = Math.abs(event.clientY - armed.y) >= DRAG_THRESHOLD || Math.abs(event.clientX - armed.x) >= DRAG_THRESHOLD;
152
+ if (!moved) {
153
+ return;
154
+ }
155
+ window.removeEventListener("keydown", onKeydown);
156
+ window.addEventListener("keydown", onKeydown);
157
+ value.value = armed.value;
158
+ armed = void 0;
159
+ }
160
+ if (value.value === void 0) {
161
+ return;
162
+ }
163
+ x.value = event.clientX;
164
+ y.value = event.clientY;
165
+ target.value = resolveTarget(event.clientY);
166
+ scheduleExpand(target.value);
167
+ updateAutoScroll(event.clientY);
168
+ }
169
+ function onPointerUp() {
170
+ const dragged = value.value;
171
+ const dropped = target.value;
172
+ reset();
173
+ if (dragged !== void 0 && dropped) {
174
+ options.onCommit(dragged, dropped);
175
+ }
176
+ }
177
+ function onPointerCancel() {
178
+ reset();
179
+ }
180
+ function onKeydown(event) {
181
+ if (event.key === "Escape") {
182
+ reset();
183
+ }
184
+ }
185
+ function onPointerDown(nodeValue, event) {
186
+ if (armed || toValue(options.enabled) === false || event.button !== 0) {
187
+ return;
188
+ }
189
+ armed = { value: nodeValue, x: event.clientX, y: event.clientY };
190
+ window.addEventListener("pointermove", onPointerMove);
191
+ window.addEventListener("pointerup", onPointerUp);
192
+ window.addEventListener("pointercancel", onPointerCancel);
193
+ }
194
+ onScopeDispose(reset);
195
+ return { value, target, x, y, onPointerDown, cancel: reset };
196
+ }
@@ -0,0 +1,20 @@
1
+ import type { TreeDropTarget, TreeMoveDetail, TreeOptions } from '../../components/tree/types';
2
+ import type { ComponentValue } from '../../types/shared';
3
+ import type { TreeIndex } from './use-tree-rows';
4
+ /**
5
+ * Walks up from `value` looking for `ancestorValue`. Reached in O(depth) instead of scanning
6
+ * `index.list`, which the hit test runs on every pointer move.
7
+ */
8
+ export declare function isTreeDescendant(index: TreeIndex, ancestorValue: ComponentValue, value: ComponentValue): boolean;
9
+ export interface TreeMoveResult {
10
+ data: TreeOptions;
11
+ detail: TreeMoveDetail;
12
+ }
13
+ /**
14
+ * Relocates a node relative to a target row.
15
+ *
16
+ * The node is detached before the target is looked up, which is what rejects the whole
17
+ * family of invalid drops for free: the node itself and its own descendants are no longer
18
+ * in the tree, so the insertion pass simply never finds them.
19
+ */
20
+ export declare function moveTreeNode(data: TreeOptions, childrenField: string, value: ComponentValue, target: TreeDropTarget): TreeMoveResult | undefined;
@@ -0,0 +1,96 @@
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
+ }
@@ -0,0 +1,46 @@
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[]>;
@@ -0,0 +1,101 @@
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
+ }
@@ -0,0 +1,22 @@
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;
@@ -0,0 +1,87 @@
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
+ }
@@ -0,0 +1,24 @@
1
+ import type { ComponentLabel } from '../../types/shared';
2
+ import type { ComputedRef, MaybeRefOrGetter } from 'vue';
3
+ interface WordLimitOptions {
4
+ modelValue: MaybeRefOrGetter<ComponentLabel>;
5
+ showWordLimit: MaybeRefOrGetter<unknown>;
6
+ maxLength: MaybeRefOrGetter<string | number | null | undefined>;
7
+ wordLimitPosition: MaybeRefOrGetter<'inside' | 'outside' | undefined>;
8
+ isComposing: MaybeRefOrGetter<boolean>;
9
+ }
10
+ export interface WordLimit {
11
+ wordCount: ComputedRef<number>;
12
+ isWordLimitShown: ComputedRef<boolean>;
13
+ hasMaxLength: ComputedRef<boolean>;
14
+ isWordLimitOutside: ComputedRef<boolean>;
15
+ nativeMaxLength: ComputedRef<string | number | undefined>;
16
+ wordLimitText: ComputedRef<string>;
17
+ isWordLimitExceeded: ComputedRef<boolean>;
18
+ }
19
+ /**
20
+ * Shared word-limit state used by PInput and PTextarea.
21
+ * Keeps the two components' word-count/computed logic in sync.
22
+ */
23
+ export declare function useWordLimit(options: WordLimitOptions): WordLimit;
24
+ export {};
@@ -0,0 +1,36 @@
1
+ import { computed } from "vue";
2
+ import { isTruthyProp } from "../../utils/format.js";
3
+ import { toValue } from "../../utils/helper.js";
4
+ export function useWordLimit(options) {
5
+ const wordCount = computed(() => String(toValue(options.modelValue) ?? "").length);
6
+ const isWordLimitShown = computed(() => isTruthyProp(toValue(options.showWordLimit)));
7
+ const hasMaxLength = computed(() => {
8
+ const maxLength = toValue(options.maxLength);
9
+ return maxLength != null && maxLength !== "";
10
+ });
11
+ const isWordLimitOutside = computed(() => toValue(options.wordLimitPosition) === "outside");
12
+ const nativeMaxLength = computed(() => {
13
+ if (toValue(options.isComposing)) {
14
+ return void 0;
15
+ }
16
+ return toValue(options.maxLength) ?? void 0;
17
+ });
18
+ const wordLimitText = computed(() => {
19
+ if (hasMaxLength.value) {
20
+ return `${wordCount.value} / ${toValue(options.maxLength)}`;
21
+ }
22
+ return `${wordCount.value}`;
23
+ });
24
+ const isWordLimitExceeded = computed(
25
+ () => hasMaxLength.value && wordCount.value > Number(toValue(options.maxLength))
26
+ );
27
+ return {
28
+ wordCount,
29
+ isWordLimitShown,
30
+ hasMaxLength,
31
+ isWordLimitOutside,
32
+ nativeMaxLength,
33
+ wordLimitText,
34
+ isWordLimitExceeded
35
+ };
36
+ }
@@ -1,4 +1,4 @@
1
- export * from './use-browser-observer.js';
1
+ export * from './use-backoff-retry.js';
2
2
  export * from './use-client-online.js';
3
3
  export * from './use-color-scheme.js';
4
4
  export * from './use-copy-click.js';
@@ -7,20 +7,17 @@ export * from './use-deferred-value.js';
7
7
  export * from './use-delay-change.js';
8
8
  export * from './use-delay-destroy.js';
9
9
  export * from './use-document-hidden.js';
10
- export * from './use-focus-trap.js';
11
- export * from './use-forward-ref-expose.js';
12
- export * from './use-list-filter.js';
13
- export * from './use-list-navigation.js';
10
+ export * from './use-intersection-observer.js';
14
11
  export * from './use-loading-bar.js';
15
- export * from './use-lock-scroll.js';
16
12
  export * from './use-media-query.js';
17
13
  export * from './use-message.js';
18
- export * from './use-model-value.js';
14
+ export * from './use-mutation-observer.js';
19
15
  export * from './use-outside-click.js';
20
- export * from './use-overlay-manager.js';
21
- export * from './use-popover-responsive.js';
22
16
  export * from './use-repeat-action.js';
23
- export * from './use-swipe-gesture.js';
17
+ export * from './use-resize-observer.js';
18
+ export * from './use-scrollspy.js';
19
+ export * from './use-stick-to-bottom.js';
24
20
  export * from './use-toggle-value.js';
21
+ export * from './use-view-transition.js';
25
22
  export * from './use-virtual-list.js';
26
23
  export * from './use-window-size.js';