@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,21 @@
1
+ //#region src/utils/data/selection.ts
2
+ /**
3
+ * 单选的值或多选的值数组 → 已选值的数组(单选、多选共用一套渲染与列表状态时)。
4
+ * 单选的空字符串算没有选中:表单的初始值常写 ''(同原生 select 的占位项),这时显示占位文字、不出清除按钮
5
+ */
6
+ var selectedValues = (value) => typeof value === "string" ? value === "" ? [] : [value] : value ?? [];
7
+ /** 点了 key 之后的选择;没有变化时返回原数组 */
8
+ function toggleSelection(selected, key, { mode, required = false }) {
9
+ const isSelected = selected.includes(key);
10
+ if (mode === "single") {
11
+ if (!isSelected) return [key];
12
+ return required ? selected : [];
13
+ }
14
+ if (!isSelected) return [...selected, key];
15
+ if (required && selected.length === 1) return selected;
16
+ return selected.filter((item) => item !== key);
17
+ }
18
+ //#endregion
19
+ export { selectedValues, toggleSelection };
20
+
21
+ //# sourceMappingURL=selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.js","names":[],"sources":["../../../src/utils/data/selection.ts"],"sourcesContent":["/**\n * 选择模型:单选、多选怎样响应“点了一项”(纯函数),以及单选 / 多选组件共用的 props。\n * ToggleGroup、Listbox、Select、Combobox、CheckboxGroup、DataTable 的行选择都用它。\n */\n\n/** 选择方式 */\nexport interface SelectionModes {\n /** 单选:选中一项会取消其他项;再点已选的项取消选中(required 时不取消) */\n single: unknown;\n /** 多选:每项独立切换 */\n multiple: unknown;\n}\n\n/** 单选:value 是选中项的值 */\nexport interface SingleSelectionProps {\n /** 选择方式,默认 single */\n selectionMode?: Extract<keyof SelectionModes, 'single'>;\n /** 选中项:父级写 _value={x};没有选中时是 null */\n _value?: string | null;\n}\n\n/** 多选:value 是选中项的值的数组 */\nexport interface MultipleSelectionProps {\n /** 选择方式 */\n selectionMode: Extract<keyof SelectionModes, 'multiple'>;\n /** 选中项:父级写 _value={list} */\n _value?: string[];\n}\n\n/** 单选或多选:按 selectionMode 区分 value 是一个值还是数组(Listbox、Select、ToggleGroup) */\nexport type SelectionProps = SingleSelectionProps | MultipleSelectionProps;\n\n/** toggleSelection 的选项 */\nexport interface SelectionOptions {\n /** 选择方式 */\n mode: keyof SelectionModes;\n /** 至少保留一项:最后一个已选项不能被取消 */\n required?: boolean;\n}\n\n/**\n * 单选的值或多选的值数组 → 已选值的数组(单选、多选共用一套渲染与列表状态时)。\n * 单选的空字符串算没有选中:表单的初始值常写 ''(同原生 select 的占位项),这时显示占位文字、不出清除按钮\n */\nexport const selectedValues = (\n value: string | readonly string[] | null | undefined,\n): readonly string[] => (typeof value === 'string' ? (value === '' ? [] : [value]) : (value ?? []));\n\n/** 点了 key 之后的选择;没有变化时返回原数组 */\nexport function toggleSelection<Key>(\n selected: readonly Key[],\n key: Key,\n { mode, required = false }: SelectionOptions,\n): readonly Key[] {\n const isSelected = selected.includes(key);\n if (mode === 'single') {\n if (!isSelected) return [key];\n return required ? selected : [];\n }\n if (!isSelected) return [...selected, key];\n if (required && selected.length === 1) return selected;\n return selected.filter((item) => item !== key);\n}\n"],"mappings":";;;;;AA4CA,IAAa,kBACX,UACuB,OAAO,UAAU,WAAY,UAAU,KAAK,CAAA,IAAK,CAAC,KAAK,IAAM,SAAS,CAAA;;AAG/F,SAAgB,gBACd,UACA,KACA,EAAE,MAAM,WAAW,SACH;CAChB,MAAM,aAAa,SAAS,SAAS,GAAG;CACxC,IAAI,SAAS,UAAU;EACrB,IAAI,CAAC,YAAY,OAAO,CAAC,GAAG;EAC5B,OAAO,WAAW,WAAW,CAAA;CAC/B;CACA,IAAI,CAAC,YAAY,OAAO,CAAC,GAAG,UAAU,GAAG;CACzC,IAAI,YAAY,SAAS,WAAW,GAAG,OAAO;CAC9C,OAAO,SAAS,QAAQ,SAAS,SAAS,GAAG;AAC/C"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * 状态映射:一处写好每种状态的名字、色调、图标与说明,标记(StatusBadge)、表格的状态列、筛选的选项、步骤、看板的列共用,
3
+ * 同一种状态在哪儿都是同一个颜色、同一个叫法。定义的顺序就是阶段的顺序(任务从“待启动”走到“关闭”)。
4
+ *
5
+ * export const taskStatuses = createStatusMap({
6
+ * pending: { label: '待启动', tone: 'neutral' },
7
+ * designing: { label: '设计中', tone: 'info' },
8
+ * closed: { label: '关闭', tone: 'success' },
9
+ * });
10
+ * <StatusBadge statuses={taskStatuses} value={task.status} />
11
+ * <Select items={taskStatuses.options()} … />
12
+ */
13
+ import type { IconData } from '../../base/Icon';
14
+ import type { ListboxOption } from '../../input/list-state';
15
+ import type { StatusTone } from '../style/tone-styles';
16
+ /** 一种状态的外观与文案 */
17
+ export interface StatusDefinition {
18
+ /** 显示的名字 */
19
+ label: string;
20
+ /** 色调 */
21
+ tone: StatusTone;
22
+ /** 名字前的图标;不写时 StatusBadge 画一个同色的圆点 */
23
+ icon?: IconData;
24
+ /** 说明:筛选项、提示里显示(“验证不达标时退回方案设计”) */
25
+ description?: string;
26
+ }
27
+ /** createStatusMap 的结果 */
28
+ export interface StatusMap<K extends string = string> {
29
+ /** 全部状态的 key,按定义的顺序(阶段顺序) */
30
+ readonly keys: readonly K[];
31
+ /** 一种状态的定义;不认识的 key(接口多给了新状态)当成中性色、名字就是 key,不报错 */
32
+ get(key: K | (string & {})): StatusDefinition;
33
+ /** 名字 */
34
+ label(key: K | (string & {})): string;
35
+ /** 色调 */
36
+ tone(key: K | (string & {})): StatusTone;
37
+ /** 在阶段里的位置(从 0 起);不认识的 key 是 -1 */
38
+ order(key: K | (string & {})): number;
39
+ /** 给 Select、Listbox、筛选用的选项:value 是 key,带名字与说明;只要一部分时传 keys */
40
+ options(keys?: readonly K[]): ListboxOption[];
41
+ }
42
+ /** 定义一组状态:名字、色调、图标、说明,按阶段顺序写 */
43
+ export declare function createStatusMap<const K extends string>(definitions: Readonly<Record<K, StatusDefinition>>): StatusMap<K>;
@@ -0,0 +1,27 @@
1
+ //#region src/utils/data/status.ts
2
+ /** 定义一组状态:名字、色调、图标、说明,按阶段顺序写 */
3
+ function createStatusMap(definitions) {
4
+ const keys = Object.keys(definitions);
5
+ const index = new Map(keys.map((key, position) => [key, position]));
6
+ const get = (key) => index.has(key) ? definitions[key] : {
7
+ label: key,
8
+ tone: "neutral"
9
+ };
10
+ return {
11
+ keys,
12
+ get,
13
+ label: (key) => get(key).label,
14
+ tone: (key) => get(key).tone,
15
+ order: (key) => index.get(key) ?? -1,
16
+ options: (subset = keys) => subset.map((key) => ({
17
+ value: key,
18
+ label: definitions[key].label,
19
+ description: definitions[key].description,
20
+ icon: definitions[key].icon
21
+ }))
22
+ };
23
+ }
24
+ //#endregion
25
+ export { createStatusMap };
26
+
27
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","names":[],"sources":["../../../src/utils/data/status.ts"],"sourcesContent":["/**\n * 状态映射:一处写好每种状态的名字、色调、图标与说明,标记(StatusBadge)、表格的状态列、筛选的选项、步骤、看板的列共用,\n * 同一种状态在哪儿都是同一个颜色、同一个叫法。定义的顺序就是阶段的顺序(任务从“待启动”走到“关闭”)。\n *\n * export const taskStatuses = createStatusMap({\n * pending: { label: '待启动', tone: 'neutral' },\n * designing: { label: '设计中', tone: 'info' },\n * closed: { label: '关闭', tone: 'success' },\n * });\n * <StatusBadge statuses={taskStatuses} value={task.status} />\n * <Select items={taskStatuses.options()} … />\n */\nimport type { IconData } from '../../base/Icon';\nimport type { ListboxOption } from '../../input/list-state';\nimport type { StatusTone } from '../style/tone-styles';\n\n/** 一种状态的外观与文案 */\nexport interface StatusDefinition {\n /** 显示的名字 */\n label: string;\n /** 色调 */\n tone: StatusTone;\n /** 名字前的图标;不写时 StatusBadge 画一个同色的圆点 */\n icon?: IconData;\n /** 说明:筛选项、提示里显示(“验证不达标时退回方案设计”) */\n description?: string;\n}\n\n/** createStatusMap 的结果 */\nexport interface StatusMap<K extends string = string> {\n /** 全部状态的 key,按定义的顺序(阶段顺序) */\n readonly keys: readonly K[];\n /** 一种状态的定义;不认识的 key(接口多给了新状态)当成中性色、名字就是 key,不报错 */\n get(key: K | (string & {})): StatusDefinition;\n /** 名字 */\n label(key: K | (string & {})): string;\n /** 色调 */\n tone(key: K | (string & {})): StatusTone;\n /** 在阶段里的位置(从 0 起);不认识的 key 是 -1 */\n order(key: K | (string & {})): number;\n /** 给 Select、Listbox、筛选用的选项:value 是 key,带名字与说明;只要一部分时传 keys */\n options(keys?: readonly K[]): ListboxOption[];\n}\n\n/** 定义一组状态:名字、色调、图标、说明,按阶段顺序写 */\nexport function createStatusMap<const K extends string>(\n definitions: Readonly<Record<K, StatusDefinition>>,\n): StatusMap<K> {\n const keys = Object.keys(definitions) as K[];\n const index = new Map<string, number>(keys.map((key, position) => [key, position]));\n const get = (key: string): StatusDefinition =>\n index.has(key) ? definitions[key as K] : { label: key, tone: 'neutral' };\n return {\n keys,\n get,\n label: (key) => get(key).label,\n tone: (key) => get(key).tone,\n order: (key) => index.get(key) ?? -1,\n options: (subset = keys) =>\n subset.map((key) => ({\n value: key,\n label: definitions[key].label,\n description: definitions[key].description,\n icon: definitions[key].icon,\n })),\n };\n}\n"],"mappings":";;AA6CA,SAAgB,gBACd,aACc;CACd,MAAM,OAAO,OAAO,KAAK,WAAW;CACpC,MAAM,QAAQ,IAAI,IAAoB,KAAK,KAAK,KAAK,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC;CAClF,MAAM,OAAO,QACX,MAAM,IAAI,GAAG,IAAI,YAAY,OAAY;EAAE,OAAO;EAAK,MAAM;CAAU;CACzE,OAAO;EACL;EACA;EACA,QAAQ,QAAQ,IAAI,GAAG,CAAC,CAAC;EACzB,OAAO,QAAQ,IAAI,GAAG,CAAC,CAAC;EACxB,QAAQ,QAAQ,MAAM,IAAI,GAAG,KAAK;EAClC,UAAU,SAAS,SACjB,OAAO,KAAK,SAAS;GACnB,OAAO;GACP,OAAO,YAAY,IAAI,CAAC;GACxB,aAAa,YAAY,IAAI,CAAC;GAC9B,MAAM,YAAY,IAAI,CAAC;EACzB,EAAE;CACN;AACF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * 处理组件收到的内容(children 经插槽传来时是 VNode 数组,不是字符串):
3
+ * plainText 取出纯文字,用于拼无障碍名称(如 Tag 的“移除 上海”);childNodes 展开成一层 VNode 列表。
4
+ */
5
+ import { type VNode, type VNodeChild } from 'vue';
6
+ /** 内容只由文字组成时返回拼起来的文字,否则返回 undefined */
7
+ export declare function plainText(content: VNodeChild): string | undefined;
8
+ /**
9
+ * 把内容展开成一层 VNode 列表:数组、Fragment(<>…</>、v-for)都拆开,去掉 null、布尔与注释节点。
10
+ * 给按子元素个数排布的组件用(AvatarGroup 只显示前几个)。
11
+ */
12
+ export declare function childNodes(content: VNodeChild): VNode[];
@@ -0,0 +1,30 @@
1
+ import { Comment, Fragment, Text, createTextVNode, isVNode } from "vue";
2
+ //#region src/utils/data/text.ts
3
+ /**
4
+ * 处理组件收到的内容(children 经插槽传来时是 VNode 数组,不是字符串):
5
+ * plainText 取出纯文字,用于拼无障碍名称(如 Tag 的“移除 上海”);childNodes 展开成一层 VNode 列表。
6
+ */
7
+ /** 内容只由文字组成时返回拼起来的文字,否则返回 undefined */
8
+ function plainText(content) {
9
+ if (typeof content === "string" || typeof content === "number") return String(content);
10
+ if (Array.isArray(content)) {
11
+ const parts = content.map((part) => plainText(part));
12
+ return parts.every((part) => part !== void 0) ? parts.join("") : void 0;
13
+ }
14
+ if (isVNode(content) && content.type === Text && typeof content.children === "string") return content.children;
15
+ }
16
+ /**
17
+ * 把内容展开成一层 VNode 列表:数组、Fragment(<>…</>、v-for)都拆开,去掉 null、布尔与注释节点。
18
+ * 给按子元素个数排布的组件用(AvatarGroup 只显示前几个)。
19
+ */
20
+ function childNodes(content) {
21
+ if (Array.isArray(content)) return content.flatMap((part) => childNodes(part));
22
+ if (!isVNode(content)) return typeof content === "string" || typeof content === "number" ? [createTextVNode(String(content))] : [];
23
+ if (content.type === Comment) return [];
24
+ if (content.type === Fragment) return childNodes(content.children);
25
+ return [content];
26
+ }
27
+ //#endregion
28
+ export { childNodes, plainText };
29
+
30
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","names":[],"sources":["../../../src/utils/data/text.ts"],"sourcesContent":["/**\n * 处理组件收到的内容(children 经插槽传来时是 VNode 数组,不是字符串):\n * plainText 取出纯文字,用于拼无障碍名称(如 Tag 的“移除 上海”);childNodes 展开成一层 VNode 列表。\n */\nimport {\n Comment,\n createTextVNode,\n Fragment,\n isVNode,\n Text,\n type VNode,\n type VNodeChild,\n} from 'vue';\n\n/** 内容只由文字组成时返回拼起来的文字,否则返回 undefined */\nexport function plainText(content: VNodeChild): string | undefined {\n if (typeof content === 'string' || typeof content === 'number') return String(content);\n if (Array.isArray(content)) {\n const parts = content.map((part) => plainText(part as VNodeChild));\n return parts.every((part) => part !== undefined) ? parts.join('') : undefined;\n }\n if (isVNode(content) && content.type === Text && typeof content.children === 'string') {\n return content.children;\n }\n return undefined;\n}\n\n/**\n * 把内容展开成一层 VNode 列表:数组、Fragment(<>…</>、v-for)都拆开,去掉 null、布尔与注释节点。\n * 给按子元素个数排布的组件用(AvatarGroup 只显示前几个)。\n */\nexport function childNodes(content: VNodeChild): VNode[] {\n if (Array.isArray(content)) return content.flatMap((part) => childNodes(part as VNodeChild));\n if (!isVNode(content)) {\n return typeof content === 'string' || typeof content === 'number'\n ? [createTextVNode(String(content))]\n : [];\n }\n if (content.type === Comment) return [];\n if (content.type === Fragment) return childNodes(content.children as VNodeChild);\n return [content];\n}\n"],"mappings":";;;;;;;AAeA,SAAgB,UAAU,SAAyC;CACjE,IAAI,OAAO,YAAY,YAAY,OAAO,YAAY,UAAU,OAAO,OAAO,OAAO;CACrF,IAAI,MAAM,QAAQ,OAAO,GAAG;EAC1B,MAAM,QAAQ,QAAQ,KAAK,SAAS,UAAU,IAAkB,CAAC;EACjE,OAAO,MAAM,OAAO,SAAS,SAAS,KAAA,CAAS,IAAI,MAAM,KAAK,EAAE,IAAI,KAAA;CACtE;CACA,IAAI,QAAQ,OAAO,KAAK,QAAQ,SAAS,QAAQ,OAAO,QAAQ,aAAa,UAC3E,OAAO,QAAQ;AAGnB;;;;;AAMA,SAAgB,WAAW,SAA8B;CACvD,IAAI,MAAM,QAAQ,OAAO,GAAG,OAAO,QAAQ,SAAS,SAAS,WAAW,IAAkB,CAAC;CAC3F,IAAI,CAAC,QAAQ,OAAO,GAClB,OAAO,OAAO,YAAY,YAAY,OAAO,YAAY,WACrD,CAAC,gBAAgB,OAAO,OAAO,CAAC,CAAC,IACjC,CAAC;CAEP,IAAI,QAAQ,SAAS,SAAS,OAAO,CAAC;CACtC,IAAI,QAAQ,SAAS,UAAU,OAAO,WAAW,QAAQ,QAAsB;CAC/E,OAAO,CAAC,OAAO;AACjB"}
@@ -0,0 +1,140 @@
1
+ /** 怎样从数据里读出树的结构 */
2
+ export interface TreeAccessors<T> {
3
+ /** 节点的 key,整棵树里唯一;index 是它在同级里的位置 */
4
+ getKey: (node: T, index: number) => string;
5
+ /** 子节点;叶子或还没加载时返回 undefined / 空数组 */
6
+ getChildren: (node: T) => readonly T[] | undefined;
7
+ /** 有没有子节点(懒加载时子节点还没取回来也算有);不写时看 getChildren 是否非空 */
8
+ hasChildren?: (node: T) => boolean;
9
+ }
10
+ /** 展开成一列的一行 */
11
+ export interface FlatTreeNode<T> {
12
+ /** 原始数据 */
13
+ readonly node: T;
14
+ /** getKey 给出的 key */
15
+ readonly key: string;
16
+ /** 层级,第一层为 0 */
17
+ readonly depth: number;
18
+ /** 父节点的 key;第一层为 undefined */
19
+ readonly parent: string | undefined;
20
+ /** 能不能展开(有子节点,或懒加载时声明了有) */
21
+ readonly expandable: boolean;
22
+ /** 同级一共几个(aria-setsize) */
23
+ readonly setSize: number;
24
+ /** 在同级里排第几,从 1 开始(aria-posinset) */
25
+ readonly position: number;
26
+ }
27
+ /** 节点能不能展开 */
28
+ export declare const isExpandable: <T>(node: T, { getChildren, hasChildren }: TreeAccessors<T>) => boolean;
29
+ /** flattenTree 的选项 */
30
+ export interface FlattenTreeOptions<T> {
31
+ /** 改写每一层的顺序(TreeDataTable 按当前排序),不写时按数据顺序 */
32
+ order?: (level: readonly T[]) => readonly T[];
33
+ /** 只要这些节点(搜索过滤:filterTree 的 include),不写时全要 */
34
+ include?: ReadonlySet<string>;
35
+ }
36
+ /** 按展开状态深度优先展开成一列:只有展开了的节点的子节点出现在结果里 */
37
+ export declare function flattenTree<T>(roots: readonly T[], accessors: TreeAccessors<T>, expanded: ReadonlySet<string>, { order, include }?: FlattenTreeOptions<T>): FlatTreeNode<T>[];
38
+ /** 整棵(已加载的)树的索引:勾选联动要看到折叠着的节点 */
39
+ export interface TreeIndex {
40
+ /** 深度优先的顺序 */
41
+ readonly order: readonly string[];
42
+ /** key → 父节点的 key */
43
+ readonly parents: ReadonlyMap<string, string | undefined>;
44
+ /** key → 已加载的子节点的 key */
45
+ readonly children: ReadonlyMap<string, readonly string[]>;
46
+ }
47
+ /** 建立整棵已加载的树的索引 */
48
+ export declare function indexTree<T>(roots: readonly T[], accessors: TreeAccessors<T>): TreeIndex;
49
+ /** 勾选状态 */
50
+ export type CheckState = 'checked' | 'indeterminate' | 'unchecked';
51
+ /**
52
+ * 勾上或取消 key:子孙跟着变;祖先的子节点全勾上时祖先也勾上,否则取消。
53
+ * 返回勾上的全部节点(按树的顺序),可以直接写回 checked
54
+ */
55
+ export declare function toggleChecked(index: TreeIndex, checked: readonly string[], key: string): string[];
56
+ /** 勾选结果的取法(同 Ant Design 的 showCheckedStrategy) */
57
+ export interface CheckStrategies {
58
+ /** 勾上的全部节点(默认) */
59
+ all: unknown;
60
+ /** 父节点全勾上时只要父节点,不再列出它的子孙(提交“整个部门”而不是逐个成员) */
61
+ parent: unknown;
62
+ /** 只要叶子(没有已加载的子节点的节点) */
63
+ child: unknown;
64
+ }
65
+ /** 按取法给出勾上的节点(按树的顺序);checked 可以是 toggleChecked 的结果,也可以是外部给的部分节点 */
66
+ export declare function checkedByStrategy(index: TreeIndex, checked: readonly string[], strategy: keyof CheckStrategies): string[];
67
+ /** 从第一层到 key 的各节点的 key(含 key 自己);key 不在树里时为空数组。Cascader 的路径、面包屑用它 */
68
+ export declare function treePath(index: TreeIndex, key: string): string[];
69
+ /** filterTree 的结果 */
70
+ export interface TreeFilter {
71
+ /** 要显示的节点:匹配的节点与它们的祖先(交给 flattenTree 的 include) */
72
+ include: Set<string>;
73
+ /** 要展开的节点:匹配的节点的祖先,展开后才看得到匹配项 */
74
+ expand: Set<string>;
75
+ /** 匹配的节点(高亮用) */
76
+ matched: Set<string>;
77
+ }
78
+ /**
79
+ * 搜索过滤:留下匹配的节点与它们的祖先,并展开祖先(只看已加载的节点)。
80
+ * 匹配的节点的子孙不跟着留下(它们自己匹配才留下),同 Ant Design TreeSelect 的搜索
81
+ */
82
+ export declare function filterTree<T>(roots: readonly T[], accessors: TreeAccessors<T>, match: (node: T) => boolean): TreeFilter;
83
+ /** buildTree 怎样读平铺的行 */
84
+ export interface TreeRows<T> {
85
+ /** 行的 key,这批行里唯一 */
86
+ getKey: (row: T) => string;
87
+ /** 父行的 key;根行是 null / undefined,父行不在这批行里的也当作根 */
88
+ getParent: (row: T) => string | null | undefined;
89
+ /** 用子节点生成一个节点(不改原行),同 TreeEditor;不写时是 `{ ...row, children }` */
90
+ withChildren?: (row: T, children: T[]) => T;
91
+ }
92
+ /**
93
+ * 平铺的行(每行带父 key)组装成树,返回第一层;同级保持 rows 里的顺序,叶子的 children 是空数组。
94
+ * 服务端搜索懒加载的树时回“匹配的节点和它们的祖先”(query 库的 withAncestors),组装后再用 filterTree 得到要展开、高亮的节点。
95
+ * key 重复或父子成环时报错(环上的行到不了第一层)
96
+ */
97
+ export declare function buildTree<T>(rows: readonly T[], { getKey, getParent, withChildren }: TreeRows<T>): T[];
98
+ /** moveNode 要的读写方法:在读取之外,能用新的子节点生成一个节点 */
99
+ export interface TreeEditor<T> extends TreeAccessors<T> {
100
+ /** 换掉子节点后的新节点(不改原节点),如 `(node, children) => ({ ...node, children })` */
101
+ withChildren: (node: T, children: T[]) => T;
102
+ }
103
+ /** 移动的目标:放到哪个节点下(undefined 是第一层)的第几位 */
104
+ export interface TreeMoveTarget {
105
+ /** 新的父节点的 key;第一层时为 undefined */
106
+ parent: string | undefined;
107
+ /** 在新的同级里的位置(按移走之后的同级算),超出时放到最后 */
108
+ index: number;
109
+ }
110
+ /**
111
+ * 把 key 移到 target(不改原数据,返回新的第一层;沿途的节点用 withChildren 重建,其余节点原样复用)。
112
+ * key 不存在、目标是它自己或它的子孙时返回 null(拖到自己里面不成立)
113
+ */
114
+ export declare function moveNode<T>(roots: readonly T[], editor: TreeEditor<T>, key: string, target: TreeMoveTarget): T[] | null;
115
+ /** 每个节点的勾选状态:子孙里有勾上的、但自己没有全勾上时是 indeterminate */
116
+ export declare function checkStates(index: TreeIndex, checked: readonly string[]): Map<string, CheckState>;
117
+ /** useTreeExpansion 的选项 */
118
+ export interface TreeExpansionOptions<T> {
119
+ /** 读当前展开的 key */
120
+ expanded: () => readonly string[];
121
+ /** 写回展开的 key */
122
+ setExpanded: (keys: string[]) => void;
123
+ /** 节点已加载的子节点 */
124
+ getChildren: (node: T) => readonly T[] | undefined;
125
+ /** 展开一个还没有子节点的节点时调用:取回子节点并放进数据里;返回 Promise 时显示加载中 */
126
+ loadChildren?: (node: T) => Promise<unknown> | void;
127
+ /** 子节点加载失败:节点收回去,可以再展开重试;不写时在控制台报错 */
128
+ onLoadError?: (error: unknown, node: T) => void;
129
+ }
130
+ /** useTreeExpansion 的返回值 */
131
+ export interface TreeExpansion<T> {
132
+ /** 是否展开 */
133
+ isExpanded: (key: string) => boolean;
134
+ /** 是否正在加载子节点 */
135
+ isLoading: (key: string) => boolean;
136
+ /** 展开或收起;展开一个还没有子节点的节点时懒加载 */
137
+ setOpen: (node: T, key: string, open: boolean) => Promise<void>;
138
+ }
139
+ /** 展开状态与懒加载(在 setup 里调用) */
140
+ export declare function useTreeExpansion<T>({ expanded, setExpanded, getChildren, loadChildren, onLoadError, }: TreeExpansionOptions<T>): TreeExpansion<T>;
@@ -0,0 +1,273 @@
1
+ import { shallowRef } from "vue";
2
+ //#region src/utils/data/tree.ts
3
+ /**
4
+ * 树状数据的共用逻辑:按展开状态展开成一列行、勾选的父子联动(含半选)、展开时懒加载子项,
5
+ * 以及搜索过滤、勾选结果的取法(只要父 / 只要子 / 全部)、到某个节点的路径、移动节点。
6
+ * TreeDataTable(层级行)、Tree、TreeSelect、Cascader、Transfer 共用;数据形状不限,由 getKey / getChildren 读取。
7
+ *
8
+ * const rows = flattenTree(roots, { getKey, getChildren }, new Set(expanded));
9
+ * const index = indexTree(roots, { getKey, getChildren });
10
+ * checked = toggleChecked(index, checked, key); // 勾上 / 取消一项,子孙与祖先跟着变
11
+ * const states = checkStates(index, checked); // key → checked / indeterminate / unchecked
12
+ * const value = checkedByStrategy(index, checked, 'parent'); // 父节点全勾上时只要父节点
13
+ * const { include, expand } = filterTree(roots, accessors, (node) => node.name.includes(query));
14
+ * flattenTree(roots, accessors, new Set([...expanded, ...expand]), { include });
15
+ * roots = moveNode(roots, { ...accessors, withChildren }, key, { parent: 'b', index: 0 });
16
+ * roots = buildTree(flatRows, { getKey: (r) => r.id, getParent: (r) => r.parentId }); // 平铺的行(服务端搜索的结果)组装成树
17
+ */
18
+ /** 节点能不能展开 */
19
+ var isExpandable = (node, { getChildren, hasChildren }) => hasChildren?.(node) ?? (getChildren(node)?.length ?? 0) > 0;
20
+ /** 按展开状态深度优先展开成一列:只有展开了的节点的子节点出现在结果里 */
21
+ function flattenTree(roots, accessors, expanded, { order = (level) => level, include } = {}) {
22
+ const result = [];
23
+ const visit = (level, depth, parent) => {
24
+ const keyOf = new Map(level.map((node, index) => [node, accessors.getKey(node, index)]));
25
+ const sorted = order(level).filter((node) => !include || include.has(keyOf.get(node)));
26
+ sorted.forEach((node, index) => {
27
+ const key = keyOf.get(node);
28
+ const expandable = isExpandable(node, accessors);
29
+ result.push({
30
+ node,
31
+ key,
32
+ depth,
33
+ parent,
34
+ expandable,
35
+ setSize: sorted.length,
36
+ position: index + 1
37
+ });
38
+ if (expandable && expanded.has(key)) visit(accessors.getChildren(node) ?? [], depth + 1, key);
39
+ });
40
+ };
41
+ visit(roots, 0, void 0);
42
+ return result;
43
+ }
44
+ /** 建立整棵已加载的树的索引 */
45
+ function indexTree(roots, accessors) {
46
+ const order = [];
47
+ const parents = /* @__PURE__ */ new Map();
48
+ const children = /* @__PURE__ */ new Map();
49
+ const visit = (level, parent) => {
50
+ const keys = level.map((node, index) => accessors.getKey(node, index));
51
+ if (parent !== void 0) children.set(parent, keys);
52
+ level.forEach((node, index) => {
53
+ const key = keys[index];
54
+ order.push(key);
55
+ parents.set(key, parent);
56
+ visit(accessors.getChildren(node) ?? [], key);
57
+ });
58
+ };
59
+ visit(roots, void 0);
60
+ return {
61
+ order,
62
+ parents,
63
+ children
64
+ };
65
+ }
66
+ /**
67
+ * 实际勾上的节点:自己或任何祖先在 checked 里(父节点勾上之后才懒加载出来的子节点因此也算勾上),
68
+ * 或者已加载的子节点全勾上了(checked 由外部给出、没有写全父节点时)
69
+ */
70
+ function effectiveChecked(index, checked) {
71
+ const listed = new Set(checked);
72
+ const result = /* @__PURE__ */ new Set();
73
+ for (const key of index.order) {
74
+ const parent = index.parents.get(key);
75
+ if (listed.has(key) || parent !== void 0 && result.has(parent)) result.add(key);
76
+ }
77
+ for (let i = index.order.length - 1; i >= 0; i--) {
78
+ const children = index.children.get(index.order[i]);
79
+ if (children?.length && children.every((child) => result.has(child))) result.add(index.order[i]);
80
+ }
81
+ return result;
82
+ }
83
+ /**
84
+ * 勾上或取消 key:子孙跟着变;祖先的子节点全勾上时祖先也勾上,否则取消。
85
+ * 返回勾上的全部节点(按树的顺序),可以直接写回 checked
86
+ */
87
+ function toggleChecked(index, checked, key) {
88
+ const result = effectiveChecked(index, checked);
89
+ const next = !result.has(key);
90
+ const visit = (current) => {
91
+ if (next) result.add(current);
92
+ else result.delete(current);
93
+ index.children.get(current)?.forEach(visit);
94
+ };
95
+ visit(key);
96
+ for (let parent = index.parents.get(key); parent !== void 0;) {
97
+ if (index.children.get(parent).every((child) => result.has(child))) result.add(parent);
98
+ else result.delete(parent);
99
+ parent = index.parents.get(parent);
100
+ }
101
+ return index.order.filter((item) => result.has(item));
102
+ }
103
+ /** 按取法给出勾上的节点(按树的顺序);checked 可以是 toggleChecked 的结果,也可以是外部给的部分节点 */
104
+ function checkedByStrategy(index, checked, strategy) {
105
+ const effective = effectiveChecked(index, checked);
106
+ return index.order.filter((key) => {
107
+ if (!effective.has(key)) return false;
108
+ if (strategy === "child") return !index.children.get(key)?.length;
109
+ if (strategy === "parent") {
110
+ const parent = index.parents.get(key);
111
+ return parent === void 0 || !effective.has(parent);
112
+ }
113
+ return true;
114
+ });
115
+ }
116
+ /** 从第一层到 key 的各节点的 key(含 key 自己);key 不在树里时为空数组。Cascader 的路径、面包屑用它 */
117
+ function treePath(index, key) {
118
+ if (!index.parents.has(key)) return [];
119
+ const path = [];
120
+ for (let current = key; current !== void 0;) {
121
+ path.unshift(current);
122
+ current = index.parents.get(current);
123
+ }
124
+ return path;
125
+ }
126
+ /**
127
+ * 搜索过滤:留下匹配的节点与它们的祖先,并展开祖先(只看已加载的节点)。
128
+ * 匹配的节点的子孙不跟着留下(它们自己匹配才留下),同 Ant Design TreeSelect 的搜索
129
+ */
130
+ function filterTree(roots, accessors, match) {
131
+ const result = {
132
+ include: /* @__PURE__ */ new Set(),
133
+ expand: /* @__PURE__ */ new Set(),
134
+ matched: /* @__PURE__ */ new Set()
135
+ };
136
+ const visit = (level) => {
137
+ let any = false;
138
+ level.forEach((node, index) => {
139
+ const key = accessors.getKey(node, index);
140
+ const self = match(node);
141
+ const below = visit(accessors.getChildren(node) ?? []);
142
+ if (self) result.matched.add(key);
143
+ if (below) result.expand.add(key);
144
+ if (self || below) {
145
+ result.include.add(key);
146
+ any = true;
147
+ }
148
+ });
149
+ return any;
150
+ };
151
+ visit(roots);
152
+ return result;
153
+ }
154
+ /**
155
+ * 平铺的行(每行带父 key)组装成树,返回第一层;同级保持 rows 里的顺序,叶子的 children 是空数组。
156
+ * 服务端搜索懒加载的树时回“匹配的节点和它们的祖先”(query 库的 withAncestors),组装后再用 filterTree 得到要展开、高亮的节点。
157
+ * key 重复或父子成环时报错(环上的行到不了第一层)
158
+ */
159
+ function buildTree(rows, { getKey, getParent, withChildren }) {
160
+ const make = withChildren ?? ((row, children) => ({
161
+ ...row,
162
+ children
163
+ }));
164
+ const keys = /* @__PURE__ */ new Set();
165
+ for (const row of rows) {
166
+ const key = getKey(row);
167
+ if (keys.has(key)) throw new Error(`buildTree:key ${key} 出现了两次`);
168
+ keys.add(key);
169
+ }
170
+ const roots = [];
171
+ const childrenOf = /* @__PURE__ */ new Map();
172
+ for (const row of rows) {
173
+ const parent = getParent(row);
174
+ if (parent == null || parent === getKey(row) || !keys.has(parent)) roots.push(row);
175
+ else childrenOf.set(parent, [...childrenOf.get(parent) ?? [], row]);
176
+ }
177
+ let built = 0;
178
+ const node = (row) => {
179
+ built++;
180
+ return make(row, (childrenOf.get(getKey(row)) ?? []).map(node));
181
+ };
182
+ const tree = roots.map(node);
183
+ if (built < rows.length) throw new Error("buildTree:有的行的父子关系成了环,到不了第一层");
184
+ return tree;
185
+ }
186
+ /**
187
+ * 把 key 移到 target(不改原数据,返回新的第一层;沿途的节点用 withChildren 重建,其余节点原样复用)。
188
+ * key 不存在、目标是它自己或它的子孙时返回 null(拖到自己里面不成立)
189
+ */
190
+ function moveNode(roots, editor, key, target) {
191
+ const index = indexTree(roots, editor);
192
+ if (!index.parents.has(key)) return null;
193
+ if (target.parent !== void 0) {
194
+ if (!index.parents.has(target.parent)) return null;
195
+ if (treePath(index, target.parent).includes(key)) return null;
196
+ }
197
+ let moving;
198
+ const removePath = new Set(treePath(index, key).slice(0, -1));
199
+ const remove = (level) => level.flatMap((node, position) => {
200
+ const nodeKey = editor.getKey(node, position);
201
+ if (nodeKey === key) {
202
+ moving = node;
203
+ return [];
204
+ }
205
+ if (!removePath.has(nodeKey)) return [node];
206
+ return [editor.withChildren(node, remove(editor.getChildren(node) ?? []))];
207
+ });
208
+ const without = remove(roots);
209
+ const insert = (level) => {
210
+ const next = [...level];
211
+ next.splice(Math.min(Math.max(target.index, 0), next.length), 0, moving);
212
+ return next;
213
+ };
214
+ if (target.parent === void 0) return insert(without);
215
+ const insertPath = new Set(treePath(indexTree(without, editor), target.parent));
216
+ const add = (level) => level.map((node, position) => {
217
+ const nodeKey = editor.getKey(node, position);
218
+ if (!insertPath.has(nodeKey)) return node;
219
+ const children = editor.getChildren(node) ?? [];
220
+ return editor.withChildren(node, nodeKey === target.parent ? insert(children) : add(children));
221
+ });
222
+ return add(without);
223
+ }
224
+ /** 每个节点的勾选状态:子孙里有勾上的、但自己没有全勾上时是 indeterminate */
225
+ function checkStates(index, checked) {
226
+ const effective = effectiveChecked(index, checked);
227
+ const states = /* @__PURE__ */ new Map();
228
+ for (let i = index.order.length - 1; i >= 0; i--) {
229
+ const key = index.order[i];
230
+ if (effective.has(key)) {
231
+ states.set(key, "checked");
232
+ continue;
233
+ }
234
+ const some = index.children.get(key)?.some((child) => states.get(child) !== "unchecked");
235
+ states.set(key, some ? "indeterminate" : "unchecked");
236
+ }
237
+ return states;
238
+ }
239
+ /** 展开状态与懒加载(在 setup 里调用) */
240
+ function useTreeExpansion({ expanded, setExpanded, getChildren, loadChildren, onLoadError }) {
241
+ const loading = shallowRef(/* @__PURE__ */ new Set());
242
+ const isExpanded = (key) => expanded().includes(key);
243
+ const collapse = (key) => setExpanded(expanded().filter((item) => item !== key));
244
+ async function setOpen(node, key, open) {
245
+ if (isExpanded(key) === open) return;
246
+ if (!open) return collapse(key);
247
+ setExpanded([...expanded(), key]);
248
+ if (!loadChildren || loading.value.has(key) || (getChildren(node)?.length ?? 0) > 0) return;
249
+ const pending = loadChildren(node);
250
+ if (!(pending instanceof Promise)) return;
251
+ loading.value = /* @__PURE__ */ new Set([...loading.value, key]);
252
+ try {
253
+ await pending;
254
+ } catch (error) {
255
+ collapse(key);
256
+ if (onLoadError) onLoadError(error, node);
257
+ else console.error("树的子节点加载失败", error);
258
+ } finally {
259
+ const next = new Set(loading.value);
260
+ next.delete(key);
261
+ loading.value = next;
262
+ }
263
+ }
264
+ return {
265
+ isExpanded,
266
+ isLoading: (key) => loading.value.has(key),
267
+ setOpen
268
+ };
269
+ }
270
+ //#endregion
271
+ export { buildTree, checkStates, checkedByStrategy, filterTree, flattenTree, indexTree, isExpandable, moveNode, toggleChecked, treePath, useTreeExpansion };
272
+
273
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","names":[],"sources":["../../../src/utils/data/tree.ts"],"sourcesContent":["/**\n * 树状数据的共用逻辑:按展开状态展开成一列行、勾选的父子联动(含半选)、展开时懒加载子项,\n * 以及搜索过滤、勾选结果的取法(只要父 / 只要子 / 全部)、到某个节点的路径、移动节点。\n * TreeDataTable(层级行)、Tree、TreeSelect、Cascader、Transfer 共用;数据形状不限,由 getKey / getChildren 读取。\n *\n * const rows = flattenTree(roots, { getKey, getChildren }, new Set(expanded));\n * const index = indexTree(roots, { getKey, getChildren });\n * checked = toggleChecked(index, checked, key); // 勾上 / 取消一项,子孙与祖先跟着变\n * const states = checkStates(index, checked); // key → checked / indeterminate / unchecked\n * const value = checkedByStrategy(index, checked, 'parent'); // 父节点全勾上时只要父节点\n * const { include, expand } = filterTree(roots, accessors, (node) => node.name.includes(query));\n * flattenTree(roots, accessors, new Set([...expanded, ...expand]), { include });\n * roots = moveNode(roots, { ...accessors, withChildren }, key, { parent: 'b', index: 0 });\n * roots = buildTree(flatRows, { getKey: (r) => r.id, getParent: (r) => r.parentId }); // 平铺的行(服务端搜索的结果)组装成树\n */\nimport { shallowRef } from 'vue';\n\n/** 怎样从数据里读出树的结构 */\nexport interface TreeAccessors<T> {\n /** 节点的 key,整棵树里唯一;index 是它在同级里的位置 */\n getKey: (node: T, index: number) => string;\n /** 子节点;叶子或还没加载时返回 undefined / 空数组 */\n getChildren: (node: T) => readonly T[] | undefined;\n /** 有没有子节点(懒加载时子节点还没取回来也算有);不写时看 getChildren 是否非空 */\n hasChildren?: (node: T) => boolean;\n}\n\n/** 展开成一列的一行 */\nexport interface FlatTreeNode<T> {\n /** 原始数据 */\n readonly node: T;\n /** getKey 给出的 key */\n readonly key: string;\n /** 层级,第一层为 0 */\n readonly depth: number;\n /** 父节点的 key;第一层为 undefined */\n readonly parent: string | undefined;\n /** 能不能展开(有子节点,或懒加载时声明了有) */\n readonly expandable: boolean;\n /** 同级一共几个(aria-setsize) */\n readonly setSize: number;\n /** 在同级里排第几,从 1 开始(aria-posinset) */\n readonly position: number;\n}\n\n/** 节点能不能展开 */\nexport const isExpandable = <T>(node: T, { getChildren, hasChildren }: TreeAccessors<T>): boolean =>\n hasChildren?.(node) ?? (getChildren(node)?.length ?? 0) > 0;\n\n/** flattenTree 的选项 */\nexport interface FlattenTreeOptions<T> {\n /** 改写每一层的顺序(TreeDataTable 按当前排序),不写时按数据顺序 */\n order?: (level: readonly T[]) => readonly T[];\n /** 只要这些节点(搜索过滤:filterTree 的 include),不写时全要 */\n include?: ReadonlySet<string>;\n}\n\n/** 按展开状态深度优先展开成一列:只有展开了的节点的子节点出现在结果里 */\nexport function flattenTree<T>(\n roots: readonly T[],\n accessors: TreeAccessors<T>,\n expanded: ReadonlySet<string>,\n { order = (level) => level, include }: FlattenTreeOptions<T> = {},\n): FlatTreeNode<T>[] {\n const result: FlatTreeNode<T>[] = [];\n const visit = (level: readonly T[], depth: number, parent: string | undefined) => {\n // 先按原位置取 key(getKey 的 index 是数据里的位置),再排序、过滤\n const keyOf = new Map(level.map((node, index) => [node, accessors.getKey(node, index)]));\n const sorted = order(level).filter((node) => !include || include.has(keyOf.get(node)!));\n sorted.forEach((node, index) => {\n const key = keyOf.get(node)!;\n const expandable = isExpandable(node, accessors);\n result.push({\n node,\n key,\n depth,\n parent,\n expandable,\n setSize: sorted.length,\n position: index + 1,\n });\n if (expandable && expanded.has(key)) visit(accessors.getChildren(node) ?? [], depth + 1, key);\n });\n };\n visit(roots, 0, undefined);\n return result;\n}\n\n/** 整棵(已加载的)树的索引:勾选联动要看到折叠着的节点 */\nexport interface TreeIndex {\n /** 深度优先的顺序 */\n readonly order: readonly string[];\n /** key → 父节点的 key */\n readonly parents: ReadonlyMap<string, string | undefined>;\n /** key → 已加载的子节点的 key */\n readonly children: ReadonlyMap<string, readonly string[]>;\n}\n\n/** 建立整棵已加载的树的索引 */\nexport function indexTree<T>(roots: readonly T[], accessors: TreeAccessors<T>): TreeIndex {\n const order: string[] = [];\n const parents = new Map<string, string | undefined>();\n const children = new Map<string, string[]>();\n const visit = (level: readonly T[], parent: string | undefined) => {\n const keys = level.map((node, index) => accessors.getKey(node, index));\n if (parent !== undefined) children.set(parent, keys);\n level.forEach((node, index) => {\n const key = keys[index]!;\n order.push(key);\n parents.set(key, parent);\n visit(accessors.getChildren(node) ?? [], key);\n });\n };\n visit(roots, undefined);\n return { order, parents, children };\n}\n\n/** 勾选状态 */\nexport type CheckState = 'checked' | 'indeterminate' | 'unchecked';\n\n/**\n * 实际勾上的节点:自己或任何祖先在 checked 里(父节点勾上之后才懒加载出来的子节点因此也算勾上),\n * 或者已加载的子节点全勾上了(checked 由外部给出、没有写全父节点时)\n */\nfunction effectiveChecked(index: TreeIndex, checked: readonly string[]): Set<string> {\n const listed = new Set(checked);\n const result = new Set<string>();\n // order 是深度优先:正序时父节点先于子节点,倒序时子节点先于父节点\n for (const key of index.order) {\n const parent = index.parents.get(key);\n if (listed.has(key) || (parent !== undefined && result.has(parent))) result.add(key);\n }\n for (let i = index.order.length - 1; i >= 0; i--) {\n const children = index.children.get(index.order[i]!);\n if (children?.length && children.every((child) => result.has(child)))\n result.add(index.order[i]!);\n }\n return result;\n}\n\n/**\n * 勾上或取消 key:子孙跟着变;祖先的子节点全勾上时祖先也勾上,否则取消。\n * 返回勾上的全部节点(按树的顺序),可以直接写回 checked\n */\nexport function toggleChecked(index: TreeIndex, checked: readonly string[], key: string): string[] {\n const result = effectiveChecked(index, checked);\n const next = !result.has(key);\n const visit = (current: string) => {\n if (next) result.add(current);\n else result.delete(current);\n index.children.get(current)?.forEach(visit);\n };\n visit(key);\n for (let parent = index.parents.get(key); parent !== undefined;) {\n const all = index.children.get(parent)!.every((child) => result.has(child));\n if (all) result.add(parent);\n else result.delete(parent);\n parent = index.parents.get(parent);\n }\n return index.order.filter((item) => result.has(item));\n}\n\n/** 勾选结果的取法(同 Ant Design 的 showCheckedStrategy) */\nexport interface CheckStrategies {\n /** 勾上的全部节点(默认) */\n all: unknown;\n /** 父节点全勾上时只要父节点,不再列出它的子孙(提交“整个部门”而不是逐个成员) */\n parent: unknown;\n /** 只要叶子(没有已加载的子节点的节点) */\n child: unknown;\n}\n\n/** 按取法给出勾上的节点(按树的顺序);checked 可以是 toggleChecked 的结果,也可以是外部给的部分节点 */\nexport function checkedByStrategy(\n index: TreeIndex,\n checked: readonly string[],\n strategy: keyof CheckStrategies,\n): string[] {\n const effective = effectiveChecked(index, checked);\n return index.order.filter((key) => {\n if (!effective.has(key)) return false;\n if (strategy === 'child') return !index.children.get(key)?.length;\n if (strategy === 'parent') {\n const parent = index.parents.get(key);\n return parent === undefined || !effective.has(parent);\n }\n return true;\n });\n}\n\n/** 从第一层到 key 的各节点的 key(含 key 自己);key 不在树里时为空数组。Cascader 的路径、面包屑用它 */\nexport function treePath(index: TreeIndex, key: string): string[] {\n if (!index.parents.has(key)) return [];\n const path: string[] = [];\n for (let current: string | undefined = key; current !== undefined;) {\n path.unshift(current);\n current = index.parents.get(current);\n }\n return path;\n}\n\n/** filterTree 的结果 */\nexport interface TreeFilter {\n /** 要显示的节点:匹配的节点与它们的祖先(交给 flattenTree 的 include) */\n include: Set<string>;\n /** 要展开的节点:匹配的节点的祖先,展开后才看得到匹配项 */\n expand: Set<string>;\n /** 匹配的节点(高亮用) */\n matched: Set<string>;\n}\n\n/**\n * 搜索过滤:留下匹配的节点与它们的祖先,并展开祖先(只看已加载的节点)。\n * 匹配的节点的子孙不跟着留下(它们自己匹配才留下),同 Ant Design TreeSelect 的搜索\n */\nexport function filterTree<T>(\n roots: readonly T[],\n accessors: TreeAccessors<T>,\n match: (node: T) => boolean,\n): TreeFilter {\n const result: TreeFilter = { include: new Set(), expand: new Set(), matched: new Set() };\n // 返回子树里有没有匹配的节点\n const visit = (level: readonly T[]): boolean => {\n let any = false;\n level.forEach((node, index) => {\n const key = accessors.getKey(node, index);\n const self = match(node);\n const below = visit(accessors.getChildren(node) ?? []);\n if (self) result.matched.add(key);\n if (below) result.expand.add(key);\n if (self || below) {\n result.include.add(key);\n any = true;\n }\n });\n return any;\n };\n visit(roots);\n return result;\n}\n\n/** buildTree 怎样读平铺的行 */\nexport interface TreeRows<T> {\n /** 行的 key,这批行里唯一 */\n getKey: (row: T) => string;\n /** 父行的 key;根行是 null / undefined,父行不在这批行里的也当作根 */\n getParent: (row: T) => string | null | undefined;\n /** 用子节点生成一个节点(不改原行),同 TreeEditor;不写时是 `{ ...row, children }` */\n withChildren?: (row: T, children: T[]) => T;\n}\n\n/**\n * 平铺的行(每行带父 key)组装成树,返回第一层;同级保持 rows 里的顺序,叶子的 children 是空数组。\n * 服务端搜索懒加载的树时回“匹配的节点和它们的祖先”(query 库的 withAncestors),组装后再用 filterTree 得到要展开、高亮的节点。\n * key 重复或父子成环时报错(环上的行到不了第一层)\n */\nexport function buildTree<T>(\n rows: readonly T[],\n { getKey, getParent, withChildren }: TreeRows<T>,\n): T[] {\n const make = withChildren ?? ((row: T, children: T[]) => ({ ...row, children }) as T);\n const keys = new Set<string>();\n for (const row of rows) {\n const key = getKey(row);\n if (keys.has(key)) throw new Error(`buildTree:key ${key} 出现了两次`);\n keys.add(key);\n }\n const roots: T[] = [];\n const childrenOf = new Map<string, T[]>();\n for (const row of rows) {\n const parent = getParent(row);\n if (parent == null || parent === getKey(row) || !keys.has(parent)) roots.push(row);\n else childrenOf.set(parent, [...(childrenOf.get(parent) ?? []), row]);\n }\n let built = 0;\n const node = (row: T): T => {\n built++;\n return make(row, (childrenOf.get(getKey(row)) ?? []).map(node));\n };\n const tree = roots.map(node);\n if (built < rows.length) throw new Error('buildTree:有的行的父子关系成了环,到不了第一层');\n return tree;\n}\n\n/** moveNode 要的读写方法:在读取之外,能用新的子节点生成一个节点 */\nexport interface TreeEditor<T> extends TreeAccessors<T> {\n /** 换掉子节点后的新节点(不改原节点),如 `(node, children) => ({ ...node, children })` */\n withChildren: (node: T, children: T[]) => T;\n}\n\n/** 移动的目标:放到哪个节点下(undefined 是第一层)的第几位 */\nexport interface TreeMoveTarget {\n /** 新的父节点的 key;第一层时为 undefined */\n parent: string | undefined;\n /** 在新的同级里的位置(按移走之后的同级算),超出时放到最后 */\n index: number;\n}\n\n/**\n * 把 key 移到 target(不改原数据,返回新的第一层;沿途的节点用 withChildren 重建,其余节点原样复用)。\n * key 不存在、目标是它自己或它的子孙时返回 null(拖到自己里面不成立)\n */\nexport function moveNode<T>(\n roots: readonly T[],\n editor: TreeEditor<T>,\n key: string,\n target: TreeMoveTarget,\n): T[] | null {\n const index = indexTree(roots, editor);\n if (!index.parents.has(key)) return null;\n if (target.parent !== undefined) {\n if (!index.parents.has(target.parent)) return null;\n if (treePath(index, target.parent).includes(key)) return null;\n }\n let moving: T | undefined;\n // 先摘下来:只重建 key 的祖先\n const removePath = new Set(treePath(index, key).slice(0, -1));\n const remove = (level: readonly T[]): T[] =>\n level.flatMap((node, position) => {\n const nodeKey = editor.getKey(node, position);\n if (nodeKey === key) {\n moving = node;\n return [];\n }\n if (!removePath.has(nodeKey)) return [node];\n return [editor.withChildren(node, remove(editor.getChildren(node) ?? []))];\n });\n const without = remove(roots);\n const insert = (level: readonly T[]) => {\n const next = [...level];\n next.splice(Math.min(Math.max(target.index, 0), next.length), 0, moving!);\n return next;\n };\n if (target.parent === undefined) return insert(without);\n // 再插进去:只重建目标父节点的祖先(含它自己)\n const insertPath = new Set(treePath(indexTree(without, editor), target.parent));\n const add = (level: readonly T[]): T[] =>\n level.map((node, position) => {\n const nodeKey = editor.getKey(node, position);\n if (!insertPath.has(nodeKey)) return node;\n const children = editor.getChildren(node) ?? [];\n return editor.withChildren(\n node,\n nodeKey === target.parent ? insert(children) : add(children),\n );\n });\n return add(without);\n}\n\n/** 每个节点的勾选状态:子孙里有勾上的、但自己没有全勾上时是 indeterminate */\nexport function checkStates(index: TreeIndex, checked: readonly string[]): Map<string, CheckState> {\n const effective = effectiveChecked(index, checked);\n const states = new Map<string, CheckState>();\n // 倒序:子节点先于父节点算好\n for (let i = index.order.length - 1; i >= 0; i--) {\n const key = index.order[i]!;\n if (effective.has(key)) {\n states.set(key, 'checked');\n continue;\n }\n const some = index.children.get(key)?.some((child) => states.get(child) !== 'unchecked');\n states.set(key, some ? 'indeterminate' : 'unchecked');\n }\n return states;\n}\n\n/** useTreeExpansion 的选项 */\nexport interface TreeExpansionOptions<T> {\n /** 读当前展开的 key */\n expanded: () => readonly string[];\n /** 写回展开的 key */\n setExpanded: (keys: string[]) => void;\n /** 节点已加载的子节点 */\n getChildren: (node: T) => readonly T[] | undefined;\n /** 展开一个还没有子节点的节点时调用:取回子节点并放进数据里;返回 Promise 时显示加载中 */\n loadChildren?: (node: T) => Promise<unknown> | void;\n /** 子节点加载失败:节点收回去,可以再展开重试;不写时在控制台报错 */\n onLoadError?: (error: unknown, node: T) => void;\n}\n\n/** useTreeExpansion 的返回值 */\nexport interface TreeExpansion<T> {\n /** 是否展开 */\n isExpanded: (key: string) => boolean;\n /** 是否正在加载子节点 */\n isLoading: (key: string) => boolean;\n /** 展开或收起;展开一个还没有子节点的节点时懒加载 */\n setOpen: (node: T, key: string, open: boolean) => Promise<void>;\n}\n\n/** 展开状态与懒加载(在 setup 里调用) */\nexport function useTreeExpansion<T>({\n expanded,\n setExpanded,\n getChildren,\n loadChildren,\n onLoadError,\n}: TreeExpansionOptions<T>): TreeExpansion<T> {\n const loading = shallowRef<ReadonlySet<string>>(new Set());\n const isExpanded = (key: string) => expanded().includes(key);\n\n const collapse = (key: string) => setExpanded(expanded().filter((item) => item !== key));\n\n async function setOpen(node: T, key: string, open: boolean) {\n if (isExpanded(key) === open) return;\n if (!open) return collapse(key);\n setExpanded([...expanded(), key]);\n // 正在加载(收起后又展开):等那一次,不重复请求\n if (!loadChildren || loading.value.has(key) || (getChildren(node)?.length ?? 0) > 0) return;\n const pending = loadChildren(node);\n if (!(pending instanceof Promise)) return;\n loading.value = new Set([...loading.value, key]);\n try {\n await pending;\n } catch (error) {\n // 失败时收回去:留着展开却没有子节点,看起来像是本来就没有;再展开会重试\n collapse(key);\n if (onLoadError) onLoadError(error, node);\n else console.error('树的子节点加载失败', error);\n } finally {\n const next = new Set(loading.value);\n next.delete(key);\n loading.value = next;\n }\n }\n\n return { isExpanded, isLoading: (key) => loading.value.has(key), setOpen };\n}\n"],"mappings":"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"}