@hina-ui/vue 1.7.4 → 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 (536) hide show
  1. package/README.md +37 -0
  2. package/dist/index.js +2251 -992
  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/Anchor.vue.d.ts.map +1 -1
  227. package/dist/types/vue/src/components/anchor/composables/useAnchor.d.ts +2 -7
  228. package/dist/types/vue/src/components/anchor/composables/useAnchor.d.ts.map +1 -1
  229. package/dist/types/vue/src/components/anchor/composables/useAnchorFollow.d.ts +1 -1
  230. package/dist/types/vue/src/components/anchor/composables/useAnchorFollow.d.ts.map +1 -1
  231. package/dist/types/vue/src/components/anchor/composables/useScrollSpy.d.ts +2 -5
  232. package/dist/types/vue/src/components/anchor/composables/useScrollSpy.d.ts.map +1 -1
  233. package/dist/types/vue/src/components/anchor/types.d.ts +1 -8
  234. package/dist/types/vue/src/components/anchor/types.d.ts.map +1 -1
  235. package/dist/types/vue/src/components/autocomplete/autocomplete.variants.d.ts +1 -1
  236. package/dist/types/vue/src/components/autocomplete/autocomplete.variants.d.ts.map +1 -1
  237. package/dist/types/vue/src/components/autocomplete/types.d.ts +1 -13
  238. package/dist/types/vue/src/components/autocomplete/types.d.ts.map +1 -1
  239. package/dist/types/vue/src/components/banner/utils/direction.d.ts +1 -2
  240. package/dist/types/vue/src/components/banner/utils/direction.d.ts.map +1 -1
  241. package/dist/types/vue/src/components/calendar/utils/format.d.ts +1 -6
  242. package/dist/types/vue/src/components/calendar/utils/format.d.ts.map +1 -1
  243. package/dist/types/vue/src/components/code-block/highlighter.d.ts +1 -3
  244. package/dist/types/vue/src/components/code-block/highlighter.d.ts.map +1 -1
  245. package/dist/types/vue/src/components/collapsible/CollapsibleTrigger.vue.d.ts.map +1 -1
  246. package/dist/types/vue/src/components/command-palette/composables/useCommandItems.d.ts +1 -1
  247. package/dist/types/vue/src/components/command-palette/utils/hotkey.d.ts +1 -8
  248. package/dist/types/vue/src/components/command-palette/utils/hotkey.d.ts.map +1 -1
  249. package/dist/types/vue/src/components/command-palette/utils/match.d.ts +5 -12
  250. package/dist/types/vue/src/components/command-palette/utils/match.d.ts.map +1 -1
  251. package/dist/types/vue/src/components/data-list/composables/useDataList.d.ts.map +1 -1
  252. package/dist/types/vue/src/components/data-list/utils/scroll.d.ts +1 -2
  253. package/dist/types/vue/src/components/data-list/utils/scroll.d.ts.map +1 -1
  254. package/dist/types/vue/src/components/data-table/column-sizing-styles.d.ts +1 -3
  255. package/dist/types/vue/src/components/data-table/column-sizing-styles.d.ts.map +1 -1
  256. package/dist/types/vue/src/components/data-table/column-sizing.d.ts +1 -21
  257. package/dist/types/vue/src/components/data-table/column-sizing.d.ts.map +1 -1
  258. package/dist/types/vue/src/components/data-table/composables/useDataTable.d.ts.map +1 -1
  259. package/dist/types/vue/src/components/data-table/composables/useTableColumns.d.ts.map +1 -1
  260. package/dist/types/vue/src/components/data-table/composables/useTableDrag.d.ts.map +1 -1
  261. package/dist/types/vue/src/components/data-table/composables/useTableExport.d.ts.map +1 -1
  262. package/dist/types/vue/src/components/data-table/composables/useTableResize.d.ts.map +1 -1
  263. package/dist/types/vue/src/components/data-table/composables/useTableResizeHandles.d.ts.map +1 -1
  264. package/dist/types/vue/src/components/data-table/composables/useTableVirtual.d.ts.map +1 -1
  265. package/dist/types/vue/src/components/data-table/types.d.ts +3 -153
  266. package/dist/types/vue/src/components/data-table/types.d.ts.map +1 -1
  267. package/dist/types/vue/src/components/data-table/utils.d.ts +1 -9
  268. package/dist/types/vue/src/components/data-table/utils.d.ts.map +1 -1
  269. package/dist/types/vue/src/components/date-range-field/utils/validity.d.ts +1 -11
  270. package/dist/types/vue/src/components/date-range-field/utils/validity.d.ts.map +1 -1
  271. package/dist/types/vue/src/components/editable/editable.variants.d.ts +1 -1
  272. package/dist/types/vue/src/components/editable/editable.variants.d.ts.map +1 -1
  273. package/dist/types/vue/src/components/file-upload/utils/select.d.ts +1 -16
  274. package/dist/types/vue/src/components/file-upload/utils/select.d.ts.map +1 -1
  275. package/dist/types/vue/src/components/file-upload/utils/size.d.ts +1 -1
  276. package/dist/types/vue/src/components/file-upload/utils/size.d.ts.map +1 -1
  277. package/dist/types/vue/src/components/float-button/float-button.variants.d.ts +1 -1
  278. package/dist/types/vue/src/components/float-button/float-button.variants.d.ts.map +1 -1
  279. package/dist/types/vue/src/components/form/Form.vue.d.ts +1 -1
  280. package/dist/types/vue/src/components/form/composables/useForm.d.ts +9 -15
  281. package/dist/types/vue/src/components/form/composables/useForm.d.ts.map +1 -1
  282. package/dist/types/vue/src/components/form/standard-schema.d.ts +1 -22
  283. package/dist/types/vue/src/components/form/standard-schema.d.ts.map +1 -1
  284. package/dist/types/vue/src/components/form/utils/errors.d.ts +1 -6
  285. package/dist/types/vue/src/components/form/utils/errors.d.ts.map +1 -1
  286. package/dist/types/vue/src/components/form/utils/focus.d.ts +1 -1
  287. package/dist/types/vue/src/components/form/utils/focus.d.ts.map +1 -1
  288. package/dist/types/vue/src/components/form/utils/values.d.ts +1 -2
  289. package/dist/types/vue/src/components/form/utils/values.d.ts.map +1 -1
  290. package/dist/types/vue/src/components/form-field/FormField.vue.d.ts.map +1 -1
  291. package/dist/types/vue/src/components/lightbox/composables/useLightboxHint.d.ts.map +1 -1
  292. package/dist/types/vue/src/components/lightbox/types.d.ts +1 -15
  293. package/dist/types/vue/src/components/lightbox/types.d.ts.map +1 -1
  294. package/dist/types/vue/src/components/lightbox/utils/clip.d.ts +1 -15
  295. package/dist/types/vue/src/components/lightbox/utils/clip.d.ts.map +1 -1
  296. package/dist/types/vue/src/components/lightbox/utils/download.d.ts +1 -2
  297. package/dist/types/vue/src/components/lightbox/utils/download.d.ts.map +1 -1
  298. package/dist/types/vue/src/components/lightbox/utils/gesture.d.ts +1 -25
  299. package/dist/types/vue/src/components/lightbox/utils/gesture.d.ts.map +1 -1
  300. package/dist/types/vue/src/components/lightbox/utils/paging.d.ts +1 -8
  301. package/dist/types/vue/src/components/lightbox/utils/paging.d.ts.map +1 -1
  302. package/dist/types/vue/src/components/lightbox/utils/pose.d.ts +1 -37
  303. package/dist/types/vue/src/components/lightbox/utils/pose.d.ts.map +1 -1
  304. package/dist/types/vue/src/components/lightbox/utils/source.d.ts +1 -3
  305. package/dist/types/vue/src/components/lightbox/utils/source.d.ts.map +1 -1
  306. package/dist/types/vue/src/components/lightbox/utils/zoom.d.ts +1 -39
  307. package/dist/types/vue/src/components/lightbox/utils/zoom.d.ts.map +1 -1
  308. package/dist/types/vue/src/components/meter-group/utils/tones.d.ts +1 -3
  309. package/dist/types/vue/src/components/meter-group/utils/tones.d.ts.map +1 -1
  310. package/dist/types/vue/src/components/month-grid/MonthGrid.vue.d.ts +1 -1
  311. package/dist/types/vue/src/components/multi-select/MultiSelect.vue.d.ts.map +1 -1
  312. package/dist/types/vue/src/components/pagination/composables/usePagination.d.ts +2 -2
  313. package/dist/types/vue/src/components/pagination/composables/usePagination.d.ts.map +1 -1
  314. package/dist/types/vue/src/components/pagination/types.d.ts +1 -22
  315. package/dist/types/vue/src/components/pagination/types.d.ts.map +1 -1
  316. package/dist/types/vue/src/components/pagination/utils/ranges.d.ts +1 -2
  317. package/dist/types/vue/src/components/pagination/utils/ranges.d.ts.map +1 -1
  318. package/dist/types/vue/src/components/password-input/PasswordInput.vue.d.ts +4 -1
  319. package/dist/types/vue/src/components/password-input/PasswordInput.vue.d.ts.map +1 -1
  320. package/dist/types/vue/src/components/prev-next/PrevNextLink.vue.d.ts.map +1 -1
  321. package/dist/types/vue/src/components/qr-code/export.d.ts +1 -2
  322. package/dist/types/vue/src/components/qr-code/export.d.ts.map +1 -1
  323. package/dist/types/vue/src/components/range-calendar/utils/limit.d.ts +1 -2
  324. package/dist/types/vue/src/components/range-calendar/utils/limit.d.ts.map +1 -1
  325. package/dist/types/vue/src/components/range-slider/RangeSlider.vue.d.ts +2 -2
  326. package/dist/types/vue/src/components/rating/utils/fill.d.ts +1 -1
  327. package/dist/types/vue/src/components/rating/utils/fill.d.ts.map +1 -1
  328. package/dist/types/vue/src/components/ripple/useRipple.d.ts.map +1 -1
  329. package/dist/types/vue/src/components/scroll-area/ScrollArea.vue.d.ts.map +1 -1
  330. package/dist/types/vue/src/components/scroll-area/composables/useEdgeShadow.d.ts +2 -1
  331. package/dist/types/vue/src/components/scroll-area/composables/useEdgeShadow.d.ts.map +1 -1
  332. package/dist/types/vue/src/components/scroll-area/composables/useLayerLock.d.ts.map +1 -1
  333. package/dist/types/vue/src/components/scroll-area/composables/useWheelRedirect.d.ts.map +1 -1
  334. package/dist/types/vue/src/components/scroll-area/scroll-restore.d.ts +1 -33
  335. package/dist/types/vue/src/components/scroll-area/scroll-restore.d.ts.map +1 -1
  336. package/dist/types/vue/src/components/search-input/SearchInput.vue.d.ts +4 -1
  337. package/dist/types/vue/src/components/search-input/SearchInput.vue.d.ts.map +1 -1
  338. package/dist/types/vue/src/components/select/types.d.ts +1 -13
  339. package/dist/types/vue/src/components/select/types.d.ts.map +1 -1
  340. package/dist/types/vue/src/components/slider/Slider.vue.d.ts +2 -2
  341. package/dist/types/vue/src/components/split-button/split-button.variants.d.ts +1 -1
  342. package/dist/types/vue/src/components/split-button/split-button.variants.d.ts.map +1 -1
  343. package/dist/types/vue/src/components/spoiler/SpoilerPainter.d.ts +1 -34
  344. package/dist/types/vue/src/components/spoiler/SpoilerPainter.d.ts.map +1 -1
  345. package/dist/types/vue/src/components/spoiler/utils/irisOrigin.d.ts +1 -5
  346. package/dist/types/vue/src/components/spoiler/utils/irisOrigin.d.ts.map +1 -1
  347. package/dist/types/vue/src/components/spoiler/worklet.d.ts +1 -1
  348. package/dist/types/vue/src/components/spoiler/worklet.d.ts.map +1 -1
  349. package/dist/types/vue/src/components/table/Table.vue.d.ts +6 -3
  350. package/dist/types/vue/src/components/table/Table.vue.d.ts.map +1 -1
  351. package/dist/types/vue/src/components/tabs/TabsList.vue.d.ts +6 -3
  352. package/dist/types/vue/src/components/tabs/TabsList.vue.d.ts.map +1 -1
  353. package/dist/types/vue/src/components/time/utils/relativeTime.d.ts +1 -1
  354. package/dist/types/vue/src/components/time/utils/relativeTime.d.ts.map +1 -1
  355. package/dist/types/vue/src/components/toast/composables/useToastLayout.d.ts +4 -11
  356. package/dist/types/vue/src/components/toast/composables/useToastLayout.d.ts.map +1 -1
  357. package/dist/types/vue/src/components/toast/store.d.ts +14 -62
  358. package/dist/types/vue/src/components/toast/store.d.ts.map +1 -1
  359. package/dist/types/vue/src/components/tree/composables/useTree.d.ts.map +1 -1
  360. package/dist/types/vue/src/components/tree/types.d.ts +1 -17
  361. package/dist/types/vue/src/components/tree/types.d.ts.map +1 -1
  362. package/dist/types/vue/src/components/tree/utils/selection.d.ts +1 -15
  363. package/dist/types/vue/src/components/tree/utils/selection.d.ts.map +1 -1
  364. package/dist/types/vue/src/components/tree-select/types.d.ts +1 -9
  365. package/dist/types/vue/src/components/tree-select/types.d.ts.map +1 -1
  366. package/dist/types/vue/src/components/tree-select/utils/filterTree.d.ts +1 -6
  367. package/dist/types/vue/src/components/tree-select/utils/filterTree.d.ts.map +1 -1
  368. package/dist/types/vue/src/components/virtual-list/composables/useVirtualList.d.ts +1 -1
  369. package/dist/types/vue/src/components/virtual-list/composables/useVirtualList.d.ts.map +1 -1
  370. package/dist/types/vue/src/components/visually-hidden/VisuallyHidden.vue.d.ts +4 -1
  371. package/dist/types/vue/src/components/visually-hidden/VisuallyHidden.vue.d.ts.map +1 -1
  372. package/dist/types/vue/src/lib/caret.d.ts +1 -1
  373. package/dist/types/vue/src/lib/caret.d.ts.map +1 -1
  374. package/dist/types/vue/src/lib/collapse.d.ts +2 -8
  375. package/dist/types/vue/src/lib/collapse.d.ts.map +1 -1
  376. package/dist/types/vue/src/lib/date.d.ts +1 -27
  377. package/dist/types/vue/src/lib/date.d.ts.map +1 -1
  378. package/dist/types/vue/src/lib/field-focus.d.ts +1 -1
  379. package/dist/types/vue/src/lib/field-focus.d.ts.map +1 -1
  380. package/dist/types/vue/src/lib/overlay-anchor.d.ts +2 -7
  381. package/dist/types/vue/src/lib/overlay-anchor.d.ts.map +1 -1
  382. package/dist/types/vue/src/lib/pointer-corridor.d.ts +1 -6
  383. package/dist/types/vue/src/lib/pointer-corridor.d.ts.map +1 -1
  384. package/dist/types/vue/src/lib/reka/useVirtualChoices.d.ts +3 -11
  385. package/dist/types/vue/src/lib/reka/useVirtualChoices.d.ts.map +1 -1
  386. package/dist/types/vue/src/lib/reka/useVirtualTree.d.ts +1 -1
  387. package/dist/types/vue/src/lib/reka/useVirtualTree.d.ts.map +1 -1
  388. package/dist/types/vue/src/lib/virtual/navigation.d.ts +1 -2
  389. package/dist/types/vue/src/lib/virtual/navigation.d.ts.map +1 -1
  390. package/dist/types/vue/src/lib/virtual/useVirtualCollection.d.ts +1 -1
  391. package/dist/types/vue/src/lib/virtual/useVirtualCollection.d.ts.map +1 -1
  392. package/dist/types/vue/src/lib/virtual/useVirtualWindow.d.ts +2 -15
  393. package/dist/types/vue/src/lib/virtual/useVirtualWindow.d.ts.map +1 -1
  394. package/dist/types/vue/src/locale/en-US.d.ts +1 -2
  395. package/dist/types/vue/src/locale/en-US.d.ts.map +1 -1
  396. package/dist/types/vue/src/locale/index.d.ts +3 -4
  397. package/dist/types/vue/src/locale/index.d.ts.map +1 -1
  398. package/dist/types/vue/src/locale/types.d.ts +1 -234
  399. package/dist/types/vue/src/locale/types.d.ts.map +1 -1
  400. package/dist/types/vue/src/locale/zh-CN.d.ts +1 -2
  401. package/dist/types/vue/src/locale/zh-CN.d.ts.map +1 -1
  402. package/dist/types/vue/src/primitives/number-field/NumberFieldDecrement.vue.d.ts +17 -0
  403. package/dist/types/vue/src/primitives/number-field/NumberFieldDecrement.vue.d.ts.map +1 -0
  404. package/dist/types/vue/src/primitives/number-field/NumberFieldIncrement.vue.d.ts +17 -0
  405. package/dist/types/vue/src/primitives/number-field/NumberFieldIncrement.vue.d.ts.map +1 -0
  406. package/dist/types/vue/src/primitives/number-field/NumberFieldInput.vue.d.ts +16 -0
  407. package/dist/types/vue/src/primitives/number-field/NumberFieldInput.vue.d.ts.map +1 -0
  408. package/dist/types/vue/src/primitives/number-field/NumberFieldRoot.vue.d.ts +47 -0
  409. package/dist/types/vue/src/primitives/number-field/NumberFieldRoot.vue.d.ts.map +1 -0
  410. package/dist/types/vue/src/primitives/number-field/context.d.ts +41 -0
  411. package/dist/types/vue/src/primitives/number-field/context.d.ts.map +1 -0
  412. package/dist/types/vue/src/primitives/number-field/index.d.ts +5 -0
  413. package/dist/types/vue/src/primitives/number-field/index.d.ts.map +1 -0
  414. package/dist/types/vue/src/primitives/utils/timers.d.ts +6 -0
  415. package/dist/types/vue/src/primitives/utils/timers.d.ts.map +1 -0
  416. package/dist/types/vue/src/primitives/utils/usePrimitiveElement.d.ts +6 -0
  417. package/dist/types/vue/src/primitives/utils/usePrimitiveElement.d.ts.map +1 -0
  418. package/dist/types/vue/src/primitives/utils/useVModel.d.ts +7 -0
  419. package/dist/types/vue/src/primitives/utils/useVModel.d.ts.map +1 -0
  420. package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInput.d.ts +66 -0
  421. package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInput.d.ts.map +1 -0
  422. package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInputBubble.vue.d.ts +28 -0
  423. package/dist/types/vue/src/primitives/visually-hidden/VisuallyHiddenInputBubble.vue.d.ts.map +1 -0
  424. package/package.json +3 -2
  425. package/src/components/accordion/AccordionTrigger.vue +9 -1
  426. package/src/components/anchor/Anchor.vue +13 -9
  427. package/src/components/anchor/composables/useAnchor.ts +3 -12
  428. package/src/components/anchor/composables/useAnchorFollow.ts +10 -63
  429. package/src/components/anchor/composables/useScrollSpy.ts +22 -38
  430. package/src/components/anchor/types.ts +1 -8
  431. package/src/components/autocomplete/autocomplete.variants.ts +1 -1
  432. package/src/components/autocomplete/composables/useAutocomplete.ts +1 -1
  433. package/src/components/autocomplete/types.ts +1 -16
  434. package/src/components/banner/utils/direction.ts +1 -10
  435. package/src/components/calendar/utils/format.ts +1 -23
  436. package/src/components/code-block/highlighter.ts +1 -98
  437. package/src/components/collapsible/CollapsibleTrigger.vue +8 -1
  438. package/src/components/command-palette/utils/hotkey.ts +1 -27
  439. package/src/components/command-palette/utils/match.ts +5 -75
  440. package/src/components/data-list/composables/useDataList.ts +2 -4
  441. package/src/components/data-list/utils/scroll.ts +1 -26
  442. package/src/components/data-table/column-sizing-styles.ts +1 -40
  443. package/src/components/data-table/column-sizing.ts +1 -101
  444. package/src/components/data-table/composables/useDataTable.ts +103 -123
  445. package/src/components/data-table/composables/useTableColumns.ts +38 -113
  446. package/src/components/data-table/composables/useTableDrag.ts +21 -11
  447. package/src/components/data-table/composables/useTableExport.ts +8 -32
  448. package/src/components/data-table/composables/useTableResize.ts +13 -17
  449. package/src/components/data-table/composables/useTableResizeHandles.ts +6 -21
  450. package/src/components/data-table/types.ts +15 -155
  451. package/src/components/data-table/utils.ts +1 -75
  452. package/src/components/date-range-field/utils/validity.ts +1 -21
  453. package/src/components/editable/editable.variants.ts +1 -1
  454. package/src/components/file-upload/utils/select.ts +1 -58
  455. package/src/components/file-upload/utils/size.ts +1 -16
  456. package/src/components/float-button/float-button.variants.ts +1 -1
  457. package/src/components/form/composables/useForm.ts +24 -135
  458. package/src/components/form/standard-schema.ts +1 -26
  459. package/src/components/form/utils/errors.ts +1 -48
  460. package/src/components/form/utils/focus.ts +1 -10
  461. package/src/components/form/utils/values.ts +1 -23
  462. package/src/components/form-field/FormField.vue +3 -2
  463. package/src/components/lightbox/composables/useLightboxHint.ts +6 -1
  464. package/src/components/lightbox/types.ts +1 -14
  465. package/src/components/lightbox/utils/clip.ts +1 -117
  466. package/src/components/lightbox/utils/download.ts +1 -29
  467. package/src/components/lightbox/utils/gesture.ts +1 -54
  468. package/src/components/lightbox/utils/paging.ts +1 -33
  469. package/src/components/lightbox/utils/pose.ts +1 -142
  470. package/src/components/lightbox/utils/source.ts +1 -17
  471. package/src/components/lightbox/utils/zoom.ts +1 -127
  472. package/src/components/meter-group/utils/tones.ts +1 -14
  473. package/src/components/multi-select/MultiSelect.vue +1 -2
  474. package/src/components/number-input/NumberInput.vue +2 -2
  475. package/src/components/pagination/composables/usePagination.ts +2 -3
  476. package/src/components/pagination/types.ts +1 -19
  477. package/src/components/pagination/utils/ranges.ts +1 -12
  478. package/src/components/password-input/PasswordInput.vue +6 -0
  479. package/src/components/prev-next/PrevNext.vue +1 -1
  480. package/src/components/prev-next/PrevNextLink.vue +1 -1
  481. package/src/components/qr-code/export.ts +1 -65
  482. package/src/components/range-calendar/utils/limit.ts +1 -11
  483. package/src/components/rating/utils/fill.ts +1 -4
  484. package/src/components/ripple/useRipple.ts +10 -198
  485. package/src/components/scroll-area/ScrollArea.vue +6 -18
  486. package/src/components/scroll-area/composables/useEdgeShadow.ts +7 -16
  487. package/src/components/scroll-area/composables/useLayerLock.ts +2 -9
  488. package/src/components/scroll-area/composables/useWheelRedirect.ts +2 -10
  489. package/src/components/scroll-area/scroll-restore.ts +1 -148
  490. package/src/components/search-input/SearchInput.vue +6 -0
  491. package/src/components/select/types.ts +1 -23
  492. package/src/components/split-button/split-button.variants.ts +1 -1
  493. package/src/components/spoiler/SpoilerPainter.ts +1 -197
  494. package/src/components/spoiler/utils/irisOrigin.ts +1 -40
  495. package/src/components/spoiler/worklet.ts +1 -199
  496. package/src/components/table/Table.vue +9 -0
  497. package/src/components/tabs/TabsList.vue +9 -0
  498. package/src/components/time/utils/relativeTime.ts +1 -20
  499. package/src/components/toast/composables/useToastLayout.ts +12 -24
  500. package/src/components/toast/store.ts +16 -228
  501. package/src/components/tree/composables/useTree.ts +17 -33
  502. package/src/components/tree/types.ts +1 -20
  503. package/src/components/tree/utils/selection.ts +1 -78
  504. package/src/components/tree-select/types.ts +1 -34
  505. package/src/components/tree-select/utils/filterTree.ts +1 -19
  506. package/src/components/virtual-list/composables/useVirtualList.ts +16 -42
  507. package/src/components/visually-hidden/VisuallyHidden.vue +21 -3
  508. package/src/lib/caret.ts +1 -48
  509. package/src/lib/collapse.ts +6 -29
  510. package/src/lib/date.ts +1 -111
  511. package/src/lib/field-focus.ts +1 -36
  512. package/src/lib/overlay-anchor.ts +11 -37
  513. package/src/lib/pointer-corridor.ts +1 -26
  514. package/src/lib/reka/useVirtualChoices.ts +55 -133
  515. package/src/lib/reka/useVirtualTree.ts +22 -65
  516. package/src/lib/virtual/navigation.ts +1 -26
  517. package/src/lib/virtual/useVirtualCollection.ts +28 -47
  518. package/src/lib/virtual/useVirtualWindow.ts +15 -25
  519. package/src/locale/en-US.ts +1 -220
  520. package/src/locale/index.ts +9 -53
  521. package/src/locale/types.ts +1 -225
  522. package/src/locale/zh-CN.ts +1 -215
  523. package/src/primitives/number-field/LICENSE +21 -0
  524. package/src/primitives/number-field/NumberFieldDecrement.vue +21 -0
  525. package/src/primitives/number-field/NumberFieldIncrement.vue +21 -0
  526. package/src/primitives/number-field/NumberFieldInput.vue +114 -0
  527. package/src/primitives/number-field/NumberFieldRoot.vue +169 -0
  528. package/src/primitives/number-field/context.ts +111 -0
  529. package/src/primitives/number-field/index.ts +14 -0
  530. package/src/primitives/utils/LICENSE +44 -0
  531. package/src/primitives/utils/timers.ts +6 -0
  532. package/src/primitives/utils/usePrimitiveElement.ts +12 -0
  533. package/src/primitives/utils/useVModel.ts +37 -0
  534. package/src/primitives/visually-hidden/LICENSE +21 -0
  535. package/src/primitives/visually-hidden/VisuallyHiddenInput.ts +97 -0
  536. package/src/primitives/visually-hidden/VisuallyHiddenInputBubble.vue +49 -0
