pxd 0.0.55 → 0.0.61

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 (279) hide show
  1. package/README.md +18 -4
  2. package/dist/components/_internal/fragment-container.vue +3 -2
  3. package/dist/components/active-graph/index.d.vue.ts +2 -3
  4. package/dist/components/active-graph/index.vue +23 -16
  5. package/dist/components/active-graph/types.d.ts +4 -3
  6. package/dist/components/avatar/index.vue +19 -10
  7. package/dist/components/avatar/types.d.ts +0 -12
  8. package/dist/components/avatar-group/index.d.vue.ts +2 -2
  9. package/dist/components/avatar-group/index.vue +4 -3
  10. package/dist/components/avatar-group/types.d.ts +11 -0
  11. package/dist/components/badge/index.d.vue.ts +1 -1
  12. package/dist/components/badge/index.vue +47 -3
  13. package/dist/components/badge/types.d.ts +24 -1
  14. package/dist/components/book/index.vue +3 -2
  15. package/dist/components/browser/index.vue +6 -2
  16. package/dist/components/button/index.d.vue.ts +1 -1
  17. package/dist/components/button/index.vue +60 -12
  18. package/dist/components/carousel/index.d.vue.ts +24 -2
  19. package/dist/components/carousel/index.vue +341 -28
  20. package/dist/components/carousel/types.d.ts +2 -2
  21. package/dist/components/carousel-item/index.d.vue.ts +13 -0
  22. package/dist/components/carousel-item/index.vue +49 -0
  23. package/dist/components/checkbox/index.d.vue.ts +1 -5
  24. package/dist/components/checkbox/index.vue +66 -31
  25. package/dist/components/checkbox/types.d.ts +2 -14
  26. package/dist/components/checkbox-group/index.d.vue.ts +2 -7
  27. package/dist/components/checkbox-group/index.vue +11 -29
  28. package/dist/components/checkbox-group/types.d.ts +12 -0
  29. package/dist/components/chip/index.d.vue.ts +1 -1
  30. package/dist/components/chip/index.vue +31 -2
  31. package/dist/components/choicebox/index.d.vue.ts +11 -5
  32. package/dist/components/choicebox/index.vue +36 -54
  33. package/dist/components/choicebox/types.d.ts +11 -18
  34. package/dist/components/choicebox-item/index.d.vue.ts +16 -0
  35. package/dist/components/choicebox-item/index.vue +67 -0
  36. package/dist/components/choicebox-item/types.d.ts +12 -0
  37. package/dist/components/collapse/index.d.vue.ts +5 -4
  38. package/dist/components/collapse/index.vue +47 -30
  39. package/dist/components/collapse/types.d.ts +2 -5
  40. package/dist/components/collapse-group/index.d.vue.ts +2 -4
  41. package/dist/components/collapse-group/index.vue +8 -20
  42. package/dist/components/collapse-group/types.d.ts +6 -0
  43. package/dist/components/command-menu/index.vue +6 -7
  44. package/dist/components/command-menu/types.d.ts +0 -5
  45. package/dist/components/command-menu-group/index.d.vue.ts +1 -1
  46. package/dist/components/command-menu-group/index.vue +3 -2
  47. package/dist/components/command-menu-group/types.d.ts +5 -0
  48. package/dist/components/config-provider/index.d.vue.ts +3 -3
  49. package/dist/components/config-provider/index.vue +6 -4
  50. package/dist/components/countdown/index.vue +3 -2
  51. package/dist/components/countdown/types.d.ts +2 -2
  52. package/dist/components/dash-line/index.vue +3 -1
  53. package/dist/components/description/index.d.vue.ts +1 -1
  54. package/dist/components/description/index.vue +8 -7
  55. package/dist/components/description/types.d.ts +1 -1
  56. package/dist/components/drawer/index.d.vue.ts +3 -2
  57. package/dist/components/drawer/index.vue +20 -15
  58. package/dist/components/drawer/types.d.ts +3 -3
  59. package/dist/components/ellipsis-text/index.d.vue.ts +14 -0
  60. package/dist/components/ellipsis-text/index.vue +242 -0
  61. package/dist/components/ellipsis-text/types.d.ts +14 -0
  62. package/dist/components/empty-state/index.vue +6 -2
  63. package/dist/components/error/index.d.vue.ts +1 -3
  64. package/dist/components/error/index.vue +21 -6
  65. package/dist/components/error/types.d.ts +7 -1
  66. package/dist/components/fader/index.vue +30 -11
  67. package/dist/components/fader/types.d.ts +2 -2
  68. package/dist/components/gauge/index.vue +7 -2
  69. package/dist/components/grid/index.vue +9 -4
  70. package/dist/components/grid/types.d.ts +0 -5
  71. package/dist/components/grid-item/index.d.vue.ts +1 -1
  72. package/dist/components/grid-item/index.vue +16 -8
  73. package/dist/components/grid-item/types.d.ts +6 -0
  74. package/dist/components/hold-button/index.d.vue.ts +2 -2
  75. package/dist/components/hold-button/index.vue +1 -1
  76. package/dist/components/index.d.ts +7 -3
  77. package/dist/components/index.js +7 -3
  78. package/dist/components/input/index.d.vue.ts +8 -8
  79. package/dist/components/input/index.vue +54 -21
  80. package/dist/components/input/types.d.ts +7 -10
  81. package/dist/components/intersection-observer/index.d.vue.ts +0 -1
  82. package/dist/components/intersection-observer/index.vue +12 -3
  83. package/dist/components/kbd/index.vue +1 -1
  84. package/dist/components/link-button/index.d.vue.ts +1 -1
  85. package/dist/components/link-button/index.vue +4 -6
  86. package/dist/components/link-button/types.d.ts +1 -1
  87. package/dist/components/list/index.d.vue.ts +8 -5
  88. package/dist/components/list/index.vue +50 -54
  89. package/dist/components/list/types.d.ts +3 -20
  90. package/dist/components/list-item/index.d.vue.ts +3 -2
  91. package/dist/components/list-item/index.vue +44 -18
  92. package/dist/components/list-item/types.d.ts +15 -0
  93. package/dist/components/loading-bar/index.vue +33 -2
  94. package/dist/components/loading-bar/types.d.ts +1 -1
  95. package/dist/components/loading-dots/index.vue +3 -2
  96. package/dist/components/menu/index.d.vue.ts +5 -2
  97. package/dist/components/menu/index.vue +4 -1
  98. package/dist/components/menu/types.d.ts +5 -0
  99. package/dist/components/message/index.d.vue.ts +11 -8
  100. package/dist/components/message/index.vue +4 -12
  101. package/dist/components/message/types.d.ts +1 -12
  102. package/dist/components/message-item/index.d.vue.ts +1 -3
  103. package/dist/components/message-item/index.vue +13 -7
  104. package/dist/components/message-item/types.d.ts +11 -0
  105. package/dist/components/modal/index.d.vue.ts +3 -2
  106. package/dist/components/modal/index.vue +17 -13
  107. package/dist/components/modal/types.d.ts +3 -3
  108. package/dist/components/noise-background/index.vue +4 -3
  109. package/dist/components/note/index.d.vue.ts +1 -2
  110. package/dist/components/note/index.vue +81 -29
  111. package/dist/components/note/types.d.ts +10 -2
  112. package/dist/components/number-input/index.d.vue.ts +5 -4
  113. package/dist/components/number-input/index.vue +36 -6
  114. package/dist/components/number-input/types.d.ts +2 -0
  115. package/dist/components/overlay/index.vue +1 -1
  116. package/dist/components/overlay/types.d.ts +1 -1
  117. package/dist/components/pagination/index.vue +5 -3
  118. package/dist/components/pin-input/index.d.vue.ts +6 -1
  119. package/dist/components/pin-input/index.vue +60 -23
  120. package/dist/components/pin-input/types.d.ts +0 -4
  121. package/dist/components/placeholder/index.vue +14 -11
  122. package/dist/components/popover/index.vue +116 -78
  123. package/dist/components/popover/types.d.ts +1 -0
  124. package/dist/components/progress/index.d.vue.ts +1 -1
  125. package/dist/components/progress/index.vue +15 -2
  126. package/dist/components/project-banner/index.d.vue.ts +18 -0
  127. package/dist/components/project-banner/index.vue +59 -0
  128. package/dist/components/project-banner/types.d.ts +8 -0
  129. package/dist/components/radio/index.vue +62 -20
  130. package/dist/components/radio/types.d.ts +1 -14
  131. package/dist/components/radio-group/index.d.vue.ts +2 -4
  132. package/dist/components/radio-group/index.vue +11 -16
  133. package/dist/components/radio-group/types.d.ts +12 -0
  134. package/dist/components/resizable/types.d.ts +5 -10
  135. package/dist/components/resizable-handle/index.vue +1 -1
  136. package/dist/components/resizable-panel/index.d.vue.ts +1 -1
  137. package/dist/components/resizable-panel/index.vue +7 -2
  138. package/dist/components/resizable-panel/types.d.ts +4 -0
  139. package/dist/components/scrollable/index.d.vue.ts +29 -0
  140. package/dist/components/scrollable/index.vue +98 -83
  141. package/dist/components/scrollable/types.d.ts +19 -6
  142. package/dist/components/skeleton/index.vue +24 -1
  143. package/dist/components/slider/index.d.vue.ts +6 -6
  144. package/dist/components/slider/index.vue +86 -44
  145. package/dist/components/slider/types.d.ts +1 -1
  146. package/dist/components/snippet/index.vue +28 -2
  147. package/dist/components/spinner/index.vue +4 -2
  148. package/dist/components/stack/index.d.vue.ts +2 -2
  149. package/dist/components/stack/index.vue +35 -3
  150. package/dist/components/stack/types.d.ts +1 -1
  151. package/dist/components/status-dot/index.vue +5 -1
  152. package/dist/components/switch/index.d.vue.ts +10 -1
  153. package/dist/components/switch/index.vue +35 -44
  154. package/dist/components/switch/types.d.ts +4 -12
  155. package/dist/components/switch-item/index.d.vue.ts +14 -0
  156. package/dist/components/switch-item/index.vue +79 -0
  157. package/dist/components/switch-item/types.d.ts +9 -0
  158. package/dist/components/teleport/index.d.vue.ts +1 -1
  159. package/dist/components/teleport/index.vue +1 -1
  160. package/dist/components/teleport/types.d.ts +1 -1
  161. package/dist/components/text/index.d.vue.ts +1 -2
  162. package/dist/components/text/index.vue +36 -22
  163. package/dist/components/text/types.d.ts +1 -1
  164. package/dist/components/textarea/index.d.vue.ts +4 -4
  165. package/dist/components/textarea/index.vue +33 -4
  166. package/dist/components/textarea/types.d.ts +0 -1
  167. package/dist/components/time-picker/index.d.vue.ts +1 -2
  168. package/dist/components/time-picker/index.vue +43 -9
  169. package/dist/components/time-picker/types.d.ts +1 -2
  170. package/dist/components/toggle/index.vue +11 -10
  171. package/dist/components/toggle-button/index.d.vue.ts +22 -0
  172. package/dist/components/toggle-button/index.vue +110 -0
  173. package/dist/components/toggle-button/types.d.ts +16 -0
  174. package/dist/components/{choicebox-group → toggle-button-group}/index.d.vue.ts +5 -5
  175. package/dist/components/toggle-button-group/index.vue +68 -0
  176. package/dist/components/toggle-button-group/types.d.ts +22 -0
  177. package/dist/components/tooltip/index.d.vue.ts +2 -0
  178. package/dist/components/tooltip/index.vue +9 -3
  179. package/dist/components/tooltip/types.d.ts +3 -2
  180. package/dist/components/virtual-list/index.d.vue.ts +25 -4
  181. package/dist/components/virtual-list/index.vue +66 -10
  182. package/dist/components/virtual-list/types.d.ts +9 -4
  183. package/dist/composables/index.d.ts +2 -2
  184. package/dist/composables/index.js +2 -2
  185. package/dist/composables/use-browser-observer.d.ts +5 -5
  186. package/dist/composables/use-browser-observer.js +23 -20
  187. package/dist/composables/use-copy-click.js +4 -0
  188. package/dist/composables/use-countdown.d.ts +2 -2
  189. package/dist/composables/use-delay-destroy.d.ts +1 -1
  190. package/dist/composables/use-focus-trap.d.ts +7 -3
  191. package/dist/composables/use-focus-trap.js +19 -7
  192. package/dist/composables/use-forward-ref-expose.d.ts +2 -0
  193. package/dist/composables/use-forward-ref-expose.js +41 -0
  194. package/dist/composables/use-message.d.ts +4 -7
  195. package/dist/composables/use-model-value.d.ts +9 -8
  196. package/dist/composables/use-popover-responsive.d.ts +2 -2
  197. package/dist/composables/use-popover-responsive.js +3 -3
  198. package/dist/composables/use-repeat-action.d.ts +1 -1
  199. package/dist/composables/use-repeat-action.js +2 -2
  200. package/dist/composables/use-virtual-list.d.ts +21 -12
  201. package/dist/composables/use-virtual-list.js +90 -158
  202. package/dist/composables/use-window-size.d.ts +4 -0
  203. package/dist/composables/use-window-size.js +27 -0
  204. package/dist/contexts/avatar.d.ts +5 -2
  205. package/dist/contexts/carousel.d.ts +4 -4
  206. package/dist/contexts/carousel.js +1 -1
  207. package/dist/contexts/checkbox.d.ts +7 -2
  208. package/dist/contexts/choicebox.d.ts +8 -4
  209. package/dist/contexts/choicebox.js +1 -4
  210. package/dist/contexts/collapse.d.ts +5 -6
  211. package/dist/contexts/collapse.js +1 -1
  212. package/dist/contexts/config-provider.d.ts +5 -0
  213. package/dist/{composables/use-config-provider-context.js → contexts/config-provider.js} +8 -5
  214. package/dist/contexts/list.d.ts +1 -1
  215. package/dist/contexts/radio.d.ts +8 -2
  216. package/dist/contexts/resizable.d.ts +1 -1
  217. package/dist/contexts/switch.d.ts +8 -4
  218. package/dist/contexts/switch.js +1 -2
  219. package/dist/contexts/toggle-button.d.ts +7 -0
  220. package/dist/contexts/toggle-button.js +2 -0
  221. package/dist/styles/source.css +14 -2
  222. package/dist/styles/styles.css +2 -2
  223. package/dist/styles/tw.css +14 -2
  224. package/dist/types/shared/props.d.ts +1 -3
  225. package/dist/types/shared/utils.d.ts +0 -3
  226. package/dist/utils/context.d.ts +1 -0
  227. package/dist/utils/get.d.ts +1 -0
  228. package/dist/utils/get.js +14 -0
  229. package/dist/utils/ref.d.ts +1 -1
  230. package/dist/utils/responsive.js +2 -1
  231. package/dist/utils/throttle.js +9 -7
  232. package/dist/utils/uid.d.ts +1 -1
  233. package/dist/utils/uid.js +2 -2
  234. package/package.json +23 -21
  235. package/volar.d.ts +7 -3
  236. package/dist/components/badge/cn.d.ts +0 -90
  237. package/dist/components/badge/cn.js +0 -44
  238. package/dist/components/button/cn.d.ts +0 -121
  239. package/dist/components/button/cn.js +0 -55
  240. package/dist/components/carousel-group/index.d.vue.ts +0 -35
  241. package/dist/components/carousel-group/index.vue +0 -368
  242. package/dist/components/checkbox/cn.d.ts +0 -67
  243. package/dist/components/checkbox/cn.js +0 -31
  244. package/dist/components/chip/cn.d.ts +0 -49
  245. package/dist/components/chip/cn.js +0 -26
  246. package/dist/components/choicebox-group/index.vue +0 -65
  247. package/dist/components/error/cn.d.ts +0 -22
  248. package/dist/components/error/cn.js +0 -15
  249. package/dist/components/input/cn.d.ts +0 -73
  250. package/dist/components/input/cn.js +0 -36
  251. package/dist/components/list-item/cn.d.ts +0 -22
  252. package/dist/components/list-item/cn.js +0 -15
  253. package/dist/components/loading-bar/cn.d.ts +0 -70
  254. package/dist/components/loading-bar/cn.js +0 -32
  255. package/dist/components/note/cn.d.ts +0 -121
  256. package/dist/components/note/cn.js +0 -66
  257. package/dist/components/pin-input/cn.d.ts +0 -46
  258. package/dist/components/pin-input/cn.js +0 -25
  259. package/dist/components/progress/cn.d.ts +0 -19
  260. package/dist/components/progress/cn.js +0 -14
  261. package/dist/components/radio/cn.d.ts +0 -46
  262. package/dist/components/radio/cn.js +0 -42
  263. package/dist/components/skeleton/cn.d.ts +0 -43
  264. package/dist/components/skeleton/cn.js +0 -24
  265. package/dist/components/snippet/cn.d.ts +0 -52
  266. package/dist/components/snippet/cn.js +0 -27
  267. package/dist/components/stack/cn.d.ts +0 -70
  268. package/dist/components/stack/cn.js +0 -33
  269. package/dist/components/switch/cn.d.ts +0 -16
  270. package/dist/components/switch/cn.js +0 -13
  271. package/dist/components/switch-group/index.d.vue.ts +0 -23
  272. package/dist/components/switch-group/index.vue +0 -54
  273. package/dist/components/text/cn.d.ts +0 -67
  274. package/dist/components/text/cn.js +0 -34
  275. package/dist/components/textarea/cn.d.ts +0 -58
  276. package/dist/components/textarea/cn.js +0 -30
  277. package/dist/composables/use-config-provider-context.d.ts +0 -3
  278. package/dist/composables/use-unique-id-context.d.ts +0 -2
  279. package/dist/composables/use-unique-id-context.js +0 -11
