@zerodep-dev/vue-tsx-pro-ui 0.0.0-stage → 0.1.0

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 (1109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -2
  3. package/dist/base/Badge.d.ts +28 -0
  4. package/dist/base/Badge.js +72 -0
  5. package/dist/base/Badge.js.map +1 -0
  6. package/dist/base/Blockquote.d.ts +13 -0
  7. package/dist/base/Blockquote.js +26 -0
  8. package/dist/base/Blockquote.js.map +1 -0
  9. package/dist/base/Button.d.ts +18 -0
  10. package/dist/base/Button.js +86 -0
  11. package/dist/base/Button.js.map +1 -0
  12. package/dist/base/ButtonBase.d.ts +21 -0
  13. package/dist/base/ButtonBase.js +51 -0
  14. package/dist/base/ButtonBase.js.map +1 -0
  15. package/dist/base/ButtonGroup.d.ts +24 -0
  16. package/dist/base/ButtonGroup.js +52 -0
  17. package/dist/base/ButtonGroup.js.map +1 -0
  18. package/dist/base/CloseButton.d.ts +15 -0
  19. package/dist/base/CloseButton.js +38 -0
  20. package/dist/base/CloseButton.js.map +1 -0
  21. package/dist/base/Code.d.ts +13 -0
  22. package/dist/base/Code.js +27 -0
  23. package/dist/base/Code.js.map +1 -0
  24. package/dist/base/CodeBlock.d.ts +89 -0
  25. package/dist/base/CodeBlock.js +265 -0
  26. package/dist/base/CodeBlock.js.map +1 -0
  27. package/dist/base/CopyButton.d.ts +40 -0
  28. package/dist/base/CopyButton.js +113 -0
  29. package/dist/base/CopyButton.js.map +1 -0
  30. package/dist/base/Heading.d.ts +49 -0
  31. package/dist/base/Heading.js +122 -0
  32. package/dist/base/Heading.js.map +1 -0
  33. package/dist/base/Icon.d.ts +48 -0
  34. package/dist/base/Icon.js +110 -0
  35. package/dist/base/Icon.js.map +1 -0
  36. package/dist/base/IconButton.d.ts +34 -0
  37. package/dist/base/IconButton.js +81 -0
  38. package/dist/base/IconButton.js.map +1 -0
  39. package/dist/base/IconLinkButton.d.ts +34 -0
  40. package/dist/base/IconLinkButton.js +81 -0
  41. package/dist/base/IconLinkButton.js.map +1 -0
  42. package/dist/base/Indicator.d.ts +126 -0
  43. package/dist/base/Indicator.js +158 -0
  44. package/dist/base/Indicator.js.map +1 -0
  45. package/dist/base/Kbd.d.ts +13 -0
  46. package/dist/base/Kbd.js +34 -0
  47. package/dist/base/Kbd.js.map +1 -0
  48. package/dist/base/Link.d.ts +61 -0
  49. package/dist/base/Link.js +114 -0
  50. package/dist/base/Link.js.map +1 -0
  51. package/dist/base/LinkButton.d.ts +18 -0
  52. package/dist/base/LinkButton.js +109 -0
  53. package/dist/base/LinkButton.js.map +1 -0
  54. package/dist/base/List.d.ts +61 -0
  55. package/dist/base/List.js +116 -0
  56. package/dist/base/List.js.map +1 -0
  57. package/dist/base/Mark.d.ts +13 -0
  58. package/dist/base/Mark.js +23 -0
  59. package/dist/base/Mark.js.map +1 -0
  60. package/dist/base/Spinner.d.ts +20 -0
  61. package/dist/base/Spinner.js +59 -0
  62. package/dist/base/Spinner.js.map +1 -0
  63. package/dist/base/StatusDot.d.ts +48 -0
  64. package/dist/base/StatusDot.js +62 -0
  65. package/dist/base/StatusDot.js.map +1 -0
  66. package/dist/base/Tag.d.ts +29 -0
  67. package/dist/base/Tag.js +92 -0
  68. package/dist/base/Tag.js.map +1 -0
  69. package/dist/base/Text.d.ts +57 -0
  70. package/dist/base/Text.js +74 -0
  71. package/dist/base/Text.js.map +1 -0
  72. package/dist/base/VisuallyHidden.d.ts +13 -0
  73. package/dist/base/VisuallyHidden.js +28 -0
  74. package/dist/base/VisuallyHidden.js.map +1 -0
  75. package/dist/base/badge-styles.d.ts +57 -0
  76. package/dist/base/badge-styles.js +329 -0
  77. package/dist/base/badge-styles.js.map +1 -0
  78. package/dist/base/button-core.d.ts +191 -0
  79. package/dist/base/button-core.js +660 -0
  80. package/dist/base/button-core.js.map +1 -0
  81. package/dist/charts/AreaChart.d.ts +18 -0
  82. package/dist/charts/AreaChart.js +90 -0
  83. package/dist/charts/AreaChart.js.map +1 -0
  84. package/dist/charts/BarChart.d.ts +19 -0
  85. package/dist/charts/BarChart.js +88 -0
  86. package/dist/charts/BarChart.js.map +1 -0
  87. package/dist/charts/ChordChart.d.ts +48 -0
  88. package/dist/charts/ChordChart.js +149 -0
  89. package/dist/charts/ChordChart.js.map +1 -0
  90. package/dist/charts/ComboChart.d.ts +30 -0
  91. package/dist/charts/ComboChart.js +157 -0
  92. package/dist/charts/ComboChart.js.map +1 -0
  93. package/dist/charts/DonutChart.d.ts +65 -0
  94. package/dist/charts/DonutChart.js +162 -0
  95. package/dist/charts/DonutChart.js.map +1 -0
  96. package/dist/charts/FunnelChart.d.ts +69 -0
  97. package/dist/charts/FunnelChart.js +181 -0
  98. package/dist/charts/FunnelChart.js.map +1 -0
  99. package/dist/charts/GraphChart.d.ts +135 -0
  100. package/dist/charts/GraphChart.js +274 -0
  101. package/dist/charts/GraphChart.js.map +1 -0
  102. package/dist/charts/LineChart.d.ts +50 -0
  103. package/dist/charts/LineChart.js +94 -0
  104. package/dist/charts/LineChart.js.map +1 -0
  105. package/dist/charts/MapChart.d.ts +167 -0
  106. package/dist/charts/MapChart.js +627 -0
  107. package/dist/charts/MapChart.js.map +1 -0
  108. package/dist/charts/RadarChart.d.ts +60 -0
  109. package/dist/charts/RadarChart.js +224 -0
  110. package/dist/charts/RadarChart.js.map +1 -0
  111. package/dist/charts/SankeyChart.d.ts +57 -0
  112. package/dist/charts/SankeyChart.js +150 -0
  113. package/dist/charts/SankeyChart.js.map +1 -0
  114. package/dist/charts/ScatterChart.d.ts +18 -0
  115. package/dist/charts/ScatterChart.js +82 -0
  116. package/dist/charts/ScatterChart.js.map +1 -0
  117. package/dist/charts/TimelineChart.d.ts +71 -0
  118. package/dist/charts/TimelineChart.js +267 -0
  119. package/dist/charts/TimelineChart.js.map +1 -0
  120. package/dist/charts/TreemapChart.d.ts +40 -0
  121. package/dist/charts/TreemapChart.js +155 -0
  122. package/dist/charts/TreemapChart.js.map +1 -0
  123. package/dist/charts/WaterfallChart.d.ts +61 -0
  124. package/dist/charts/WaterfallChart.js +167 -0
  125. package/dist/charts/WaterfallChart.js.map +1 -0
  126. package/dist/charts/XYChart.d.ts +206 -0
  127. package/dist/charts/XYChart.js +520 -0
  128. package/dist/charts/XYChart.js.map +1 -0
  129. package/dist/charts/axis-ticks.d.ts +23 -0
  130. package/dist/charts/axis-ticks.js +59 -0
  131. package/dist/charts/axis-ticks.js.map +1 -0
  132. package/dist/charts/export.d.ts +17 -0
  133. package/dist/charts/export.js +65 -0
  134. package/dist/charts/export.js.map +1 -0
  135. package/dist/charts/flow.d.ts +53 -0
  136. package/dist/charts/flow.js +29 -0
  137. package/dist/charts/flow.js.map +1 -0
  138. package/dist/charts/frame.d.ts +147 -0
  139. package/dist/charts/frame.js +358 -0
  140. package/dist/charts/frame.js.map +1 -0
  141. package/dist/charts/index.d.ts +30 -0
  142. package/dist/charts/index.js +24 -0
  143. package/dist/charts/label-layout.d.ts +59 -0
  144. package/dist/charts/label-layout.js +64 -0
  145. package/dist/charts/label-layout.js.map +1 -0
  146. package/dist/charts/series.d.ts +36 -0
  147. package/dist/charts/series.js +60 -0
  148. package/dist/charts/series.js.map +1 -0
  149. package/dist/charts/single.d.ts +41 -0
  150. package/dist/charts/single.js +65 -0
  151. package/dist/charts/single.js.map +1 -0
  152. package/dist/config/Provider.d.ts +52 -0
  153. package/dist/config/Provider.js +111 -0
  154. package/dist/config/Provider.js.map +1 -0
  155. package/dist/config/context.d.ts +90 -0
  156. package/dist/config/context.js +58 -0
  157. package/dist/config/context.js.map +1 -0
  158. package/dist/config/createUi.d.ts +52 -0
  159. package/dist/config/createUi.js +96 -0
  160. package/dist/config/createUi.js.map +1 -0
  161. package/dist/config/defaults.d.ts +71 -0
  162. package/dist/config/defaults.js +45 -0
  163. package/dist/config/defaults.js.map +1 -0
  164. package/dist/config/lang/en-US.d.ts +3 -0
  165. package/dist/config/lang/en-US.js +386 -0
  166. package/dist/config/lang/en-US.js.map +1 -0
  167. package/dist/config/lang/format.d.ts +50 -0
  168. package/dist/config/lang/format.js +113 -0
  169. package/dist/config/lang/format.js.map +1 -0
  170. package/dist/config/lang/lang.d.ts +653 -0
  171. package/dist/config/lang/lang.js +22 -0
  172. package/dist/config/lang/lang.js.map +1 -0
  173. package/dist/config/lang/messages.d.ts +12 -0
  174. package/dist/config/lang/messages.js +36 -0
  175. package/dist/config/lang/messages.js.map +1 -0
  176. package/dist/config/lang/zh-CN.d.ts +3 -0
  177. package/dist/config/lang/zh-CN.js +386 -0
  178. package/dist/config/lang/zh-CN.js.map +1 -0
  179. package/dist/config/pinyin.d.ts +3 -0
  180. package/dist/config/pinyin.js +26 -0
  181. package/dist/config/pinyin.js.map +1 -0
  182. package/dist/config/query-state.d.ts +61 -0
  183. package/dist/config/query-state.js +113 -0
  184. package/dist/config/query-state.js.map +1 -0
  185. package/dist/config/shiki.d.ts +13 -0
  186. package/dist/config/shiki.js +97 -0
  187. package/dist/config/shiki.js.map +1 -0
  188. package/dist/config/styles.d.ts +108 -0
  189. package/dist/config/styles.js +59 -0
  190. package/dist/config/styles.js.map +1 -0
  191. package/dist/config/theme/boot.d.ts +97 -0
  192. package/dist/config/theme/boot.js +90 -0
  193. package/dist/config/theme/boot.js.map +1 -0
  194. package/dist/config/theme/builtin.d.ts +21 -0
  195. package/dist/config/theme/builtin.js +58 -0
  196. package/dist/config/theme/builtin.js.map +1 -0
  197. package/dist/config/theme/coffee.d.ts +84 -0
  198. package/dist/config/theme/coffee.js +102 -0
  199. package/dist/config/theme/coffee.js.map +1 -0
  200. package/dist/config/theme/cyberpunk.d.ts +110 -0
  201. package/dist/config/theme/cyberpunk.js +125 -0
  202. package/dist/config/theme/cyberpunk.js.map +1 -0
  203. package/dist/config/theme/dark.d.ts +90 -0
  204. package/dist/config/theme/dark.js +106 -0
  205. package/dist/config/theme/dark.js.map +1 -0
  206. package/dist/config/theme/festive.d.ts +93 -0
  207. package/dist/config/theme/festive.js +110 -0
  208. package/dist/config/theme/festive.js.map +1 -0
  209. package/dist/config/theme/forest.d.ts +93 -0
  210. package/dist/config/theme/forest.js +109 -0
  211. package/dist/config/theme/forest.js.map +1 -0
  212. package/dist/config/theme/high-contrast.d.ts +103 -0
  213. package/dist/config/theme/high-contrast.js +119 -0
  214. package/dist/config/theme/high-contrast.js.map +1 -0
  215. package/dist/config/theme/lemon.d.ts +103 -0
  216. package/dist/config/theme/lemon.js +119 -0
  217. package/dist/config/theme/lemon.js.map +1 -0
  218. package/dist/config/theme/light.d.ts +107 -0
  219. package/dist/config/theme/light.js +122 -0
  220. package/dist/config/theme/light.js.map +1 -0
  221. package/dist/config/theme/midnight.d.ts +86 -0
  222. package/dist/config/theme/midnight.js +103 -0
  223. package/dist/config/theme/midnight.js.map +1 -0
  224. package/dist/config/theme/ocean.d.ts +103 -0
  225. package/dist/config/theme/ocean.js +119 -0
  226. package/dist/config/theme/ocean.js.map +1 -0
  227. package/dist/config/theme/paper.d.ts +101 -0
  228. package/dist/config/theme/paper.js +117 -0
  229. package/dist/config/theme/paper.js.map +1 -0
  230. package/dist/config/theme/preference.d.ts +34 -0
  231. package/dist/config/theme/preference.js +67 -0
  232. package/dist/config/theme/preference.js.map +1 -0
  233. package/dist/config/theme/sakura.d.ts +103 -0
  234. package/dist/config/theme/sakura.js +119 -0
  235. package/dist/config/theme/sakura.js.map +1 -0
  236. package/dist/config/theme/theme.d.ts +59 -0
  237. package/dist/config/theme/theme.js +68 -0
  238. package/dist/config/theme/theme.js.map +1 -0
  239. package/dist/config/theme/token-names.d.ts +1897 -0
  240. package/dist/config/theme/tokens.d.ts +833 -0
  241. package/dist/config/theme/tokens.js +480 -0
  242. package/dist/config/theme/tokens.js.map +1 -0
  243. package/dist/config/vue-router.d.ts +67 -0
  244. package/dist/config/vue-router.js +143 -0
  245. package/dist/config/vue-router.js.map +1 -0
  246. package/dist/date/Calendar.d.ts +36 -0
  247. package/dist/date/Calendar.js +83 -0
  248. package/dist/date/Calendar.js.map +1 -0
  249. package/dist/date/CalendarBoard.d.ts +79 -0
  250. package/dist/date/CalendarBoard.js +403 -0
  251. package/dist/date/CalendarBoard.js.map +1 -0
  252. package/dist/date/CalendarView.d.ts +86 -0
  253. package/dist/date/CalendarView.js +427 -0
  254. package/dist/date/CalendarView.js.map +1 -0
  255. package/dist/date/Countdown.d.ts +45 -0
  256. package/dist/date/Countdown.js +75 -0
  257. package/dist/date/Countdown.js.map +1 -0
  258. package/dist/date/DateField.d.ts +34 -0
  259. package/dist/date/DateField.js +124 -0
  260. package/dist/date/DateField.js.map +1 -0
  261. package/dist/date/DatePicker.d.ts +41 -0
  262. package/dist/date/DatePicker.js +272 -0
  263. package/dist/date/DatePicker.js.map +1 -0
  264. package/dist/date/DateRangePicker.d.ts +71 -0
  265. package/dist/date/DateRangePicker.js +411 -0
  266. package/dist/date/DateRangePicker.js.map +1 -0
  267. package/dist/date/DateSegmentGroup.d.ts +38 -0
  268. package/dist/date/DateSegmentGroup.js +176 -0
  269. package/dist/date/DateSegmentGroup.js.map +1 -0
  270. package/dist/date/DateTime.d.ts +21 -0
  271. package/dist/date/DateTime.js +39 -0
  272. package/dist/date/DateTime.js.map +1 -0
  273. package/dist/date/QuarterCalendar.d.ts +22 -0
  274. package/dist/date/QuarterCalendar.js +231 -0
  275. package/dist/date/QuarterCalendar.js.map +1 -0
  276. package/dist/date/RangeCalendar.d.ts +24 -0
  277. package/dist/date/RangeCalendar.js +89 -0
  278. package/dist/date/RangeCalendar.js.map +1 -0
  279. package/dist/date/RelativeTime.d.ts +16 -0
  280. package/dist/date/RelativeTime.js +61 -0
  281. package/dist/date/RelativeTime.js.map +1 -0
  282. package/dist/date/SegmentedField.d.ts +60 -0
  283. package/dist/date/SegmentedField.js +175 -0
  284. package/dist/date/SegmentedField.js.map +1 -0
  285. package/dist/date/TimeField.d.ts +36 -0
  286. package/dist/date/TimeField.js +56 -0
  287. package/dist/date/TimeField.js.map +1 -0
  288. package/dist/date/TimePicker.d.ts +25 -0
  289. package/dist/date/TimePicker.js +206 -0
  290. package/dist/date/TimePicker.js.map +1 -0
  291. package/dist/date/calendar-state.d.ts +119 -0
  292. package/dist/date/calendar-state.js +267 -0
  293. package/dist/date/calendar-state.js.map +1 -0
  294. package/dist/date/clock.d.ts +11 -0
  295. package/dist/date/clock.js +37 -0
  296. package/dist/date/clock.js.map +1 -0
  297. package/dist/date/date-locale.d.ts +67 -0
  298. package/dist/date/date-locale.js +89 -0
  299. package/dist/date/date-locale.js.map +1 -0
  300. package/dist/date/date-segments.d.ts +132 -0
  301. package/dist/date/date-segments.js +410 -0
  302. package/dist/date/date-segments.js.map +1 -0
  303. package/dist/date/picker-popover.d.ts +88 -0
  304. package/dist/date/picker-popover.js +126 -0
  305. package/dist/date/picker-popover.js.map +1 -0
  306. package/dist/diagram/Diagram.d.ts +223 -0
  307. package/dist/diagram/Diagram.js +1121 -0
  308. package/dist/diagram/Diagram.js.map +1 -0
  309. package/dist/diagram/DiagramControls.d.ts +35 -0
  310. package/dist/diagram/DiagramControls.js +114 -0
  311. package/dist/diagram/DiagramControls.js.map +1 -0
  312. package/dist/diagram/DiagramLanes.d.ts +49 -0
  313. package/dist/diagram/DiagramLanes.js +92 -0
  314. package/dist/diagram/DiagramLanes.js.map +1 -0
  315. package/dist/diagram/DiagramMinimap.d.ts +39 -0
  316. package/dist/diagram/DiagramMinimap.js +133 -0
  317. package/dist/diagram/DiagramMinimap.js.map +1 -0
  318. package/dist/diagram/DiagramNode.d.ts +65 -0
  319. package/dist/diagram/DiagramNode.js +142 -0
  320. package/dist/diagram/DiagramNode.js.map +1 -0
  321. package/dist/diagram/controller.d.ts +68 -0
  322. package/dist/diagram/controller.js +117 -0
  323. package/dist/diagram/controller.js.map +1 -0
  324. package/dist/diagram/export.d.ts +14 -0
  325. package/dist/diagram/export.js +115 -0
  326. package/dist/diagram/export.js.map +1 -0
  327. package/dist/diagram/geometry.d.ts +65 -0
  328. package/dist/diagram/geometry.js +219 -0
  329. package/dist/diagram/geometry.js.map +1 -0
  330. package/dist/diagram/index.d.ts +19 -0
  331. package/dist/diagram/index.js +11 -0
  332. package/dist/diagram/messages.d.ts +28 -0
  333. package/dist/diagram/messages.js +30 -0
  334. package/dist/diagram/messages.js.map +1 -0
  335. package/dist/diagram/route.d.ts +81 -0
  336. package/dist/diagram/route.js +327 -0
  337. package/dist/diagram/route.js.map +1 -0
  338. package/dist/display/Accordion.d.ts +71 -0
  339. package/dist/display/Accordion.js +219 -0
  340. package/dist/display/Accordion.js.map +1 -0
  341. package/dist/display/AnimatedNumber.d.ts +44 -0
  342. package/dist/display/AnimatedNumber.js +97 -0
  343. package/dist/display/AnimatedNumber.js.map +1 -0
  344. package/dist/display/Avatar.d.ts +74 -0
  345. package/dist/display/Avatar.js +158 -0
  346. package/dist/display/Avatar.js.map +1 -0
  347. package/dist/display/AvatarGroup.d.ts +29 -0
  348. package/dist/display/AvatarGroup.js +67 -0
  349. package/dist/display/AvatarGroup.js.map +1 -0
  350. package/dist/display/Card.d.ts +219 -0
  351. package/dist/display/Card.js +319 -0
  352. package/dist/display/Card.js.map +1 -0
  353. package/dist/display/Checklist.d.ts +93 -0
  354. package/dist/display/Checklist.js +260 -0
  355. package/dist/display/Checklist.js.map +1 -0
  356. package/dist/display/Collapse.d.ts +24 -0
  357. package/dist/display/Collapse.js +65 -0
  358. package/dist/display/Collapse.js.map +1 -0
  359. package/dist/display/Collapsible.d.ts +12 -0
  360. package/dist/display/Collapsible.js +41 -0
  361. package/dist/display/Collapsible.js.map +1 -0
  362. package/dist/display/Descriptions.d.ts +88 -0
  363. package/dist/display/Descriptions.js +185 -0
  364. package/dist/display/Descriptions.js.map +1 -0
  365. package/dist/display/Ellipsis.d.ts +29 -0
  366. package/dist/display/Ellipsis.js +111 -0
  367. package/dist/display/Ellipsis.js.map +1 -0
  368. package/dist/display/FieldCompare.d.ts +58 -0
  369. package/dist/display/FieldCompare.js +205 -0
  370. package/dist/display/FieldCompare.js.map +1 -0
  371. package/dist/display/Gauge.d.ts +60 -0
  372. package/dist/display/Gauge.js +215 -0
  373. package/dist/display/Gauge.js.map +1 -0
  374. package/dist/display/Image.d.ts +87 -0
  375. package/dist/display/Image.js +212 -0
  376. package/dist/display/Image.js.map +1 -0
  377. package/dist/display/ItemList.d.ts +69 -0
  378. package/dist/display/ItemList.js +147 -0
  379. package/dist/display/ItemList.js.map +1 -0
  380. package/dist/display/Marquee.d.ts +59 -0
  381. package/dist/display/Marquee.js +155 -0
  382. package/dist/display/Marquee.js.map +1 -0
  383. package/dist/display/ProportionBar.d.ts +55 -0
  384. package/dist/display/ProportionBar.js +99 -0
  385. package/dist/display/ProportionBar.js.map +1 -0
  386. package/dist/display/Sortable.d.ts +43 -0
  387. package/dist/display/Sortable.js +163 -0
  388. package/dist/display/Sortable.js.map +1 -0
  389. package/dist/display/Sparkline.d.ts +48 -0
  390. package/dist/display/Sparkline.js +130 -0
  391. package/dist/display/Sparkline.js.map +1 -0
  392. package/dist/display/Stat.d.ts +105 -0
  393. package/dist/display/Stat.js +268 -0
  394. package/dist/display/Stat.js.map +1 -0
  395. package/dist/display/Timeline.d.ts +106 -0
  396. package/dist/display/Timeline.js +257 -0
  397. package/dist/display/Timeline.js.map +1 -0
  398. package/dist/display/Tree.d.ts +132 -0
  399. package/dist/display/Tree.js +645 -0
  400. package/dist/display/Tree.js.map +1 -0
  401. package/dist/display/VirtualList.d.ts +80 -0
  402. package/dist/display/VirtualList.js +166 -0
  403. package/dist/display/VirtualList.js.map +1 -0
  404. package/dist/display/Watermark.d.ts +39 -0
  405. package/dist/display/Watermark.js +130 -0
  406. package/dist/display/Watermark.js.map +1 -0
  407. package/dist/docs-kit/CodeGroup.d.ts +29 -0
  408. package/dist/docs-kit/CodeGroup.js +81 -0
  409. package/dist/docs-kit/CodeGroup.js.map +1 -0
  410. package/dist/docs-kit/CodePreview.d.ts +60 -0
  411. package/dist/docs-kit/CodePreview.js +183 -0
  412. package/dist/docs-kit/CodePreview.js.map +1 -0
  413. package/dist/docs-kit/ColorSwatch.d.ts +28 -0
  414. package/dist/docs-kit/ColorSwatch.js +85 -0
  415. package/dist/docs-kit/ColorSwatch.js.map +1 -0
  416. package/dist/docs-kit/PropsTable.d.ts +73 -0
  417. package/dist/docs-kit/PropsTable.js +122 -0
  418. package/dist/docs-kit/PropsTable.js.map +1 -0
  419. package/dist/docs-kit/index.d.ts +13 -0
  420. package/dist/docs-kit/index.js +6 -0
  421. package/dist/docs-kit/messages.d.ts +25 -0
  422. package/dist/docs-kit/messages.js +30 -0
  423. package/dist/docs-kit/messages.js.map +1 -0
  424. package/dist/feedback/Alert.d.ts +83 -0
  425. package/dist/feedback/Alert.js +179 -0
  426. package/dist/feedback/Alert.js.map +1 -0
  427. package/dist/feedback/Banner.d.ts +60 -0
  428. package/dist/feedback/Banner.js +122 -0
  429. package/dist/feedback/Banner.js.map +1 -0
  430. package/dist/feedback/Empty.d.ts +38 -0
  431. package/dist/feedback/Empty.js +114 -0
  432. package/dist/feedback/Empty.js.map +1 -0
  433. package/dist/feedback/LoadingBar.d.ts +45 -0
  434. package/dist/feedback/LoadingBar.js +124 -0
  435. package/dist/feedback/LoadingBar.js.map +1 -0
  436. package/dist/feedback/LoadingOverlay.d.ts +29 -0
  437. package/dist/feedback/LoadingOverlay.js +70 -0
  438. package/dist/feedback/LoadingOverlay.js.map +1 -0
  439. package/dist/feedback/Progress.d.ts +215 -0
  440. package/dist/feedback/Progress.js +437 -0
  441. package/dist/feedback/Progress.js.map +1 -0
  442. package/dist/feedback/Result.d.ts +69 -0
  443. package/dist/feedback/Result.js +165 -0
  444. package/dist/feedback/Result.js.map +1 -0
  445. package/dist/feedback/Skeleton.d.ts +50 -0
  446. package/dist/feedback/Skeleton.js +100 -0
  447. package/dist/feedback/Skeleton.js.map +1 -0
  448. package/dist/feedback/SkeletonText.d.ts +25 -0
  449. package/dist/feedback/SkeletonText.js +40 -0
  450. package/dist/feedback/SkeletonText.js.map +1 -0
  451. package/dist/feedback/Toast.d.ts +204 -0
  452. package/dist/feedback/Toast.js +572 -0
  453. package/dist/feedback/Toast.js.map +1 -0
  454. package/dist/form/Field.d.ts +158 -0
  455. package/dist/form/Field.js +327 -0
  456. package/dist/form/Field.js.map +1 -0
  457. package/dist/form/Form.d.ts +14 -0
  458. package/dist/form/Form.js +66 -0
  459. package/dist/form/Form.js.map +1 -0
  460. package/dist/form/FormErrorSummary.d.ts +23 -0
  461. package/dist/form/FormErrorSummary.js +102 -0
  462. package/dist/form/FormErrorSummary.js.map +1 -0
  463. package/dist/form/FormSection.d.ts +66 -0
  464. package/dist/form/FormSection.js +227 -0
  465. package/dist/form/FormSection.js.map +1 -0
  466. package/dist/form/FormValue.d.ts +17 -0
  467. package/dist/form/FormValue.js +40 -0
  468. package/dist/form/FormValue.js.map +1 -0
  469. package/dist/form/field-layout.d.ts +34 -0
  470. package/dist/form/field-layout.js +39 -0
  471. package/dist/form/field-layout.js.map +1 -0
  472. package/dist/form/form-constraints.d.ts +38 -0
  473. package/dist/form/form-constraints.js +131 -0
  474. package/dist/form/form-constraints.js.map +1 -0
  475. package/dist/form/leave-confirmation.d.ts +9 -0
  476. package/dist/form/leave-confirmation.js +31 -0
  477. package/dist/form/leave-confirmation.js.map +1 -0
  478. package/dist/form/schemas.d.ts +52 -0
  479. package/dist/form/schemas.js +97 -0
  480. package/dist/form/schemas.js.map +1 -0
  481. package/dist/form/useForm.d.ts +192 -0
  482. package/dist/form/useForm.js +394 -0
  483. package/dist/form/useForm.js.map +1 -0
  484. package/dist/index.d.ts +282 -0
  485. package/dist/index.js +282 -0
  486. package/dist/input/Autocomplete.d.ts +14 -0
  487. package/dist/input/Autocomplete.js +35 -0
  488. package/dist/input/Autocomplete.js.map +1 -0
  489. package/dist/input/Cascader.d.ts +86 -0
  490. package/dist/input/Cascader.js +593 -0
  491. package/dist/input/Cascader.js.map +1 -0
  492. package/dist/input/CharacterCount.d.ts +21 -0
  493. package/dist/input/CharacterCount.js +47 -0
  494. package/dist/input/CharacterCount.js.map +1 -0
  495. package/dist/input/Checkbox.d.ts +93 -0
  496. package/dist/input/Checkbox.js +250 -0
  497. package/dist/input/Checkbox.js.map +1 -0
  498. package/dist/input/ColorField.d.ts +37 -0
  499. package/dist/input/ColorField.js +143 -0
  500. package/dist/input/ColorField.js.map +1 -0
  501. package/dist/input/Combobox.d.ts +75 -0
  502. package/dist/input/Combobox.js +321 -0
  503. package/dist/input/Combobox.js.map +1 -0
  504. package/dist/input/ConditionBuilder.d.ts +55 -0
  505. package/dist/input/ConditionBuilder.js +471 -0
  506. package/dist/input/ConditionBuilder.js.map +1 -0
  507. package/dist/input/ControlGroup.d.ts +26 -0
  508. package/dist/input/ControlGroup.js +50 -0
  509. package/dist/input/ControlGroup.js.map +1 -0
  510. package/dist/input/FileDrop.d.ts +49 -0
  511. package/dist/input/FileDrop.js +201 -0
  512. package/dist/input/FileDrop.js.map +1 -0
  513. package/dist/input/ListPopover.d.ts +39 -0
  514. package/dist/input/ListPopover.js +81 -0
  515. package/dist/input/ListPopover.js.map +1 -0
  516. package/dist/input/Listbox.d.ts +91 -0
  517. package/dist/input/Listbox.js +408 -0
  518. package/dist/input/Listbox.js.map +1 -0
  519. package/dist/input/Mentions.d.ts +74 -0
  520. package/dist/input/Mentions.js +287 -0
  521. package/dist/input/Mentions.js.map +1 -0
  522. package/dist/input/NumberField.d.ts +64 -0
  523. package/dist/input/NumberField.js +288 -0
  524. package/dist/input/NumberField.js.map +1 -0
  525. package/dist/input/NumberRangeField.d.ts +58 -0
  526. package/dist/input/NumberRangeField.js +157 -0
  527. package/dist/input/NumberRangeField.js.map +1 -0
  528. package/dist/input/OtpField.d.ts +58 -0
  529. package/dist/input/OtpField.js +200 -0
  530. package/dist/input/OtpField.js.map +1 -0
  531. package/dist/input/PeoplePicker.d.ts +42 -0
  532. package/dist/input/PeoplePicker.js +185 -0
  533. package/dist/input/PeoplePicker.js.map +1 -0
  534. package/dist/input/PeoplePickerPanel.d.ts +42 -0
  535. package/dist/input/PeoplePickerPanel.js +357 -0
  536. package/dist/input/PeoplePickerPanel.js.map +1 -0
  537. package/dist/input/Radio.d.ts +90 -0
  538. package/dist/input/Radio.js +211 -0
  539. package/dist/input/Radio.js.map +1 -0
  540. package/dist/input/Rating.d.ts +62 -0
  541. package/dist/input/Rating.js +225 -0
  542. package/dist/input/Rating.js.map +1 -0
  543. package/dist/input/Select.d.ts +97 -0
  544. package/dist/input/Select.js +455 -0
  545. package/dist/input/Select.js.map +1 -0
  546. package/dist/input/SelectedTags.d.ts +28 -0
  547. package/dist/input/SelectedTags.js +81 -0
  548. package/dist/input/SelectedTags.js.map +1 -0
  549. package/dist/input/Slider.d.ts +99 -0
  550. package/dist/input/Slider.js +343 -0
  551. package/dist/input/Slider.js.map +1 -0
  552. package/dist/input/Switch.d.ts +63 -0
  553. package/dist/input/Switch.js +198 -0
  554. package/dist/input/Switch.js.map +1 -0
  555. package/dist/input/TagsInput.d.ts +70 -0
  556. package/dist/input/TagsInput.js +314 -0
  557. package/dist/input/TagsInput.js.map +1 -0
  558. package/dist/input/TextField.d.ts +51 -0
  559. package/dist/input/TextField.js +185 -0
  560. package/dist/input/TextField.js.map +1 -0
  561. package/dist/input/Textarea.d.ts +50 -0
  562. package/dist/input/Textarea.js +146 -0
  563. package/dist/input/Textarea.js.map +1 -0
  564. package/dist/input/ToggleGroup.d.ts +82 -0
  565. package/dist/input/ToggleGroup.js +211 -0
  566. package/dist/input/ToggleGroup.js.map +1 -0
  567. package/dist/input/Transfer.d.ts +67 -0
  568. package/dist/input/Transfer.js +407 -0
  569. package/dist/input/Transfer.js.map +1 -0
  570. package/dist/input/TreeSelect.d.ts +94 -0
  571. package/dist/input/TreeSelect.js +412 -0
  572. package/dist/input/TreeSelect.js.map +1 -0
  573. package/dist/input/Upload.d.ts +143 -0
  574. package/dist/input/Upload.js +597 -0
  575. package/dist/input/Upload.js.map +1 -0
  576. package/dist/input/choice-styles.d.ts +117 -0
  577. package/dist/input/choice-styles.js +176 -0
  578. package/dist/input/choice-styles.js.map +1 -0
  579. package/dist/input/condition.d.ts +153 -0
  580. package/dist/input/condition.js +169 -0
  581. package/dist/input/condition.js.map +1 -0
  582. package/dist/input/control.d.ts +160 -0
  583. package/dist/input/control.js +236 -0
  584. package/dist/input/control.js.map +1 -0
  585. package/dist/input/list-state.d.ts +118 -0
  586. package/dist/input/list-state.js +186 -0
  587. package/dist/input/list-state.js.map +1 -0
  588. package/dist/input/people.d.ts +65 -0
  589. package/dist/input/people.js +47 -0
  590. package/dist/input/people.js.map +1 -0
  591. package/dist/input/remote-items.d.ts +20 -0
  592. package/dist/input/remote-items.js +36 -0
  593. package/dist/input/remote-items.js.map +1 -0
  594. package/dist/input/text-format.d.ts +46 -0
  595. package/dist/input/text-format.js +64 -0
  596. package/dist/input/text-format.js.map +1 -0
  597. package/dist/layout/Affix.d.ts +32 -0
  598. package/dist/layout/Affix.js +81 -0
  599. package/dist/layout/Affix.js.map +1 -0
  600. package/dist/layout/AsideLayout.d.ts +45 -0
  601. package/dist/layout/AsideLayout.js +69 -0
  602. package/dist/layout/AsideLayout.js.map +1 -0
  603. package/dist/layout/BackTop.d.ts +16 -0
  604. package/dist/layout/BackTop.js +83 -0
  605. package/dist/layout/BackTop.js.map +1 -0
  606. package/dist/layout/Container.d.ts +60 -0
  607. package/dist/layout/Container.js +62 -0
  608. package/dist/layout/Container.js.map +1 -0
  609. package/dist/layout/Flex.d.ts +116 -0
  610. package/dist/layout/Flex.js +109 -0
  611. package/dist/layout/Flex.js.map +1 -0
  612. package/dist/layout/Grid.d.ts +139 -0
  613. package/dist/layout/Grid.js +168 -0
  614. package/dist/layout/Grid.js.map +1 -0
  615. package/dist/layout/PageScrollbar.d.ts +20 -0
  616. package/dist/layout/PageScrollbar.js +49 -0
  617. package/dist/layout/PageScrollbar.js.map +1 -0
  618. package/dist/layout/Prose.d.ts +19 -0
  619. package/dist/layout/Prose.js +37 -0
  620. package/dist/layout/Prose.js.map +1 -0
  621. package/dist/layout/ResizeHandle.d.ts +28 -0
  622. package/dist/layout/ResizeHandle.js +94 -0
  623. package/dist/layout/ResizeHandle.js.map +1 -0
  624. package/dist/layout/ScrollArea.d.ts +99 -0
  625. package/dist/layout/ScrollArea.js +344 -0
  626. package/dist/layout/ScrollArea.js.map +1 -0
  627. package/dist/layout/Separator.d.ts +47 -0
  628. package/dist/layout/Separator.js +96 -0
  629. package/dist/layout/Separator.js.map +1 -0
  630. package/dist/layout/Splitter.d.ts +75 -0
  631. package/dist/layout/Splitter.js +236 -0
  632. package/dist/layout/Splitter.js.map +1 -0
  633. package/dist/layout/ViewportFill.d.ts +26 -0
  634. package/dist/layout/ViewportFill.js +59 -0
  635. package/dist/layout/ViewportFill.js.map +1 -0
  636. package/dist/navigation/Breadcrumbs.d.ts +59 -0
  637. package/dist/navigation/Breadcrumbs.js +150 -0
  638. package/dist/navigation/Breadcrumbs.js.map +1 -0
  639. package/dist/navigation/NavBar.d.ts +35 -0
  640. package/dist/navigation/NavBar.js +182 -0
  641. package/dist/navigation/NavBar.js.map +1 -0
  642. package/dist/navigation/NavList.d.ts +112 -0
  643. package/dist/navigation/NavList.js +375 -0
  644. package/dist/navigation/NavList.js.map +1 -0
  645. package/dist/navigation/PageJump.d.ts +27 -0
  646. package/dist/navigation/PageJump.js +77 -0
  647. package/dist/navigation/PageJump.js.map +1 -0
  648. package/dist/navigation/PageSizeSelect.d.ts +19 -0
  649. package/dist/navigation/PageSizeSelect.js +65 -0
  650. package/dist/navigation/PageSizeSelect.js.map +1 -0
  651. package/dist/navigation/Pager.d.ts +30 -0
  652. package/dist/navigation/Pager.js +111 -0
  653. package/dist/navigation/Pager.js.map +1 -0
  654. package/dist/navigation/Pagination.d.ts +51 -0
  655. package/dist/navigation/Pagination.js +157 -0
  656. package/dist/navigation/Pagination.js.map +1 -0
  657. package/dist/navigation/PaginationBar.d.ts +54 -0
  658. package/dist/navigation/PaginationBar.js +125 -0
  659. package/dist/navigation/PaginationBar.js.map +1 -0
  660. package/dist/navigation/SkipLink.d.ts +16 -0
  661. package/dist/navigation/SkipLink.js +58 -0
  662. package/dist/navigation/SkipLink.js.map +1 -0
  663. package/dist/navigation/Steps.d.ts +93 -0
  664. package/dist/navigation/Steps.js +198 -0
  665. package/dist/navigation/Steps.js.map +1 -0
  666. package/dist/navigation/TableOfContents.d.ts +32 -0
  667. package/dist/navigation/TableOfContents.js +119 -0
  668. package/dist/navigation/TableOfContents.js.map +1 -0
  669. package/dist/navigation/Tabs.d.ts +208 -0
  670. package/dist/navigation/Tabs.js +626 -0
  671. package/dist/navigation/Tabs.js.map +1 -0
  672. package/dist/navigation/Toolbar.d.ts +39 -0
  673. package/dist/navigation/Toolbar.js +67 -0
  674. package/dist/navigation/Toolbar.js.map +1 -0
  675. package/dist/overlay/AlertDialog.d.ts +43 -0
  676. package/dist/overlay/AlertDialog.js +106 -0
  677. package/dist/overlay/AlertDialog.js.map +1 -0
  678. package/dist/overlay/CommandPalette.d.ts +64 -0
  679. package/dist/overlay/CommandPalette.js +250 -0
  680. package/dist/overlay/CommandPalette.js.map +1 -0
  681. package/dist/overlay/ContextMenu.d.ts +21 -0
  682. package/dist/overlay/ContextMenu.js +76 -0
  683. package/dist/overlay/ContextMenu.js.map +1 -0
  684. package/dist/overlay/Dialog.d.ts +70 -0
  685. package/dist/overlay/Dialog.js +91 -0
  686. package/dist/overlay/Dialog.js.map +1 -0
  687. package/dist/overlay/Drawer.d.ts +186 -0
  688. package/dist/overlay/Drawer.js +214 -0
  689. package/dist/overlay/Drawer.js.map +1 -0
  690. package/dist/overlay/HoverCard.d.ts +48 -0
  691. package/dist/overlay/HoverCard.js +86 -0
  692. package/dist/overlay/HoverCard.js.map +1 -0
  693. package/dist/overlay/Lightbox.d.ts +57 -0
  694. package/dist/overlay/Lightbox.js +374 -0
  695. package/dist/overlay/Lightbox.js.map +1 -0
  696. package/dist/overlay/Menu.d.ts +218 -0
  697. package/dist/overlay/Menu.js +816 -0
  698. package/dist/overlay/Menu.js.map +1 -0
  699. package/dist/overlay/ModalCore.d.ts +132 -0
  700. package/dist/overlay/ModalCore.js +274 -0
  701. package/dist/overlay/ModalCore.js.map +1 -0
  702. package/dist/overlay/Popconfirm.d.ts +49 -0
  703. package/dist/overlay/Popconfirm.js +167 -0
  704. package/dist/overlay/Popconfirm.js.map +1 -0
  705. package/dist/overlay/Popover.d.ts +40 -0
  706. package/dist/overlay/Popover.js +96 -0
  707. package/dist/overlay/Popover.js.map +1 -0
  708. package/dist/overlay/Tooltip.d.ts +47 -0
  709. package/dist/overlay/Tooltip.js +86 -0
  710. package/dist/overlay/Tooltip.js.map +1 -0
  711. package/dist/overlay/Tour.d.ts +74 -0
  712. package/dist/overlay/Tour.js +309 -0
  713. package/dist/overlay/Tour.js.map +1 -0
  714. package/dist/overlay/detached.d.ts +40 -0
  715. package/dist/overlay/detached.js +109 -0
  716. package/dist/overlay/detached.js.map +1 -0
  717. package/dist/patterns/ActionBar.d.ts +29 -0
  718. package/dist/patterns/ActionBar.js +75 -0
  719. package/dist/patterns/ActionBar.js.map +1 -0
  720. package/dist/patterns/AppShell.d.ts +168 -0
  721. package/dist/patterns/AppShell.js +620 -0
  722. package/dist/patterns/AppShell.js.map +1 -0
  723. package/dist/patterns/CommentThread.d.ts +128 -0
  724. package/dist/patterns/CommentThread.js +386 -0
  725. package/dist/patterns/CommentThread.js.map +1 -0
  726. package/dist/patterns/DataImport.d.ts +72 -0
  727. package/dist/patterns/DataImport.js +486 -0
  728. package/dist/patterns/DataImport.js.map +1 -0
  729. package/dist/patterns/DeadlineBadge.d.ts +21 -0
  730. package/dist/patterns/DeadlineBadge.js +76 -0
  731. package/dist/patterns/DeadlineBadge.js.map +1 -0
  732. package/dist/patterns/FilterBar.d.ts +66 -0
  733. package/dist/patterns/FilterBar.js +254 -0
  734. package/dist/patterns/FilterBar.js.map +1 -0
  735. package/dist/patterns/KanbanBoard.d.ts +79 -0
  736. package/dist/patterns/KanbanBoard.js +294 -0
  737. package/dist/patterns/KanbanBoard.js.map +1 -0
  738. package/dist/patterns/NotificationCenter.d.ts +110 -0
  739. package/dist/patterns/NotificationCenter.js +342 -0
  740. package/dist/patterns/NotificationCenter.js.map +1 -0
  741. package/dist/patterns/PageTabs.d.ts +30 -0
  742. package/dist/patterns/PageTabs.js +97 -0
  743. package/dist/patterns/PageTabs.js.map +1 -0
  744. package/dist/patterns/QueryTable.d.ts +64 -0
  745. package/dist/patterns/QueryTable.js +276 -0
  746. package/dist/patterns/QueryTable.js.map +1 -0
  747. package/dist/patterns/StepsForm.d.ts +49 -0
  748. package/dist/patterns/StepsForm.js +130 -0
  749. package/dist/patterns/StepsForm.js.map +1 -0
  750. package/dist/patterns/ThemeSwitcher.d.ts +20 -0
  751. package/dist/patterns/ThemeSwitcher.js +102 -0
  752. package/dist/patterns/ThemeSwitcher.js.map +1 -0
  753. package/dist/patterns/form-dialog.d.ts +62 -0
  754. package/dist/patterns/form-dialog.js +143 -0
  755. package/dist/patterns/form-dialog.js.map +1 -0
  756. package/dist/patterns/index.d.ts +24 -0
  757. package/dist/patterns/index.js +15 -0
  758. package/dist/patterns/messages.d.ts +172 -0
  759. package/dist/patterns/messages.js +184 -0
  760. package/dist/patterns/messages.js.map +1 -0
  761. package/dist/table/ColumnHeaderActions.d.ts +71 -0
  762. package/dist/table/ColumnHeaderActions.js +247 -0
  763. package/dist/table/ColumnHeaderActions.js.map +1 -0
  764. package/dist/table/ColumnResizer.d.ts +12 -0
  765. package/dist/table/ColumnResizer.js +32 -0
  766. package/dist/table/ColumnResizer.js.map +1 -0
  767. package/dist/table/ColumnSettings.d.ts +34 -0
  768. package/dist/table/ColumnSettings.js +136 -0
  769. package/dist/table/ColumnSettings.js.map +1 -0
  770. package/dist/table/ColumnTable.d.ts +51 -0
  771. package/dist/table/ColumnTable.js +140 -0
  772. package/dist/table/ColumnTable.js.map +1 -0
  773. package/dist/table/DataTable.d.ts +44 -0
  774. package/dist/table/DataTable.js +453 -0
  775. package/dist/table/DataTable.js.map +1 -0
  776. package/dist/table/DataTableView.d.ts +328 -0
  777. package/dist/table/DataTableView.js +963 -0
  778. package/dist/table/DataTableView.js.map +1 -0
  779. package/dist/table/PivotTable.d.ts +66 -0
  780. package/dist/table/PivotTable.js +122 -0
  781. package/dist/table/PivotTable.js.map +1 -0
  782. package/dist/table/SelectionBar.d.ts +29 -0
  783. package/dist/table/SelectionBar.js +86 -0
  784. package/dist/table/SelectionBar.js.map +1 -0
  785. package/dist/table/Table.d.ts +169 -0
  786. package/dist/table/Table.js +304 -0
  787. package/dist/table/Table.js.map +1 -0
  788. package/dist/table/TreeDataTable.d.ts +36 -0
  789. package/dist/table/TreeDataTable.js +168 -0
  790. package/dist/table/TreeDataTable.js.map +1 -0
  791. package/dist/table/column-display.d.ts +20 -0
  792. package/dist/table/column-display.js +43 -0
  793. package/dist/table/column-display.js.map +1 -0
  794. package/dist/table/columns.d.ts +244 -0
  795. package/dist/table/columns.js +271 -0
  796. package/dist/table/columns.js.map +1 -0
  797. package/dist/table/csv.d.ts +24 -0
  798. package/dist/table/csv.js +35 -0
  799. package/dist/table/csv.js.map +1 -0
  800. package/dist/table/pivot.d.ts +66 -0
  801. package/dist/table/pivot.js +85 -0
  802. package/dist/table/pivot.js.map +1 -0
  803. package/dist/table/sheet.d.ts +44 -0
  804. package/dist/table/sheet.js +78 -0
  805. package/dist/table/sheet.js.map +1 -0
  806. package/dist/table/table-styles.d.ts +136 -0
  807. package/dist/table/table-styles.js +403 -0
  808. package/dist/table/table-styles.js.map +1 -0
  809. package/dist/table/use-table-query.d.ts +89 -0
  810. package/dist/table/use-table-query.js +194 -0
  811. package/dist/table/use-table-query.js.map +1 -0
  812. package/dist/theme-customize/ThemeCustomizer.d.ts +63 -0
  813. package/dist/theme-customize/ThemeCustomizer.js +361 -0
  814. package/dist/theme-customize/ThemeCustomizer.js.map +1 -0
  815. package/dist/theme-customize/ThemeThumbnail.d.ts +20 -0
  816. package/dist/theme-customize/ThemeThumbnail.js +82 -0
  817. package/dist/theme-customize/ThemeThumbnail.js.map +1 -0
  818. package/dist/theme-customize/contrast.d.ts +27 -0
  819. package/dist/theme-customize/contrast.js +251 -0
  820. package/dist/theme-customize/contrast.js.map +1 -0
  821. package/dist/theme-customize/customize.d.ts +65 -0
  822. package/dist/theme-customize/customize.js +105 -0
  823. package/dist/theme-customize/customize.js.map +1 -0
  824. package/dist/theme-customize/design-tokens.d.ts +31 -0
  825. package/dist/theme-customize/design-tokens.js +183 -0
  826. package/dist/theme-customize/design-tokens.js.map +1 -0
  827. package/dist/theme-customize/index.d.ts +20 -0
  828. package/dist/theme-customize/index.js +9 -0
  829. package/dist/theme-customize/messages.d.ts +74 -0
  830. package/dist/theme-customize/messages.js +142 -0
  831. package/dist/theme-customize/messages.js.map +1 -0
  832. package/dist/theme-customize/palette.d.ts +898 -0
  833. package/dist/theme-customize/palette.js +111 -0
  834. package/dist/theme-customize/palette.js.map +1 -0
  835. package/dist/theme-customize/token-catalog.d.ts +20 -0
  836. package/dist/theme-customize/token-catalog.js +836 -0
  837. package/dist/theme-customize/token-catalog.js.map +1 -0
  838. package/dist/three/background/AuroraBackground.d.ts +30 -0
  839. package/dist/three/background/AuroraBackground.js +80 -0
  840. package/dist/three/background/AuroraBackground.js.map +1 -0
  841. package/dist/three/background/MeshGradient.d.ts +28 -0
  842. package/dist/three/background/MeshGradient.js +76 -0
  843. package/dist/three/background/MeshGradient.js.map +1 -0
  844. package/dist/three/background/ShaderBackground.d.ts +25 -0
  845. package/dist/three/background/ShaderBackground.js +107 -0
  846. package/dist/three/background/ShaderBackground.js.map +1 -0
  847. package/dist/three/core/EffectSurface.d.ts +41 -0
  848. package/dist/three/core/EffectSurface.js +62 -0
  849. package/dist/three/core/EffectSurface.js.map +1 -0
  850. package/dist/three/core/ThreeCanvas.d.ts +39 -0
  851. package/dist/three/core/ThreeCanvas.js +77 -0
  852. package/dist/three/core/ThreeCanvas.js.map +1 -0
  853. package/dist/three/core/dispose.d.ts +9 -0
  854. package/dist/three/core/dispose.js +26 -0
  855. package/dist/three/core/dispose.js.map +1 -0
  856. package/dist/three/core/orbit.d.ts +31 -0
  857. package/dist/three/core/orbit.js +83 -0
  858. package/dist/three/core/orbit.js.map +1 -0
  859. package/dist/three/core/quality.d.ts +59 -0
  860. package/dist/three/core/quality.js +80 -0
  861. package/dist/three/core/quality.js.map +1 -0
  862. package/dist/three/core/renderer.d.ts +110 -0
  863. package/dist/three/core/renderer.js +303 -0
  864. package/dist/three/core/renderer.js.map +1 -0
  865. package/dist/three/core/shaders.d.ts +19 -0
  866. package/dist/three/core/shaders.js +100 -0
  867. package/dist/three/core/shaders.js.map +1 -0
  868. package/dist/three/core/theme-colors.d.ts +30 -0
  869. package/dist/three/core/theme-colors.js +113 -0
  870. package/dist/three/core/theme-colors.js.map +1 -0
  871. package/dist/three/effects/Confetti.d.ts +62 -0
  872. package/dist/three/effects/Confetti.js +242 -0
  873. package/dist/three/effects/Confetti.js.map +1 -0
  874. package/dist/three/effects/ParticleField.d.ts +39 -0
  875. package/dist/three/effects/ParticleField.js +266 -0
  876. package/dist/three/effects/ParticleField.js.map +1 -0
  877. package/dist/three/effects/WaveGrid.d.ts +37 -0
  878. package/dist/three/effects/WaveGrid.js +130 -0
  879. package/dist/three/effects/WaveGrid.js.map +1 -0
  880. package/dist/three/globe/Globe.d.ts +70 -0
  881. package/dist/three/globe/Globe.js +337 -0
  882. package/dist/three/globe/Globe.js.map +1 -0
  883. package/dist/three/globe/land.d.ts +9 -0
  884. package/dist/three/globe/land.js +14 -0
  885. package/dist/three/globe/land.js.map +1 -0
  886. package/dist/three/index.d.ts +24 -0
  887. package/dist/three/index.js +18 -0
  888. package/dist/three/model/ModelViewer.d.ts +63 -0
  889. package/dist/three/model/ModelViewer.js +193 -0
  890. package/dist/three/model/ModelViewer.js.map +1 -0
  891. package/dist/utils/data/collation.d.ts +36 -0
  892. package/dist/utils/data/collation.js +69 -0
  893. package/dist/utils/data/collation.js.map +1 -0
  894. package/dist/utils/data/color.d.ts +32 -0
  895. package/dist/utils/data/color.js +90 -0
  896. package/dist/utils/data/color.js.map +1 -0
  897. package/dist/utils/data/date.d.ts +186 -0
  898. package/dist/utils/data/date.js +409 -0
  899. package/dist/utils/data/date.js.map +1 -0
  900. package/dist/utils/data/diff.d.ts +21 -0
  901. package/dist/utils/data/diff.js +43 -0
  902. package/dist/utils/data/diff.js.map +1 -0
  903. package/dist/utils/data/equality.d.ts +5 -0
  904. package/dist/utils/data/equality.js +24 -0
  905. package/dist/utils/data/equality.js.map +1 -0
  906. package/dist/utils/data/history.d.ts +59 -0
  907. package/dist/utils/data/history.js +132 -0
  908. package/dist/utils/data/history.js.map +1 -0
  909. package/dist/utils/data/intl-cache.d.ts +8 -0
  910. package/dist/utils/data/intl-cache.js +19 -0
  911. package/dist/utils/data/intl-cache.js.map +1 -0
  912. package/dist/utils/data/number-parse.d.ts +7 -0
  913. package/dist/utils/data/number-parse.js +45 -0
  914. package/dist/utils/data/number-parse.js.map +1 -0
  915. package/dist/utils/data/number.d.ts +10 -0
  916. package/dist/utils/data/number.js +28 -0
  917. package/dist/utils/data/number.js.map +1 -0
  918. package/dist/utils/data/numeric.d.ts +55 -0
  919. package/dist/utils/data/numeric.js +133 -0
  920. package/dist/utils/data/numeric.js.map +1 -0
  921. package/dist/utils/data/pagination.d.ts +21 -0
  922. package/dist/utils/data/pagination.js +22 -0
  923. package/dist/utils/data/pagination.js.map +1 -0
  924. package/dist/utils/data/selection.d.ts +41 -0
  925. package/dist/utils/data/selection.js +21 -0
  926. package/dist/utils/data/selection.js.map +1 -0
  927. package/dist/utils/data/status.d.ts +43 -0
  928. package/dist/utils/data/status.js +27 -0
  929. package/dist/utils/data/status.js.map +1 -0
  930. package/dist/utils/data/text.d.ts +12 -0
  931. package/dist/utils/data/text.js +30 -0
  932. package/dist/utils/data/text.js.map +1 -0
  933. package/dist/utils/data/tree.d.ts +140 -0
  934. package/dist/utils/data/tree.js +273 -0
  935. package/dist/utils/data/tree.js.map +1 -0
  936. package/dist/utils/data/workdays.d.ts +67 -0
  937. package/dist/utils/data/workdays.js +67 -0
  938. package/dist/utils/data/workdays.js.map +1 -0
  939. package/dist/utils/dom/announcer.d.ts +11 -0
  940. package/dist/utils/dom/announcer.js +53 -0
  941. package/dist/utils/dom/announcer.js.map +1 -0
  942. package/dist/utils/dom/caret.d.ts +14 -0
  943. package/dist/utils/dom/caret.js +72 -0
  944. package/dist/utils/dom/caret.js.map +1 -0
  945. package/dist/utils/dom/clipboard.d.ts +16 -0
  946. package/dist/utils/dom/clipboard.js +66 -0
  947. package/dist/utils/dom/clipboard.js.map +1 -0
  948. package/dist/utils/dom/direction.d.ts +12 -0
  949. package/dist/utils/dom/direction.js +20 -0
  950. package/dist/utils/dom/direction.js.map +1 -0
  951. package/dist/utils/dom/download.d.ts +7 -0
  952. package/dist/utils/dom/download.js +19 -0
  953. package/dist/utils/dom/download.js.map +1 -0
  954. package/dist/utils/dom/element.d.ts +3 -0
  955. package/dist/utils/dom/element.js +12 -0
  956. package/dist/utils/dom/element.js.map +1 -0
  957. package/dist/utils/dom/event-listener.d.ts +8 -0
  958. package/dist/utils/dom/event-listener.js +35 -0
  959. package/dist/utils/dom/event-listener.js.map +1 -0
  960. package/dist/utils/dom/floating.d.ts +149 -0
  961. package/dist/utils/dom/floating.js +262 -0
  962. package/dist/utils/dom/floating.js.map +1 -0
  963. package/dist/utils/dom/focus.d.ts +28 -0
  964. package/dist/utils/dom/focus.js +105 -0
  965. package/dist/utils/dom/focus.js.map +1 -0
  966. package/dist/utils/dom/fullscreen.d.ts +11 -0
  967. package/dist/utils/dom/fullscreen.js +43 -0
  968. package/dist/utils/dom/fullscreen.js.map +1 -0
  969. package/dist/utils/dom/hotkeys.d.ts +43 -0
  970. package/dist/utils/dom/hotkeys.js +174 -0
  971. package/dist/utils/dom/hotkeys.js.map +1 -0
  972. package/dist/utils/dom/hover-intent.d.ts +47 -0
  973. package/dist/utils/dom/hover-intent.js +72 -0
  974. package/dist/utils/dom/hover-intent.js.map +1 -0
  975. package/dist/utils/dom/hover-layer.d.ts +36 -0
  976. package/dist/utils/dom/hover-layer.js +74 -0
  977. package/dist/utils/dom/hover-layer.js.map +1 -0
  978. package/dist/utils/dom/intersection.d.ts +13 -0
  979. package/dist/utils/dom/intersection.js +36 -0
  980. package/dist/utils/dom/intersection.js.map +1 -0
  981. package/dist/utils/dom/layout-batch.d.ts +14 -0
  982. package/dist/utils/dom/layout-batch.js +26 -0
  983. package/dist/utils/dom/layout-batch.js.map +1 -0
  984. package/dist/utils/dom/link.d.ts +18 -0
  985. package/dist/utils/dom/link.js +44 -0
  986. package/dist/utils/dom/link.js.map +1 -0
  987. package/dist/utils/dom/media-query.d.ts +18 -0
  988. package/dist/utils/dom/media-query.js +36 -0
  989. package/dist/utils/dom/media-query.js.map +1 -0
  990. package/dist/utils/dom/move.d.ts +47 -0
  991. package/dist/utils/dom/move.js +69 -0
  992. package/dist/utils/dom/move.js.map +1 -0
  993. package/dist/utils/dom/open-change.d.ts +51 -0
  994. package/dist/utils/dom/open-change.js +21 -0
  995. package/dist/utils/dom/open-change.js.map +1 -0
  996. package/dist/utils/dom/overflow.d.ts +29 -0
  997. package/dist/utils/dom/overflow.js +108 -0
  998. package/dist/utils/dom/overflow.js.map +1 -0
  999. package/dist/utils/dom/overlay.d.ts +35 -0
  1000. package/dist/utils/dom/overlay.js +104 -0
  1001. package/dist/utils/dom/overlay.js.map +1 -0
  1002. package/dist/utils/dom/page-visibility.d.ts +10 -0
  1003. package/dist/utils/dom/page-visibility.js +22 -0
  1004. package/dist/utils/dom/page-visibility.js.map +1 -0
  1005. package/dist/utils/dom/pan-zoom.d.ts +109 -0
  1006. package/dist/utils/dom/pan-zoom.js +257 -0
  1007. package/dist/utils/dom/pan-zoom.js.map +1 -0
  1008. package/dist/utils/dom/rasterize.d.ts +18 -0
  1009. package/dist/utils/dom/rasterize.js +41 -0
  1010. package/dist/utils/dom/rasterize.js.map +1 -0
  1011. package/dist/utils/dom/resize.d.ts +4 -0
  1012. package/dist/utils/dom/resize.js +65 -0
  1013. package/dist/utils/dom/resize.js.map +1 -0
  1014. package/dist/utils/dom/ripple.d.ts +40 -0
  1015. package/dist/utils/dom/ripple.js +96 -0
  1016. package/dist/utils/dom/ripple.js.map +1 -0
  1017. package/dist/utils/dom/roving-focus.d.ts +44 -0
  1018. package/dist/utils/dom/roving-focus.js +184 -0
  1019. package/dist/utils/dom/roving-focus.js.map +1 -0
  1020. package/dist/utils/dom/scroll-spy.d.ts +30 -0
  1021. package/dist/utils/dom/scroll-spy.js +55 -0
  1022. package/dist/utils/dom/scroll-spy.js.map +1 -0
  1023. package/dist/utils/dom/sortable.d.ts +82 -0
  1024. package/dist/utils/dom/sortable.js +437 -0
  1025. package/dist/utils/dom/sortable.js.map +1 -0
  1026. package/dist/utils/dom/storage.d.ts +21 -0
  1027. package/dist/utils/dom/storage.js +66 -0
  1028. package/dist/utils/dom/storage.js.map +1 -0
  1029. package/dist/utils/dom/typeahead.d.ts +15 -0
  1030. package/dist/utils/dom/typeahead.js +26 -0
  1031. package/dist/utils/dom/typeahead.js.map +1 -0
  1032. package/dist/utils/motion/active-indicator.d.ts +24 -0
  1033. package/dist/utils/motion/active-indicator.js +58 -0
  1034. package/dist/utils/motion/active-indicator.js.map +1 -0
  1035. package/dist/utils/motion/animation.d.ts +58 -0
  1036. package/dist/utils/motion/animation.js +83 -0
  1037. package/dist/utils/motion/animation.js.map +1 -0
  1038. package/dist/utils/motion/delayed-loading.d.ts +18 -0
  1039. package/dist/utils/motion/delayed-loading.js +38 -0
  1040. package/dist/utils/motion/delayed-loading.js.map +1 -0
  1041. package/dist/utils/motion/layout.d.ts +17 -0
  1042. package/dist/utils/motion/layout.js +43 -0
  1043. package/dist/utils/motion/layout.js.map +1 -0
  1044. package/dist/utils/motion/pointer.d.ts +14 -0
  1045. package/dist/utils/motion/pointer.js +72 -0
  1046. package/dist/utils/motion/pointer.js.map +1 -0
  1047. package/dist/utils/motion/presence.d.ts +57 -0
  1048. package/dist/utils/motion/presence.js +100 -0
  1049. package/dist/utils/motion/presence.js.map +1 -0
  1050. package/dist/utils/motion/reveal.d.ts +9 -0
  1051. package/dist/utils/motion/reveal.js +68 -0
  1052. package/dist/utils/motion/reveal.js.map +1 -0
  1053. package/dist/utils/motion/tween.d.ts +34 -0
  1054. package/dist/utils/motion/tween.js +50 -0
  1055. package/dist/utils/motion/tween.js.map +1 -0
  1056. package/dist/utils/props.d.ts +84 -0
  1057. package/dist/utils/props.js +189 -0
  1058. package/dist/utils/props.js.map +1 -0
  1059. package/dist/utils/request/http.d.ts +101 -0
  1060. package/dist/utils/request/http.js +154 -0
  1061. package/dist/utils/request/http.js.map +1 -0
  1062. package/dist/utils/request/use-request.d.ts +37 -0
  1063. package/dist/utils/request/use-request.js +90 -0
  1064. package/dist/utils/request/use-request.js.map +1 -0
  1065. package/dist/utils/request/wire.d.ts +48 -0
  1066. package/dist/utils/request/wire.js +208 -0
  1067. package/dist/utils/request/wire.js.map +1 -0
  1068. package/dist/utils/style/attached.d.ts +25 -0
  1069. package/dist/utils/style/attached.js +82 -0
  1070. package/dist/utils/style/attached.js.map +1 -0
  1071. package/dist/utils/style/item-styles.d.ts +18 -0
  1072. package/dist/utils/style/item-styles.js +79 -0
  1073. package/dist/utils/style/item-styles.js.map +1 -0
  1074. package/dist/utils/style/markers.d.ts +6 -0
  1075. package/dist/utils/style/markers.js +11 -0
  1076. package/dist/utils/style/markers.js.map +1 -0
  1077. package/dist/utils/style/shimmer.d.ts +20 -0
  1078. package/dist/utils/style/shimmer.js +58 -0
  1079. package/dist/utils/style/shimmer.js.map +1 -0
  1080. package/dist/utils/style/styles.d.ts +118 -0
  1081. package/dist/utils/style/styles.js +114 -0
  1082. package/dist/utils/style/styles.js.map +1 -0
  1083. package/dist/utils/style/swatch-styles.d.ts +10 -0
  1084. package/dist/utils/style/swatch-styles.js +19 -0
  1085. package/dist/utils/style/swatch-styles.js.map +1 -0
  1086. package/dist/utils/style/tone-styles.d.ts +58 -0
  1087. package/dist/utils/style/tone-styles.js +180 -0
  1088. package/dist/utils/style/tone-styles.js.map +1 -0
  1089. package/dist/utils/style/transitions.d.ts +43 -0
  1090. package/dist/utils/style/transitions.js +118 -0
  1091. package/dist/utils/style/transitions.js.map +1 -0
  1092. package/dist/utils/style/typography.d.ts +155 -0
  1093. package/dist/utils/style/typography.js +80 -0
  1094. package/dist/utils/style/typography.js.map +1 -0
  1095. package/dist/utils/style/vars.d.ts +18 -0
  1096. package/dist/utils/style/vars.js +21 -0
  1097. package/dist/utils/style/vars.js.map +1 -0
  1098. package/dist/utils/virtual/use-virtualizer.d.ts +43 -0
  1099. package/dist/utils/virtual/use-virtualizer.js +94 -0
  1100. package/dist/utils/virtual/use-virtualizer.js.map +1 -0
  1101. package/dist/utils/virtual/virtualizer.d.ts +145 -0
  1102. package/dist/utils/virtual/virtualizer.js +316 -0
  1103. package/dist/utils/virtual/virtualizer.js.map +1 -0
  1104. package/dist/xlsx/index.d.ts +7 -0
  1105. package/dist/xlsx/index.js +1 -0
  1106. package/dist/xlsx/workbook.d.ts +33 -0
  1107. package/dist/xlsx/workbook.js +195 -0
  1108. package/dist/xlsx/workbook.js.map +1 -0
  1109. package/package.json +205 -3
@@ -0,0 +1,132 @@
1
+ import { sameValue } from "./equality.js";
2
+ import { shallowRef } from "vue";
3
+ import { snapshot } from "@zerodep-dev/vue-tsx-pro-tsx";
4
+ //#region src/utils/data/history.ts
5
+ /**
6
+ * 撤销重做:记下一份状态的各个版本,撤销、重做时把记下的版本写回去。设计器、画布、富编辑器这类“改了还能退回去”的地方用它。
7
+ * 参考 VueUse 的 useManualRefHistory(手动提交、限制步数)与 ProseMirror 的 history(连续输入在一段时间内合成一步)。
8
+ *
9
+ * const doc = _state({ … });
10
+ * const history = createHistory({ read: () => doc, write: (value) => Object.assign(doc, value) });
11
+ * rename(node, name); history.commit('改名称', { merge: `name:${node.id}` }); // 逐字输入合成一步
12
+ * const drag = history.begin('移动节点'); …拖动中随便改… drag.end(); // 松开时记一步,Esc 时 drag.cancel()
13
+ * <IconButton disabled={!history.canUndo} onClick={history.undo} label={`撤销 ${history.undoLabel ?? ''}`} />
14
+ *
15
+ * 记的是快照:每一步一份深拷贝(默认 snapshot,去掉响应式代理)。几十 KB 的定义记 100 步也只有几 MB,
16
+ * 不做补丁:补丁要么要求状态按不可变方式更新,要么每次都要深比较,换来的内存不值这份复杂度。
17
+ * 状态本来就按不可变方式更新时,clone 写成 (value) => value,每一步只存一个引用。
18
+ * 保存点:markSaved() 记下当前这一步,dirty 表示现在与保存时不同(撤销回保存点时又变回 false)。
19
+ * 不在 setup 里也能用(只用 Vue 的 shallowRef),快捷键(Mod+Z、Mod+Shift+Z)由使用方接上 useHotkeys。
20
+ */
21
+ /** 撤销重做的历史(在哪里都能调用:不用生命周期与注入) */
22
+ function createHistory(options) {
23
+ const limit = Math.max(1, options.limit ?? 100);
24
+ const mergeWindow = options.mergeWindow ?? 500;
25
+ const clone = options.clone ?? snapshot;
26
+ const equals = options.equals ?? sameValue;
27
+ const entry = (label, merge) => ({
28
+ value: clone(options.read()),
29
+ label,
30
+ merge,
31
+ at: Date.now()
32
+ });
33
+ let entries = [entry()];
34
+ let current = 0;
35
+ let saved = 0;
36
+ let gesture;
37
+ const revision = shallowRef(0);
38
+ const touch = () => revision.value++;
39
+ const track = () => revision.value;
40
+ function record(label, merge) {
41
+ const next = entry(label, merge);
42
+ const last = entries[current];
43
+ if (equals(next.value, last.value)) return;
44
+ entries.length = current + 1;
45
+ if (merge !== void 0 && last.merge === merge && next.at - last.at <= mergeWindow && current > 0 && current !== saved) entries[current] = {
46
+ ...next,
47
+ label: last.label ?? label
48
+ };
49
+ else {
50
+ entries.push(next);
51
+ current++;
52
+ if (entries.length > limit + 1) {
53
+ const dropped = entries.length - (limit + 1);
54
+ entries = entries.slice(dropped);
55
+ current -= dropped;
56
+ saved = saved - dropped < 0 ? -1 : saved - dropped;
57
+ }
58
+ }
59
+ touch();
60
+ }
61
+ function go(index) {
62
+ if (index < 0 || index >= entries.length || index === current) return;
63
+ gesture = void 0;
64
+ current = index;
65
+ options.write(clone(entries[current].value));
66
+ touch();
67
+ }
68
+ return {
69
+ get canUndo() {
70
+ track();
71
+ return current > 0;
72
+ },
73
+ get canRedo() {
74
+ track();
75
+ return current < entries.length - 1;
76
+ },
77
+ get undoLabel() {
78
+ track();
79
+ return current > 0 ? entries[current].label : void 0;
80
+ },
81
+ get redoLabel() {
82
+ track();
83
+ return entries[current + 1]?.label;
84
+ },
85
+ get dirty() {
86
+ track();
87
+ return current !== saved;
88
+ },
89
+ get busy() {
90
+ track();
91
+ return gesture !== void 0;
92
+ },
93
+ commit(label, commitOptions) {
94
+ if (gesture) return;
95
+ record(label, commitOptions?.merge);
96
+ },
97
+ begin(label) {
98
+ if (gesture) record(gesture.label);
99
+ const own = { label };
100
+ gesture = own;
101
+ touch();
102
+ const finish = (keep) => {
103
+ if (gesture !== own) return;
104
+ gesture = void 0;
105
+ if (keep) record(label);
106
+ else options.write(clone(entries[current].value));
107
+ touch();
108
+ };
109
+ return {
110
+ end: () => finish(true),
111
+ cancel: () => finish(false)
112
+ };
113
+ },
114
+ undo: () => go(current - 1),
115
+ redo: () => go(current + 1),
116
+ markSaved() {
117
+ saved = current;
118
+ touch();
119
+ },
120
+ reset() {
121
+ gesture = void 0;
122
+ entries = [entry()];
123
+ current = 0;
124
+ saved = 0;
125
+ touch();
126
+ }
127
+ };
128
+ }
129
+ //#endregion
130
+ export { createHistory };
131
+
132
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","names":[],"sources":["../../../src/utils/data/history.ts"],"sourcesContent":["/**\n * 撤销重做:记下一份状态的各个版本,撤销、重做时把记下的版本写回去。设计器、画布、富编辑器这类“改了还能退回去”的地方用它。\n * 参考 VueUse 的 useManualRefHistory(手动提交、限制步数)与 ProseMirror 的 history(连续输入在一段时间内合成一步)。\n *\n * const doc = _state({ … });\n * const history = createHistory({ read: () => doc, write: (value) => Object.assign(doc, value) });\n * rename(node, name); history.commit('改名称', { merge: `name:${node.id}` }); // 逐字输入合成一步\n * const drag = history.begin('移动节点'); …拖动中随便改… drag.end(); // 松开时记一步,Esc 时 drag.cancel()\n * <IconButton disabled={!history.canUndo} onClick={history.undo} label={`撤销 ${history.undoLabel ?? ''}`} />\n *\n * 记的是快照:每一步一份深拷贝(默认 snapshot,去掉响应式代理)。几十 KB 的定义记 100 步也只有几 MB,\n * 不做补丁:补丁要么要求状态按不可变方式更新,要么每次都要深比较,换来的内存不值这份复杂度。\n * 状态本来就按不可变方式更新时,clone 写成 (value) => value,每一步只存一个引用。\n * 保存点:markSaved() 记下当前这一步,dirty 表示现在与保存时不同(撤销回保存点时又变回 false)。\n * 不在 setup 里也能用(只用 Vue 的 shallowRef),快捷键(Mod+Z、Mod+Shift+Z)由使用方接上 useHotkeys。\n */\nimport { snapshot } from '@zerodep-dev/vue-tsx-pro-tsx';\nimport { shallowRef } from 'vue';\nimport { sameValue } from './equality';\n\n/** createHistory 的选项 */\nexport interface HistoryOptions<T> {\n /** 读当前的状态 */\n read: () => T;\n /** 撤销、重做时把记下的版本写回状态(拿到的是一份拷贝,可以直接放进状态里) */\n write: (value: T) => void;\n /** 最多记多少步(不算起点),默认 100;超出时丢掉最早的 */\n limit?: number;\n /** 同一个 merge 键的连续提交,间隔不超过多少毫秒就合成一步,默认 500 */\n mergeWindow?: number;\n /** 记下一个版本时怎样复制,默认 snapshot(深拷贝、去掉代理);状态按不可变方式更新时写 (value) => value */\n clone?: (value: T) => T;\n /** 与上一步是否相同(相同就不记),默认结构相等(sameValue) */\n equals?: (a: T, b: T) => boolean;\n}\n\n/** commit 的选项 */\nexport interface HistoryCommitOptions {\n /**\n * 合并的键:与上一步的键相同、间隔在 mergeWindow 以内时并进上一步(逐字输入、连续微调)。\n * 键里带上对象,例如 `name:${node.id}`,改另一个对象的同一个字段时另起一步\n */\n merge?: string;\n}\n\n/** 一次连续的操作(拖动、调整大小):期间的改动不记,结束时合成一步 */\nexport interface HistoryGesture {\n /** 结束:有改动就记成一步 */\n end(): void;\n /** 取消:状态回到开始前(Esc 取消拖动) */\n cancel(): void;\n}\n\n/** createHistory 的返回值:状态加方法,交给工具栏、快捷键 */\nexport interface History {\n /** 有可以撤销的步骤 */\n readonly canUndo: boolean;\n /** 有可以重做的步骤 */\n readonly canRedo: boolean;\n /** 下一次撤销会撤掉的那一步的说明(commit 时写的 label),按钮的提示里用;没有时 undefined */\n readonly undoLabel: string | undefined;\n /** 下一次重做会重做的那一步的说明 */\n readonly redoLabel: string | undefined;\n /** 现在与保存点(markSaved)不同;还没保存过时与起点比 */\n readonly dirty: boolean;\n /** 正在进行一次连续的操作(begin 之后、end 或 cancel 之前) */\n readonly busy: boolean;\n /** 把当前状态记成新的一步;与上一步相同时不记。撤销过再提交会丢掉可以重做的步骤 */\n commit(label?: string, options?: HistoryCommitOptions): void;\n /** 开始一次连续的操作:期间的 commit 不起作用,end 时记一步、cancel 时回到开始前。已有进行中的操作时先结束它 */\n begin(label?: string): HistoryGesture;\n /** 撤销一步 */\n undo(): void;\n /** 重做一步 */\n redo(): void;\n /** 把当前这一步记为已保存:dirty 变回 false */\n markSaved(): void;\n /** 清空历史,以当前状态为新的起点并记为已保存(载入另一份文档、发布之后) */\n reset(): void;\n}\n\ninterface Entry<T> {\n value: T;\n label: string | undefined;\n merge: string | undefined;\n at: number;\n}\n\n/** 撤销重做的历史(在哪里都能调用:不用生命周期与注入) */\nexport function createHistory<T>(options: HistoryOptions<T>): History {\n const limit = Math.max(1, options.limit ?? 100);\n const mergeWindow = options.mergeWindow ?? 500;\n const clone = options.clone ?? snapshot;\n const equals = options.equals ?? sameValue;\n\n const entry = (label?: string, merge?: string): Entry<T> => ({\n value: clone(options.read()),\n label,\n merge,\n at: Date.now(),\n });\n // 历史不是响应式数据(快照可能很大);current、saved 的变化经 revision 通知读取方\n let entries: Entry<T>[] = [entry()];\n let current = 0;\n // 保存点在 entries 里的位置;被 limit 挤掉后是 -1,之后一直算有改动\n let saved = 0;\n let gesture: { label: string | undefined } | undefined;\n const revision = shallowRef(0);\n const touch = () => revision.value++;\n const track = () => revision.value;\n\n function record(label?: string, merge?: string) {\n const next = entry(label, merge);\n const last = entries[current]!;\n if (equals(next.value, last.value)) return;\n entries.length = current + 1;\n // 合并进上一步:同一个键、间隔不长,且上一步不是起点或保存点(否则撤销会越过它们)\n const merges =\n merge !== undefined &&\n last.merge === merge &&\n next.at - last.at <= mergeWindow &&\n current > 0 &&\n current !== saved;\n if (merges) {\n entries[current] = { ...next, label: last.label ?? label };\n } else {\n entries.push(next);\n current++;\n if (entries.length > limit + 1) {\n const dropped = entries.length - (limit + 1);\n entries = entries.slice(dropped);\n current -= dropped;\n saved = saved - dropped < 0 ? -1 : saved - dropped;\n }\n }\n touch();\n }\n\n function go(index: number) {\n if (index < 0 || index >= entries.length || index === current) return;\n gesture = undefined;\n current = index;\n options.write(clone(entries[current]!.value));\n touch();\n }\n\n return {\n get canUndo() {\n track();\n return current > 0;\n },\n get canRedo() {\n track();\n return current < entries.length - 1;\n },\n get undoLabel() {\n track();\n return current > 0 ? entries[current]!.label : undefined;\n },\n get redoLabel() {\n track();\n return entries[current + 1]?.label;\n },\n get dirty() {\n track();\n return current !== saved;\n },\n get busy() {\n track();\n return gesture !== undefined;\n },\n commit(label, commitOptions) {\n if (gesture) return;\n record(label, commitOptions?.merge);\n },\n begin(label) {\n if (gesture) record(gesture.label);\n const own = { label };\n gesture = own;\n touch();\n // 只结束自己:被新的 begin、undo 顶掉之后再调用不起作用\n const finish = (keep: boolean) => {\n if (gesture !== own) return;\n gesture = undefined;\n if (keep) record(label);\n else options.write(clone(entries[current]!.value));\n touch();\n };\n return { end: () => finish(true), cancel: () => finish(false) };\n },\n undo: () => go(current - 1),\n redo: () => go(current + 1),\n markSaved() {\n saved = current;\n touch();\n },\n reset() {\n gesture = undefined;\n entries = [entry()];\n current = 0;\n saved = 0;\n touch();\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAyFA,SAAgB,cAAiB,SAAqC;CACpE,MAAM,QAAQ,KAAK,IAAI,GAAG,QAAQ,SAAS,GAAG;CAC9C,MAAM,cAAc,QAAQ,eAAe;CAC3C,MAAM,QAAQ,QAAQ,SAAS;CAC/B,MAAM,SAAS,QAAQ,UAAU;CAEjC,MAAM,SAAS,OAAgB,WAA8B;EAC3D,OAAO,MAAM,QAAQ,KAAK,CAAC;EAC3B;EACA;EACA,IAAI,KAAK,IAAI;CACf;CAEA,IAAI,UAAsB,CAAC,MAAM,CAAC;CAClC,IAAI,UAAU;CAEd,IAAI,QAAQ;CACZ,IAAI;CACJ,MAAM,WAAW,WAAW,CAAC;CAC7B,MAAM,cAAc,SAAS;CAC7B,MAAM,cAAc,SAAS;CAE7B,SAAS,OAAO,OAAgB,OAAgB;EAC9C,MAAM,OAAO,MAAM,OAAO,KAAK;EAC/B,MAAM,OAAO,QAAQ;EACrB,IAAI,OAAO,KAAK,OAAO,KAAK,KAAK,GAAG;EACpC,QAAQ,SAAS,UAAU;EAQ3B,IALE,UAAU,KAAA,KACV,KAAK,UAAU,SACf,KAAK,KAAK,KAAK,MAAM,eACrB,UAAU,KACV,YAAY,OAEZ,QAAQ,WAAW;GAAE,GAAG;GAAM,OAAO,KAAK,SAAS;EAAM;OACpD;GACL,QAAQ,KAAK,IAAI;GACjB;GACA,IAAI,QAAQ,SAAS,QAAQ,GAAG;IAC9B,MAAM,UAAU,QAAQ,UAAU,QAAQ;IAC1C,UAAU,QAAQ,MAAM,OAAO;IAC/B,WAAW;IACX,QAAQ,QAAQ,UAAU,IAAI,KAAK,QAAQ;GAC7C;EACF;EACA,MAAM;CACR;CAEA,SAAS,GAAG,OAAe;EACzB,IAAI,QAAQ,KAAK,SAAS,QAAQ,UAAU,UAAU,SAAS;EAC/D,UAAU,KAAA;EACV,UAAU;EACV,QAAQ,MAAM,MAAM,QAAQ,QAAQ,CAAE,KAAK,CAAC;EAC5C,MAAM;CACR;CAEA,OAAO;EACL,IAAI,UAAU;GACZ,MAAM;GACN,OAAO,UAAU;EACnB;EACA,IAAI,UAAU;GACZ,MAAM;GACN,OAAO,UAAU,QAAQ,SAAS;EACpC;EACA,IAAI,YAAY;GACd,MAAM;GACN,OAAO,UAAU,IAAI,QAAQ,QAAQ,CAAE,QAAQ,KAAA;EACjD;EACA,IAAI,YAAY;GACd,MAAM;GACN,OAAO,QAAQ,UAAU,EAAE,EAAE;EAC/B;EACA,IAAI,QAAQ;GACV,MAAM;GACN,OAAO,YAAY;EACrB;EACA,IAAI,OAAO;GACT,MAAM;GACN,OAAO,YAAY,KAAA;EACrB;EACA,OAAO,OAAO,eAAe;GAC3B,IAAI,SAAS;GACb,OAAO,OAAO,eAAe,KAAK;EACpC;EACA,MAAM,OAAO;GACX,IAAI,SAAS,OAAO,QAAQ,KAAK;GACjC,MAAM,MAAM,EAAE,MAAM;GACpB,UAAU;GACV,MAAM;GAEN,MAAM,UAAU,SAAkB;IAChC,IAAI,YAAY,KAAK;IACrB,UAAU,KAAA;IACV,IAAI,MAAM,OAAO,KAAK;SACjB,QAAQ,MAAM,MAAM,QAAQ,QAAQ,CAAE,KAAK,CAAC;IACjD,MAAM;GACR;GACA,OAAO;IAAE,WAAW,OAAO,IAAI;IAAG,cAAc,OAAO,KAAK;GAAE;EAChE;EACA,YAAY,GAAG,UAAU,CAAC;EAC1B,YAAY,GAAG,UAAU,CAAC;EAC1B,YAAY;GACV,QAAQ;GACR,MAAM;EACR;EACA,QAAQ;GACN,UAAU,KAAA;GACV,UAAU,CAAC,MAAM,CAAC;GAClB,UAAU;GACV,QAAQ;GACR,MAAM;EACR;CACF;AACF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Intl 对象(NumberFormat、DateTimeFormat、Collator……)的共用缓存:新建一个要解析语言与选项,比调用它慢得多,
3
+ * 格式化、比较、解析又在渲染与输入里频繁发生。键写成“种类|语言|选项”,同样的配置只建一次。
4
+ *
5
+ * const formatter = cachedIntl(`number|${locale}|${JSON.stringify(options)}`, () => new Intl.NumberFormat(locale, options));
6
+ */
7
+ /** 取 key 对应的缓存,没有时用 create 新建并记下 */
8
+ export declare function cachedIntl<T>(key: string, create: () => T): T;
@@ -0,0 +1,19 @@
1
+ //#region src/utils/data/intl-cache.ts
2
+ /**
3
+ * Intl 对象(NumberFormat、DateTimeFormat、Collator……)的共用缓存:新建一个要解析语言与选项,比调用它慢得多,
4
+ * 格式化、比较、解析又在渲染与输入里频繁发生。键写成“种类|语言|选项”,同样的配置只建一次。
5
+ *
6
+ * const formatter = cachedIntl(`number|${locale}|${JSON.stringify(options)}`, () => new Intl.NumberFormat(locale, options));
7
+ */
8
+ var cache = /* @__PURE__ */ new Map();
9
+ /** 取 key 对应的缓存,没有时用 create 新建并记下 */
10
+ function cachedIntl(key, create) {
11
+ if (cache.has(key)) return cache.get(key);
12
+ const created = create();
13
+ cache.set(key, created);
14
+ return created;
15
+ }
16
+ //#endregion
17
+ export { cachedIntl };
18
+
19
+ //# sourceMappingURL=intl-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intl-cache.js","names":[],"sources":["../../../src/utils/data/intl-cache.ts"],"sourcesContent":["/**\n * Intl 对象(NumberFormat、DateTimeFormat、Collator……)的共用缓存:新建一个要解析语言与选项,比调用它慢得多,\n * 格式化、比较、解析又在渲染与输入里频繁发生。键写成“种类|语言|选项”,同样的配置只建一次。\n *\n * const formatter = cachedIntl(`number|${locale}|${JSON.stringify(options)}`, () => new Intl.NumberFormat(locale, options));\n */\n\nconst cache = new Map<string, unknown>();\n\n/** 取 key 对应的缓存,没有时用 create 新建并记下 */\nexport function cachedIntl<T>(key: string, create: () => T): T {\n if (cache.has(key)) return cache.get(key) as T;\n const created = create();\n cache.set(key, created);\n return created;\n}\n"],"mappings":";;;;;;;AAOA,IAAM,wBAAQ,IAAI,IAAqB;;AAGvC,SAAgB,WAAc,KAAa,QAAoB;CAC7D,IAAI,MAAM,IAAI,GAAG,GAAG,OAAO,MAAM,IAAI,GAAG;CACxC,MAAM,UAAU,OAAO;CACvB,MAAM,IAAI,KAAK,OAAO;CACtB,OAAO;AACT"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 按语言把用户输入规范成十进制文本('-1234.5'):去掉千分位与空白,认全角数字;
3
+ * 空字符串为 null,解析不了时为 undefined。不经过浮点数,大整数、长小数不丢精度
4
+ */
5
+ export declare function normalizeNumber(text: string, locale: string): string | null | undefined;
6
+ /** 按语言解析用户输入成 number:解析不了时为 NaN,空字符串为 null */
7
+ export declare function parseNumber(text: string, locale: string): number | null;
@@ -0,0 +1,45 @@
1
+ import { cachedIntl } from "./intl-cache.js";
2
+ //#region src/utils/data/number-parse.ts
3
+ /**
4
+ * 按语言解析用户输入的数字(NumberField 用;表格筛选、导入等要读数字文本的地方也可以用):
5
+ * 认当前语言的小数点与千分位、全角数字与负号。
6
+ *
7
+ * normalizeNumber('1.234,5', 'de-DE') → '1234.5'
8
+ * parseNumber('12.5', 'zh-CN') → 12.5
9
+ */
10
+ /** 当前语言的数字符号:小数点、千分位、负号(按语言缓存:每次输入都要用) */
11
+ function numberSymbols(locale) {
12
+ return cachedIntl(`number-symbols|${locale}`, () => {
13
+ const parts = new Intl.NumberFormat(locale).formatToParts(-12345.6);
14
+ const find = (type) => parts.find((part) => part.type === type)?.value;
15
+ return {
16
+ decimal: find("decimal") ?? ".",
17
+ group: find("group") ?? ",",
18
+ minus: find("minusSign") ?? "-"
19
+ };
20
+ });
21
+ }
22
+ /**
23
+ * 按语言把用户输入规范成十进制文本('-1234.5'):去掉千分位与空白,认全角数字;
24
+ * 空字符串为 null,解析不了时为 undefined。不经过浮点数,大整数、长小数不丢精度
25
+ */
26
+ function normalizeNumber(text, locale) {
27
+ const { decimal, group, minus } = numberSymbols(locale);
28
+ let normalized = text.replace(/[0-9]/g, (char) => String.fromCharCode(char.charCodeAt(0) - 65248)).replace(/[.。]/g, ".").replace(/[-−]/g, "-").replace(/[\s  ]/g, "");
29
+ if (!normalized) return null;
30
+ if (group !== decimal) normalized = normalized.split(group).join("");
31
+ if (decimal !== ".") normalized = normalized.split(decimal).join(".");
32
+ normalized = normalized.split(minus).join("-");
33
+ if (!/^-?(\d+\.?\d*|\.\d+)$/.test(normalized)) return void 0;
34
+ return normalized.replace(/^(-?)\./, "$10.").replace(/\.$/, "");
35
+ }
36
+ /** 按语言解析用户输入成 number:解析不了时为 NaN,空字符串为 null */
37
+ function parseNumber(text, locale) {
38
+ const normalized = normalizeNumber(text, locale);
39
+ if (normalized === void 0) return NaN;
40
+ return normalized === null ? null : Number(normalized);
41
+ }
42
+ //#endregion
43
+ export { normalizeNumber, parseNumber };
44
+
45
+ //# sourceMappingURL=number-parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-parse.js","names":[],"sources":["../../../src/utils/data/number-parse.ts"],"sourcesContent":["/**\n * 按语言解析用户输入的数字(NumberField 用;表格筛选、导入等要读数字文本的地方也可以用):\n * 认当前语言的小数点与千分位、全角数字与负号。\n *\n * normalizeNumber('1.234,5', 'de-DE') → '1234.5'\n * parseNumber('12.5', 'zh-CN') → 12.5\n */\nimport { cachedIntl } from './intl-cache';\n\n/** 当前语言的数字符号:小数点、千分位、负号(按语言缓存:每次输入都要用) */\nfunction numberSymbols(locale: string) {\n return cachedIntl(`number-symbols|${locale}`, () => {\n const parts = new Intl.NumberFormat(locale).formatToParts(-12345.6);\n const find = (type: string) => parts.find((part) => part.type === type)?.value;\n return {\n decimal: find('decimal') ?? '.',\n group: find('group') ?? ',',\n minus: find('minusSign') ?? '-',\n };\n });\n}\n\n/**\n * 按语言把用户输入规范成十进制文本('-1234.5'):去掉千分位与空白,认全角数字;\n * 空字符串为 null,解析不了时为 undefined。不经过浮点数,大整数、长小数不丢精度\n */\nexport function normalizeNumber(text: string, locale: string): string | null | undefined {\n const { decimal, group, minus } = numberSymbols(locale);\n let normalized = text\n // 全角数字、全角句点与负号(中文输入法)\n .replace(/[0-9]/g, (char) => String.fromCharCode(char.charCodeAt(0) - 0xfee0))\n .replace(/[.。]/g, '.')\n .replace(/[-−]/g, '-')\n .replace(/[\\s  ]/g, '');\n if (!normalized) return null;\n if (group !== decimal) normalized = normalized.split(group).join('');\n if (decimal !== '.') normalized = normalized.split(decimal).join('.');\n normalized = normalized.split(minus).join('-');\n if (!/^-?(\\d+\\.?\\d*|\\.\\d+)$/.test(normalized)) return undefined;\n // '.5' → '0.5'、'12.' → '12':Decimal 与 BigInt 都认的写法\n return normalized.replace(/^(-?)\\./, '$10.').replace(/\\.$/, '');\n}\n\n/** 按语言解析用户输入成 number:解析不了时为 NaN,空字符串为 null */\nexport function parseNumber(text: string, locale: string): number | null {\n const normalized = normalizeNumber(text, locale);\n if (normalized === undefined) return Number.NaN;\n return normalized === null ? null : Number(normalized);\n}\n"],"mappings":";;;;;;;;;;AAUA,SAAS,cAAc,QAAgB;CACrC,OAAO,WAAW,kBAAkB,gBAAgB;EAClD,MAAM,QAAQ,IAAI,KAAK,aAAa,MAAM,CAAC,CAAC,cAAc,QAAQ;EAClE,MAAM,QAAQ,SAAiB,MAAM,MAAM,SAAS,KAAK,SAAS,IAAI,CAAC,EAAE;EACzE,OAAO;GACL,SAAS,KAAK,SAAS,KAAK;GAC5B,OAAO,KAAK,OAAO,KAAK;GACxB,OAAO,KAAK,WAAW,KAAK;EAC9B;CACF,CAAC;AACH;;;;;AAMA,SAAgB,gBAAgB,MAAc,QAA2C;CACvF,MAAM,EAAE,SAAS,OAAO,UAAU,cAAc,MAAM;CACtD,IAAI,aAAa,KAEd,QAAQ,WAAW,SAAS,OAAO,aAAa,KAAK,WAAW,CAAC,IAAI,KAAM,CAAC,CAAC,CAC7E,QAAQ,SAAS,GAAG,CAAC,CACrB,QAAQ,SAAS,GAAG,CAAC,CACrB,QAAQ,WAAW,EAAE;CACxB,IAAI,CAAC,YAAY,OAAO;CACxB,IAAI,UAAU,SAAS,aAAa,WAAW,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE;CACnE,IAAI,YAAY,KAAK,aAAa,WAAW,MAAM,OAAO,CAAC,CAAC,KAAK,GAAG;CACpE,aAAa,WAAW,MAAM,KAAK,CAAC,CAAC,KAAK,GAAG;CAC7C,IAAI,CAAC,wBAAwB,KAAK,UAAU,GAAG,OAAO,KAAA;CAEtD,OAAO,WAAW,QAAQ,WAAW,MAAM,CAAC,CAAC,QAAQ,OAAO,EAAE;AAChE;;AAGA,SAAgB,YAAY,MAAc,QAA+B;CACvE,MAAM,aAAa,gBAAgB,MAAM,MAAM;CAC/C,IAAI,eAAe,KAAA,GAAW,OAAO;CACrC,OAAO,eAAe,OAAO,OAAO,OAAO,UAAU;AACvD"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 数值的小工具:取值夹在范围内、对齐到步长(滑块、数字输入、分页、虚拟滚动共用)。
3
+ */
4
+ /** 把 value 夹在 [min, max] 之间 */
5
+ export declare function clamp(value: number, min: number, max: number): number;
6
+ /**
7
+ * 夹在 [min, max] 之间并对齐到 min + n × step(没有 min 时对齐到 0 + n × step);
8
+ * 结果按 step 与 min 的小数位取整,不带进 0.1 + 0.2 这类浮点误差。Slider、NumberField 共用
9
+ */
10
+ export declare function snapToStep(value: number, step: number, min?: number, max?: number): number;
@@ -0,0 +1,28 @@
1
+ //#region src/utils/data/number.ts
2
+ /**
3
+ * 数值的小工具:取值夹在范围内、对齐到步长(滑块、数字输入、分页、虚拟滚动共用)。
4
+ */
5
+ /** 把 value 夹在 [min, max] 之间 */
6
+ function clamp(value, min, max) {
7
+ return Math.min(max, Math.max(min, value));
8
+ }
9
+ /** 小数位数:0.1 → 1,1e-7 → 7(String(1e-7) 是科学计数法,不能按小数点拆) */
10
+ function decimals(value) {
11
+ if (!Number.isFinite(value)) return 0;
12
+ const [mantissa = "", exponent = "0"] = value.toExponential().split("e");
13
+ return Math.max(0, (mantissa.split(".")[1] ?? "").length - Number(exponent));
14
+ }
15
+ /**
16
+ * 夹在 [min, max] 之间并对齐到 min + n × step(没有 min 时对齐到 0 + n × step);
17
+ * 结果按 step 与 min 的小数位取整,不带进 0.1 + 0.2 这类浮点误差。Slider、NumberField 共用
18
+ */
19
+ function snapToStep(value, step, min = -Infinity, max = Infinity) {
20
+ const base = Number.isFinite(min) ? min : 0;
21
+ const stepped = base + Math.round((value - base) / step) * step;
22
+ const places = Math.max(decimals(step), Number.isFinite(min) ? decimals(min) : 0);
23
+ return Number(clamp(stepped, min, max).toFixed(places));
24
+ }
25
+ //#endregion
26
+ export { clamp, snapToStep };
27
+
28
+ //# sourceMappingURL=number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.js","names":[],"sources":["../../../src/utils/data/number.ts"],"sourcesContent":["/**\n * 数值的小工具:取值夹在范围内、对齐到步长(滑块、数字输入、分页、虚拟滚动共用)。\n */\n\n/** 把 value 夹在 [min, max] 之间 */\nexport function clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\n/** 小数位数:0.1 → 1,1e-7 → 7(String(1e-7) 是科学计数法,不能按小数点拆) */\nfunction decimals(value: number): number {\n if (!Number.isFinite(value)) return 0;\n const [mantissa = '', exponent = '0'] = value.toExponential().split('e');\n return Math.max(0, (mantissa.split('.')[1] ?? '').length - Number(exponent));\n}\n\n/**\n * 夹在 [min, max] 之间并对齐到 min + n × step(没有 min 时对齐到 0 + n × step);\n * 结果按 step 与 min 的小数位取整,不带进 0.1 + 0.2 这类浮点误差。Slider、NumberField 共用\n */\nexport function snapToStep(value: number, step: number, min = -Infinity, max = Infinity): number {\n const base = Number.isFinite(min) ? min : 0;\n const stepped = base + Math.round((value - base) / step) * step;\n const places = Math.max(decimals(step), Number.isFinite(min) ? decimals(min) : 0);\n return Number(clamp(stepped, min, max).toFixed(places));\n}\n"],"mappings":";;;;;AAKA,SAAgB,MAAM,OAAe,KAAa,KAAqB;CACrE,OAAO,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC;AAC3C;;AAGA,SAAS,SAAS,OAAuB;CACvC,IAAI,CAAC,OAAO,SAAS,KAAK,GAAG,OAAO;CACpC,MAAM,CAAC,WAAW,IAAI,WAAW,OAAO,MAAM,cAAc,CAAC,CAAC,MAAM,GAAG;CACvE,OAAO,KAAK,IAAI,IAAI,SAAS,MAAM,GAAG,CAAC,CAAC,MAAM,GAAA,CAAI,SAAS,OAAO,QAAQ,CAAC;AAC7E;;;;;AAMA,SAAgB,WAAW,OAAe,MAAc,MAAM,WAAW,MAAM,UAAkB;CAC/F,MAAM,OAAO,OAAO,SAAS,GAAG,IAAI,MAAM;CAC1C,MAAM,UAAU,OAAO,KAAK,OAAO,QAAQ,QAAQ,IAAI,IAAI;CAC3D,MAAM,SAAS,KAAK,IAAI,SAAS,IAAI,GAAG,OAAO,SAAS,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC;CAChF,OAAO,OAAO,MAAM,SAAS,KAAK,GAAG,CAAC,CAAC,QAAQ,MAAM,CAAC;AACxD"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * 内置支持的数值类型:number、bigint 与 decimal.js 的 Decimal(金额、精确运算)。
3
+ * 组件的数值属性都接受它们(NumericValue),排序、格式化、表单提交不丢精度。
4
+ *
5
+ * compareNumeric(new Decimal('1.5'), 1.25) // 1:不同类型也按大小比
6
+ * numericText(new Decimal('1e21')) // '1000000000000000000000':提交给服务端的十进制文本
7
+ *
8
+ * 这里不在运行时导入 decimal.js:按实例自己的构造函数识别与运算(使用方可能用 Decimal.clone 配了精度),
9
+ * 没用到 Decimal 的应用不会因此打包它。
10
+ */
11
+ import type Decimal from 'decimal.js';
12
+ /** 组件接受的数值 */
13
+ export type NumericValue = number | bigint | Decimal;
14
+ type DecimalConstructor = typeof Decimal;
15
+ /** 是不是 decimal.js 的 Decimal(含 Decimal.clone 出来的构造函数的实例) */
16
+ export declare function isDecimal(value: unknown): value is Decimal;
17
+ /** 能读成数字的文字:接口常把金额给成十进制字符串('19.90');空白、Infinity、不是数字的都不算 */
18
+ export declare function isNumericText(value: unknown): value is string;
19
+ /** 是不是组件接受的数值(NaN 也算 number,由使用方决定怎么处理) */
20
+ export declare function isNumeric(value: unknown): value is NumericValue;
21
+ /** 转成 number:只给需要浮点数的地方用(动画的中间帧、图表坐标、aria-valuenow),会丢精度 */
22
+ export declare function toNumber(value: NumericValue): number;
23
+ /** 十进制文本,不用科学计数法:表单提交、复制给服务端;NaN、Infinity 原样 */
24
+ export declare function numericText(value: NumericValue): string;
25
+ /**
26
+ * 十进制文本的小数点左移 places 位(除以 10 的 places 次方;负数右移),按文字移位、不经过浮点数:
27
+ * `shiftDecimal('155353.2', 4)` → `'15.53532'`。不是普通十进制写法的文本(NaN、科学计数法)原样返回
28
+ */
29
+ export declare function shiftDecimal(text: string, places: number): string;
30
+ /**
31
+ * 按大小比较两个数值,不同类型混着也行:返回负数、0 或正数(同 Array.prototype.sort 的约定)。
32
+ * 有 Decimal 时按十进制精确比较;number 与 bigint 之间不经过浮点数(大整数不丢精度);NaN 排在最后
33
+ */
34
+ export declare function compareNumeric(a: NumericValue, b: NumericValue): number;
35
+ /** 两个数值是否相等(1 与 1n、Decimal('1.0') 与 1 都算相等) */
36
+ export declare const sameNumeric: (a: NumericValue, b: NumericValue) => boolean;
37
+ /** 数值写回成什么类型:number、bigint,或某个 Decimal 构造函数(使用方 Decimal.clone 配过精度的也行) */
38
+ export type NumericKind = 'number' | 'bigint' | DecimalConstructor;
39
+ /** 值的类型:Decimal 取它自己的构造函数 */
40
+ export declare function numericKind(value: NumericValue): NumericKind;
41
+ /**
42
+ * 转成指定类型;value 也可以是十进制文本('-12.5',输入框解析出来的)。
43
+ * bigint 四舍五入到整数,Decimal 按十进制文本转(不经过浮点数)
44
+ */
45
+ export declare function toNumericKind(value: NumericValue | string, kind: NumericKind): NumericValue;
46
+ /** 按 kind 精确相加:Decimal 用它的构造函数算,bigint 整数相加,number 浮点相加(再由 snapNumeric 去掉误差) */
47
+ export declare function addNumeric(value: NumericValue, delta: NumericValue, kind: NumericKind): number | bigint | Decimal;
48
+ /** value 的 times 倍(times 是整数,如 -1、10),按 kind 精确运算 */
49
+ export declare function multiplyNumeric(value: NumericValue, times: number, kind: NumericKind): number | bigint | Decimal;
50
+ /**
51
+ * 夹在 [min, max] 之间并对齐到 min + n × step(没有 min 时对齐到 0 + n × step),按 kind 精确运算:
52
+ * number 走 snapToStep(按小数位取整去掉浮点误差),bigint 的步长至少为 1,Decimal 用值自己的构造函数
53
+ */
54
+ export declare function snapNumeric(value: NumericValue, step: NumericValue, min: NumericValue | undefined, max: NumericValue | undefined, kind: NumericKind): NumericValue;
55
+ export {};
@@ -0,0 +1,133 @@
1
+ import { snapToStep } from "./number.js";
2
+ //#region src/utils/data/numeric.ts
3
+ /** 是不是 decimal.js 的 Decimal(含 Decimal.clone 出来的构造函数的实例) */
4
+ function isDecimal(value) {
5
+ if (typeof value !== "object" || value === null) return false;
6
+ const constructor = value.constructor;
7
+ return typeof constructor?.isDecimal === "function" && constructor.isDecimal(value);
8
+ }
9
+ /** 能读成数字的文字:接口常把金额给成十进制字符串('19.90');空白、Infinity、不是数字的都不算 */
10
+ function isNumericText(value) {
11
+ return typeof value === "string" && value.trim() !== "" && Number.isFinite(Number(value));
12
+ }
13
+ /** 是不是组件接受的数值(NaN 也算 number,由使用方决定怎么处理) */
14
+ function isNumeric(value) {
15
+ return typeof value === "number" || typeof value === "bigint" || isDecimal(value);
16
+ }
17
+ /** 转成 number:只给需要浮点数的地方用(动画的中间帧、图表坐标、aria-valuenow),会丢精度 */
18
+ function toNumber(value) {
19
+ if (typeof value === "number") return value;
20
+ if (typeof value === "bigint") return Number(value);
21
+ return value.toNumber();
22
+ }
23
+ /** 十进制文本,不用科学计数法:表单提交、复制给服务端;NaN、Infinity 原样 */
24
+ function numericText(value) {
25
+ if (typeof value === "bigint") return value.toString();
26
+ if (typeof value === "number") {
27
+ if (!Number.isFinite(value)) return String(value);
28
+ return value === 0 || Math.abs(value) < 1e21 && Math.abs(value) >= 1e-6 ? String(value) : value.toLocaleString("en-US", {
29
+ useGrouping: false,
30
+ maximumFractionDigits: 20
31
+ });
32
+ }
33
+ return value.isFinite() ? value.toFixed() : value.toString();
34
+ }
35
+ /**
36
+ * 十进制文本的小数点左移 places 位(除以 10 的 places 次方;负数右移),按文字移位、不经过浮点数:
37
+ * `shiftDecimal('155353.2', 4)` → `'15.53532'`。不是普通十进制写法的文本(NaN、科学计数法)原样返回
38
+ */
39
+ function shiftDecimal(text, places) {
40
+ const match = /^([+-]?)(\d*)(?:\.(\d*))?$/.exec(text);
41
+ if (!match || places === 0 || !/\d/.test(text)) return text;
42
+ const [, sign, whole = "", fraction = ""] = match;
43
+ const digits = whole + fraction;
44
+ const point = whole.length - places;
45
+ const padded = point <= 0 ? "0".repeat(1 - point) + digits : digits.padEnd(point, "0");
46
+ const at = Math.max(point, 1);
47
+ const integer = padded.slice(0, at).replace(/^0+(?=\d)/, "");
48
+ const decimal = padded.slice(at).replace(/0+$/, "");
49
+ return `${sign}${integer}${decimal ? `.${decimal}` : ""}`;
50
+ }
51
+ /** 用 Decimal 的构造函数(从 a 或 b 里找)把两个值都转成 Decimal 比较 */
52
+ function compareWithDecimal(a, b, Ctor) {
53
+ return (isDecimal(a) ? a : new Ctor(numericText(a))).cmp(isDecimal(b) ? b : new Ctor(numericText(b)));
54
+ }
55
+ /**
56
+ * 按大小比较两个数值,不同类型混着也行:返回负数、0 或正数(同 Array.prototype.sort 的约定)。
57
+ * 有 Decimal 时按十进制精确比较;number 与 bigint 之间不经过浮点数(大整数不丢精度);NaN 排在最后
58
+ */
59
+ function compareNumeric(a, b) {
60
+ if (typeof a === "number" && Number.isNaN(a)) return typeof b === "number" && Number.isNaN(b) ? 0 : 1;
61
+ if (typeof b === "number" && Number.isNaN(b)) return -1;
62
+ if (isDecimal(a)) return compareWithDecimal(a, b, a.constructor);
63
+ if (isDecimal(b)) return compareWithDecimal(a, b, b.constructor);
64
+ return a < b ? -1 : a > b ? 1 : 0;
65
+ }
66
+ /** 两个数值是否相等(1 与 1n、Decimal('1.0') 与 1 都算相等) */
67
+ var sameNumeric = (a, b) => compareNumeric(a, b) === 0;
68
+ /** 值的类型:Decimal 取它自己的构造函数 */
69
+ function numericKind(value) {
70
+ if (typeof value === "number") return "number";
71
+ if (typeof value === "bigint") return "bigint";
72
+ return value.constructor;
73
+ }
74
+ /** 十进制文本('-12.5')→ 整数,四舍五入(远离 0) */
75
+ function roundedBigInt(text) {
76
+ const [whole = "0", fraction = ""] = text.replace(/^[+-]/, "").split(".");
77
+ const negative = text.startsWith("-");
78
+ let result = BigInt(whole || "0");
79
+ if (Number(fraction[0] ?? 0) >= 5) result += 1n;
80
+ return negative ? -result : result;
81
+ }
82
+ /**
83
+ * 转成指定类型;value 也可以是十进制文本('-12.5',输入框解析出来的)。
84
+ * bigint 四舍五入到整数,Decimal 按十进制文本转(不经过浮点数)
85
+ */
86
+ function toNumericKind(value, kind) {
87
+ const text = () => typeof value === "string" ? value : numericText(value);
88
+ if (kind === "number") return typeof value === "string" ? Number(value) : toNumber(value);
89
+ if (kind === "bigint") return typeof value === "bigint" ? value : roundedBigInt(text());
90
+ return isDecimal(value) && value.constructor === kind ? value : new kind(text());
91
+ }
92
+ /** 按 kind 精确相加:Decimal 用它的构造函数算,bigint 整数相加,number 浮点相加(再由 snapNumeric 去掉误差) */
93
+ function addNumeric(value, delta, kind) {
94
+ const left = toNumericKind(value, kind);
95
+ const right = toNumericKind(delta, kind);
96
+ if (typeof left === "number") return left + right;
97
+ if (typeof left === "bigint") return left + right;
98
+ return left.plus(right);
99
+ }
100
+ /** value 的 times 倍(times 是整数,如 -1、10),按 kind 精确运算 */
101
+ function multiplyNumeric(value, times, kind) {
102
+ const typed = toNumericKind(value, kind);
103
+ if (typeof typed === "number") return typed * times;
104
+ if (typeof typed === "bigint") return typed * BigInt(times);
105
+ return typed.times(times);
106
+ }
107
+ /**
108
+ * 夹在 [min, max] 之间并对齐到 min + n × step(没有 min 时对齐到 0 + n × step),按 kind 精确运算:
109
+ * number 走 snapToStep(按小数位取整去掉浮点误差),bigint 的步长至少为 1,Decimal 用值自己的构造函数
110
+ */
111
+ function snapNumeric(value, step, min, max, kind) {
112
+ if (kind === "number") return snapToStep(toNumber(value), toNumber(step), min == null ? -Infinity : toNumber(min), max == null ? Infinity : toNumber(max));
113
+ const at = (item) => toNumericKind(item, kind);
114
+ let snapped;
115
+ if (kind === "bigint") {
116
+ const size = at(step) > 0n ? at(step) : 1n;
117
+ const base = min == null ? 0n : at(min);
118
+ const offset = at(value) - base;
119
+ const half = offset < 0n ? -size : size;
120
+ snapped = base + (2n * offset + half) / (2n * size) * size;
121
+ } else {
122
+ const base = min == null ? new kind(0) : at(min);
123
+ const size = at(step);
124
+ snapped = base.plus(at(value).minus(base).div(size).round().times(size));
125
+ }
126
+ if (min != null && compareNumeric(snapped, min) < 0) snapped = at(min);
127
+ if (max != null && compareNumeric(snapped, max) > 0) snapped = at(max);
128
+ return snapped;
129
+ }
130
+ //#endregion
131
+ export { addNumeric, compareNumeric, isDecimal, isNumeric, isNumericText, multiplyNumeric, numericKind, numericText, sameNumeric, shiftDecimal, snapNumeric, toNumber, toNumericKind };
132
+
133
+ //# sourceMappingURL=numeric.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numeric.js","names":[],"sources":["../../../src/utils/data/numeric.ts"],"sourcesContent":["/**\n * 内置支持的数值类型:number、bigint 与 decimal.js 的 Decimal(金额、精确运算)。\n * 组件的数值属性都接受它们(NumericValue),排序、格式化、表单提交不丢精度。\n *\n * compareNumeric(new Decimal('1.5'), 1.25) // 1:不同类型也按大小比\n * numericText(new Decimal('1e21')) // '1000000000000000000000':提交给服务端的十进制文本\n *\n * 这里不在运行时导入 decimal.js:按实例自己的构造函数识别与运算(使用方可能用 Decimal.clone 配了精度),\n * 没用到 Decimal 的应用不会因此打包它。\n */\nimport type Decimal from 'decimal.js';\nimport { snapToStep } from './number';\n\n/** 组件接受的数值 */\nexport type NumericValue = number | bigint | Decimal;\n\ntype DecimalConstructor = typeof Decimal;\n\n/** 是不是 decimal.js 的 Decimal(含 Decimal.clone 出来的构造函数的实例) */\nexport function isDecimal(value: unknown): value is Decimal {\n if (typeof value !== 'object' || value === null) return false;\n const constructor = (value as { constructor?: Partial<DecimalConstructor> }).constructor;\n return typeof constructor?.isDecimal === 'function' && constructor.isDecimal(value);\n}\n\n/** 能读成数字的文字:接口常把金额给成十进制字符串('19.90');空白、Infinity、不是数字的都不算 */\nexport function isNumericText(value: unknown): value is string {\n return typeof value === 'string' && value.trim() !== '' && Number.isFinite(Number(value));\n}\n\n/** 是不是组件接受的数值(NaN 也算 number,由使用方决定怎么处理) */\nexport function isNumeric(value: unknown): value is NumericValue {\n return typeof value === 'number' || typeof value === 'bigint' || isDecimal(value);\n}\n\n/** 转成 number:只给需要浮点数的地方用(动画的中间帧、图表坐标、aria-valuenow),会丢精度 */\nexport function toNumber(value: NumericValue): number {\n if (typeof value === 'number') return value;\n if (typeof value === 'bigint') return Number(value);\n return value.toNumber();\n}\n\n/** 十进制文本,不用科学计数法:表单提交、复制给服务端;NaN、Infinity 原样 */\nexport function numericText(value: NumericValue): string {\n if (typeof value === 'bigint') return value.toString();\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) return String(value);\n // 1e21 以上、1e-6 以下 String() 会写成科学计数法;toLocaleString 不带分组时给出完整的十进制\n const plain = value === 0 || (Math.abs(value) < 1e21 && Math.abs(value) >= 1e-6);\n return plain\n ? String(value)\n : value.toLocaleString('en-US', { useGrouping: false, maximumFractionDigits: 20 });\n }\n return value.isFinite() ? value.toFixed() : value.toString();\n}\n\n/**\n * 十进制文本的小数点左移 places 位(除以 10 的 places 次方;负数右移),按文字移位、不经过浮点数:\n * `shiftDecimal('155353.2', 4)` → `'15.53532'`。不是普通十进制写法的文本(NaN、科学计数法)原样返回\n */\nexport function shiftDecimal(text: string, places: number): string {\n const match = /^([+-]?)(\\d*)(?:\\.(\\d*))?$/.exec(text);\n if (!match || places === 0 || !/\\d/.test(text)) return text;\n const [, sign, whole = '', fraction = ''] = match;\n const digits = whole + fraction;\n const point = whole.length - places;\n const padded = point <= 0 ? '0'.repeat(1 - point) + digits : digits.padEnd(point, '0');\n const at = Math.max(point, 1);\n const integer = padded.slice(0, at).replace(/^0+(?=\\d)/, '');\n const decimal = padded.slice(at).replace(/0+$/, '');\n return `${sign}${integer}${decimal ? `.${decimal}` : ''}`;\n}\n\n/** 用 Decimal 的构造函数(从 a 或 b 里找)把两个值都转成 Decimal 比较 */\nfunction compareWithDecimal(a: NumericValue, b: NumericValue, Ctor: DecimalConstructor): number {\n const left = isDecimal(a) ? a : new Ctor(numericText(a));\n return left.cmp(isDecimal(b) ? b : new Ctor(numericText(b)));\n}\n\n/**\n * 按大小比较两个数值,不同类型混着也行:返回负数、0 或正数(同 Array.prototype.sort 的约定)。\n * 有 Decimal 时按十进制精确比较;number 与 bigint 之间不经过浮点数(大整数不丢精度);NaN 排在最后\n */\nexport function compareNumeric(a: NumericValue, b: NumericValue): number {\n if (typeof a === 'number' && Number.isNaN(a))\n return typeof b === 'number' && Number.isNaN(b) ? 0 : 1;\n if (typeof b === 'number' && Number.isNaN(b)) return -1;\n if (isDecimal(a)) return compareWithDecimal(a, b, a.constructor as DecimalConstructor);\n if (isDecimal(b)) return compareWithDecimal(a, b, b.constructor as DecimalConstructor);\n // number、bigint 之间:JavaScript 的关系运算符对混合类型按数学值比较,不丢精度\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/** 两个数值是否相等(1 与 1n、Decimal('1.0') 与 1 都算相等) */\nexport const sameNumeric = (a: NumericValue, b: NumericValue) => compareNumeric(a, b) === 0;\n\n/** 数值写回成什么类型:number、bigint,或某个 Decimal 构造函数(使用方 Decimal.clone 配过精度的也行) */\nexport type NumericKind = 'number' | 'bigint' | DecimalConstructor;\n\n/** 值的类型:Decimal 取它自己的构造函数 */\nexport function numericKind(value: NumericValue): NumericKind {\n if (typeof value === 'number') return 'number';\n if (typeof value === 'bigint') return 'bigint';\n return value.constructor as DecimalConstructor;\n}\n\n/** 十进制文本('-12.5')→ 整数,四舍五入(远离 0) */\nfunction roundedBigInt(text: string): bigint {\n const [whole = '0', fraction = ''] = text.replace(/^[+-]/, '').split('.');\n const negative = text.startsWith('-');\n let result = BigInt(whole || '0');\n if (Number(fraction[0] ?? 0) >= 5) result += 1n;\n return negative ? -result : result;\n}\n\n/**\n * 转成指定类型;value 也可以是十进制文本('-12.5',输入框解析出来的)。\n * bigint 四舍五入到整数,Decimal 按十进制文本转(不经过浮点数)\n */\nexport function toNumericKind(value: NumericValue | string, kind: NumericKind): NumericValue {\n const text = () => (typeof value === 'string' ? value : numericText(value));\n if (kind === 'number') return typeof value === 'string' ? Number(value) : toNumber(value);\n if (kind === 'bigint') return typeof value === 'bigint' ? value : roundedBigInt(text());\n return isDecimal(value) && value.constructor === kind ? value : new kind(text());\n}\n\n/** 按 kind 精确相加:Decimal 用它的构造函数算,bigint 整数相加,number 浮点相加(再由 snapNumeric 去掉误差) */\nexport function addNumeric(value: NumericValue, delta: NumericValue, kind: NumericKind) {\n const left = toNumericKind(value, kind);\n const right = toNumericKind(delta, kind);\n if (typeof left === 'number') return left + (right as number);\n if (typeof left === 'bigint') return left + (right as bigint);\n return (left as Decimal).plus(right as Decimal);\n}\n\n/** value 的 times 倍(times 是整数,如 -1、10),按 kind 精确运算 */\nexport function multiplyNumeric(value: NumericValue, times: number, kind: NumericKind) {\n const typed = toNumericKind(value, kind);\n if (typeof typed === 'number') return typed * times;\n if (typeof typed === 'bigint') return typed * BigInt(times);\n return (typed as Decimal).times(times);\n}\n\n/**\n * 夹在 [min, max] 之间并对齐到 min + n × step(没有 min 时对齐到 0 + n × step),按 kind 精确运算:\n * number 走 snapToStep(按小数位取整去掉浮点误差),bigint 的步长至少为 1,Decimal 用值自己的构造函数\n */\nexport function snapNumeric(\n value: NumericValue,\n step: NumericValue,\n min: NumericValue | undefined,\n max: NumericValue | undefined,\n kind: NumericKind,\n): NumericValue {\n if (kind === 'number') {\n return snapToStep(\n toNumber(value),\n toNumber(step),\n min == null ? -Infinity : toNumber(min),\n max == null ? Infinity : toNumber(max),\n );\n }\n const at = (item: NumericValue) => toNumericKind(item, kind);\n let snapped: NumericValue;\n if (kind === 'bigint') {\n const size = (at(step) as bigint) > 0n ? (at(step) as bigint) : 1n;\n const base = min == null ? 0n : (at(min) as bigint);\n const offset = (at(value) as bigint) - base;\n // 整数除法四舍五入(远离 0)\n const half = offset < 0n ? -size : size;\n snapped = base + ((2n * offset + half) / (2n * size)) * size;\n } else {\n const base = (min == null ? new kind(0) : at(min)) as Decimal;\n const size = at(step) as Decimal;\n snapped = base.plus((at(value) as Decimal).minus(base).div(size).round().times(size));\n }\n if (min != null && compareNumeric(snapped, min) < 0) snapped = at(min);\n if (max != null && compareNumeric(snapped, max) > 0) snapped = at(max);\n return snapped;\n}\n"],"mappings":";;;AAmBA,SAAgB,UAAU,OAAkC;CAC1D,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO;CACxD,MAAM,cAAe,MAAwD;CAC7E,OAAO,OAAO,aAAa,cAAc,cAAc,YAAY,UAAU,KAAK;AACpF;;AAGA,SAAgB,cAAc,OAAiC;CAC7D,OAAO,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,MAAM,OAAO,SAAS,OAAO,KAAK,CAAC;AAC1F;;AAGA,SAAgB,UAAU,OAAuC;CAC/D,OAAO,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,UAAU,KAAK;AAClF;;AAGA,SAAgB,SAAS,OAA6B;CACpD,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,IAAI,OAAO,UAAU,UAAU,OAAO,OAAO,KAAK;CAClD,OAAO,MAAM,SAAS;AACxB;;AAGA,SAAgB,YAAY,OAA6B;CACvD,IAAI,OAAO,UAAU,UAAU,OAAO,MAAM,SAAS;CACrD,IAAI,OAAO,UAAU,UAAU;EAC7B,IAAI,CAAC,OAAO,SAAS,KAAK,GAAG,OAAO,OAAO,KAAK;EAGhD,OADc,UAAU,KAAM,KAAK,IAAI,KAAK,IAAI,QAAQ,KAAK,IAAI,KAAK,KAAK,OAEvE,OAAO,KAAK,IACZ,MAAM,eAAe,SAAS;GAAE,aAAa;GAAO,uBAAuB;EAAG,CAAC;CACrF;CACA,OAAO,MAAM,SAAS,IAAI,MAAM,QAAQ,IAAI,MAAM,SAAS;AAC7D;;;;;AAMA,SAAgB,aAAa,MAAc,QAAwB;CACjE,MAAM,QAAQ,6BAA6B,KAAK,IAAI;CACpD,IAAI,CAAC,SAAS,WAAW,KAAK,CAAC,KAAK,KAAK,IAAI,GAAG,OAAO;CACvD,MAAM,GAAG,MAAM,QAAQ,IAAI,WAAW,MAAM;CAC5C,MAAM,SAAS,QAAQ;CACvB,MAAM,QAAQ,MAAM,SAAS;CAC7B,MAAM,SAAS,SAAS,IAAI,IAAI,OAAO,IAAI,KAAK,IAAI,SAAS,OAAO,OAAO,OAAO,GAAG;CACrF,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC;CAC5B,MAAM,UAAU,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC,QAAQ,aAAa,EAAE;CAC3D,MAAM,UAAU,OAAO,MAAM,EAAE,CAAC,CAAC,QAAQ,OAAO,EAAE;CAClD,OAAO,GAAG,OAAO,UAAU,UAAU,IAAI,YAAY;AACvD;;AAGA,SAAS,mBAAmB,GAAiB,GAAiB,MAAkC;CAE9F,QADa,UAAU,CAAC,IAAI,IAAI,IAAI,KAAK,YAAY,CAAC,CAAC,EAAA,CAC3C,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC;AAC7D;;;;;AAMA,SAAgB,eAAe,GAAiB,GAAyB;CACvE,IAAI,OAAO,MAAM,YAAY,OAAO,MAAM,CAAC,GACzC,OAAO,OAAO,MAAM,YAAY,OAAO,MAAM,CAAC,IAAI,IAAI;CACxD,IAAI,OAAO,MAAM,YAAY,OAAO,MAAM,CAAC,GAAG,OAAO;CACrD,IAAI,UAAU,CAAC,GAAG,OAAO,mBAAmB,GAAG,GAAG,EAAE,WAAiC;CACrF,IAAI,UAAU,CAAC,GAAG,OAAO,mBAAmB,GAAG,GAAG,EAAE,WAAiC;CAErF,OAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI;AAClC;;AAGA,IAAa,eAAe,GAAiB,MAAoB,eAAe,GAAG,CAAC,MAAM;;AAM1F,SAAgB,YAAY,OAAkC;CAC5D,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,OAAO,MAAM;AACf;;AAGA,SAAS,cAAc,MAAsB;CAC3C,MAAM,CAAC,QAAQ,KAAK,WAAW,MAAM,KAAK,QAAQ,SAAS,EAAE,CAAC,CAAC,MAAM,GAAG;CACxE,MAAM,WAAW,KAAK,WAAW,GAAG;CACpC,IAAI,SAAS,OAAO,SAAS,GAAG;CAChC,IAAI,OAAO,SAAS,MAAM,CAAC,KAAK,GAAG,UAAU;CAC7C,OAAO,WAAW,CAAC,SAAS;AAC9B;;;;;AAMA,SAAgB,cAAc,OAA8B,MAAiC;CAC3F,MAAM,aAAc,OAAO,UAAU,WAAW,QAAQ,YAAY,KAAK;CACzE,IAAI,SAAS,UAAU,OAAO,OAAO,UAAU,WAAW,OAAO,KAAK,IAAI,SAAS,KAAK;CACxF,IAAI,SAAS,UAAU,OAAO,OAAO,UAAU,WAAW,QAAQ,cAAc,KAAK,CAAC;CACtF,OAAO,UAAU,KAAK,KAAK,MAAM,gBAAgB,OAAO,QAAQ,IAAI,KAAK,KAAK,CAAC;AACjF;;AAGA,SAAgB,WAAW,OAAqB,OAAqB,MAAmB;CACtF,MAAM,OAAO,cAAc,OAAO,IAAI;CACtC,MAAM,QAAQ,cAAc,OAAO,IAAI;CACvC,IAAI,OAAO,SAAS,UAAU,OAAO,OAAQ;CAC7C,IAAI,OAAO,SAAS,UAAU,OAAO,OAAQ;CAC7C,OAAQ,KAAiB,KAAK,KAAgB;AAChD;;AAGA,SAAgB,gBAAgB,OAAqB,OAAe,MAAmB;CACrF,MAAM,QAAQ,cAAc,OAAO,IAAI;CACvC,IAAI,OAAO,UAAU,UAAU,OAAO,QAAQ;CAC9C,IAAI,OAAO,UAAU,UAAU,OAAO,QAAQ,OAAO,KAAK;CAC1D,OAAQ,MAAkB,MAAM,KAAK;AACvC;;;;;AAMA,SAAgB,YACd,OACA,MACA,KACA,KACA,MACc;CACd,IAAI,SAAS,UACX,OAAO,WACL,SAAS,KAAK,GACd,SAAS,IAAI,GACb,OAAO,OAAO,YAAY,SAAS,GAAG,GACtC,OAAO,OAAO,WAAW,SAAS,GAAG,CACvC;CAEF,MAAM,MAAM,SAAuB,cAAc,MAAM,IAAI;CAC3D,IAAI;CACJ,IAAI,SAAS,UAAU;EACrB,MAAM,OAAQ,GAAG,IAAI,IAAe,KAAM,GAAG,IAAI,IAAe;EAChE,MAAM,OAAO,OAAO,OAAO,KAAM,GAAG,GAAG;EACvC,MAAM,SAAU,GAAG,KAAK,IAAe;EAEvC,MAAM,OAAO,SAAS,KAAK,CAAC,OAAO;EACnC,UAAU,QAAS,KAAK,SAAS,SAAS,KAAK,QAAS;CAC1D,OAAO;EACL,MAAM,OAAQ,OAAO,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG;EAChD,MAAM,OAAO,GAAG,IAAI;EACpB,UAAU,KAAK,KAAM,GAAG,KAAK,CAAC,CAAa,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC;CACtF;CACA,IAAI,OAAO,QAAQ,eAAe,SAAS,GAAG,IAAI,GAAG,UAAU,GAAG,GAAG;CACrE,IAAI,OAAO,QAAQ,eAAe,SAAS,GAAG,IAAI,GAAG,UAAU,GAAG,GAAG;CACrE,OAAO;AACT"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 分页的页码序列(纯函数,算法同 MUI 的 usePagination):首尾各留 boundaries 页、当前页左右各留 siblings 页,
3
+ * 中间用省略号;序列长度固定(页数够多时总是 2 × boundaries + 2 × siblings + 3 项),翻页时按钮不跳动。
4
+ *
5
+ * paginationItems({ page: 6, pageCount: 20 }) // [1, 'start-ellipsis', 5, 6, 7, 'end-ellipsis', 20]
6
+ */
7
+ /** 省略号:start 在当前页之前,end 在之后(两者都可能出现,作为 key 要区分开) */
8
+ export type PaginationEllipsis = 'start-ellipsis' | 'end-ellipsis';
9
+ /** paginationItems 的参数 */
10
+ export interface PaginationOptions {
11
+ /** 当前页,从 1 开始 */
12
+ page: number;
13
+ /** 总页数 */
14
+ pageCount: number;
15
+ /** 当前页左右各显示几页,默认 1 */
16
+ siblings?: number;
17
+ /** 首尾各固定显示几页,默认 1 */
18
+ boundaries?: number;
19
+ }
20
+ /** 要显示的页码与省略号,依次排列 */
21
+ export declare function paginationItems({ page, pageCount, siblings, boundaries, }: PaginationOptions): (number | PaginationEllipsis)[];
@@ -0,0 +1,22 @@
1
+ //#region src/utils/data/pagination.ts
2
+ var range = (from, to) => Array.from({ length: Math.max(0, to - from + 1) }, (_, index) => from + index);
3
+ /** 要显示的页码与省略号,依次排列 */
4
+ function paginationItems({ page, pageCount, siblings = 1, boundaries = 1 }) {
5
+ const startPages = range(1, Math.min(boundaries, pageCount));
6
+ const endPages = range(Math.max(pageCount - boundaries + 1, boundaries + 1), pageCount);
7
+ const siblingsStart = Math.max(Math.min(page - siblings, pageCount - boundaries - siblings * 2 - 1), boundaries + 2);
8
+ const siblingsEnd = Math.min(Math.max(page + siblings, boundaries + siblings * 2 + 2), endPages.length > 0 ? endPages[0] - 2 : pageCount - 1);
9
+ const before = siblingsStart > boundaries + 2 ? ["start-ellipsis"] : boundaries + 1 < pageCount - boundaries ? [boundaries + 1] : [];
10
+ const after = siblingsEnd < pageCount - boundaries - 1 ? ["end-ellipsis"] : pageCount - boundaries > boundaries ? [pageCount - boundaries] : [];
11
+ return [
12
+ ...startPages,
13
+ ...before,
14
+ ...range(siblingsStart, siblingsEnd),
15
+ ...after,
16
+ ...endPages
17
+ ];
18
+ }
19
+ //#endregion
20
+ export { paginationItems };
21
+
22
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","names":[],"sources":["../../../src/utils/data/pagination.ts"],"sourcesContent":["/**\n * 分页的页码序列(纯函数,算法同 MUI 的 usePagination):首尾各留 boundaries 页、当前页左右各留 siblings 页,\n * 中间用省略号;序列长度固定(页数够多时总是 2 × boundaries + 2 × siblings + 3 项),翻页时按钮不跳动。\n *\n * paginationItems({ page: 6, pageCount: 20 }) // [1, 'start-ellipsis', 5, 6, 7, 'end-ellipsis', 20]\n */\n\n/** 省略号:start 在当前页之前,end 在之后(两者都可能出现,作为 key 要区分开) */\nexport type PaginationEllipsis = 'start-ellipsis' | 'end-ellipsis';\n\n/** paginationItems 的参数 */\nexport interface PaginationOptions {\n /** 当前页,从 1 开始 */\n page: number;\n /** 总页数 */\n pageCount: number;\n /** 当前页左右各显示几页,默认 1 */\n siblings?: number;\n /** 首尾各固定显示几页,默认 1 */\n boundaries?: number;\n}\n\nconst range = (from: number, to: number) =>\n Array.from({ length: Math.max(0, to - from + 1) }, (_, index) => from + index);\n\n/** 要显示的页码与省略号,依次排列 */\nexport function paginationItems({\n page,\n pageCount,\n siblings = 1,\n boundaries = 1,\n}: PaginationOptions): (number | PaginationEllipsis)[] {\n const startPages = range(1, Math.min(boundaries, pageCount));\n const endPages = range(Math.max(pageCount - boundaries + 1, boundaries + 1), pageCount);\n // 当前页这一组的起止:靠近两端时向另一侧多借几页,保持总项数不变\n const siblingsStart = Math.max(\n Math.min(page - siblings, pageCount - boundaries - siblings * 2 - 1),\n boundaries + 2,\n );\n const siblingsEnd = Math.min(\n Math.max(page + siblings, boundaries + siblings * 2 + 2),\n endPages.length > 0 ? endPages[0]! - 2 : pageCount - 1,\n );\n // 省略号只代替两页以上;只隔一页时直接显示那一页\n const before =\n siblingsStart > boundaries + 2\n ? ['start-ellipsis' as const]\n : boundaries + 1 < pageCount - boundaries\n ? [boundaries + 1]\n : [];\n const after =\n siblingsEnd < pageCount - boundaries - 1\n ? ['end-ellipsis' as const]\n : pageCount - boundaries > boundaries\n ? [pageCount - boundaries]\n : [];\n return [...startPages, ...before, ...range(siblingsStart, siblingsEnd), ...after, ...endPages];\n}\n"],"mappings":";AAsBA,IAAM,SAAS,MAAc,OAC3B,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,KAAK,OAAO,CAAC,EAAE,IAAI,GAAG,UAAU,OAAO,KAAK;;AAG/E,SAAgB,gBAAgB,EAC9B,MACA,WACA,WAAW,GACX,aAAa,KACwC;CACrD,MAAM,aAAa,MAAM,GAAG,KAAK,IAAI,YAAY,SAAS,CAAC;CAC3D,MAAM,WAAW,MAAM,KAAK,IAAI,YAAY,aAAa,GAAG,aAAa,CAAC,GAAG,SAAS;CAEtF,MAAM,gBAAgB,KAAK,IACzB,KAAK,IAAI,OAAO,UAAU,YAAY,aAAa,WAAW,IAAI,CAAC,GACnE,aAAa,CACf;CACA,MAAM,cAAc,KAAK,IACvB,KAAK,IAAI,OAAO,UAAU,aAAa,WAAW,IAAI,CAAC,GACvD,SAAS,SAAS,IAAI,SAAS,KAAM,IAAI,YAAY,CACvD;CAEA,MAAM,SACJ,gBAAgB,aAAa,IACzB,CAAC,gBAAyB,IAC1B,aAAa,IAAI,YAAY,aAC3B,CAAC,aAAa,CAAC,IACf,CAAC;CACT,MAAM,QACJ,cAAc,YAAY,aAAa,IACnC,CAAC,cAAuB,IACxB,YAAY,aAAa,aACvB,CAAC,YAAY,UAAU,IACvB,CAAC;CACT,OAAO;EAAC,GAAG;EAAY,GAAG;EAAQ,GAAG,MAAM,eAAe,WAAW;EAAG,GAAG;EAAO,GAAG;CAAQ;AAC/F"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * 选择模型:单选、多选怎样响应“点了一项”(纯函数),以及单选 / 多选组件共用的 props。
3
+ * ToggleGroup、Listbox、Select、Combobox、CheckboxGroup、DataTable 的行选择都用它。
4
+ */
5
+ /** 选择方式 */
6
+ export interface SelectionModes {
7
+ /** 单选:选中一项会取消其他项;再点已选的项取消选中(required 时不取消) */
8
+ single: unknown;
9
+ /** 多选:每项独立切换 */
10
+ multiple: unknown;
11
+ }
12
+ /** 单选:value 是选中项的值 */
13
+ export interface SingleSelectionProps {
14
+ /** 选择方式,默认 single */
15
+ selectionMode?: Extract<keyof SelectionModes, 'single'>;
16
+ /** 选中项:父级写 _value={x};没有选中时是 null */
17
+ _value?: string | null;
18
+ }
19
+ /** 多选:value 是选中项的值的数组 */
20
+ export interface MultipleSelectionProps {
21
+ /** 选择方式 */
22
+ selectionMode: Extract<keyof SelectionModes, 'multiple'>;
23
+ /** 选中项:父级写 _value={list} */
24
+ _value?: string[];
25
+ }
26
+ /** 单选或多选:按 selectionMode 区分 value 是一个值还是数组(Listbox、Select、ToggleGroup) */
27
+ export type SelectionProps = SingleSelectionProps | MultipleSelectionProps;
28
+ /** toggleSelection 的选项 */
29
+ export interface SelectionOptions {
30
+ /** 选择方式 */
31
+ mode: keyof SelectionModes;
32
+ /** 至少保留一项:最后一个已选项不能被取消 */
33
+ required?: boolean;
34
+ }
35
+ /**
36
+ * 单选的值或多选的值数组 → 已选值的数组(单选、多选共用一套渲染与列表状态时)。
37
+ * 单选的空字符串算没有选中:表单的初始值常写 ''(同原生 select 的占位项),这时显示占位文字、不出清除按钮
38
+ */
39
+ export declare const selectedValues: (value: string | readonly string[] | null | undefined) => readonly string[];
40
+ /** 点了 key 之后的选择;没有变化时返回原数组 */
41
+ export declare function toggleSelection<Key>(selected: readonly Key[], key: Key, { mode, required }: SelectionOptions): readonly Key[];