@@ -9,8 +9,32 @@ import {
9
9
  isRowAction,
10
10
  positiveInteger,
11
11
  rowId,
12
- rowKey,
13
12
  } from '../utils'
13
+ import {
14
+ ariaSort,
15
+ canGoNext,
16
+ clampedPage,
17
+ compareValues,
18
+ displayValue as formatValue,
19
+ engineSelection,
20
+ engineSorting,
21
+ engineState,
22
+ keyOf as rowKeyOf,
23
+ labelOf as rowLabelOf,
24
+ modelSelection,
25
+ modelSorting,
26
+ nextColumnFilters,
27
+ orderColumns,
28
+ pageCount as countPages,
29
+ selectionState,
30
+ sortLabel,
31
+ tableQuery,
32
+ toggleKey,
33
+ toggleSelection,
34
+ totalRows,
35
+ uniqueSelectable,
36
+ valueOf as cellValue,
37
+ } from '../../../../../shared/src/lib/data-table/state'
14
38
  import type {
15
39
  DataTableApi,
16
40
  DataTableColumn,
@@ -53,18 +77,9 @@ export function useDataTable<T extends object>(
53
77
  const collator = computed(
54
78
  () => new Intl.Collator(t.value.tag, { numeric: true, sensitivity: 'base' }),
55
79
  )
56
- const keyOf = (row: T) =>
57
- typeof props.rowKey === 'function' ? props.rowKey(row) : (row[props.rowKey] as DataTableKey)
58
- const labelOf = (row: T) =>
59
- String(
60
- typeof props.rowLabel === 'function'
61
- ? props.rowLabel(row)
62
- : props.rowLabel === undefined
63
- ? keyOf(row)
64
- : row[props.rowLabel],
65
- )
66
- const valueOf = (row: T, column: DataTableColumn<T>) =>
67
- column.accessor ? column.accessor(row) : row[column.field ?? (column.key as keyof T)]
80
+ const keyOf = (row: T) => rowKeyOf(row, props.rowKey)
81
+ const labelOf = (row: T) => rowLabelOf(row, props.rowLabel, keyOf)
82
+ const valueOf = (row: T, column: DataTableColumn<T>) => cellValue(row, column)
68
83
  const selectable = (row: T) =>
69
84
  typeof props.selectable === 'function' ? props.selectable(row) : !!props.selectable
70
85
  const expandable = (row: T) =>
@@ -84,11 +99,7 @@ export function useDataTable<T extends object>(
84
99
  sortUndefined: 'last',
85
100
  sortFn: (a, b, id) => {
86
101
  if (column.sort) return column.sort(a.original, b.original)
87
- const left = a.getValue(id),
88
- right = b.getValue(id)
89
- if (typeof left === 'number' && typeof right === 'number') return left - right
90
- if (left instanceof Date && right instanceof Date) return left.getTime() - right.getTime()
91
- return compare.compare(String(left), String(right))
102
+ return compareValues(a.getValue(id), b.getValue(id), compare)
92
103
  },
93
104
  }))