@@ -1,176 +1,108 @@
1
- import { computed, onMounted, onUnmounted, ref, shallowRef, watch } from "vue";
2
- const DEFAULT_ITEM_SIZE = 50;
3
- const BUFFER_SIZE = 2;
4
- export function useVirtualList(props) {
5
- const containerRef = shallowRef();
6
- const itemRefs = /* @__PURE__ */ new Map();
7
- const start = ref(0);
8
- const offset = ref(0);
9
- const containerHeight = ref(0);
10
- const positions = ref([]);
11
- const safeListData = computed(() => props.listData || []);
12
- const safeItemSize = computed(() => props.itemSize || DEFAULT_ITEM_SIZE);
13
- const renderCount = computed(() => {
14
- if (containerHeight.value === 0 || safeItemSize.value === 0) {
15
- return 0;
16
- }
17
- return Math.ceil(containerHeight.value / safeItemSize.value) + BUFFER_SIZE;
18
- });
19
- const end = computed(() => Math.min(start.value + renderCount.value, safeListData.value.length));
20
- const renderList = computed(() => safeListData.value.slice(start.value, end.value));
21
- const listHeight = computed(() => {
22
- if (positions.value.length === 0) {
23
- return 0;
24
- }
25
- return positions.value[positions.value.length - 1]?.bottom || 0;
26
- });
27
- const listStyle = computed(() => `transform: translate3d(0, ${offset.value}px, 0)`);
28
- function setItemRef(el, key) {
29
- if (el) {
30
- itemRefs.set(key, el instanceof HTMLElement ? el : el.$el);
31
- } else {
32
- itemRefs.delete(key);
33
- }
34
- }
35
- function clearItemRefs() {
36
- itemRefs.clear();
37
- }
38
- function getStartIndex(scrollTop) {
39
- if (positions.value.length === 0) {
40
- return 0;
41
- }
42
- let low = 0;
43
- let high = positions.value.length - 1;
44
- let result = 0;
45
- while (low <= high) {
46
- const mid = low + Math.floor((high - low) / 2);
47
- const position = positions.value[mid];
48
- if (!position) {
49
- break;
50
- }
51
- if (position.bottom <= scrollTop) {
52
- low = mid + 1;
53
- result = low;
54
- } else {
55
- high = mid - 1;
1
+ import {
2
+ elementScroll,
3
+ observeElementOffset,
4
+ observeElementRect,
5
+ Virtualizer
6
+ } from "@tanstack/virtual-core";
7
+ import { computed, onMounted, onUnmounted, shallowRef, watch } from "vue";
8
+ import { toValue } from "../utils/ref.js";
9
+ const DEFAULTS = {
10
+ status: "",
11
+ itemSize: 50,
12
+ overScan: 2
13
+ };
14
+ export function useVirtualList(containerRef, options) {
15
+ let reachBottomFired = false;
16
+ let cleanup;
17
+ const triggerVersion = shallowRef(0);
18
+ function getItemKey(index) {
19
+ if (options.dataKey) {
20
+ const item = options.listData?.[index];
21
+ const key = item?.[options.dataKey];
22
+ if (key !== void 0 && key !== null) {
23
+ return key;
56
24
  }
57
25
  }
58
- return Math.min(result, positions.value.length - 1);
26
+ return index;
59
27
  }
60
- function handleScroll(ev) {
61
- const target = ev.target;
62
- if (!target) {
63
- return;
64
- }
65
- const newStart = getStartIndex(target.scrollTop);
66
- start.value = newStart;
67
- offset.value = newStart > 0 && positions.value[newStart] ? positions.value[newStart].top : 0;
68
- }
69
- function initPositions() {
70
- if (!safeListData.value.length) {
71
- positions.value = [];
72
- return;
73
- }
74
- positions.value = safeListData.value.map((_, index) => ({
75
- index,
76
- height: safeItemSize.value,
77
- top: index * safeItemSize.value,
78
- bottom: (index + 1) * safeItemSize.value
79
- }));
80
- }
81
- function updatePositions() {
82
- if (!renderList.value.length || positions.value.length === 0) {
83
- return;
84
- }
85
- let firstChangedIndex = -1;
86
- const changes = [];
87
- renderList.value.forEach((_, i) => {
88
- const index = start.value + i;
89
- const itemData = props.listData[index];
90
- const itemEl = itemRefs.get(itemData[props.dataKey]);
91
- const position = positions.value[index];
92
- if (!itemEl || !position) {
28
+ const virtualizer = new Virtualizer({
29
+ count: options.listData?.length ?? 0,
30
+ getScrollElement: () => toValue(containerRef) ?? null,
31
+ estimateSize: () => options.itemSize ?? DEFAULTS.itemSize,
32
+ getItemKey,
33
+ overscan: options.overScan ?? DEFAULTS.overScan,
34
+ observeElementRect,
35
+ observeElementOffset,
36
+ scrollToFn: elementScroll,
37
+ onChange: (instance) => {
38
+ triggerVersion.value++;
39
+ const { status = DEFAULTS.status, listData } = options;
40
+ if (status || listData?.length === 0) {
93
41
  return;
94
42
  }
95
- const rect = itemEl.getBoundingClientRect();
96
- const newHeight = rect.height;
97
- if (Math.abs(position.height - newHeight) > 1) {
98
- changes.push({ index, newHeight });
99
- if (firstChangedIndex === -1 || index < firstChangedIndex) {
100
- firstChangedIndex = index;
101
- }
43
+ const { onBottom, itemSize = DEFAULTS.itemSize, bottomThreshold } = options;
44
+ if (!onBottom) {
45
+ return;
102
46
  }
103
- });
104
- if (changes.length === 0) {
105
- return;
106
- }
107
- changes.forEach(({ index, newHeight }) => {
108
- if (positions.value[index]) {
109
- positions.value[index].height = newHeight;
47
+ const { scrollOffset, scrollRect } = instance;
48
+ if (scrollOffset === null || scrollRect === null) {
49
+ return;
110
50
  }
111
- });
112
- if (firstChangedIndex !== -1) {
113
- for (let i = firstChangedIndex; i < positions.value.length; i++) {
114
- const position = positions.value[i];
115
- if (!position) {
116
- continue;
117
- }
118
- if (i === 0) {
119
- position.top = 0;
120
- } else {
121
- const prevPosition = positions.value[i - 1];
122
- if (prevPosition) {
123
- position.top = prevPosition.bottom;
124
- }
51
+ const totalSize2 = instance.getTotalSize();
52
+ const threshold = bottomThreshold ?? itemSize;
53
+ const scrollBottom = scrollOffset + scrollRect.height;
54
+ if (scrollBottom >= totalSize2 - threshold) {
55
+ if (!reachBottomFired) {
56
+ reachBottomFired = true;
57
+ onBottom();
125
58
  }
126
- position.bottom = position.top + position.height;
59
+ } else {
60
+ reachBottomFired = false;
127
61
  }
128
62
  }
63
+ });
64
+ const virtualItems = computed(() => {
65
+ void triggerVersion.value;
66
+ return virtualizer.getVirtualItems();
67
+ });
68
+ const totalSize = computed(() => {
69
+ void triggerVersion.value;
70
+ return virtualizer.getTotalSize();
71
+ });
72
+ function updateVirtualizer() {
73
+ virtualizer.setOptions({
74
+ ...virtualizer.options,
75
+ count: options.listData?.length ?? 0,
76
+ estimateSize: () => options.itemSize ?? DEFAULTS.itemSize,
77
+ getItemKey
78
+ });
79
+ virtualizer._willUpdate();
80
+ triggerVersion.value++;
129
81
  }
130
- function updateContainerHeight() {
131
- if (!containerRef.value) {
132
- return;
133
- }
134
- containerHeight.value = containerRef.value.clientHeight;
135
- }
136
- const unwatchList = watch(
137
- () => props.listData,
138
- () => {
139
- clearItemRefs();
140
- initPositions();
141
- },
142
- { immediate: true }
143
- );
144
- const unwatchRenderList = watch(
145
- () => renderList.value,
146
- () => {
147
- updatePositions();
148
- }
149
- );
150
- function stop() {
151
- containerRef.value?.removeEventListener("scroll", handleScroll);
152
- unwatchRenderList();
153
- clearItemRefs();
154
- unwatchList();
155
- }
82
+ watch(() => [options.itemSize, options.dataKey], updateVirtualizer);
83
+ watch(() => [options.listData, options.listData?.length], updateVirtualizer);
156
84
  onMounted(() => {
157
- if (!containerRef.value) {
158
- return;
159
- }
160
- updateContainerHeight();
161
- containerRef.value.addEventListener("scroll", handleScroll, { passive: true });
85
+ virtualizer._willUpdate();
86
+ cleanup = virtualizer._didMount();
162
87
  });
163
88
  onUnmounted(() => {
164
- stop();
89
+ cleanup?.();
165
90
  });
91
+ function measureElement(el) {
92
+ if (!el) {
93
+ virtualizer.measureElement(null);
94
+ return;
95
+ }
96
+ const htmlEl = el instanceof HTMLElement ? el : el.$el;
97
+ virtualizer.measureElement(htmlEl);
98
+ }
166
99
  return {
167
- containerRef,
168
- renderList,
169
- listHeight,
170
- listStyle,
171
- stop,
172
- setItemRef,
173
- updateContainerHeight,
174
- getStartIndex
100
+ virtualItems,
101
+ totalSize,
102
+ measureElement,
103
+ scrollToIndex: virtualizer.scrollToIndex.bind(virtualizer),
104
+ scrollToOffset: virtualizer.scrollToOffset.bind(virtualizer),
105
+ scrollBy: virtualizer.scrollBy.bind(virtualizer),
106
+ getVirtualizer: () => virtualizer
175
107
  };
176
108
  }
@@ -0,0 +1,4 @@
1
+ export declare function useWindowSize(): {
2
+ width: import("vue").ShallowRef<number, number>;
3
+ height: import("vue").ShallowRef<number, number>;
4
+ };
@@ -0,0 +1,27 @@
1
+ import { onBeforeUnmount, onMounted, shallowRef } from "vue";
2
+ import { cachedOn, cachedOff } from "../utils/event.js";
3
+ import { isServer } from "../utils/is.js";
4
+ export function useWindowSize() {
5
+ const width = shallowRef(0);
6
+ const height = shallowRef(0);
7
+ const updateSize = () => {
8
+ width.value = window.innerWidth;
9
+ height.value = window.innerHeight;
10
+ };
11
+ onMounted(() => {
12
+ if (isServer()) {
13
+ return;
14
+ }
15
+ updateSize();
16
+ cachedOn(window, "resize", updateSize);
17
+ cachedOn(window, "orientationchange", updateSize);
18
+ });
19
+ onBeforeUnmount(() => {
20
+ cachedOff(window, "resize", updateSize);
21
+ cachedOff(window, "orientationchange", updateSize);
22
+ });
23
+ return {
24
+ width,
25
+ height
26
+ };
27
+ }
@@ -1,2 +1,5 @@
1
- import type { AvatarGroupProps } from '../components/avatar/types';
2
- export declare const provideAvatarGroupContext: (contextValue: AvatarGroupProps) => AvatarGroupProps, useAvatarGroupContext: (fallback?: AvatarGroupProps | null | undefined) => AvatarGroupProps | null;
1
+ import type { AvatarGroupProps } from '../components/avatar-group/types';
2
+ export interface AvatarGroupContext {
3
+ props: AvatarGroupProps;
4
+ }
5
+ export declare const provideAvatarGroupContext: (contextValue: AvatarGroupContext) => AvatarGroupContext, useAvatarGroupContext: (fallback?: AvatarGroupContext | null | undefined) => AvatarGroupContext | null;
@@ -1,13 +1,13 @@
1
+ import type { CarouselProps } from '../components/carousel/types';
1
2
  import type { Ref } from 'vue';
2
- import type { CarouselGroupProps } from '../components/carousel/types';
3
3
  export interface CarouselState {
4
4
  uid: string;
5
5
  translateItem: (index: number, activeIndex: number) => void;
6
6
  }
7
- export interface CarouselGroupContext {
8
- props: CarouselGroupProps;
7
+ export interface CarouselContext {
8
+ props: CarouselProps;
9
9
  carousels: Ref<CarouselState[]>;
10
10
  registerCarousel: (state: CarouselState) => void;
11
11
  unregisterCarousel: (id: string) => void;
12
12
  }
13
- export declare const provideCarouselGroupContext: (contextValue: CarouselGroupContext) => CarouselGroupContext, useCarouselGroupContext: ((fallback?: CarouselGroupContext | undefined) => CarouselGroupContext) & ((fallback: null) => CarouselGroupContext | null);
13
+ export declare const provideCarouselContext: (contextValue: CarouselContext) => CarouselContext, useCarouselContext: ((fallback?: CarouselContext | undefined) => CarouselContext) & ((fallback: null) => CarouselContext | null);
@@ -1,2 +1,2 @@
1
1
  import { createContext } from "../utils/context.js";
2
- export const [provideCarouselGroupContext, useCarouselGroupContext] = createContext("CarouselGroup");
2
+ export const [provideCarouselContext, useCarouselContext] = createContext("Carousel");
@@ -1,2 +1,7 @@
1
- import type { CheckboxGroupProps } from '../components/checkbox/types';
2
- export declare const provideCheckboxGroupContext: (contextValue: CheckboxGroupProps) => CheckboxGroupProps, useCheckboxGroupContext: (fallback?: CheckboxGroupProps | null | undefined) => CheckboxGroupProps | null;
1
+ import type { CheckboxGroupProps, CheckboxGroupEmits } from '../components/checkbox-group/types';
2
+ import type { EmitFn } from 'vue';
3
+ export interface CheckboxGroupContext {
4
+ props: CheckboxGroupProps;
5
+ emits: EmitFn<CheckboxGroupEmits>;
6
+ }
7
+ export declare const provideCheckboxGroupContext: (contextValue: CheckboxGroupContext) => CheckboxGroupContext, useCheckboxGroupContext: (fallback?: CheckboxGroupContext | null | undefined) => CheckboxGroupContext | null;
@@ -1,4 +1,8 @@
1
- import type { Ref } from 'vue';
2
- import type { ChoiceboxGroupProps } from '../components/choicebox/types';
3
- export declare const provideChoiceboxGroupContext: (contextValue: ChoiceboxGroupProps) => ChoiceboxGroupProps, useChoiceboxGroupContext: ((fallback?: ChoiceboxGroupProps | undefined) => ChoiceboxGroupProps) & ((fallback: null) => ChoiceboxGroupProps | null);
4
- export declare const provideChoiceboxGroupModelValue: (contextValue: Ref<import("../types/shared").ComponentValue | import("../types/shared").ComponentValue[] | undefined, import("../types/shared").ComponentValue | import("../types/shared").ComponentValue[] | undefined>) => Ref<import("../types/shared").ComponentValue | import("../types/shared").ComponentValue[] | undefined, import("../types/shared").ComponentValue | import("../types/shared").ComponentValue[] | undefined>, useChoiceboxGroupModelValue: ((fallback?: Ref<import("../types/shared").ComponentValue | import("../types/shared").ComponentValue[] | undefined, import("../types/shared").ComponentValue | import("../types/shared").ComponentValue[] | undefined> | undefined) => Ref<import("../types/shared").ComponentValue | import("../types/shared").ComponentValue[] | undefined, import("../types/shared").ComponentValue | import("../types/shared").ComponentValue[] | undefined>) & ((fallback: null) => Ref<import("../types/shared").ComponentValue | import("../types/shared").ComponentValue[] | undefined, import("../types/shared").ComponentValue | import("../types/shared").ComponentValue[] | undefined> | null);
1
+ import type { ChoiceboxEmits, ChoiceboxProps } from '../components/choicebox/types';
2
+ import type { EmitFn } from 'vue';
3
+ interface ChoiceboxContext {
4
+ props: ChoiceboxProps;
5
+ emits: EmitFn<ChoiceboxEmits>;
6
+ }
7
+ export declare const provideChoiceboxContext: (contextValue: ChoiceboxContext) => ChoiceboxContext, useChoiceboxContext: ((fallback?: ChoiceboxContext | undefined) => ChoiceboxContext) & ((fallback: null) => ChoiceboxContext | null);
8
+ export {};
@@ -1,5 +1,2 @@
1
1
  import { createContext } from "../utils/context.js";
2
- export const [provideChoiceboxGroupContext, useChoiceboxGroupContext] = createContext("ChoiceboxGroup", {
3
- multiple: false
4
- });
5
- export const [provideChoiceboxGroupModelValue, useChoiceboxGroupModelValue] = createContext("ChoiceboxGroupModalValue");
2
+ export const [provideChoiceboxContext, useChoiceboxContext] = createContext("ChoiceboxGroup");
@@ -1,8 +1,7 @@
1
+ import type { CollapseGroupProps } from '../components/collapse-group/types';
1
2
  import type { Ref } from 'vue';
2
- interface CollapseGroupContext {
3
- multiple: Ref<boolean>;
4
- isExpanded: (id: string) => boolean;
5
- toggleItem: (id: string, expanded: boolean) => void;
3
+ export interface CollapseGroupContext {
4
+ expandedIds: Ref<Set<string>>;
5
+ props: CollapseGroupProps;
6
6
  }
7
- export declare const provideCollapseGroupContext: (contextValue: CollapseGroupContext) => CollapseGroupContext, useCollapseGroupContext: ((fallback?: CollapseGroupContext | undefined) => CollapseGroupContext) & ((fallback: null) => CollapseGroupContext | null);
8
- export {};
7
+ export declare const provideCollapseGroupContext: (contextValue: CollapseGroupContext) => CollapseGroupContext, useCollapseGroupContext: (fallback?: CollapseGroupContext | null | undefined) => CollapseGroupContext | null;
@@ -1,2 +1,2 @@
1
1
  import { createContext } from "../utils/context.js";
2
- export const [provideCollapseGroupContext, useCollapseGroupContext] = createContext("CollapseGroup");
2
+ export const [provideCollapseGroupContext, useCollapseGroupContext] = createContext("CollapseGroup", null);
@@ -0,0 +1,5 @@
1
+ import type { ConfigProviderProps } from '../components/config-provider/types';
2
+ export declare const injectionKey = "ConfigProvider";
3
+ export interface ConfigProviderContext extends Required<ConfigProviderProps> {
4
+ }
5
+ export declare const provideConfigProvider: (contextValue: ConfigProviderContext) => ConfigProviderContext, useConfigProvider: ((fallback?: ConfigProviderContext | undefined) => ConfigProviderContext) & ((fallback: null) => ConfigProviderContext | null);
@@ -1,8 +1,11 @@
1
1
  import enUS from "../locales/en-us.js";
2
2
  import { createContext } from "../utils/context.js";
3
3
  export const injectionKey = "ConfigProvider";
4
- export const [provideConfigProvider, useConfigProvider] = createContext(injectionKey, {
5
- size: "md",
6
- locale: enUS,
7
- popoverShowTransition: true
8
- });
4
+ export const [provideConfigProvider, useConfigProvider] = createContext(
5
+ injectionKey,
6
+ {
7
+ size: "md",
8
+ locale: enUS,
9
+ popoverShowTransition: true
10
+ }
11
+ );
@@ -1,5 +1,5 @@
1
- import type { Ref } from 'vue';
2
1
  import type { ListOption } from '../components/list/types';
2
+ import type { Ref } from 'vue';
3
3
  export interface ListContext {
4
4
  activeValue: Ref<string>;
5
5
  onOptionClick: ListOption['onClick'];
@@ -1,2 +1,8 @@
1
- import type { RadioGroupProps } from '../components/radio/types';
2
- export declare const provideRadioGroupContext: (contextValue: RadioGroupProps) => RadioGroupProps, useRadioGroupContext: (fallback?: RadioGroupProps | null | undefined) => RadioGroupProps | null;
1
+ import type { RadioGroupEmits, RadioGroupProps } from '../components/radio-group/types';
2
+ import type { EmitFn } from 'vue';
3
+ export interface RadioGroupContext {
4
+ name: string;
5
+ props: RadioGroupProps;
6
+ emits: EmitFn<RadioGroupEmits>;
7
+ }
8
+ export declare const provideRadioGroupContext: (contextValue: RadioGroupContext) => RadioGroupContext, useRadioGroupContext: (fallback?: RadioGroupContext | null | undefined) => RadioGroupContext | null;
@@ -1,5 +1,5 @@
1
- import type { Ref } from 'vue';
2
1
  import type { ComponentDirection } from '../types/shared/props';
2
+ import type { Ref } from 'vue';
3
3
  interface PanelConfig {
4
4
  id: string;
5
5
  order: number;
@@ -1,4 +1,8 @@
1
- import type { Ref } from 'vue';
2
- import type { SwitchGroupProps } from '../components/switch/types';
3
- export declare const provideSwitchGroupContext: (contextValue: SwitchGroupProps) => SwitchGroupProps, useSwitchGroupContext: ((fallback?: SwitchGroupProps | undefined) => SwitchGroupProps) & ((fallback: null) => SwitchGroupProps | null);
4
- export declare const provideSwitchGroupModelValue: (contextValue: Ref<string | number | undefined, string | number | undefined>) => Ref<string | number | undefined, string | number | undefined>, useSwitchGroupModelValue: ((fallback?: Ref<string | number | undefined, string | number | undefined> | undefined) => Ref<string | number | undefined, string | number | undefined>) & ((fallback: null) => Ref<string | number | undefined, string | number | undefined> | null);
1
+ import type { SwitchEmits, SwitchProps } from '../components/switch/types';
2
+ import type { EmitFn } from 'vue';
3
+ export interface SwitchContext {
4
+ name: string;
5
+ props: SwitchProps;
6
+ emits: EmitFn<SwitchEmits>;
7
+ }
8
+ export declare const provideSwitchContext: (contextValue: SwitchContext) => SwitchContext, useSwitchContext: ((fallback?: SwitchContext | undefined) => SwitchContext) & ((fallback: null) => SwitchContext | null);
@@ -1,3 +1,2 @@
1
1
  import { createContext } from "../utils/context.js";
2
- export const [provideSwitchGroupContext, useSwitchGroupContext] = createContext("SwitchGroup");
3
- export const [provideSwitchGroupModelValue, useSwitchGroupModelValue] = createContext("SwitchGroupModalValue");
2
+ export const [provideSwitchContext, useSwitchContext] = createContext("Switch");
@@ -0,0 +1,7 @@
1
+ import type { ToggleButtonGroupProps, ToggleButtonGroupEmits } from '../components/toggle-button-group/types';
2
+ import type { EmitFn } from 'vue';
3
+ export interface ToggleButtonGroupContext {
4
+ props: ToggleButtonGroupProps;
5
+ emits: EmitFn<ToggleButtonGroupEmits>;
6
+ }
7
+ export declare const provideToggleButtonGroupContext: (contextValue: ToggleButtonGroupContext) => ToggleButtonGroupContext, useToggleButtonGroupContext: (fallback?: ToggleButtonGroupContext | null | undefined) => ToggleButtonGroupContext | null;
@@ -0,0 +1,2 @@
1
+ import { createContext } from "../utils/context.js";
2
+ export const [provideToggleButtonGroupContext, useToggleButtonGroupContext] = createContext("ToggleButtonGroup", null);
@@ -449,7 +449,7 @@
449
449
  transition-timing-function: var(--default-transition-timing-function);
450
450
  }
451
451
 
452
- @utility scrollbar-hidden {
452
+ @utility scrollbar-none {
453
453
  & {
454
454
  scrollbar-width: none;
455
455
  -ms-overflow-style: none;
@@ -477,7 +477,7 @@
477
477
  }
478
478
  }
479
479
 
480
- @utility smallest {
480
+ @utility visually-hidden {
481
481
  position: absolute;
482
482
  width: 1px;
483
483
  height: 1px;
@@ -486,7 +486,17 @@
486
486
  overflow: hidden;
487
487
  clip: rect(0, 0, 0, 0);
488
488
  white-space: nowrap;
489
+ visibility: hidden;
489
490
  border-width: 0;
491
+ opacity: 0;
492
+ }
493
+
494
+ @utility content-visibility-auto {
495
+ content-visibility: auto;
496
+ }
497
+
498
+ @utility intrinsic-size-auto {
499
+ contain-intrinsic-size: auto none;
490
500
  }
491
501
 
492
502
  @utility font-inherit {
@@ -592,6 +602,7 @@
592
602
  transform: scale(var(--scale, 0.95));
593
603
  }
594
604
 
605
+ /*
595
606
  .line-clamp {
596
607
  display: -webkit-box;
597
608
  overflow: hidden;
@@ -600,6 +611,7 @@
600
611
  -webkit-line-clamp: var(--line-clamp, 1);
601
612
  -webkit-box-orient: vertical;
602
613
  }
614
+ */
603
615
 
604
616
  .scrollbar-stable {
605
617
  scrollbar-gutter: stable !important;