@hina-ui/vue 1.7.5 → 1.7.6

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 (528) hide show
  1. package/README.md +37 -0
  2. package/dist/index.js +2222 -987
  3. package/dist/index.js.map +1 -1
  4. package/dist/shared/behavior/anchor-follow.ts +95 -0
  5. package/dist/shared/behavior/form.ts +187 -0
  6. package/dist/shared/behavior/ripple.ts +222 -0
  7. package/dist/shared/behavior/spoiler/painter.ts +197 -0
  8. package/dist/shared/behavior/spoiler/worklet.ts +199 -0
  9. package/dist/shared/behavior/toast.ts +243 -0
  10. package/dist/shared/lib/anchor.ts +83 -0
  11. package/dist/shared/lib/banner.ts +10 -0
  12. package/dist/shared/lib/calendar/format.ts +23 -0
  13. package/dist/shared/lib/caret.ts +48 -0
  14. package/dist/shared/lib/collapse.ts +29 -0
  15. package/dist/shared/lib/command-palette/hotkey.ts +27 -0
  16. package/dist/shared/lib/command-palette/match.ts +92 -0
  17. package/dist/shared/lib/data-list.ts +40 -0
  18. package/dist/shared/lib/data-table/column-sizing-styles.ts +41 -0
  19. package/dist/shared/lib/data-table/column-sizing.ts +101 -0
  20. package/dist/shared/lib/data-table/csv.ts +51 -0
  21. package/dist/shared/lib/data-table/layout.ts +199 -0
  22. package/dist/shared/lib/data-table/resize.ts +66 -0
  23. package/dist/shared/lib/data-table/state.ts +226 -0
  24. package/dist/shared/lib/data-table/utils.ts +80 -0
  25. package/dist/shared/lib/date-range-field/validity.ts +21 -0
  26. package/dist/shared/lib/date.ts +111 -0
  27. package/dist/shared/lib/field-focus.ts +36 -0
  28. package/dist/shared/lib/file-upload/select.ts +58 -0
  29. package/dist/shared/lib/file-upload/size.ts +16 -0
  30. package/dist/shared/lib/form/errors.ts +48 -0
  31. package/dist/shared/lib/form/focus.ts +10 -0
  32. package/dist/shared/lib/form/standard-schema.ts +26 -0
  33. package/dist/shared/lib/form/values.ts +23 -0
  34. package/dist/shared/lib/highlighter.ts +98 -0
  35. package/dist/shared/lib/iris-origin.ts +40 -0
  36. package/dist/shared/lib/lightbox/clip.ts +117 -0
  37. package/dist/shared/lib/lightbox/download.ts +29 -0
  38. package/dist/shared/lib/lightbox/gesture.ts +54 -0
  39. package/dist/shared/lib/lightbox/paging.ts +33 -0
  40. package/dist/shared/lib/lightbox/pose.ts +142 -0
  41. package/dist/shared/lib/lightbox/source.ts +17 -0
  42. package/dist/shared/lib/lightbox/types.ts +14 -0
  43. package/dist/shared/lib/lightbox/zoom.ts +127 -0
  44. package/dist/shared/lib/meter-group.ts +16 -0
  45. package/dist/shared/lib/overlay-anchor.ts +42 -0
  46. package/dist/shared/lib/pagination.ts +16 -0
  47. package/dist/shared/lib/pointer-corridor.ts +26 -0
  48. package/dist/shared/lib/qr-code-export.ts +68 -0
  49. package/dist/shared/lib/range-calendar/limit.ts +11 -0
  50. package/dist/shared/lib/rating.ts +4 -0
  51. package/dist/shared/lib/relative-time.ts +20 -0
  52. package/dist/shared/lib/scroll-area.ts +77 -0
  53. package/dist/shared/lib/scroll-restore.ts +148 -0
  54. package/dist/shared/lib/toast-layout.ts +42 -0
  55. package/dist/shared/lib/tree/selection.ts +131 -0
  56. package/dist/shared/lib/tree-select/filter.ts +19 -0
  57. package/dist/shared/lib/virtual/choices.ts +193 -0
  58. package/dist/shared/lib/virtual/collection.ts +71 -0
  59. package/dist/shared/lib/virtual/filter.ts +26 -0
  60. package/dist/shared/lib/virtual/flow.ts +32 -0
  61. package/dist/shared/lib/virtual/list.ts +63 -0
  62. package/dist/shared/lib/virtual/navigation.ts +26 -0
  63. package/dist/shared/lib/virtual/tree.ts +98 -0
  64. package/dist/shared/locale/en-US.ts +220 -0
  65. package/dist/shared/locale/index.ts +52 -0
  66. package/dist/shared/locale/types.ts +225 -0
  67. package/dist/shared/locale/zh-CN.ts +215 -0
  68. package/dist/shared/primitives/number-field/LICENSE +21 -0
  69. package/dist/shared/primitives/number-field/index.ts +407 -0
  70. package/dist/shared/styles/semantic.css +10 -2
  71. package/dist/shared/types/autocomplete.ts +16 -0
  72. package/dist/shared/types/data-table.ts +170 -0
  73. package/dist/shared/types/pagination.ts +19 -0
  74. package/dist/shared/types/select.ts +23 -0
  75. package/dist/shared/types/tree-select.ts +34 -0
  76. package/dist/shared/types/tree.ts +20 -0
  77. package/dist/types/shared/src/behavior/anchor-follow.d.ts +13 -0
  78. package/dist/types/shared/src/behavior/anchor-follow.d.ts.map +1 -0
  79. package/dist/types/shared/src/behavior/form.d.ts +24 -0
  80. package/dist/types/shared/src/behavior/form.d.ts.map +1 -0
  81. package/dist/types/shared/src/behavior/ripple.d.ts +11 -0
  82. package/dist/types/shared/src/behavior/ripple.d.ts.map +1 -0
  83. package/dist/types/shared/src/behavior/spoiler/painter.d.ts +35 -0
  84. package/dist/types/shared/src/behavior/spoiler/painter.d.ts.map +1 -0
  85. package/dist/types/shared/src/behavior/spoiler/worklet.d.ts +2 -0
  86. package/dist/types/shared/src/behavior/spoiler/worklet.d.ts.map +1 -0
  87. package/dist/types/shared/src/behavior/toast.d.ts +72 -0
  88. package/dist/types/shared/src/behavior/toast.d.ts.map +1 -0
  89. package/dist/types/shared/src/lib/anchor.d.ts +31 -0
  90. package/dist/types/shared/src/lib/anchor.d.ts.map +1 -0
  91. package/dist/types/shared/src/lib/banner.d.ts +3 -0
  92. package/dist/types/shared/src/lib/banner.d.ts.map +1 -0
  93. package/dist/types/shared/src/lib/calendar/format.d.ts +7 -0
  94. package/dist/types/shared/src/lib/calendar/format.d.ts.map +1 -0
  95. package/dist/types/shared/src/lib/caret.d.ts +2 -0
  96. package/dist/types/shared/src/lib/caret.d.ts.map +1 -0
  97. package/dist/types/shared/src/lib/collapse.d.ts +9 -0
  98. package/dist/types/shared/src/lib/collapse.d.ts.map +1 -0
  99. package/dist/types/shared/src/lib/command-palette/hotkey.d.ts +9 -0
  100. package/dist/types/shared/src/lib/command-palette/hotkey.d.ts.map +1 -0
  101. package/dist/types/shared/src/lib/command-palette/match.d.ts +21 -0
  102. package/dist/types/shared/src/lib/command-palette/match.d.ts.map +1 -0
  103. package/dist/types/shared/src/lib/data-list.d.ts +7 -0
  104. package/dist/types/shared/src/lib/data-list.d.ts.map +1 -0
  105. package/dist/types/shared/src/lib/data-table/column-sizing-styles.d.ts +8 -0
  106. package/dist/types/shared/src/lib/data-table/column-sizing-styles.d.ts.map +1 -0
  107. package/dist/types/shared/src/lib/data-table/column-sizing.d.ts +22 -0
  108. package/dist/types/shared/src/lib/data-table/column-sizing.d.ts.map +1 -0
  109. package/dist/types/shared/src/lib/data-table/csv.d.ts +5 -0
  110. package/dist/types/shared/src/lib/data-table/csv.d.ts.map +1 -0
  111. package/dist/types/shared/src/lib/data-table/layout.d.ts +28 -0
  112. package/dist/types/shared/src/lib/data-table/layout.d.ts.map +1 -0
  113. package/dist/types/shared/src/lib/data-table/resize.d.ts +15 -0
  114. package/dist/types/shared/src/lib/data-table/resize.d.ts.map +1 -0
  115. package/dist/types/shared/src/lib/data-table/state.d.ts +103 -0
  116. package/dist/types/shared/src/lib/data-table/state.d.ts.map +1 -0
  117. package/dist/types/shared/src/lib/data-table/utils.d.ts +11 -0
  118. package/dist/types/shared/src/lib/data-table/utils.d.ts.map +1 -0
  119. package/dist/types/shared/src/lib/date-range-field/validity.d.ts +12 -0
  120. package/dist/types/shared/src/lib/date-range-field/validity.d.ts.map +1 -0
  121. package/dist/types/shared/src/lib/date.d.ts +28 -0
  122. package/dist/types/shared/src/lib/date.d.ts.map +1 -0
  123. package/dist/types/shared/src/lib/field-focus.d.ts +2 -0
  124. package/dist/types/shared/src/lib/field-focus.d.ts.map +1 -0
  125. package/dist/types/shared/src/lib/file-upload/select.d.ts +17 -0
  126. package/dist/types/shared/src/lib/file-upload/select.d.ts.map +1 -0
  127. package/dist/types/shared/src/lib/file-upload/size.d.ts +2 -0
  128. package/dist/types/shared/src/lib/file-upload/size.d.ts.map +1 -0
  129. package/dist/types/shared/src/lib/form/errors.d.ts +7 -0
  130. package/dist/types/shared/src/lib/form/errors.d.ts.map +1 -0
  131. package/dist/types/shared/src/lib/form/focus.d.ts +2 -0
  132. package/dist/types/shared/src/lib/form/focus.d.ts.map +1 -0
  133. package/dist/types/shared/src/lib/form/standard-schema.d.ts +23 -0
  134. package/dist/types/shared/src/lib/form/standard-schema.d.ts.map +1 -0
  135. package/dist/types/shared/src/lib/form/values.d.ts +3 -0
  136. package/dist/types/shared/src/lib/form/values.d.ts.map +1 -0
  137. package/dist/types/shared/src/lib/highlighter.d.ts +4 -0
  138. package/dist/types/shared/src/lib/highlighter.d.ts.map +1 -0
  139. package/dist/types/shared/src/lib/iris-origin.d.ts +6 -0
  140. package/dist/types/shared/src/lib/iris-origin.d.ts.map +1 -0
  141. package/dist/types/shared/src/lib/lightbox/clip.d.ts +16 -0
  142. package/dist/types/shared/src/lib/lightbox/clip.d.ts.map +1 -0
  143. package/dist/types/shared/src/lib/lightbox/download.d.ts +3 -0
  144. package/dist/types/shared/src/lib/lightbox/download.d.ts.map +1 -0
  145. package/dist/types/shared/src/lib/lightbox/gesture.d.ts +26 -0
  146. package/dist/types/shared/src/lib/lightbox/gesture.d.ts.map +1 -0
  147. package/dist/types/shared/src/lib/lightbox/paging.d.ts +9 -0
  148. package/dist/types/shared/src/lib/lightbox/paging.d.ts.map +1 -0
  149. package/dist/types/shared/src/lib/lightbox/pose.d.ts +38 -0
  150. package/dist/types/shared/src/lib/lightbox/pose.d.ts.map +1 -0
  151. package/dist/types/shared/src/lib/lightbox/source.d.ts +4 -0
  152. package/dist/types/shared/src/lib/lightbox/source.d.ts.map +1 -0
  153. package/dist/types/shared/src/lib/lightbox/types.d.ts +16 -0
  154. package/dist/types/shared/src/lib/lightbox/types.d.ts.map +1 -0
  155. package/dist/types/shared/src/lib/lightbox/zoom.d.ts +40 -0
  156. package/dist/types/shared/src/lib/lightbox/zoom.d.ts.map +1 -0
  157. package/dist/types/shared/src/lib/meter-group.d.ts +5 -0
  158. package/dist/types/shared/src/lib/meter-group.d.ts.map +1 -0
  159. package/dist/types/shared/src/lib/overlay-anchor.d.ts +10 -0
  160. package/dist/types/shared/src/lib/overlay-anchor.d.ts.map +1 -0
  161. package/dist/types/shared/src/lib/pagination.d.ts +4 -0
  162. package/dist/types/shared/src/lib/pagination.d.ts.map +1 -0
  163. package/dist/types/shared/src/lib/pointer-corridor.d.ts +7 -0
  164. package/dist/types/shared/src/lib/pointer-corridor.d.ts.map +1 -0
  165. package/dist/types/shared/src/lib/qr-code-export.d.ts +6 -0
  166. package/dist/types/shared/src/lib/qr-code-export.d.ts.map +1 -0
  167. package/dist/types/shared/src/lib/range-calendar/limit.d.ts +3 -0
  168. package/dist/types/shared/src/lib/range-calendar/limit.d.ts.map +1 -0
  169. package/dist/types/shared/src/lib/rating.d.ts +2 -0
  170. package/dist/types/shared/src/lib/rating.d.ts.map +1 -0
  171. package/dist/types/shared/src/lib/relative-time.d.ts +2 -0
  172. package/dist/types/shared/src/lib/relative-time.d.ts.map +1 -0
  173. package/dist/types/shared/src/lib/scroll-area.d.ts +50 -0
  174. package/dist/types/shared/src/lib/scroll-area.d.ts.map +1 -0
  175. package/dist/types/shared/src/lib/scroll-restore.d.ts +34 -0
  176. package/dist/types/shared/src/lib/scroll-restore.d.ts.map +1 -0
  177. package/dist/types/shared/src/lib/toast-layout.d.ts +13 -0
  178. package/dist/types/shared/src/lib/toast-layout.d.ts.map +1 -0
  179. package/dist/types/shared/src/lib/tree/selection.d.ts +23 -0
  180. package/dist/types/shared/src/lib/tree/selection.d.ts.map +1 -0
  181. package/dist/types/shared/src/lib/tree-select/filter.d.ts +7 -0
  182. package/dist/types/shared/src/lib/tree-select/filter.d.ts.map +1 -0
  183. package/dist/types/shared/src/lib/virtual/choices.d.ts +59 -0
  184. package/dist/types/shared/src/lib/virtual/choices.d.ts.map +1 -0
  185. package/dist/types/shared/src/lib/virtual/collection.d.ts +25 -0
  186. package/dist/types/shared/src/lib/virtual/collection.d.ts.map +1 -0
  187. package/dist/types/shared/src/lib/virtual/flow.d.ts +18 -0
  188. package/dist/types/shared/src/lib/virtual/flow.d.ts.map +1 -0
  189. package/dist/types/shared/src/lib/virtual/list.d.ts +46 -0
  190. package/dist/types/shared/src/lib/virtual/list.d.ts.map +1 -0
  191. package/dist/types/shared/src/lib/virtual/navigation.d.ts +3 -0
  192. package/dist/types/shared/src/lib/virtual/navigation.d.ts.map +1 -0
  193. package/dist/types/shared/src/lib/virtual/tree.d.ts +31 -0
  194. package/dist/types/shared/src/lib/virtual/tree.d.ts.map +1 -0
  195. package/dist/types/shared/src/locale/en-US.d.ts +3 -0
  196. package/dist/types/shared/src/locale/en-US.d.ts.map +1 -0
  197. package/dist/types/shared/src/locale/index.d.ts +6 -0
  198. package/dist/types/shared/src/locale/index.d.ts.map +1 -0
  199. package/dist/types/shared/src/locale/types.d.ts +235 -0
  200. package/dist/types/shared/src/locale/types.d.ts.map +1 -0
  201. package/dist/types/shared/src/locale/zh-CN.d.ts +3 -0
  202. package/dist/types/shared/src/locale/zh-CN.d.ts.map +1 -0
  203. package/dist/types/shared/src/primitives/number-field/index.d.ts +155 -0
  204. package/dist/types/shared/src/primitives/number-field/index.d.ts.map +1 -0
  205. package/dist/types/shared/src/types/autocomplete.d.ts +14 -0
  206. package/dist/types/shared/src/types/autocomplete.d.ts.map +1 -0
  207. package/dist/types/shared/src/types/data-table.d.ts +169 -0
  208. package/dist/types/shared/src/types/data-table.d.ts.map +1 -0
  209. package/dist/types/shared/src/types/pagination.d.ts +23 -0
  210. package/dist/types/shared/src/types/pagination.d.ts.map +1 -0
  211. package/dist/types/shared/src/types/select.d.ts +14 -0
  212. package/dist/types/shared/src/types/select.d.ts.map +1 -0
  213. package/dist/types/shared/src/types/tree-select.d.ts +10 -0
  214. package/dist/types/shared/src/types/tree-select.d.ts.map +1 -0
  215. package/dist/types/shared/src/types/tree.d.ts +18 -0
  216. package/dist/types/shared/src/types/tree.d.ts.map +1 -0
  217. package/dist/types/shared/src/variants/autocomplete.d.ts +3 -0
  218. package/dist/types/shared/src/variants/autocomplete.d.ts.map +1 -0
  219. package/dist/types/shared/src/variants/editable.d.ts +52 -0
  220. package/dist/types/shared/src/variants/editable.d.ts.map +1 -0
  221. package/dist/types/shared/src/variants/float-button.d.ts +74 -0
  222. package/dist/types/shared/src/variants/float-button.d.ts.map +1 -0
  223. package/dist/types/shared/src/variants/split-button.d.ts +18 -0
  224. package/dist/types/shared/src/variants/split-button.d.ts.map +1 -0
  225. package/dist/types/vue/src/components/accordion/AccordionTrigger.vue.d.ts.map +1 -1
  226. package/dist/types/vue/src/components/anchor/composables/useAnchor.d.ts +2 -7
  227. package/dist/types/vue/src/components/anchor/composables/useAnchor.d.ts.map +1 -1
  228. package/dist/types/vue/src/components/anchor/composables/useAnchorFollow.d.ts.map +1 -1
  229. package/dist/types/vue/src/components/anchor/composables/useScrollSpy.d.ts +2 -5
  230. package/dist/types/vue/src/components/anchor/composables/useScrollSpy.d.ts.map +1 -1
  231. package/dist/types/vue/src/components/anchor/types.d.ts +1 -8
  232. package/dist/types/vue/src/components/anchor/types.d.ts.map +1 -1
  233. package/dist/types/vue/src/components/autocomplete/autocomplete.variants.d.ts +1 -1
  234. package/dist/types/vue/src/components/autocomplete/autocomplete.variants.d.ts.map +1 -1
  235. package/dist/types/vue/src/components/autocomplete/types.d.ts +1 -13
  236. package/dist/types/vue/src/components/autocomplete/types.d.ts.map +1 -1
  237. package/dist/types/vue/src/components/banner/utils/direction.d.ts +1 -2
  238. package/dist/types/vue/src/components/banner/utils/direction.d.ts.map +1 -1
  239. package/dist/types/vue/src/components/calendar/utils/format.d.ts +1 -6
  240. package/dist/types/vue/src/components/calendar/utils/format.d.ts.map +1 -1
  241. package/dist/types/vue/src/components/code-block/highlighter.d.ts +1 -3
  242. package/dist/types/vue/src/components/code-block/highlighter.d.ts.map +1 -1
  243. package/dist/types/vue/src/components/collapsible/CollapsibleTrigger.vue.d.ts.map +1 -1
  244. package/dist/types/vue/src/components/command-palette/composables/useCommandItems.d.ts +1 -1
  245. package/dist/types/vue/src/components/command-palette/utils/hotkey.d.ts +1 -8
  246. package/dist/types/vue/src/components/command-palette/utils/hotkey.d.ts.map +1 -1
  247. package/dist/types/vue/src/components/command-palette/utils/match.d.ts +5 -12
  248. package/dist/types/vue/src/components/command-palette/utils/match.d.ts.map +1 -1
  249. package/dist/types/vue/src/components/data-list/composables/useDataList.d.ts.map +1 -1
  250. package/dist/types/vue/src/components/data-list/utils/scroll.d.ts +1 -2
  251. package/dist/types/vue/src/components/data-list/utils/scroll.d.ts.map +1 -1
  252. package/dist/types/vue/src/components/data-table/column-sizing-styles.d.ts +1 -3
  253. package/dist/types/vue/src/components/data-table/column-sizing-styles.d.ts.map +1 -1
  254. package/dist/types/vue/src/components/data-table/column-sizing.d.ts +1 -21
  255. package/dist/types/vue/src/components/data-table/column-sizing.d.ts.map +1 -1
  256. package/dist/types/vue/src/components/data-table/composables/useDataTable.d.ts.map +1 -1
  257. package/dist/types/vue/src/components/data-table/composables/useTableColumns.d.ts.map +1 -1
  258. package/dist/types/vue/src/components/data-table/composables/useTableDrag.d.ts.map +1 -1
  259. package/dist/types/vue/src/components/data-table/composables/useTableExport.d.ts.map +1 -1
  260. package/dist/types/vue/src/components/data-table/composables/useTableResize.d.ts.map +1 -1
  261. package/dist/types/vue/src/components/data-table/composables/useTableResizeHandles.d.ts.map +1 -1
  262. package/dist/types/vue/src/components/data-table/composables/useTableVirtual.d.ts.map +1 -1
  263. package/dist/types/vue/src/components/data-table/types.d.ts +3 -153
  264. package/dist/types/vue/src/components/data-table/types.d.ts.map +1 -1
  265. package/dist/types/vue/src/components/data-table/utils.d.ts +1 -9
  266. package/dist/types/vue/src/components/data-table/utils.d.ts.map +1 -1
  267. package/dist/types/vue/src/components/date-range-field/utils/validity.d.ts +1 -11
  268. package/dist/types/vue/src/components/date-range-field/utils/validity.d.ts.map +1 -1
  269. package/dist/types/vue/src/components/editable/editable.variants.d.ts +1 -1
  270. package/dist/types/vue/src/components/editable/editable.variants.d.ts.map +1 -1
  271. package/dist/types/vue/src/components/file-upload/utils/select.d.ts +1 -16
  272. package/dist/types/vue/src/components/file-upload/utils/select.d.ts.map +1 -1
  273. package/dist/types/vue/src/components/file-upload/utils/size.d.ts +1 -1
  274. package/dist/types/vue/src/components/file-upload/utils/size.d.ts.map +1 -1
  275. package/dist/types/vue/src/components/float-button/float-button.variants.d.ts +1 -1
  276. package/dist/types/vue/src/components/float-button/float-button.variants.d.ts.map +1 -1
  277. package/dist/types/vue/src/components/form/Form.vue.d.ts +1 -1
  278. package/dist/types/vue/src/components/form/composables/useForm.d.ts +9 -15
  279. package/dist/types/vue/src/components/form/composables/useForm.d.ts.map +1 -1
  280. package/dist/types/vue/src/components/form/standard-schema.d.ts +1 -22
  281. package/dist/types/vue/src/components/form/standard-schema.d.ts.map +1 -1
  282. package/dist/types/vue/src/components/form/utils/errors.d.ts +1 -6
  283. package/dist/types/vue/src/components/form/utils/errors.d.ts.map +1 -1
  284. package/dist/types/vue/src/components/form/utils/focus.d.ts +1 -1
  285. package/dist/types/vue/src/components/form/utils/focus.d.ts.map +1 -1
  286. package/dist/types/vue/src/components/form/utils/values.d.ts +1 -2
  287. package/dist/types/vue/src/components/form/utils/values.d.ts.map +1 -1
  288. package/dist/types/vue/src/components/form-field/FormField.vue.d.ts.map +1 -1
  289. package/dist/types/vue/src/components/lightbox/types.d.ts +1 -15
  290. package/dist/types/vue/src/components/lightbox/types.d.ts.map +1 -1
  291. package/dist/types/vue/src/components/lightbox/utils/clip.d.ts +1 -15
  292. package/dist/types/vue/src/components/lightbox/utils/clip.d.ts.map +1 -1
  293. package/dist/types/vue/src/components/lightbox/utils/download.d.ts +1 -2
  294. package/dist/types/vue/src/components/lightbox/utils/download.d.ts.map +1 -1
  295. package/dist/types/vue/src/components/lightbox/utils/gesture.d.ts +1 -25
  296. package/dist/types/vue/src/components/lightbox/utils/gesture.d.ts.map +1 -1
  297. package/dist/types/vue/src/components/lightbox/utils/paging.d.ts +1 -8
  298. package/dist/types/vue/src/components/lightbox/utils/paging.d.ts.map +1 -1
  299. package/dist/types/vue/src/components/lightbox/utils/pose.d.ts +1 -37
  300. package/dist/types/vue/src/components/lightbox/utils/pose.d.ts.map +1 -1
  301. package/dist/types/vue/src/components/lightbox/utils/source.d.ts +1 -3
  302. package/dist/types/vue/src/components/lightbox/utils/source.d.ts.map +1 -1
  303. package/dist/types/vue/src/components/lightbox/utils/zoom.d.ts +1 -39
  304. package/dist/types/vue/src/components/lightbox/utils/zoom.d.ts.map +1 -1
  305. package/dist/types/vue/src/components/meter-group/utils/tones.d.ts +1 -3
  306. package/dist/types/vue/src/components/meter-group/utils/tones.d.ts.map +1 -1
  307. package/dist/types/vue/src/components/month-grid/MonthGrid.vue.d.ts +1 -1
  308. package/dist/types/vue/src/components/multi-select/MultiSelect.vue.d.ts.map +1 -1
  309. package/dist/types/vue/src/components/pagination/composables/usePagination.d.ts +2 -2
  310. package/dist/types/vue/src/components/pagination/composables/usePagination.d.ts.map +1 -1
  311. package/dist/types/vue/src/components/pagination/types.d.ts +1 -22
  312. package/dist/types/vue/src/components/pagination/types.d.ts.map +1 -1
  313. package/dist/types/vue/src/components/pagination/utils/ranges.d.ts +1 -2
  314. package/dist/types/vue/src/components/pagination/utils/ranges.d.ts.map +1 -1
  315. package/dist/types/vue/src/components/password-input/PasswordInput.vue.d.ts +4 -1
  316. package/dist/types/vue/src/components/password-input/PasswordInput.vue.d.ts.map +1 -1
  317. package/dist/types/vue/src/components/qr-code/export.d.ts +1 -2
  318. package/dist/types/vue/src/components/qr-code/export.d.ts.map +1 -1
  319. package/dist/types/vue/src/components/range-calendar/utils/limit.d.ts +1 -2
  320. package/dist/types/vue/src/components/range-calendar/utils/limit.d.ts.map +1 -1
  321. package/dist/types/vue/src/components/range-slider/RangeSlider.vue.d.ts +2 -2
  322. package/dist/types/vue/src/components/rating/utils/fill.d.ts +1 -1
  323. package/dist/types/vue/src/components/rating/utils/fill.d.ts.map +1 -1
  324. package/dist/types/vue/src/components/ripple/useRipple.d.ts.map +1 -1
  325. package/dist/types/vue/src/components/scroll-area/ScrollArea.vue.d.ts.map +1 -1
  326. package/dist/types/vue/src/components/scroll-area/composables/useEdgeShadow.d.ts +2 -1
  327. package/dist/types/vue/src/components/scroll-area/composables/useEdgeShadow.d.ts.map +1 -1
  328. package/dist/types/vue/src/components/scroll-area/composables/useLayerLock.d.ts.map +1 -1
  329. package/dist/types/vue/src/components/scroll-area/composables/useWheelRedirect.d.ts.map +1 -1
  330. package/dist/types/vue/src/components/scroll-area/scroll-restore.d.ts +1 -33
  331. package/dist/types/vue/src/components/scroll-area/scroll-restore.d.ts.map +1 -1
  332. package/dist/types/vue/src/components/search-input/SearchInput.vue.d.ts +4 -1
  333. package/dist/types/vue/src/components/search-input/SearchInput.vue.d.ts.map +1 -1
  334. package/dist/types/vue/src/components/select/types.d.ts +1 -13
  335. package/dist/types/vue/src/components/select/types.d.ts.map +1 -1
  336. package/dist/types/vue/src/components/slider/Slider.vue.d.ts +2 -2
  337. package/dist/types/vue/src/components/split-button/split-button.variants.d.ts +1 -1
  338. package/dist/types/vue/src/components/split-button/split-button.variants.d.ts.map +1 -1
  339. package/dist/types/vue/src/components/spoiler/SpoilerPainter.d.ts +1 -34
  340. package/dist/types/vue/src/components/spoiler/SpoilerPainter.d.ts.map +1 -1
  341. package/dist/types/vue/src/components/spoiler/utils/irisOrigin.d.ts +1 -5
  342. package/dist/types/vue/src/components/spoiler/utils/irisOrigin.d.ts.map +1 -1
  343. package/dist/types/vue/src/components/spoiler/worklet.d.ts +1 -1
  344. package/dist/types/vue/src/components/spoiler/worklet.d.ts.map +1 -1
  345. package/dist/types/vue/src/components/table/Table.vue.d.ts +6 -3
  346. package/dist/types/vue/src/components/table/Table.vue.d.ts.map +1 -1
  347. package/dist/types/vue/src/components/tabs/TabsList.vue.d.ts +6 -3
  348. package/dist/types/vue/src/components/tabs/TabsList.vue.d.ts.map +1 -1
  349. package/dist/types/vue/src/components/time/utils/relativeTime.d.ts +1 -1
  350. package/dist/types/vue/src/components/time/utils/relativeTime.d.ts.map +1 -1
  351. package/dist/types/vue/src/components/toast/composables/useToastLayout.d.ts +4 -11
  352. package/dist/types/vue/src/components/toast/composables/useToastLayout.d.ts.map +1 -1
  353. package/dist/types/vue/src/components/toast/store.d.ts +14 -62
  354. package/dist/types/vue/src/components/toast/store.d.ts.map +1 -1
  355. package/dist/types/vue/src/components/tree/composables/useTree.d.ts.map +1 -1
  356. package/dist/types/vue/src/components/tree/types.d.ts +1 -17
  357. package/dist/types/vue/src/components/tree/types.d.ts.map +1 -1
  358. package/dist/types/vue/src/components/tree/utils/selection.d.ts +1 -15
  359. package/dist/types/vue/src/components/tree/utils/selection.d.ts.map +1 -1
  360. package/dist/types/vue/src/components/tree-select/types.d.ts +1 -9
  361. package/dist/types/vue/src/components/tree-select/types.d.ts.map +1 -1
  362. package/dist/types/vue/src/components/tree-select/utils/filterTree.d.ts +1 -6
  363. package/dist/types/vue/src/components/tree-select/utils/filterTree.d.ts.map +1 -1
  364. package/dist/types/vue/src/components/virtual-list/composables/useVirtualList.d.ts +1 -1
  365. package/dist/types/vue/src/components/virtual-list/composables/useVirtualList.d.ts.map +1 -1
  366. package/dist/types/vue/src/components/visually-hidden/VisuallyHidden.vue.d.ts +4 -1
  367. package/dist/types/vue/src/components/visually-hidden/VisuallyHidden.vue.d.ts.map +1 -1
  368. package/dist/types/vue/src/lib/caret.d.ts +1 -1
  369. package/dist/types/vue/src/lib/caret.d.ts.map +1 -1
  370. package/dist/types/vue/src/lib/collapse.d.ts +2 -8
  371. package/dist/types/vue/src/lib/collapse.d.ts.map +1 -1
  372. package/dist/types/vue/src/lib/date.d.ts +1 -27
  373. package/dist/types/vue/src/lib/date.d.ts.map +1 -1
  374. package/dist/types/vue/src/lib/field-focus.d.ts +1 -1
  375. package/dist/types/vue/src/lib/field-focus.d.ts.map +1 -1
  376. package/dist/types/vue/src/lib/overlay-anchor.d.ts +2 -7
  377. package/dist/types/vue/src/lib/overlay-anchor.d.ts.map +1 -1
  378. package/dist/types/vue/src/lib/pointer-corridor.d.ts +1 -6
  379. package/dist/types/vue/src/lib/pointer-corridor.d.ts.map +1 -1
  380. package/dist/types/vue/src/lib/reka/useVirtualChoices.d.ts +3 -11
  381. package/dist/types/vue/src/lib/reka/useVirtualChoices.d.ts.map +1 -1
  382. package/dist/types/vue/src/lib/reka/useVirtualTree.d.ts +1 -1
  383. package/dist/types/vue/src/lib/reka/useVirtualTree.d.ts.map +1 -1
  384. package/dist/types/vue/src/lib/virtual/navigation.d.ts +1 -2
  385. package/dist/types/vue/src/lib/virtual/navigation.d.ts.map +1 -1
  386. package/dist/types/vue/src/lib/virtual/useVirtualCollection.d.ts +1 -1
  387. package/dist/types/vue/src/lib/virtual/useVirtualCollection.d.ts.map +1 -1
  388. package/dist/types/vue/src/lib/virtual/useVirtualWindow.d.ts +2 -15
  389. package/dist/types/vue/src/lib/virtual/useVirtualWindow.d.ts.map +1 -1
  390. package/dist/types/vue/src/locale/en-US.d.ts +1 -2
  391. package/dist/types/vue/src/locale/en-US.d.ts.map +1 -1
  392. package/dist/types/vue/src/locale/index.d.ts +3 -4
  393. package/dist/types/vue/src/locale/index.d.ts.map +1 -1
  394. package/dist/types/vue/src/locale/types.d.ts +1 -234
  395. package/dist/types/vue/src/locale/types.d.ts.map +1 -1
  396. package/dist/types/vue/src/locale/zh-CN.d.ts +1 -2
  397. package/dist/types/vue/src/locale/zh-CN.d.ts.map +1 -1
  398. package/dist/types/vue/src/primitives/number-field/NumberFieldDecrement.vue.d.ts +17 -0
  399. package/dist/types/vue/src/primitives/number-field/NumberFieldDecrement.vue.d.ts.map +1 -0
  400. package/dist/types/vue/src/primitives/number-field/NumberFieldIncrement.vue.d.ts +17 -0
  401. package/dist/types/vue/src/primitives/number-field/NumberFieldIncrement.vue.d.ts.map +1 -0
  402. package/dist/types/vue/src/primitives/number-field/NumberFieldInput.vue.d.ts +16 -0
  403. package/dist/types/vue/src/primitives/number-field/NumberFieldInput.vue.d.ts.map +1 -0
  404. package/dist/types/vue/src/primitives/number-field/NumberFieldRoot.vue.d.ts +47 -0
  405. package/dist/types/vue/src/primitives/number-field/NumberFieldRoot.vue.d.ts.map +1 -0
  406. package/dist/types/vue/src/primitives/number-field/context.d.ts +41 -0
  407. package/dist/types/vue/src/primitives/number-field/context.d.ts.map +1 -0
  408. package/dist/types/vue/src/primitives/number-field/index.d.ts +5 -0
  409. package/dist/types/vue/src/primitives/number-field/index.d.ts.map +1 -0
  410. package/dist/types/vue/src/primitives/utils/timers.d.ts +6 -0
  411. package/dist/types/vue/src/primitives/utils/timers.d.ts.map +1 -0
  412. package/dist/types/vue/src/primitives/utils/usePrimitiveElement.d.ts +6 -0
  413. package/dist/types/vue/src/primitives/utils/usePrimitiveElement.d.ts.map +1 -0
  414. package/dist/types/vue/src/primitives/utils/useVModel.d.ts +7 -0
  415. package/dist/types/vue/src/primitives/utils/useVModel.d.ts.map +1 -0
  416. package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInput.d.ts +66 -0
  417. package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInput.d.ts.map +1 -0
  418. package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInputBubble.vue.d.ts +28 -0
  419. package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInputBubble.vue.d.ts.map +1 -0
  420. package/package.json +3 -2
  421. package/src/components/accordion/AccordionTrigger.vue +9 -1
  422. package/src/components/anchor/composables/useAnchor.ts +3 -12
  423. package/src/components/anchor/composables/useAnchorFollow.ts +8 -76
  424. package/src/components/anchor/composables/useScrollSpy.ts +22 -38
  425. package/src/components/anchor/types.ts +1 -8
  426. package/src/components/autocomplete/autocomplete.variants.ts +1 -1
  427. package/src/components/autocomplete/composables/useAutocomplete.ts +1 -1
  428. package/src/components/autocomplete/types.ts +1 -16
  429. package/src/components/banner/utils/direction.ts +1 -10
  430. package/src/components/calendar/utils/format.ts +1 -23
  431. package/src/components/code-block/highlighter.ts +1 -98
  432. package/src/components/collapsible/CollapsibleTrigger.vue +8 -1
  433. package/src/components/command-palette/utils/hotkey.ts +1 -27
  434. package/src/components/command-palette/utils/match.ts +5 -75
  435. package/src/components/data-list/composables/useDataList.ts +2 -4
  436. package/src/components/data-list/utils/scroll.ts +1 -26
  437. package/src/components/data-table/column-sizing-styles.ts +1 -40
  438. package/src/components/data-table/column-sizing.ts +1 -101
  439. package/src/components/data-table/composables/useDataTable.ts +103 -123
  440. package/src/components/data-table/composables/useTableColumns.ts +38 -113
  441. package/src/components/data-table/composables/useTableDrag.ts +21 -11
  442. package/src/components/data-table/composables/useTableExport.ts +8 -32
  443. package/src/components/data-table/composables/useTableResize.ts +13 -17
  444. package/src/components/data-table/composables/useTableResizeHandles.ts +6 -21
  445. package/src/components/data-table/types.ts +15 -155
  446. package/src/components/data-table/utils.ts +1 -75
  447. package/src/components/date-range-field/utils/validity.ts +1 -21
  448. package/src/components/editable/editable.variants.ts +1 -1
  449. package/src/components/file-upload/utils/select.ts +1 -58
  450. package/src/components/file-upload/utils/size.ts +1 -16
  451. package/src/components/float-button/float-button.variants.ts +1 -1
  452. package/src/components/form/composables/useForm.ts +24 -135
  453. package/src/components/form/standard-schema.ts +1 -26
  454. package/src/components/form/utils/errors.ts +1 -48
  455. package/src/components/form/utils/focus.ts +1 -10
  456. package/src/components/form/utils/values.ts +1 -23
  457. package/src/components/form-field/FormField.vue +3 -2
  458. package/src/components/lightbox/types.ts +1 -14
  459. package/src/components/lightbox/utils/clip.ts +1 -117
  460. package/src/components/lightbox/utils/download.ts +1 -29
  461. package/src/components/lightbox/utils/gesture.ts +1 -54
  462. package/src/components/lightbox/utils/paging.ts +1 -33
  463. package/src/components/lightbox/utils/pose.ts +1 -142
  464. package/src/components/lightbox/utils/source.ts +1 -17
  465. package/src/components/lightbox/utils/zoom.ts +1 -127
  466. package/src/components/meter-group/utils/tones.ts +1 -14
  467. package/src/components/multi-select/MultiSelect.vue +1 -2
  468. package/src/components/number-input/NumberInput.vue +2 -2
  469. package/src/components/pagination/composables/usePagination.ts +2 -3
  470. package/src/components/pagination/types.ts +1 -19
  471. package/src/components/pagination/utils/ranges.ts +1 -12
  472. package/src/components/password-input/PasswordInput.vue +6 -0
  473. package/src/components/qr-code/export.ts +1 -65
  474. package/src/components/range-calendar/utils/limit.ts +1 -11
  475. package/src/components/rating/utils/fill.ts +1 -4
  476. package/src/components/ripple/useRipple.ts +10 -198
  477. package/src/components/scroll-area/ScrollArea.vue +6 -18
  478. package/src/components/scroll-area/composables/useEdgeShadow.ts +7 -16
  479. package/src/components/scroll-area/composables/useLayerLock.ts +2 -9
  480. package/src/components/scroll-area/composables/useWheelRedirect.ts +2 -10
  481. package/src/components/scroll-area/scroll-restore.ts +1 -148
  482. package/src/components/search-input/SearchInput.vue +6 -0
  483. package/src/components/select/types.ts +1 -23
  484. package/src/components/split-button/split-button.variants.ts +1 -1
  485. package/src/components/spoiler/SpoilerPainter.ts +1 -197
  486. package/src/components/spoiler/utils/irisOrigin.ts +1 -40
  487. package/src/components/spoiler/worklet.ts +1 -199
  488. package/src/components/table/Table.vue +9 -0
  489. package/src/components/tabs/TabsList.vue +9 -0
  490. package/src/components/time/utils/relativeTime.ts +1 -20
  491. package/src/components/toast/composables/useToastLayout.ts +12 -24
  492. package/src/components/toast/store.ts +16 -228
  493. package/src/components/tree/composables/useTree.ts +17 -33
  494. package/src/components/tree/types.ts +1 -20
  495. package/src/components/tree/utils/selection.ts +1 -78
  496. package/src/components/tree-select/types.ts +1 -34
  497. package/src/components/tree-select/utils/filterTree.ts +1 -19
  498. package/src/components/virtual-list/composables/useVirtualList.ts +16 -42
  499. package/src/components/visually-hidden/VisuallyHidden.vue +21 -3
  500. package/src/lib/caret.ts +1 -48
  501. package/src/lib/collapse.ts +6 -29
  502. package/src/lib/date.ts +1 -111
  503. package/src/lib/field-focus.ts +1 -36
  504. package/src/lib/overlay-anchor.ts +11 -37
  505. package/src/lib/pointer-corridor.ts +1 -26
  506. package/src/lib/reka/useVirtualChoices.ts +55 -133
  507. package/src/lib/reka/useVirtualTree.ts +22 -65
  508. package/src/lib/virtual/navigation.ts +1 -26
  509. package/src/lib/virtual/useVirtualCollection.ts +28 -47
  510. package/src/lib/virtual/useVirtualWindow.ts +15 -25
  511. package/src/locale/en-US.ts +1 -220
  512. package/src/locale/index.ts +9 -53
  513. package/src/locale/types.ts +1 -225
  514. package/src/locale/zh-CN.ts +1 -215
  515. package/src/primitives/number-field/LICENSE +21 -0
  516. package/src/primitives/number-field/NumberFieldDecrement.vue +21 -0
  517. package/src/primitives/number-field/NumberFieldIncrement.vue +21 -0
  518. package/src/primitives/number-field/NumberFieldInput.vue +114 -0
  519. package/src/primitives/number-field/NumberFieldRoot.vue +169 -0
  520. package/src/primitives/number-field/context.ts +111 -0
  521. package/src/primitives/number-field/index.ts +14 -0
  522. package/src/primitives/utils/LICENSE +44 -0
  523. package/src/primitives/utils/timers.ts +6 -0
  524. package/src/primitives/utils/usePrimitiveElement.ts +12 -0
  525. package/src/primitives/utils/useVModel.ts +37 -0
  526. package/src/primitives/visually-hidden/LICENSE +21 -0
  527. package/src/primitives/visually-hidden/VisuallyHiddenInput.ts +97 -0
  528. package/src/primitives/visually-hidden/VisuallyHiddenInputBubble.vue +49 -0