94
105
  })
@@ -122,73 +133,65 @@ export function useDataTable<T extends object>(
122
133
  ? column.filter(row.original, query)
123
134
  : filterValue(row.getValue(id), query, 'contains', t.value.tag)
124
135
  },
125
- state: computed(() => ({
126
- sorting: models.sorting.value.map(sort => ({ id: sort.key, desc: sort.desc })),
127
- globalFilter: models.filter.value.trim(),
128
- columnFilters: models.columnFilters.value
129
- .filter(filter => leaves.value.some(column => column.key === filter.key))
130
- .map(filter => ({ id: filter.key, value: filter.value })),
131
- grouping: models.grouping.value.filter(key =>
132
- leaves.value.some(column => column.key === key),
133
- ),
134
- expanded: Object.fromEntries(
135
- [...models.expanded.value.map(rowId), ...models.expandedGroups.value].map(key => [
136
- key,
137
- true,
138
- ]),
136
+ state: computed(() =>
137
+ engineState(
138
+ leaves.value,
139
+ {
140
+ sorting: models.sorting.value,
141
+ filter: models.filter.value,
142
+ columnFilters: models.columnFilters.value,
143
+ grouping: models.grouping.value,
144
+ selected: models.selected.value,
145
+ expanded: models.expanded.value,
146
+ expandedGroups: models.expandedGroups.value,
147
+ hiddenColumns: models.hiddenColumns.value,
148
+ },
149
+ page.value,
150
+ pageSize.value,
139
151
  ),
140
- pagination: { pageIndex: page.value - 1, pageSize: pageSize.value },
141
- rowSelection: Object.fromEntries(
142
- models.selected.value.map(key => [rowId(key), true as const]),
143
- ),
144
- columnVisibility: Object.fromEntries(models.hiddenColumns.value.map(key => [key, false])),
145
- })),
152
+ ),
146
153
  onSortingChange: updater => {
147
154
  if (blocked.value) return
148
- const current = models.sorting.value.map(sort => ({ id: sort.key, desc: sort.desc }))
155
+ const current = engineSorting(models.sorting.value)
149
156
  const next = typeof updater === 'function' ? updater(current) : updater
150
- models.sorting.value = next.map(sort => ({ key: sort.id, desc: sort.desc }))
157
+ models.sorting.value = modelSorting(next)
151
158
  },
152
159
  onRowSelectionChange: updater => {
153
160
  if (blocked.value) return
154
- const current = Object.fromEntries(
155
- models.selected.value.map(key => [rowId(key), true as const]),
156
- )
161
+ const current = engineSelection(models.selected.value)
157
162
  const next = typeof updater === 'function' ? updater(current) : updater
158
- models.selected.value = Object.keys(next)
159
- .filter(key => next[key])
160
- .map(rowKey)
163
+ models.selected.value = modelSelection(next)
161
164
  },
162
165
  })
163
- const visibleColumns = computed(() => {
164
- const visible = leaves.value.filter(column => !models.hiddenColumns.value.includes(column.key))
165
- const order = [...new Set([...models.columnOrder.value, ...visible.map(column => column.key)])]
166
- return visible.sort((a, b) => {
167
- const rank = (column: DataTableColumn<T>) =>
168
- column.pin === 'start' ? 0 : column.pin === 'end' ? 2 : 1
169
- return rank(a) - rank(b) || order.indexOf(a.key) - order.indexOf(b.key)
170
- })
171
- })
166
+ const visibleColumns = computed(() =>
167
+ orderColumns(leaves.value, models.hiddenColumns.value, models.columnOrder.value),
168
+ )
172
169
  const knownTotal = computed(() => !props.manual || props.total !== undefined)
173
170
  const total = computed(() =>
174
- props.manual
175
- ? Math.max(0, Math.floor(Number.isFinite(props.total) ? props.total! : props.rows.length))
176
- : table.getPreExpandedRowModel().rows.length,
171
+ totalRows(
172
+ props.manual,
173
+ props.total,
174
+ props.rows.length,
175
+ () => table.getPreExpandedRowModel().rows.length,
176
+ ),
177
177
  )
178
- const pageCount = computed(() => Math.max(1, Math.ceil(total.value / pageSize.value)))
178
+ const pageCount = computed(() => countPages(total.value, pageSize.value))
179
179
  const canNext = computed(() =>
180
- knownTotal.value
181
- ? page.value < pageCount.value
182
- : (props.hasNextPage ?? props.rows.length >= pageSize.value),
180
+ canGoNext(
181
+ knownTotal.value,
182
+ page.value,
183
+ pageCount.value,
184
+ props.hasNextPage,
185
+ props.rows.length,
186
+ pageSize.value,
187
+ ),
183
188
  )