@@ -1,26 +1 @@
1
- export function nextEnabled(
2
- length: number,
3
- from: number,
4
- step: number,
5
- disabled: (index: number) => boolean,
6
- ) {
7
- for (let index = from; index >= 0 && index < length; index += step)
8
- if (!disabled(index)) return index
9
- return -1
10
- }
11
-
12
- export function typeaheadMatch(
13
- labels: readonly string[],
14
- query: string,
15
- current: number,
16
- disabled: (index: number) => boolean,
17
- ) {
18
- const normalized = query.toLocaleLowerCase()
19
- const repeated = [...normalized].every(char => char === normalized[0])
20
- const search = repeated ? normalized[0]! : normalized
21
- for (let offset = repeated ? 1 : 0; offset <= labels.length; offset++) {
22
- const index = (Math.max(0, current) + offset) % labels.length
23
- if (!disabled(index) && labels[index]?.toLocaleLowerCase().startsWith(search)) return index
24
- }
25
- return -1
26
- }
1
+ export * from '../../../../shared/src/lib/virtual/navigation'
@@ -2,6 +2,17 @@ import { computed, nextTick, onScopeDispose, shallowRef, watch, type Ref } from
2
2
  import { useResizeObserver } from '@vueuse/core'
3
3
  import { defaultRangeExtractor, observeElementRect } from '@tanstack/vue-virtual'