184
189
  function toggleExpanded(key: DataTableKey, value?: boolean) {
185
190
  if (blocked.value) return
186
191
  const row = table.getCoreRowModel().rowsById[rowId(key)]
187
192
  if (!row?.getCanExpand()) return
188
193
  const next = value ?? !models.expanded.value.includes(key)
189
- models.expanded.value = next
190
- ? [...new Set([...models.expanded.value, key])]
191
- : models.expanded.value.filter(item => item !== key)
194
+ models.expanded.value = toggleKey(models.expanded.value, key, next)
192
195
  }
193
196
  function toggleSelected(key: DataTableKey, value?: boolean) {
194
197
  if (blocked.value) return
@@ -225,9 +228,7 @@ export function useDataTable<T extends object>(
225
228
  toggleExpanded: value => {
226
229
  if (blocked.value) return
227
230
  const next = value ?? !models.expandedGroups.value.includes(row.id)
228
- models.expandedGroups.value = next
229
- ? [...new Set([...models.expandedGroups.value, row.id])]
230
- : models.expandedGroups.value.filter(key => key !== row.id)
231
+ models.expandedGroups.value = toggleKey(models.expandedGroups.value, row.id, next)
231
232
  },
232
233
  aggregate: key => {
233
234
  const column = leaves.value.find(column => column.key === key)
@@ -244,43 +245,28 @@ export function useDataTable<T extends object>(
244
245
  return { ...context, id: row.id, label: labelOf(row.original), group }
245
246
  }),
246
247
  )
247
- const selectionRows = computed(() => {
248
- const source =
248
+ const selectionRows = computed(() =>
249
+ uniqueSelectable(
249
250
  props.selectAll === 'filtered'
250
251
  ? table.getFilteredRowModel().flatRows
251
- : table.getRowModel().rows.flatMap(row => (row.getIsGrouped() ? row.getLeafRows() : [row]))
252
- return [...new Map(source.filter(row => row.getCanSelect()).map(row => [row.id, row])).values()]
253
- })
254
- const pageSelection = computed(() => {
255
- const eligible = selectionRows.value
256
- if (!eligible.length) return false
257
- const count = eligible.filter(row => row.getIsSelected()).length
258
- return count === eligible.length
259
- ? true
260
- : count || eligible.some(row => row.getIsSomeSelected())
261
- ? 'indeterminate'
262
- : false
263
- })
252
+ : table.getRowModel().rows.flatMap(row => (row.getIsGrouped() ? row.getLeafRows() : [row])),
253
+ ),
254
+ )
255
+ const pageSelection = computed(() => selectionState(selectionRows.value))
264
256
  const selectionDisabled = computed(() => blocked.value || !selectionRows.value.length)
265
257
  function togglePage(selected: boolean | 'indeterminate') {
266
258
  if (blocked.value || props.selectionMode === 'single') return
267
- const keys = new Set(models.selected.value)
268
- for (const row of selectionRows.value) {
269
- const descendants = props.selectChildren === false ? [row] : [row, ...row.getLeafRows()]
270
- for (const item of descendants)
271
- if (item.getCanSelect()) {
272
- if (selected === true) keys.add(keyOf(item.original))
273
- else keys.delete(keyOf(item.original))
274
- }
275
- }
276
- models.selected.value = [...keys]
259
+ models.selected.value = toggleSelection(
260
+ models.selected.value,
261
+ selectionRows.value,
262
+ selected,
263
+ props.selectChildren !== false,
264
+ keyOf,
265
+ )
277
266
  }
278
267
  function setFilter(column: string, value: unknown) {
279
268
  if (blocked.value) return
280
- const next = models.columnFilters.value.filter(filter => filter.key !== column)
281
- if (value != null && value !== '' && !(Array.isArray(value) && !value.length))
282
- next.push({ key: column, value })
283
- models.columnFilters.value = next
269
+ models.columnFilters.value = nextColumnFilters(models.columnFilters.value, column, value)
284
270
  }
285
271
  function headerContext(column: DataTableColumn<T>) {
286
272
  const engine = leaves.value.some(item => item.key === column.key)
@@ -294,17 +280,8 @@ export function useDataTable<T extends object>(
294
280
  sortIndex: engine?.getSortIndex() ?? -1,
295
281
  filterValue: models.columnFilters.value.find(filter => filter.key === column.key)?.value,
296
282
  setFilter: (value: unknown) => setFilter(column.key, value),
297
- nextLabel:
298
- next === 'asc'
299
- ? t.value.table.sortAsc
300
- : next === 'desc'
301
- ? t.value.table.sortDesc
302
- : t.value.table.sortNone,
303
- ariaSort: sorting
304
- ? sorting === 'asc'
305
- ? ('ascending' as const)
306
- : ('descending' as const)
307
- : undefined,
283
+ nextLabel: sortLabel(next, t.value.table),
284
+ ariaSort: ariaSort(sorting),
308
285
  toggleSort: (multi = false) => {
309
286
  if (!blocked.value && column.sortable)
310
287
  engine?.toggleSorting(undefined, !!props.multiSort && multi)
@@ -328,9 +305,7 @@ export function useDataTable<T extends object>(
328
305
  toggleExpanded,
329
306
  setFilter,
330
307
  setColumnHidden: (key: string, hidden: boolean) => {
331
- models.hiddenColumns.value = hidden
332
- ? [...new Set([...models.hiddenColumns.value, key])]
333
- : models.hiddenColumns.value.filter(value => value !== key)
308
+ models.hiddenColumns.value = toggleKey(models.hiddenColumns.value, key, hidden)
334
309
  },
335
310
  })
336
311
  const state = computed<DataTableState<T>>(() => ({
@@ -363,8 +338,14 @@ export function useDataTable<T extends object>(
363
338
  watch(
364
339
  [pageCount, page, () => props.loading, () => props.pagination, knownTotal],
365
340
  () => {
366
- if (props.pagination && !props.loading && knownTotal.value && page.value > pageCount.value)
367
- models.page.value = pageCount.value
341
+ const target = clampedPage(
342
+ props.pagination,
343
+ props.loading,
344
+ knownTotal.value,
345
+ page.value,
346
+ pageCount.value,
347
+ )
348
+ if (target !== undefined) models.page.value = target
368
349
  },
369
350
  { immediate: true },
370
351
  )
@@ -378,14 +359,14 @@ export function useDataTable<T extends object>(
378
359
  models.grouping.value,
379
360
  ],
380
361
  () => {
381
- onChange({
382
- page: page.value,
383
- pageSize: pageSize.value,
384
- sorting: models.sorting.value.map(sort => ({ ...sort })),
385
- filter: models.filter.value,
386
- columnFilters: models.columnFilters.value.map(filter => ({ ...filter })),
387
- grouping: [...models.grouping.value],
388
- })
362
+ onChange(
363
+ tableQuery(page.value, pageSize.value, {
364
+ sorting: models.sorting.value,
365
+ filter: models.filter.value,
366
+ columnFilters: models.columnFilters.value,
367
+ grouping: models.grouping.value,
368
+ }),
369
+ )
389
370
  },
390
371
  { deep: true, flush: 'post' },
391
372
  )
@@ -395,8 +376,7 @@ export function useDataTable<T extends object>(
395
376
  onRowClick(row, event)
396
377
  }
397
378
  function displayValue(row: T, column: DataTableColumn<T>) {
398
- const value = valueOf(row, column)
399
- return column.format ? column.format(value, row) : value == null ? '—' : String(value)
379
+ return formatValue(row, column)
400
380
  }
401
381
  return {
402
382
  api,
@@ -10,6 +10,15 @@ import {
10
10
  import { cssSize } from '../utils'
11
11
  import { allocateWidths, pixelWidth } from '../column-sizing'
12
12
  import { columnSizingStyles } from '../column-sizing-styles'
13
+ import {
14
+ canMoveColumn,
15
+ cellStyle as layoutCellStyle,
16
+ controlStyle as layoutControlStyle,
17
+ headerRows as layoutHeaderRows,
18
+ moveColumnOrder,
19
+ pinStyle as layoutPinStyle,
20
+ type DataTablePinLayout,
21
+ } from '../../../../../shared/src/lib/data-table/layout'
13
22
  import { useTableResize } from './useTableResize'
14
23
  import { useTableResizeHandles } from './useTableResizeHandles'
15
24
  import type { DataTableColumn, DataTableHeader, DataTableProps } from '../types'
@@ -130,106 +139,35 @@ export function useTableColumns<T extends object>(
130
139
  function columnStyle(column: DataTableColumn<T>): CSSProperties {
131
140
  return { width: cssSize(constrained.value ? widthVariable(column) : column.width) }
132
141
  }
142
+ const pinLayout = (): DataTablePinLayout<T> => ({
143
+ columns: ctl.visibleColumns.value,
144
+ constrained: constrained.value,
145
+ leading: leading.value,
146
+ trailing: trailing.value,
147
+ get fixedWidths() {
148
+ return fixedWidths.value
149
+ },
150
+ width,
151
+ })
133
152
  function pinStyle(column: DataTableColumn<T>, head = false): CSSProperties {
134
- if (!column.pin) return {}
135
- const siblings = ctl.visibleColumns.value.filter(item => item.pin === column.pin)
136
- const index = siblings.findIndex(item => item.key === column.key)
137
- const preceding = column.pin === 'start' ? siblings.slice(0, index) : siblings.slice(index + 1)
138
- const controls = column.pin === 'start' ? leading.value * 48 : trailing.value * 72
139
- const offset = `${preceding.reduce(
140
- (sum, column) => sum + (constrained.value ? fixedWidths.value[column.key]! : width(column)),
141
- controls,
142
- )}px`
143
- return {
144
- position: 'sticky',
145
- [column.pin === 'start' ? 'insetInlineStart' : 'insetInlineEnd']: offset,
146
- zIndex: head ? 5 : 1,
147
- backgroundColor: head ? 'var(--hn-table-head-bg)' : 'var(--hn-table-bg)',
148
- boxShadow: `${column.pin === 'start' ? '1px' : '-1px'} 0 0 var(--hn-border)`,
149
- }
153
+ return layoutPinStyle(pinLayout(), column, head)
150
154
  }
151
155
  function cellStyle(column: DataTableColumn<T>, head = false): CSSProperties {
152
- return {
153
- ...(constrained.value
154
- ? {}
155
- : {
156
- width: cssSize(column.width),
157
- minWidth: cssSize(column.minWidth ?? column.width),
158
- maxWidth: cssSize(column.maxWidth),
159
- }),
160
- ...pinStyle(column, head),
161
- }
156
+ return layoutCellStyle(pinLayout(), column, head)
162
157
  }
163
158
  function controlStyle(side: 'start' | 'end', index: number, head = false): CSSProperties {
164
- return {
165
- width: side === 'end' ? '72px' : '48px',
166
- minWidth: side === 'end' ? '72px' : '48px',
167
- paddingInline: '8px',
168
- textAlign: 'center',
169
- ...(ctl.visibleColumns.value.some(column => column.pin === side)
170
- ? {
171
- position: 'sticky',
172
- [side === 'start' ? 'insetInlineStart' : 'insetInlineEnd']: `${index * 48}px`,
173
- zIndex: head ? 5 : 1,
174
- backgroundColor: head ? 'var(--hn-table-head-bg)' : 'var(--hn-table-bg)',
175
- }
176
- : {}),
177
- }
159
+ return layoutControlStyle(ctl.visibleColumns.value, side, index, head)
178
160
  }
179
- const headerRows = computed<DataTableHeader<T>[][]>(() => {
180
- const paths = new Map<string, DataTableColumn<T>[]>()
181
- function visit(columns: DataTableColumn<T>[], parent: DataTableColumn<T>[] = []) {
182
- for (const column of columns) {
183
- const path = [...parent, column]
184
- if (column.children?.length) visit(column.children, path)
185
- else paths.set(column.key, path)
186
- }
187
- }
188
- visit(props.columns)
189
- const visible = ctl.visibleColumns.value
190
- const depth = Math.max(1, ...visible.map(column => paths.get(column.key)!.length))
191
- return Array.from({ length: depth }, (_, level) => {
192
- const result: DataTableHeader<T>[] = []
193
- for (let index = 0; index < visible.length;) {
194
- const first = visible[index]!
195
- const path = paths.get(first.key)!
196
- const column = path[level]
197
- if (!column) {
198
- index++
199
- continue
200
- }
201
- const leaf = level === path.length - 1
202
- let end = index + 1
203
- if (!leaf)
204
- while (
205
- end < visible.length &&
206
- paths.get(visible[end]!.key)?.[level]?.key === column.key &&
207
- visible[end]!.pin === first.pin
208
- )
209
- end++
210
- const top = Array.from({ length: level }, (_, i) => heights.value[i] ?? 44).reduce(
211
- (a, b) => a + b,
212
- 0,
213
- )
214
- result.push({
215
- ...ctl.headerContext(column),
216
- id: leaf ? `leaf:${column.key}` : `${level}:${column.key}:${first.key}`,
217
- leaf,
218
- colspan: end - index,
219
- rowspan: leaf ? depth - level : 1,
220
- top,
221
- style: {
222
- ...(leaf
223
- ? cellStyle(column, true)
224
- : pinStyle(first.pin === 'end' ? visible[end - 1]! : first, true)),
225
- ...(props.stickyHeader ? { top: `${top}px` } : {}),
226
- },
227
- })
228
- index = end
229
- }
230
- return result
231
- })
232
- })
161
+ const headerRows = computed<DataTableHeader<T>[][]>(() =>
162
+ layoutHeaderRows(
163
+ props.columns,
164
+ ctl.visibleColumns.value,
165
+ heights.value,
166
+ props.stickyHeader,
167
+ ctl.headerContext,
168
+ (column, leaf) => (leaf ? cellStyle(column, true) : pinStyle(column, true)),
169
+ ),
170
+ )
233
171
  const sizing = computed<CSSProperties>(() =>
234
172
  constrained.value
235
173
  ? columnSizingStyles(
@@ -251,26 +189,13 @@ export function useTableColumns<T extends object>(
251
189
  '--hn-table-viewport-width': available.value ? `${available.value}px` : undefined,
252
190
  }))
253
191
  function moveColumn(key: string, target: string) {
254
- if (ctl.blocked.value || key === target) return
255
- const columns = ctl.visibleColumns.value
256
- const source = columns.find(column => column.key === key),
257
- destination = columns.find(column => column.key === target)
258
- if (
259
- !source ||
260
- !destination ||
261
- source.pin !== destination.pin ||
262
- source.reorderable === false ||
263
- destination.reorderable === false
192
+ if (ctl.blocked.value || !canMoveColumn(ctl.visibleColumns.value, key, target)) return
193
+ models.columnOrder.value = moveColumnOrder(
194
+ models.columnOrder.value,
195
+ ctl.leaves.value,
196
+ key,
197
+ target,
264
198
  )
265
- return
266
- const order = [
267
- ...new Set([...models.columnOrder.value, ...ctl.leaves.value.map(column => column.key)]),
268
- ]
269
- const from = order.indexOf(key),
270
- to = order.indexOf(target)
271
- order.splice(from, 1)
272
- order.splice(to, 0, key)
273
- models.columnOrder.value = order
274
199
  }
275
200
  Object.assign(ctl.api, { setColumnWidth: resizing.setWidth, moveColumn })
276
201
  onScopeDispose(() => {
@@ -1,5 +1,10 @@
1
1
  import { computed, nextTick, onScopeDispose, shallowRef, type Ref, type CSSProperties } from 'vue'
2
2
  import { rowId } from '../utils'
3
+ import {
4
+ dropColumnOrder,
5
+ reorderPosition,
6
+ reorderedRows,
7
+ } from '../../../../../shared/src/lib/data-table/layout'
3
8
  import type { DataTableKey, DataTableProps, DataTableReorder } from '../types'
4
9
  import type { DataTableController, DataTableModels } from './useDataTable'
5
10
 
@@ -59,12 +64,16 @@ export function useTableDrag<T extends object>(
59
64
  if (!source) return
60
65
  const from = source.findIndex(item => ctl.keyOf(item) === key),
61
66
  to = source.findIndex(item => ctl.keyOf(item) === targetKey)
62
- const position = before === undefined ? to : to + (before ? 0 : 1) - (from < to ? 1 : 0)
67
+ const position = reorderPosition(from, to, before)
63
68
  if (position === from) return
64
- const rows = [...source]
65
- rows.splice(from, 1)
66
- rows.splice(position, 0, row.original)
67
- onReorder({ row: row.original, target: target.original, parent, from, to: position, rows })
69
+ onReorder({
70
+ row: row.original,
71
+ target: target.original,
72
+ parent,
73
+ from,
74
+ to: position,
75
+ rows: reorderedRows(source, from, position, row.original),
76
+ })
68
77
  }
69
78
  function start(kind: 'row' | 'column', key: string, label: string, event: PointerEvent) {
70
79
  if (event.button !== 0 || ctl.blocked.value || (kind === 'row' && !ordered.value)) return
@@ -209,12 +218,13 @@ export function useTableDrag<T extends object>(
209
218
  cleanup?.()
210
219
  if (!apply || !destination) return
211
220
  if (kind === 'column') {
212
- const order = [
213
- ...new Set([...models.columnOrder.value, ...ctl.leaves.value.map(column => column.key)]),
214
- ]
215
- order.splice(order.indexOf(key), 1)
216
- order.splice(order.indexOf(destination.target) + (destination.before ? 0 : 1), 0, key)
217
- models.columnOrder.value = order
221
+ models.columnOrder.value = dropColumnOrder(
222
+ models.columnOrder.value,
223
+ ctl.leaves.value,
224
+ key,
225
+ destination.target,
226
+ destination.before,
227
+ )
218
228
  } else {
219
229
  const all = ctl.table.getCoreRowModel().rowsById
220
230
  const row = all[key],
@@ -1,44 +1,20 @@
1
+ import { downloadCsv, tableCsv } from '../../../../../shared/src/lib/data-table/csv'
1
2
  import type { DataTableExportOptions } from '../types'
2
3
  import type { DataTableController } from './useDataTable'
3
4
 
4
5
  export function useTableExport<T extends object>(ctl: DataTableController<T>) {
5
6
  function toCsv(options: DataTableExportOptions = {}) {
6
- const delimiter = options.delimiter ?? ','
7
- const columns = ctl.visibleColumns.value.filter(
8
- column =>
9
- column.exportable !== false && (!options.columns || options.columns.includes(column.key)),
7
+ return tableCsv(
8
+ ctl.visibleColumns.value,
9
+ ctl.api.getRows(options.scope ?? 'filtered'),
10
+ options,
11
+ ctl.valueOf,
12
+ ctl.displayValue,
10
13
  )
11
- const escape = (value: unknown) => {
12
- let text = value == null ? '' : String(value)
13
- if (typeof value === 'string' && /^[\s]*[=+@-]/.test(text)) text = "'" + text
14
- return '"' + text.replaceAll('"', '""') + '"'
15
- }
16
- const lines = [columns.map(column => escape(column.label)).join(delimiter)]
17
- for (const row of ctl.api.getRows(options.scope ?? 'filtered')) {
18
- lines.push(
19
- columns
20
- .map(column =>
21
- escape(
22
- column.exportValue
23
- ? column.exportValue(row)
24
- : options.formatted
25
- ? ctl.displayValue(row, column)
26
- : ctl.valueOf(row, column),
27
- ),
28
- )
29
- .join(delimiter),
30
- )
31
- }
32
- return (options.bom === false ? '' : '\uFEFF') + lines.join('\r\n')
33
14
  }
34
15
  function exportCsv(options: DataTableExportOptions = {}) {
35
16
  if (typeof document === 'undefined') return
36
- const url = URL.createObjectURL(new Blob([toCsv(options)], { type: 'text/csv;charset=utf-8' }))
37
- const anchor = document.createElement('a')
38
- anchor.href = url
39
- anchor.download = options.filename ?? 'data.csv'
40
- anchor.click()
41
- setTimeout(() => URL.revokeObjectURL(url), 1000)
17
+ downloadCsv(toCsv(options), options.filename)
42
18
  }
43
19
  Object.assign(ctl.api, { toCsv, exportCsv })
44
20
  }
@@ -1,5 +1,9 @@
1
1
  import { nextTick, onScopeDispose, shallowRef, watch, type Ref } from 'vue'
2
2
  import { clampWidth, resizeBoundary, resizeBounds, resizeWidths } from '../column-sizing'
3
+ import {
4
+ pinnedMaximumWidth,
5
+ resizeAffectedColumns,
6
+ } from '../../../../../shared/src/lib/data-table/resize'
3
7
  import type { DataTableColumn, DataTableProps } from '../types'
4
8
  import type { DataTableController, DataTableModels } from './useDataTable'
5
9
 
@@ -25,14 +29,8 @@ export function useTableResize<T extends object>(
25
29
  let release: (() => void) | undefined
26
30
  const boundary = (column: DataTableColumn<T>) =>
27
31
  resizeBoundary(ctl.visibleColumns.value, column, props.resizeMode ?? 'fit')
28
- const affectedColumns = (column: DataTableColumn<T>) => {
29
- const edge = boundary(column)
30
- return edge?.neighbor
31
- ? edge.side === 'start'
32
- ? [edge.neighbor, column]
33
- : [column, edge.neighbor]
34
- : [column]
35
- }
32
+ const affectedColumns = (column: DataTableColumn<T>) =>
33
+ resizeAffectedColumns(ctl.visibleColumns.value, column, props.resizeMode ?? 'fit')
36
34
  const resizeLabel = (column: DataTableColumn<T>) =>
37
35
  affectedColumns(column)
38
36
  .map(item => item.label)
@@ -42,16 +40,14 @@ export function useTableResize<T extends object>(
42
40
  .map(item => `${item.label}: ${Math.round(widths.value[item.key]!)}px`)
43
41
  .join(' / ')
44
42
  const minimumTotalWidth = () => (props.resizeMode === 'expand' ? Math.max(0, available.value) : 0)
45
- const maximumWidth = (column: DataTableColumn<T>, source: Record<string, number>) => {
46
- if (!column.pin || boundary(column)?.neighbor?.pin) return Infinity
47
- const columns = ctl.visibleColumns.value
48
- const otherPinned = columns.reduce(
49
- (sum, item) => sum + (item.pin && item.key !== column.key ? source[item.key]! : 0),
50
- 0,
43
+ const maximumWidth = (column: DataTableColumn<T>, source: Record<string, number>) =>
44
+ pinnedMaximumWidth(
45
+ ctl.visibleColumns.value,
46
+ column,
47
+ props.resizeMode ?? 'fit',
48
+ source,
49
+ available.value,
51
50
  )
52
- const center = columns.some(item => !item.pin) ? 48 : 0
53
- return Math.max(source[column.key]!, available.value - otherPinned - center)
54
- }
55
51
  const bounds = (column: DataTableColumn<T>) =>
56
52
  resizeBounds(
57
53
  column,