4
4
  import { useVirtualWindow, virtualFlow } from './useVirtualWindow'
5
+ import {
6
+ VIRTUAL_RECT,
7
+ centeredOffset,
8
+ collectionEstimator,
9
+ collectionOverscan,
10
+ fallbackRect,
11
+ mergeRange,
12
+ overscrolledOffset,
13
+ scrollMargin,
14
+ virtualConfig,
15
+ } from '../../../../shared/src/lib/virtual/collection'
5
16
  import type { VirtualizeOptions } from './types'
6
17
 
7
18
  export function useVirtualCollection<T>(options: {
@@ -16,44 +27,26 @@ export function useVirtualCollection<T>(options: {
16
27
  estimate?: (item: T) => number
17
28
  }) {
18
29
  const margin = shallowRef(0)
19
- const finite = (value: number | undefined, fallback: number) =>
20
- value !== undefined && Number.isFinite(value) ? value : fallback
21
- const config = computed(() =>
22
- typeof options.config() === 'object'
23
- ? (options.config() as Exclude<VirtualizeOptions, boolean>)
24
- : {},
25
- )
30
+ const config = computed(() => virtualConfig(options.config()))
26
31
  const virtualizer = useVirtualWindow(
27
32
  computed(() => {
28
33
  const items = options.items()
29
34
  const retained = options.retain?.() ?? []
30
35
  const initialIndex = options.initialIndex?.() ?? -1
31
- const estimateSize = (index: number) =>
32
- Math.max(1, finite(config.value.estimateSize, options.estimate?.(items[index]!) ?? 36))
36
+ const estimateSize = collectionEstimator(items, config.value, options.estimate)
33
37
  return {
34
38
  count: items.length,
35
39
  getScrollElement: () => options.viewport.value ?? null,
36
- getItemKey: index => options.key(items[index]!),
40
+ getItemKey: (index: number) => options.key(items[index]!),
37
41
  estimateSize,
38
- overscan: Math.max(0, Math.floor(finite(config.value.overscan, 6))),
39
- initialRect: { width: 320, height: 320 },
40
- initialOffset: () => {
41
- if (initialIndex < 0 || initialIndex >= items.length) return 0
42
- let offset = (estimateSize(initialIndex) - 320) / 2
43
- for (let index = 0; index < initialIndex; index++) offset += estimateSize(index)
44
- return Math.max(0, offset)
45
- },
42
+ overscan: collectionOverscan(config.value),
43
+ initialRect: VIRTUAL_RECT,
44
+ initialOffset: () => centeredOffset(initialIndex, items.length, estimateSize),
46
45
  scrollMargin: margin.value,
47
46
  observeElementRect: (instance, callback) =>
48
- observeElementRect(instance, rect =>
49
- callback({ width: rect.width || 320, height: rect.height || 320 }),
50
- ),
51
- rangeExtractor: range => {
52
- const indexes = [...defaultRangeExtractor(range), ...retained]
53
- return [...new Set([...indexes, ...(options.include?.(indexes) ?? [])])]
54
- .filter(index => index >= 0 && index < items.length)
55
- .sort((a, b) => a - b)
56
- },
47
+ observeElementRect(instance, rect => callback(fallbackRect(rect))),
48
+ rangeExtractor: range =>
49
+ mergeRange(defaultRangeExtractor(range), retained, items.length, options.include),
57
50
  }
58
51
  }),
59
52
  )
@@ -73,21 +66,10 @@ export function useVirtualCollection<T>(options: {
73
66
  else if (options.viewport.value && element instanceof HTMLElement && element.isConnected)
74
67
  virtualizer.value.measureElement(element)
75
68
  }
76
- function layoutTop(element: HTMLElement) {
77
- let top = 0
78
- for (
79
- let node: HTMLElement | null = element;
80
- node;
81
- node = node.offsetParent as HTMLElement | null
82
- )
83
- top += node.offsetTop
84
- return top
85
- }
86
69
  async function refresh() {
87
70
  const viewport = options.viewport.value
88
71
  const body = options.body.value
89
- if (viewport && body?.isConnected)
90
- margin.value = Math.max(0, layoutTop(body) - layoutTop(viewport))
72
+ if (viewport && body?.isConnected) margin.value = scrollMargin(body, viewport)
91
73
  virtualizer.value.measure()
92
74
  await nextTick()
93
75
  for (const child of options.body.value?.children ?? []) measure(child)
@@ -112,14 +94,13 @@ export function useVirtualCollection<T>(options: {
112
94
  async () => {
113
95
  await nextTick()
114
96
  const viewport = options.viewport.value
115
- if (
116
- viewport &&
117
- viewport.scrollTop > Math.max(0, virtualizer.value.getTotalSize() - viewport.clientHeight)
118
- ) {
119
- virtualizer.value.scrollToOffset(
120
- Math.max(0, virtualizer.value.getTotalSize() - viewport.clientHeight),
121
- )
122
- }
97
+ if (!viewport) return
98
+ const offset = overscrolledOffset(
99
+ viewport.scrollTop,
100
+ virtualizer.value.getTotalSize(),
101
+ viewport.clientHeight,
102
+ )
103
+ if (offset !== undefined) virtualizer.value.scrollToOffset(offset)
123
104
  },
124
105
  )
125
106
  onScopeDispose(() => {
@@ -1,10 +1,8 @@
1
1
  import { computed, toValue, type MaybeRefOrGetter } from 'vue'
2
- import {
3
- measureElement,
4
- useVirtualizer,
5
- type VirtualizerOptions,
6
- type VirtualItem,
7
- } from '@tanstack/vue-virtual'
2
+ import { measureElement, useVirtualizer, type VirtualizerOptions } from '@tanstack/vue-virtual'
3
+ import { measuredSize, scrollPosition } from '../../../../shared/src/lib/virtual/flow'
4
+
5
+ export { virtualFlow } from '../../../../shared/src/lib/virtual/flow'
8
6
 
9
7
  type Options = Omit<
10
8
  VirtualizerOptions<HTMLElement, HTMLElement>,
@@ -22,18 +20,21 @@ export function useVirtualWindow(options: MaybeRefOrGetter<Options>) {
22
20
  computed(() => ({
23
21
  useAnimationFrameWithResizeObserver: true,
24
22
  measureElement: (element, entry, instance) => {
25
- const size = measureElement(element, entry, instance)
26
23
  const index = instance.indexFromElement(element)
27
- return size > 0
28
- ? size
29
- : (instance.itemSizeCache.get(instance.options.getItemKey(index)) ??
30
- instance.options.estimateSize(index))
24
+ return measuredSize(
25
+ measureElement(element, entry, instance),
26
+ instance.itemSizeCache.get(instance.options.getItemKey(index)),
27
+ () => instance.options.estimateSize(index),
28
+ )
31
29
  },
32
30
  scrollToFn: (offset, { adjustments = 0, behavior }, instance) => {
33
31
  instance.scrollElement?.scrollTo({
34
- [instance.options.horizontal ? 'left' : 'top']:
35
- (offset + adjustments) *
36
- (instance.options.horizontal && instance.options.isRtl ? -1 : 1),
32
+ ...scrollPosition(
33
+ offset,
34
+ adjustments,
35
+ instance.options.horizontal,
36
+ instance.options.isRtl,
37
+ ),
37
38
  behavior,
38
39
  })
39
40
  },
@@ -41,14 +42,3 @@ export function useVirtualWindow(options: MaybeRefOrGetter<Options>) {
41
42
  })),
42
43
  )
43
44
  }
44
-
45
- export function virtualFlow(items: VirtualItem[], total: number, margin = 0) {
46
- return {
47
- entries: items.map((item, index) => ({
48
- ...item,
49
- gapBefore: index ? Math.max(0, item.start - items[index - 1]!.end) : 0,
50
- })),
51
- before: Math.max(0, (items[0]?.start ?? margin) - margin),
52
- after: Math.max(0, total - ((items.at(-1)?.end ?? margin) - margin)),
53
- }
54
- }
@@ -1,220 +1 @@
1
- import type { UiMessages } from './types'
2
-
3
- export const enUS: UiMessages = {
4
- qrCode: {
5
- label: 'QR code',
6
- empty: 'No content',
7
- expired: 'QR code expired',
8
- scanned: 'Scanned',
9
- error: 'Unable to generate QR code',
10
- refresh: 'Refresh code',
11
- },
12
- carousel: {
13
- label: 'Featured content',
14
- role: 'carousel',
15
- slide: 'slide',
16
- prev: 'Previous group',
17
- next: 'Next group',
18
- choose: 'Choose a position',
19
- play: 'Start rotation',
20
- pause: 'Stop rotation',
21
- empty: 'No content',
22
- position: (index, total) => `${index} of ${total}`,
23
- goTo: index => `Go to group ${index}`,
24
- },
25
- monthGrid: { today: 'Go to current month' },
26
- masonry: { empty: 'No items' },
27
- splitButton: { more: 'More actions' },
28
- editable: {
29
- edit: 'Edit',
30
- save: 'Save',
31
- placeholder: 'Click to edit',
32
- failed: 'Could not save. Try again.',
33
- },
34
- tag: 'en-US',
35
- stepper: {
36
- label: 'Steps',
37
- progress: (step, total) => `Step ${step} of ${total}`,
38
- completed: 'Completed',
39
- error: 'This step has an error',
40
- },
41
- common: {
42
- close: 'Close',
43
- copy: 'Copy',
44
- copied: 'Copied',
45
- clear: 'Clear',
46
- loading: 'Loading',
47
- confirm: 'Confirm',
48
- cancel: 'Cancel',
49
- },
50
- banner: {
51
- prev: 'Previous notice',
52
- next: 'Next notice',
53
- },
54
- pagination: {
55
- rangeLabel: (from, to, total) =>
56
- total ? String(from) + '–' + to + ' of ' + total + ' items' : '0 items',
57
- pageCountLabel: (page, count) => 'Page ' + page + ' of ' + count,
58
- pageSizeLabel: 'Items per page',
59
- pageSizeOption: n => String(n) + ' / page',
60
- jumpLabel: 'Go to page',
61
- previousPagesLabel: n => 'Go back ' + n + ' pages',
62
- nextPagesLabel: n => 'Go forward ' + n + ' pages',
63
- choosePage: 'Choose a page',
64
- choosePageHint: 'Press ArrowDown or ArrowUp to choose a page',
65
- navLabel: 'Pagination',
66
- prev: 'Previous page',
67
- next: 'Next page',
68
- first: 'First page',
69
- last: 'Last page',
70
- pageLabel: n => `Page ${n}`,
71
- totalLabel: n => `${n} items`,
72
- },
73
- table: {
74
- edit: 'Edit',
75
- save: 'Save',
76
- cancel: 'Cancel',
77
- editFailed: 'Could not save. Try again.',
78
- selectPage: 'Select current page',
79
- selectFiltered: 'Select filtered rows',
80
- expand: 'Expand',
81
- collapse: 'Collapse',
82
- moveRow: 'Move row',
83
- moveColumn: 'Move column',
84
- resizeColumn: 'Resize column',
85
-
86
- noColumns: 'No visible columns',
87
- empty: 'No data',
88
- loading: 'Loading',
89
- sortAsc: 'Sort ascending',
90
- sortDesc: 'Sort descending',
91
- sortNone: 'Clear sorting',
92
- selectRow: 'Select row',
93
- selectAll: 'Select all',
94
- },
95
- select: {
96
- placeholder: 'Select',
97
- empty: 'No matches',
98
- optionCountLabel: n => `${n} options available`,
99
- },
100
- upload: {
101
- choose: 'Choose file',
102
- dropHint: 'Drop files here, or click to browse',
103
- tooLargeLabel: readableSize => `File exceeds the ${readableSize} limit`,
104
- remove: 'Remove',
105
- removeFile: name => `Remove ${name}`,
106
- },
107
- time: {
108
- justNow: 'Just now',
109
- unknown: 'Unknown time',
110
- },
111
- virtualList: { empty: 'No data' },
112
- dataList: { empty: 'No data', list: 'List view', grid: 'Grid view', layout: 'Display layout' },
113
- scroll: {
114
- regionLabel: 'Scrollable region',
115
- backToTop: 'Back to top',
116
- },
117
- toast: {
118
- regionLabel: 'Notifications',
119
- },
120
- spoiler: {
121
- revealLabel: 'Spoiler, click to reveal',
122
- hideLabel: 'Hide spoiler',
123
- },
124
- codeblock: {
125
- copy: 'Copy code',
126
- },
127
- splitter: {
128
- handleLabel: 'Resize panel',
129
- },
130
- sidebar: {
131
- navLabel: 'Sidebar navigation',
132
- toggleLabel: 'Toggle sidebar',
133
- },
134
- anchor: {
135
- navLabel: 'On this page',
136
- },
137
- breadcrumb: {
138
- navLabel: 'Breadcrumb',
139
- },
140
- lightbox: {
141
- zoomIn: 'Zoom in',
142
- zoomOut: 'Zoom out',
143
- resetZoom: 'Fit to window',
144
- actualSize: 'Actual size',
145
- rotate: 'Rotate',
146
- download: 'Download',
147
- loadingLarge: 'Loading HD',
148
- },
149
- chip: {
150
- remove: 'Remove',
151
- },
152
- numberInput: {
153
- increase: 'Increase',
154
- decrease: 'Decrease',
155
- },
156
- passwordInput: {
157
- show: 'Show password',
158
- hide: 'Hide password',
159
- },
160
- tree: { empty: 'No nodes' },
161
- treeSelect: {
162
- search: 'Search nodes',
163
- },
164
- combobox: {
165
- placeholder: 'Type or choose',
166
- toggle: 'Show options',
167
- },
168
- slider: {
169
- minimum: 'Minimum',
170
- maximum: 'Maximum',
171
- },
172
- pinInput: {
173
- cellLabel: (index, total) => `Digit ${index} of ${total}`,
174
- },
175
- dateField: {
176
- year: 'Year',
177
- month: 'Month',
178
- day: 'Day',
179
- hour: 'Hour',
180
- minute: 'Minute',
181
- second: 'Second',
182
- dayPeriod: 'AM or PM',
183
- },
184
- dateRangeField: {
185
- start: 'start date',
186
- end: 'end date',
187
- separator: '–',
188
- },
189
- datePicker: {
190
- open: 'Open calendar',
191
- },
192
- dateTimePicker: {
193
- time: 'Time',
194
- },
195
- rating: {
196
- star: value => `${value} ${value === 1 ? 'star' : 'stars'}`,
197
- label: (value, max) => `${value} out of ${max} stars`,
198
- score: (value, max) => `${value} out of ${max} points`,
199
- },
200
- form: {
201
- required: 'Required',
202
- },
203
- command: {
204
- label: 'Command palette',
205
- placeholder: 'Search',
206
- empty: 'No matches',
207
- },
208
- calendar: {
209
- label: 'Calendar',
210
- prev: 'Previous month',
211
- next: 'Next month',
212
- prevYear: 'Previous year',
213
- nextYear: 'Next year',
214
- prevYears: 'Previous twelve years',
215
- nextYears: 'Next twelve years',
216
- pickMonth: 'Choose a month',
217
- pickYear: 'Choose a year',
218
- weekStartsOn: 0,
219
- },
220
- }
1
+ export { enUS } from '../../../shared/src/locale/en-US'
@@ -7,64 +7,21 @@ import {
7
7
  type InjectionKey,
8
8
  type MaybeRefOrGetter,
9
9
  } from 'vue'
10
- import type { PartialUiMessages, UiMessages } from './types'
11
- import { zhCN } from './zh-CN'
10
+ import {
11
+ mergeUiMessages,
12
+ zhCN,
13
+ type PartialUiMessages,
14
+ type UiMessages,
15
+ } from '../../../shared/src/locale'
12
16
 
13
17
  const UI_LOCALE_KEY = Symbol('hn-ui-locale') as InjectionKey<ComputedRef<UiMessages>>
14
18
 
15
19
  const fallbackLocale = computed(() => zhCN)
16
20
 
17
- function merge(base: UiMessages, patch: PartialUiMessages): UiMessages {
18
- return {
19
- qrCode: { ...base.qrCode, ...patch.qrCode },
20
- carousel: { ...base.carousel, ...patch.carousel },
21
- monthGrid: { ...base.monthGrid, ...patch.monthGrid },
22
- masonry: { ...base.masonry, ...patch.masonry },
23
- splitButton: { ...base.splitButton, ...patch.splitButton },
24
- editable: { ...base.editable, ...patch.editable },
25
- tag: patch.tag ?? base.tag,
26
- common: { ...base.common, ...patch.common },
27
- stepper: { ...base.stepper, ...patch.stepper },
28
- banner: { ...base.banner, ...patch.banner },
29
- pagination: { ...base.pagination, ...patch.pagination },
30
- table: { ...base.table, ...patch.table },
31
- select: { ...base.select, ...patch.select },
32
- upload: { ...base.upload, ...patch.upload },
33
- time: { ...base.time, ...patch.time },
34
- scroll: { ...base.scroll, ...patch.scroll },
35
- virtualList: { ...base.virtualList, ...patch.virtualList },
36
- dataList: { ...base.dataList, ...patch.dataList },
37
- toast: { ...base.toast, ...patch.toast },
38
- spoiler: { ...base.spoiler, ...patch.spoiler },
39
- codeblock: { ...base.codeblock, ...patch.codeblock },
40
- splitter: { ...base.splitter, ...patch.splitter },
41
- sidebar: { ...base.sidebar, ...patch.sidebar },
42
- anchor: { ...base.anchor, ...patch.anchor },
43
- breadcrumb: { ...base.breadcrumb, ...patch.breadcrumb },
44
- lightbox: { ...base.lightbox, ...patch.lightbox },
45
- chip: { ...base.chip, ...patch.chip },
46
- numberInput: { ...base.numberInput, ...patch.numberInput },
47
- passwordInput: { ...base.passwordInput, ...patch.passwordInput },
48
- tree: { ...base.tree, ...patch.tree },
49
- treeSelect: { ...base.treeSelect, ...patch.treeSelect },
50
- combobox: { ...base.combobox, ...patch.combobox },
51
- slider: { ...base.slider, ...patch.slider },
52
- pinInput: { ...base.pinInput, ...patch.pinInput },
53
- dateField: { ...base.dateField, ...patch.dateField },
54
- dateRangeField: { ...base.dateRangeField, ...patch.dateRangeField },
55
- calendar: { ...base.calendar, ...patch.calendar },
56
- datePicker: { ...base.datePicker, ...patch.datePicker },
57
- dateTimePicker: { ...base.dateTimePicker, ...patch.dateTimePicker },
58
- rating: { ...base.rating, ...patch.rating },
59
- form: { ...base.form, ...patch.form },
60
- command: { ...base.command, ...patch.command },
61
- }
62
- }
63
-
64
21
  export function provideUiLocale(
65
22
  messages: MaybeRefOrGetter<PartialUiMessages>,
66
23
  ): ComputedRef<UiMessages> {
67
- const resolved = computed(() => merge(zhCN, toValue(messages)))
24
+ const resolved = computed(() => mergeUiMessages(zhCN, toValue(messages)))
68
25
  provide(UI_LOCALE_KEY, resolved)
69
26
  return resolved
70
27
  }
@@ -73,6 +30,5 @@ export function useUiLocale(): ComputedRef<UiMessages> {
73
30
  return inject(UI_LOCALE_KEY, fallbackLocale)
74
31
  }
75
32
 
76
- export { zhCN } from './zh-CN'
77
- export { enUS } from './en-US'
78
- export type { UiMessages, PartialUiMessages } from './types'
33
+ export { zhCN, enUS } from '../../../shared/src/locale'
34
+ export type { UiMessages, PartialUiMessages } from '../../../shared/src/locale'