@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,520 @@
1
+ import { toNumber } from "../utils/data/numeric.js";
2
+ import { colors } from "../config/theme/tokens.js";
3
+ import { useLang } from "../config/context.js";
4
+ import { Button } from "../base/Button.js";
5
+ import { useFormat } from "../config/lang/format.js";
6
+ import { Skeleton } from "../feedback/Skeleton.js";
7
+ import { Slider } from "../input/Slider.js";
8
+ import { alignedTicks } from "./axis-ticks.js";
9
+ import { ChartFrame, chartDuration, chartTooltip, createChartInstances, uniqueHighlightFilter, useChartValueText, usePlotSeen } from "./frame.js";
10
+ import { resolveColor, resolveSeries, seriesNumber, seriesValue } from "./series.js";
11
+ import { computed, createVNode, mergeProps, render, shallowRef, useId } from "vue";
12
+ import { _component, bindable, effect, readonlyProp, restProps } from "@zerodep-dev/vue-tsx-pro-tsx";
13
+ import * as css from "@zerodep-dev/vue-tsx-pro-tsx/styles";
14
+ import { Axis, AxisType, Crosshair, Plotband, PlotbandLabelPosition, Plotline, PlotlineLabelPosition, PlotlineLineStylePresets, Position, Scatter, Tooltip, XYContainer } from "@unovis/ts";
15
+ //#region src/charts/XYChart.tsx
16
+ /**
17
+ * 直角坐标图表(柱状图、折线图、面积图)的公共部分:坐标轴、十字线与提示框、数值范围;外层结构(图例、单位、
18
+ * 空与加载状态、给读屏的数据表)交给 ChartFrame。
19
+ * 绘图交给 Unovis 的 XYContainer:组件实例只建一次,数据与配置变化时 update,卸载时 destroy;
20
+ * 绘图区换了元素(加载、空状态之后重新出现)时容器连同全部实例一起重建。
21
+ * 各种图只决定画什么(kind.components),坐标轴、十字线、提示框、配色都在这里统一。
22
+ * 目标线(targets)用 Unovis 的 Plotline。点了下钻(onItemClick):有图形可点的图(柱子)按图形的点击事件
23
+ * (kind.itemSelector),折线、面积图按十字线所在的那一行,散点图按悬停的点。
24
+ *
25
+ * 标注(annotations):类目上的事件画成竖线(Plotline),圈出某个系列的值画成空心圈带文字(Scatter);
26
+ * 区间(bands)画成浅色的带(Plotband)。百分比堆叠(kind.percent)按每个类目里各系列的占比画。
27
+ * 第二数值轴(kind.secondary,组合图):刻度与主轴对齐(alignedTicks),第二轴的系列换算到主轴的坐标里画,
28
+ * 右侧的刻度文字是不裁剪的 Plotline 标签。
29
+ */
30
+ /** 目标线(参考线):数值轴上的一条虚线 */
31
+ /** 标注:类目上发生的事(竖线),或圈出某个系列在这个类目上的值 */
32
+ /** 区间:类目轴上的一段(试运行期、促销期),或数值轴上的一段(目标区间) */
33
+ /** 第二数值轴(右侧):哪些系列画在它上面,它的格式与单位 */
34
+ /** 加载中的骨架 */
35
+ /** 直角坐标图表共有的属性;未声明的属性落到外层 div(role="figure")上,aria-label 是图表的名称 */
36
+ /** 交给各种图的绘制上下文 */
37
+ /** 一种图:画哪些组件,以及与坐标轴、十字线有关的差别 */
38
+ /** 第二数值轴的刻度文字占的宽度(px) */
39
+ var SECONDARY_AXIS_WIDTH = 48;
40
+ /** 骨架柱的高度(百分比):高低错落,看起来像一组数据 */
41
+ var SKELETON_BARS = [
42
+ 55,
43
+ 80,
44
+ 40,
45
+ 70,
46
+ 90,
47
+ 50,
48
+ 65
49
+ ];
50
+ /** XYChart 的样式:hideCrosshairLine 与加载中的骨架(外层结构的样式见 chartStyles) */
51
+ var xyChartStyles = css.create({
52
+ hideCrosshairLine: { "--vis-crosshair-line-stroke-opacity": "0" },
53
+ skeleton: {
54
+ display: "block",
55
+ width: "100%",
56
+ height: "100%"
57
+ },
58
+ zoom: {
59
+ display: "flex",
60
+ alignItems: "center",
61
+ gap: "_md",
62
+ paddingInline: "_sm"
63
+ },
64
+ zoomSlider: {
65
+ flexGrow: 1,
66
+ minWidth: 0
67
+ },
68
+ skeletonBars: {
69
+ display: "flex",
70
+ alignItems: "flex-end",
71
+ justifyContent: "space-around",
72
+ gap: "_md",
73
+ height: "100%"
74
+ },
75
+ skeletonBarsHorizontal: {
76
+ flexDirection: "column",
77
+ alignItems: "flex-start"
78
+ },
79
+ skeletonBar: {
80
+ display: "block",
81
+ flexGrow: 1,
82
+ flexBasis: 0,
83
+ borderRadius: "_sm"
84
+ },
85
+ skeletonBarSize: (percent) => ({ height: percent }),
86
+ skeletonBarSizeHorizontal: (percent) => ({ width: percent })
87
+ });
88
+ /** 加载中绘图区的骨架:柱状图是一排高低不一的柱(横向时是条),其余是一整块 */
89
+ function chartSkeleton({ skeleton = "block", horizontal = false }) {
90
+ if (skeleton === "block") return createVNode(Skeleton, { "sx": xyChartStyles.skeleton }, null);
91
+ return createVNode("div", mergeProps({ "aria-hidden": "true" }, css.attrs(xyChartStyles.skeletonBars, horizontal && xyChartStyles.skeletonBarsHorizontal)), [SKELETON_BARS.map((percent, position) => createVNode(Skeleton, {
92
+ "key": position,
93
+ "sx": [xyChartStyles.skeletonBar, horizontal ? xyChartStyles.skeletonBarSizeHorizontal(`${percent}%`) : xyChartStyles.skeletonBarSize(`${percent}%`)]
94
+ }, null))]);
95
+ }
96
+ /** 直角坐标图表的公共实现(组件库内部用,见 BarChart、LineChart、AreaChart) */
97
+ var XYChart = /*#__PURE__*/ _component((_props, _ctx) => {
98
+ const _cache = [];
99
+ const data = readonlyProp(_props, "data");
100
+ const index = readonlyProp(_props, "index");
101
+ const series = readonlyProp(_props, "series");
102
+ const indexFormat = readonlyProp(_props, "indexFormat");
103
+ const valueFormat = readonlyProp(_props, "valueFormat");
104
+ const unit = readonlyProp(_props, "unit");
105
+ const height = readonlyProp(_props, "height", 240);
106
+ const legend = readonlyProp(_props, "legend");
107
+ const grid = readonlyProp(_props, "grid", true);
108
+ const valueDomain = readonlyProp(_props, "valueDomain");
109
+ const tooltip = readonlyProp(_props, "tooltip", true);
110
+ const loading = readonlyProp(_props, "loading", false);
111
+ const hiddenSeries = bindable(_props, "_hiddenSeries", () => [], _ctx.emit);
112
+ const empty = readonlyProp(_props, "empty");
113
+ const targets = readonlyProp(_props, "targets");
114
+ const annotations = readonlyProp(_props, "annotations");
115
+ const bands = readonlyProp(_props, "bands");
116
+ const onItemClick = readonlyProp(_props, "onItemClick");
117
+ const zoom = readonlyProp(_props, "zoom", false);
118
+ const zoomRange = bindable(_props, "_zoomRange", () => null, _ctx.emit);
119
+ const kind = readonlyProp(_props, "kind");
120
+ const sx = readonlyProp(_props, "sx");
121
+ const rest = restProps(_props, _ctx, true);
122
+ const lang = useLang();
123
+ const format = useFormat();
124
+ const id = useId();
125
+ const resolved = computed(() => resolveSeries(series.value));
126
+ const visible = computed(() => resolved.value.filter((item) => !hiddenSeries.value.includes(item.key)));
127
+ const categoryText = (row) => row === void 0 ? "" : indexFormat.value ? indexFormat.value(row[index.value], row) : String(row[index.value] ?? "");
128
+ const valueText = useChartValueText(() => ({
129
+ valueFormat: valueFormat.value,
130
+ unit: unit.value
131
+ }));
132
+ const secondaryText = useChartValueText(() => ({
133
+ valueFormat: kind.value.secondary?.format,
134
+ unit: kind.value.secondary?.unit
135
+ }));
136
+ const onSecondary = (key) => kind.value.secondary?.keys.includes(key) ?? false;
137
+ /** 一个系列的值的文字:第二数值轴上的按它的格式与单位 */
138
+ const seriesText = (key, value) => onSecondary(key) ? secondaryText(value) : valueText(value);
139
+ /** 一行里显示中的系列的总和(百分比堆叠的分母;负数不计) */
140
+ const rowTotal = (row) => visible.value.reduce((sum, item) => sum + Math.max(seriesNumber(row, item.key) ?? 0, 0), 0);
141
+ const percentText = (value) => format.number(value, {
142
+ style: "percent",
143
+ maximumFractionDigits: 1
144
+ });
145
+ const xText = (row) => {
146
+ const x = kind.value.continuousX?.value(row);
147
+ return x === void 0 ? lang.emptyValue : kind.value.continuousX.format(x);
148
+ };
149
+ function toggle(key) {
150
+ hiddenSeries.value = hiddenSeries.value.includes(key) ? hiddenSeries.value.filter((item) => item !== key) : [...hiddenSeries.value, key];
151
+ }
152
+ /** 缩放的滑块:两端是类目;缩小过时旁边有“显示全部” */
153
+ const zoomBar = () => {
154
+ const last = data.value.length - 1;
155
+ return createVNode("div", css.attrs(xyChartStyles.zoom), [createVNode(Slider, {
156
+ "_value": zoomRange.value ?? [0, last],
157
+ "onUpdate:_value": (next) => zoomRange.value = next[0] === 0 && next[1] === last ? null : next,
158
+ "min": 0,
159
+ "max": last,
160
+ "step": 1,
161
+ "size": "sm",
162
+ "valueText": _cache[0] || (_cache[0] = (position) => categoryText(data.value[position])),
163
+ "aria-label": lang.chartZoom,
164
+ "propsRoot": _cache[1] || (_cache[1] = { sx: xyChartStyles.zoomSlider })
165
+ }, null), zoomRange.value && createVNode(Button, {
166
+ "variant": "link",
167
+ "size": "sm",
168
+ "onClick": _cache[2] || (_cache[2] = () => zoomRange.value = null)
169
+ }, {
170
+ default: () => [lang.chartZoomReset],
171
+ $stable: true
172
+ })]);
173
+ };
174
+ const instances = createChartInstances();
175
+ let tooltipElement;
176
+ let hovered = null;
177
+ const hover = (row) => {
178
+ hovered = row === void 0 ? null : {
179
+ row,
180
+ index: data.value.indexOf(row)
181
+ };
182
+ };
183
+ /** 十字线的提示框:内容用 Vue 渲染进同一个元素,交给 Unovis 定位 */
184
+ function renderTooltip(row) {
185
+ tooltipElement ??= document.createElement("div");
186
+ if (kind.value.pointTooltip) hover(row);
187
+ render(chartTooltip(categoryText(row), kind.value.tooltipItems?.(row) ?? [...kind.value.continuousX ? [{
188
+ label: kind.value.continuousX.label,
189
+ color: "transparent",
190
+ value: xText(row)
191
+ }] : [], ...visible.value.filter((item) => !kind.value.pointTooltip || seriesValue(row, item.key) !== void 0).map((item) => {
192
+ const value = seriesValue(row, item.key);
193
+ const total = kind.value.percent ? rowTotal(row) : 0;
194
+ return {
195
+ label: item.label,
196
+ color: item.color,
197
+ value: kind.value.percent && value !== void 0 && total > 0 ? `${seriesText(item.key, value)}(${percentText(toNumber(value) / total)})` : seriesText(item.key, value)
198
+ };
199
+ })]), tooltipElement);
200
+ return tooltipElement;
201
+ }
202
+ let plot = shallowRef(null);
203
+ const seen = usePlotSeen(() => plot.value);
204
+ let container;
205
+ let containerElement;
206
+ effect(() => () => {
207
+ container?.destroy();
208
+ if (tooltipElement) render(null, tooltipElement);
209
+ });
210
+ effect(() => {
211
+ const range = zoom.value && !kind.value.continuousX ? zoomRange.value : null;
212
+ const rows = range ? data.value.slice(range[0], range[1] + 1) : [...data.value];
213
+ const shown = visible.value;
214
+ const element = plot.value;
215
+ if (!element || loading.value || rows.length === 0 || !seen()) return;
216
+ if (container && containerElement !== element) {
217
+ container.destroy();
218
+ container = void 0;
219
+ instances.reset();
220
+ }
221
+ const primarySeries = shown.filter((item) => !onSecondary(item.key));
222
+ const secondarySeries = shown.filter((item) => onSecondary(item.key));
223
+ const totals = rows.map((row) => primarySeries.map((item) => seriesNumber(row, item.key) ?? 0));
224
+ const values = [
225
+ ...kind.value.domainValues ? kind.value.domainValues(rows, primarySeries) : kind.value.stacked ? totals.flatMap((row) => [row.reduce((sum, value) => sum + Math.max(value, 0), 0), row.reduce((sum, value) => sum + Math.min(value, 0), 0)]) : totals.flat(),
226
+ ...(targets.value ?? []).map((target) => toNumber(target.value)),
227
+ ...(bands.value ?? []).filter((band) => band.axis === "value").flatMap((band) => [Number(band.from), Number(band.to)])
228
+ ];
229
+ const aligned = secondarySeries.length > 0 ? alignedTicks([...values, ...[valueDomain.value?.[0], valueDomain.value?.[1]].filter((end) => end !== void 0)], rows.flatMap((row) => secondarySeries.map((item) => seriesNumber(row, item.key) ?? 0))) : void 0;
230
+ const domain = kind.value.percent ? [0, 1] : aligned ? aligned.primary.domain : [valueDomain.value?.[0] ?? (kind.value.zeroBaseline === false ? void 0 : Math.min(0, ...values)), valueDomain.value?.[1]];
231
+ const x = kind.value.continuousX ? (row) => kind.value.continuousX.value(row) ?? NaN : (_row, position) => position;
232
+ const y = (item) => {
233
+ if (kind.value.percent) return (row) => {
234
+ const value = seriesNumber(row, item.key);
235
+ const total = rowTotal(row);
236
+ return value === void 0 || total === 0 ? void 0 : value / total;
237
+ };
238
+ if (aligned && onSecondary(item.key)) return (row) => {
239
+ const value = seriesNumber(row, item.key);
240
+ return value === void 0 ? void 0 : aligned.toPrimary(value);
241
+ };
242
+ return (row) => seriesNumber(row, item.key);
243
+ };
244
+ /** 类目在类目轴上的位置:散点图是横轴的数值,其余是第几行;找不到时 undefined */
245
+ const positionOf = (at) => {
246
+ if (kind.value.continuousX) return Number(at);
247
+ const found = rows.findIndex((row) => row[index.value] === at);
248
+ return found < 0 ? void 0 : found;
249
+ };
250
+ const categoryAxisName = kind.value.horizontal ? AxisType.Y : AxisType.X;
251
+ const valueAxisName = kind.value.horizontal ? AxisType.X : AxisType.Y;
252
+ const lines = (targets.value ?? []).map((target, position) => {
253
+ const line = instances.get(`target-${position}`, () => new Plotline({}));
254
+ const value = toNumber(target.value);
255
+ const label = valueText(target.value);
256
+ line.setConfig({
257
+ axis: kind.value.horizontal ? "x" : "y",
258
+ value,
259
+ color: resolveColor(target.color ?? "danger", 0),
260
+ lineWidth: 1.5,
261
+ lineStyle: PlotlineLineStylePresets.Dash,
262
+ labelText: target.label ? `${target.label} ${label}` : label,
263
+ labelPosition: kind.value.horizontal ? PlotlineLabelPosition.TopRight : PlotlineLabelPosition.TopLeft,
264
+ labelOffsetX: 4,
265
+ labelOffsetY: 10
266
+ });
267
+ return line;
268
+ });
269
+ const bandComponents = (bands.value ?? []).flatMap((band, position) => {
270
+ const onIndex = band.axis !== "value";
271
+ const from = onIndex ? positionOf(band.from) : Number(band.from);
272
+ const to = onIndex ? positionOf(band.to) : Number(band.to);
273
+ if (from === void 0 || to === void 0) return [];
274
+ const half = onIndex && !kind.value.continuousX ? .5 : 0;
275
+ const plotband = instances.get(`band-${position}`, () => new Plotband({}));
276
+ plotband.setConfig({
277
+ axis: onIndex ? categoryAxisName : valueAxisName,
278
+ from: Math.min(from, to) - half,
279
+ to: Math.max(from, to) + half,
280
+ color: `color-mix(in srgb, ${resolveColor(band.color ?? "neutral", 0)} 12%, transparent)`,
281
+ labelText: band.label,
282
+ labelPosition: onIndex ? PlotbandLabelPosition.BottomLeftInside : PlotbandLabelPosition.TopLeftInside,
283
+ labelColor: colors.textMuted,
284
+ labelOffsetX: 6,
285
+ labelOffsetY: 6
286
+ });
287
+ return [plotband];
288
+ });
289
+ const eventLines = (annotations.value ?? []).filter((item) => item.series === void 0).flatMap((item, position) => {
290
+ const at = positionOf(item.at);
291
+ if (at === void 0) return [];
292
+ const line = instances.get(`event-${position}`, () => new Plotline({}));
293
+ line.setConfig({
294
+ axis: categoryAxisName,
295
+ value: at,
296
+ color: resolveColor(item.color ?? "neutral", 0),
297
+ lineWidth: 1,
298
+ lineStyle: PlotlineLineStylePresets.ShortDash,
299
+ labelText: item.label,
300
+ labelPosition: kind.value.horizontal ? PlotlineLabelPosition.BottomRight : PlotlineLabelPosition.TopRight,
301
+ labelOffsetX: 4,
302
+ labelOffsetY: 4
303
+ });
304
+ return [line];
305
+ });
306
+ const marked = (annotations.value ?? []).filter((item) => item.series !== void 0 && !kind.value.horizontal);
307
+ const markOf = (row) => {
308
+ const at = kind.value.continuousX ? kind.value.continuousX.value(row) : rows.indexOf(row);
309
+ return marked.find((item) => positionOf(item.at) === at && shown.some((series) => series.key === item.series));
310
+ };
311
+ /** 圈的位置:系列的值;堆叠时是它在这一摞里的顶端 */
312
+ const markY = (row) => {
313
+ const mark = markOf(row);
314
+ if (!mark) return void 0;
315
+ const series = shown.find((item) => item.key === mark.series);
316
+ if (!kind.value.stacked || kind.value.percent) return y(series)(row);
317
+ return shown.slice(0, shown.indexOf(series) + 1).reduce((sum, item) => sum + Math.max(y(item)(row) ?? 0, 0), 0);
318
+ };
319
+ const markColor = (row) => {
320
+ const mark = markOf(row);
321
+ const series = shown.find((item) => item.key === mark?.series);
322
+ return mark?.color ? resolveColor(mark.color, 0) : series?.color ?? colors.textMuted;
323
+ };
324
+ const marks = instances.get("marks", () => new Scatter({
325
+ x,
326
+ y: () => void 0
327
+ }));
328
+ marks.setConfig({
329
+ x,
330
+ y: markY,
331
+ size: 16,
332
+ color: "transparent",
333
+ strokeColor: markColor,
334
+ strokeWidth: 2,
335
+ label: (row) => markOf(row)?.label ?? "",
336
+ labelPosition: Position.Top,
337
+ labelColor: colors.text
338
+ });
339
+ const secondaryLabels = aligned ? aligned.secondary.ticks.map((tick, position) => {
340
+ const label = instances.get(`secondary-${position}`, () => {
341
+ const line = new Plotline({});
342
+ line.clippable = false;
343
+ return line;
344
+ });
345
+ label.setConfig({
346
+ axis: "y",
347
+ value: aligned.primary.ticks[position],
348
+ color: "transparent",
349
+ lineWidth: 0,
350
+ labelText: format.number(tick, kind.value.secondary?.format),
351
+ labelPosition: PlotlineLabelPosition.Right,
352
+ labelOffsetX: -44,
353
+ labelColor: colors.textMuted
354
+ });
355
+ return label;
356
+ }) : [];
357
+ const components = [
358
+ ...bandComponents,
359
+ ...kind.value.components({
360
+ series: shown,
361
+ x,
362
+ y,
363
+ instance: instances.get,
364
+ events: kind.value.itemSelector && onItemClick.value ? { [kind.value.itemSelector]: { click: (row, _event, index) => {
365
+ const position = data.value.indexOf(row);
366
+ const at = position >= 0 ? position : index;
367
+ onItemClick.value(data.value[at] ?? row, at);
368
+ } } } : {}
369
+ }),
370
+ ...lines,
371
+ ...eventLines,
372
+ ...marked.length > 0 ? [marks] : [],
373
+ ...secondaryLabels
374
+ ];
375
+ const xAxis = instances.get("xAxis", () => new Axis({ type: "x" }));
376
+ const yAxis = instances.get("yAxis", () => new Axis({ type: "y" }));
377
+ const crosshair = instances.get("crosshair", () => new Crosshair());
378
+ const tooltipBox = instances.get("tooltip", () => new Tooltip());
379
+ const [categoryAxis, valueAxis] = kind.value.horizontal ? [yAxis, xAxis] : [xAxis, yAxis];
380
+ const continuous = kind.value.continuousX;
381
+ categoryAxis.setConfig({
382
+ type: kind.value.horizontal ? "y" : "x",
383
+ tickValues: continuous ? void 0 : rows.map((_row, position) => position),
384
+ numTicks: continuous ? 6 : void 0,
385
+ tickFormat: continuous ? (tick) => continuous.format(Number(tick)) : (tick) => categoryText(rows[Number(tick)]),
386
+ gridLine: continuous ? grid.value : false,
387
+ tickLine: false,
388
+ domainLine: false,
389
+ tickTextHideOverlapping: true,
390
+ tickPadding: 8,
391
+ label: continuous?.title,
392
+ labelMargin: 8
393
+ });
394
+ valueAxis.setConfig({
395
+ type: kind.value.horizontal ? "x" : "y",
396
+ numTicks: 5,
397
+ tickValues: aligned?.primary.ticks,
398
+ tickFormat: (tick) => kind.value.percent ? format.number(Number(tick), {
399
+ style: "percent",
400
+ maximumFractionDigits: 0
401
+ }) : format.number(Number(tick), valueFormat.value),
402
+ gridLine: grid.value,
403
+ tickLine: false,
404
+ domainLine: false,
405
+ tickPadding: 8
406
+ });
407
+ const dotted = kind.value.crosshairSeries ? shown.filter(kind.value.crosshairSeries) : shown;
408
+ crosshair.setConfig({
409
+ x,
410
+ ...kind.value.stacked ? { yStacked: dotted.map(y) } : { y: dotted.map(y) },
411
+ template: (row) => renderTooltip(row),
412
+ color: (_row, position) => dotted[position]?.color ?? "transparent",
413
+ getCircles: kind.value.crosshairDots ? void 0 : () => [],
414
+ hideWhenFarFromPointer: false,
415
+ onCrosshairMove: (_x, row) => hover(row)
416
+ });
417
+ tooltipBox.setConfig({ triggers: kind.value.pointTooltip ? { [kind.value.pointTooltip]: (row) => renderTooltip(row) } : {} });
418
+ const config = {
419
+ components,
420
+ xAxis,
421
+ yAxis,
422
+ crosshair: (tooltip.value || onItemClick.value && !kind.value.itemSelector) && !kind.value.pointTooltip ? crosshair : void 0,
423
+ tooltip: tooltip.value ? tooltipBox : void 0,
424
+ [kind.value.horizontal ? "xDomain" : "yDomain"]: domain,
425
+ padding: aligned ? {
426
+ ...kind.value.padding,
427
+ right: Math.max(kind.value.padding?.right ?? 0, SECONDARY_AXIS_WIDTH)
428
+ } : kind.value.padding ?? {},
429
+ ariaLabel: null,
430
+ duration: chartDuration(element),
431
+ onRenderComplete: haloPlotlineLabels
432
+ };
433
+ if (container) container.update(config, void 0, rows);
434
+ else {
435
+ container = new XYContainer(element, config, rows);
436
+ containerElement = element;
437
+ uniqueHighlightFilter(element, `${id}-highlight`);
438
+ }
439
+ });
440
+ return () => createVNode(ChartFrame, mergeProps(rest, {
441
+ "sx": [css.select(() => !kind.value.crosshairDots && xyChartStyles.hideCrosshairLine, true), sx.value],
442
+ "unit": kind.value.percent ? void 0 : unit.value,
443
+ "unitEnd": kind.value.secondary?.unit,
444
+ "height": height.value,
445
+ "legend": legend.value ?? resolved.value.length > 1 ? resolved.value : [],
446
+ "hiddenKeys": hiddenSeries.value,
447
+ "onLegendToggle": toggle,
448
+ "loading": loading.value,
449
+ "skeleton": chartSkeleton(kind.value),
450
+ "isEmpty": data.value.length === 0,
451
+ "empty": empty.value,
452
+ "clickable": onItemClick.value != null,
453
+ "onPlotClick": onItemClick.value && !kind.value.itemSelector ? () => {
454
+ if (hovered) onItemClick.value(hovered.row, hovered.index);
455
+ } : void 0,
456
+ "table": kind.value.table?.(data.value) ?? {
457
+ columns: [
458
+ lang.chartCategory,
459
+ ...kind.value.continuousX ? [kind.value.continuousX.label] : [],
460
+ ...resolved.value.map((item) => {
461
+ const itemUnit = onSecondary(item.key) ? kind.value.secondary?.unit : unit.value;
462
+ return itemUnit ? `${item.label}(${itemUnit})` : item.label;
463
+ })
464
+ ],
465
+ rows: data.value.map((row) => ({
466
+ header: categoryText(row),
467
+ cells: [...kind.value.continuousX ? [xText(row)] : [], ...resolved.value.map((item) => {
468
+ const value = seriesValue(row, item.key);
469
+ return value === void 0 ? lang.emptyValue : format.number(value, onSecondary(item.key) ? kind.value.secondary?.format : valueFormat.value);
470
+ })]
471
+ }))
472
+ },
473
+ "plotRef": _cache[3] || (_cache[3] = (element) => plot.value = element),
474
+ "footer": zoom.value && !kind.value.continuousX && data.value.length > 2 ? zoomBar() : void 0
475
+ }), null);
476
+ }, {
477
+ name: "XYChart",
478
+ props: [
479
+ "data",
480
+ "index",
481
+ "series",
482
+ "indexFormat",
483
+ "valueFormat",
484
+ "unit",
485
+ "height",
486
+ "legend",
487
+ "grid",
488
+ "valueDomain",
489
+ "tooltip",
490
+ "loading",
491
+ "_hiddenSeries",
492
+ "onUpdate:_hiddenSeries",
493
+ "empty",
494
+ "targets",
495
+ "annotations",
496
+ "bands",
497
+ "onItemClick",
498
+ "zoom",
499
+ "_zoomRange",
500
+ "onUpdate:_zoomRange",
501
+ "kind",
502
+ "sx"
503
+ ]
504
+ });
505
+ /**
506
+ * 目标线、事件竖线的文字描一圈表面色的边(同地图上地点的名字):压在柱子、折线上也看得清。
507
+ * Unovis 的 Plotline 文字没有描边的配置项,渲染完成后补在元素上;导出图片时按计算样式一并带走
508
+ */
509
+ function haloPlotlineLabels(svg) {
510
+ for (const label of svg.querySelectorAll("text[class*=\"plotline-label\"]")) {
511
+ label.style.setProperty("paint-order", "stroke");
512
+ label.style.setProperty("stroke", colors.surface);
513
+ label.style.setProperty("stroke-width", "3px");
514
+ label.style.setProperty("stroke-linejoin", "round");
515
+ }
516
+ }
517
+ //#endregion
518
+ export { XYChart, xyChartStyles };
519
+
520
+ //# sourceMappingURL=XYChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XYChart.js","names":["_createVNode","_mergeProps","_vtp_readonlyProp","_vtp_bindable","_vtp_restProps","_vue_computed","_vue_shallowRef"],"sources":["../../src/charts/XYChart.tsx"],"sourcesContent":["/**\n * 直角坐标图表(柱状图、折线图、面积图)的公共部分:坐标轴、十字线与提示框、数值范围;外层结构(图例、单位、\n * 空与加载状态、给读屏的数据表)交给 ChartFrame。\n * 绘图交给 Unovis 的 XYContainer:组件实例只建一次,数据与配置变化时 update,卸载时 destroy;\n * 绘图区换了元素(加载、空状态之后重新出现)时容器连同全部实例一起重建。\n * 各种图只决定画什么(kind.components),坐标轴、十字线、提示框、配色都在这里统一。\n * 目标线(targets)用 Unovis 的 Plotline。点了下钻(onItemClick):有图形可点的图(柱子)按图形的点击事件\n * (kind.itemSelector),折线、面积图按十字线所在的那一行,散点图按悬停的点。\n *\n * 标注(annotations):类目上的事件画成竖线(Plotline),圈出某个系列的值画成空心圈带文字(Scatter);\n * 区间(bands)画成浅色的带(Plotband)。百分比堆叠(kind.percent)按每个类目里各系列的占比画。\n * 第二数值轴(kind.secondary,组合图):刻度与主轴对齐(alignedTicks),第二轴的系列换算到主轴的坐标里画,\n * 右侧的刻度文字是不裁剪的 Plotline 标签。\n */\nimport {\n Axis,\n AxisType,\n Crosshair,\n Plotband,\n PlotbandLabelPosition,\n Plotline,\n PlotlineLabelPosition,\n PlotlineLineStylePresets,\n Position,\n Scatter,\n Tooltip,\n XYContainer,\n type XYComponentCore,\n} from '@unovis/ts';\nimport { _component } from '@zerodep-dev/vue-tsx-pro-tsx';\nimport * as css from '@zerodep-dev/vue-tsx-pro-tsx/styles';\nimport { render, useId, type VNodeChild } from 'vue';\nimport { useLang } from '../config/context';\nimport { useFormat, type NumericFormat } from '../config/lang/format';\nimport { colors } from '../config/theme/tokens';\nimport { Skeleton } from '../feedback/Skeleton';\nimport { Button } from '../base/Button';\nimport { Slider } from '../input/Slider';\nimport { alignedTicks, type AlignedAxes } from './axis-ticks';\nimport { toNumber, type NumericValue } from '../utils/data/numeric';\nimport type { PartProps } from '../utils/props';\nimport {\n ChartFrame,\n chartDuration,\n chartTooltip,\n createChartInstances,\n uniqueHighlightFilter,\n useChartValueText,\n usePlotSeen,\n type ChartFrameParts,\n type ChartTable,\n type ChartTooltipItem,\n} from './frame';\nimport {\n resolveColor,\n resolveSeries,\n seriesNumber,\n seriesValue,\n type ChartColor,\n type ChartSeries,\n type ResolvedSeries,\n} from './series';\n\n/** 目标线(参考线):数值轴上的一条虚线 */\nexport interface ChartTarget {\n /** 位置:数值轴上的值 */\n value: NumericValue;\n /** 标签:写在线的一端,后面带上格式化的数值(“年度指标 1,200”) */\n label?: string;\n /** 颜色;默认是 danger(要够到的线) */\n color?: ChartColor;\n}\n\n/** 标注:类目上发生的事(竖线),或圈出某个系列在这个类目上的值 */\nexport interface ChartAnnotation {\n /** 标在哪个类目上:index 字段的值(散点图是横轴上的数值) */\n at: unknown;\n /** 文字 */\n label: string;\n /** 圈出这个系列在这里的值(系列的 key);不写时是一条竖线(换供应商、调价生效这类事件) */\n series?: string;\n /** 颜色;竖线默认是次要色,圈默认是系列色 */\n color?: ChartColor;\n}\n\n/** 区间:类目轴上的一段(试运行期、促销期),或数值轴上的一段(目标区间) */\nexport interface ChartBand {\n /** 在哪条轴上,默认 index(类目轴) */\n axis?: 'index' | 'value';\n /** 起点:类目轴是 index 字段的值(含这一项),数值轴是数值 */\n from: unknown;\n /** 终点:同 from(含这一项) */\n to: unknown;\n /** 文字:类目轴上的写在带的左下角,数值轴上的写在左上角 */\n label?: string;\n /** 颜色,默认 neutral;画成很浅的底色 */\n color?: ChartColor;\n}\n\n/** 第二数值轴(右侧):哪些系列画在它上面,它的格式与单位 */\nexport interface ChartSecondaryAxis {\n /** 画在第二数值轴上的系列 */\n keys: readonly string[];\n /** 数值的格式 */\n format?: NumericFormat;\n /** 单位:显示在右上方,提示框与数据表的数值后面带上 */\n unit?: string;\n}\n\n/** 加载中的骨架 */\nexport interface ChartSkeletons {\n /** 一排高低不一的柱(柱状图) */\n bars: unknown;\n /** 一整块(默认) */\n block: unknown;\n}\n\n/** 直角坐标图表共有的属性;未声明的属性落到外层 div(role=\"figure\")上,aria-label 是图表的名称 */\nexport interface XYChartProps<T extends object>\n extends PartProps<'div', 'role' | 'aria-busy'>, ChartFrameParts {\n /** 数据:每一行是类目轴上的一项(一个月、一个项目) */\n data: readonly T[];\n /** 类目字段:类目轴的刻度、提示框的标题、数据表的第一列 */\n index: keyof T & string;\n /** 系列:每个系列画成一组柱子、一条线或一片面积 */\n series: readonly ChartSeries<T>[];\n /** 类目的显示文字;不写时把字段的值转成字符串 */\n indexFormat?: (value: T[keyof T & string], row: T) => string;\n /**\n * 数值的格式:数值轴、提示框、数据表共用,按当前语言格式化。以万元为单位画金额时写\n * `{ scale: 10_000, maximumFractionDigits: 1 }` 并配 `unit=\"万元\"`\n */\n valueFormat?: NumericFormat;\n /** 单位:显示在数值轴上方,提示框与数据表的数值后面带上 */\n unit?: string;\n /**\n * 绘图区的高度;数字按 px\n * @default 240\n */\n height?: number | string;\n /** 图例:默认多于一个系列时显示;点图例可以隐藏、恢复系列 */\n legend?: boolean;\n /**\n * 数值轴的网格线\n * @default true\n */\n grid?: boolean;\n /** 数值轴的范围 [最小, 最大];不写的一端按数据自动取,最小值默认从 0 起(数据有负数时取负数) */\n valueDomain?: readonly [number | undefined, number | undefined];\n /**\n * 悬停时的提示框\n * @default true\n */\n tooltip?: boolean;\n /**\n * 加载中:绘图区显示扫光的骨架(柱状图是一排高低不一的柱),带 aria-busy\n * @default false\n */\n loading?: boolean;\n /** 隐藏的系列(存系列的 key):点图例时写回,父级可以写 _hiddenSeries={keys} */\n _hiddenSeries?: string[];\n /** 没有数据时显示的内容,默认是“暂无数据” */\n empty?: VNodeChild;\n /** 目标线、参考线:数值轴上的虚线(横向图是竖线),如年度销售指标;数值轴的范围会包含它 */\n targets?: readonly ChartTarget[];\n /** 标注:类目上的事件(竖线),或圈出某个系列的值(横向图只画竖线) */\n annotations?: readonly ChartAnnotation[];\n /** 区间:类目轴或数值轴上的一段,画成浅色的带(数值轴的范围会包含它) */\n bands?: readonly ChartBand[];\n /**\n * 点了一个类目(下钻,如跳到筛好条件的台账):参数是这一行与它的位置;写了它时绘图区的指针是手形。\n * 点图是鼠标的捷径:同样的去处在页面上还要有链接或按钮,键盘与读屏才到得了(WCAG 2.1.1)\n */\n onItemClick?: (row: T, index: number) => void;\n /** 缩放:绘图区下面一条区间滑块,选一段类目放大看(几年的月度数据);读屏的数据表仍是全部 */\n zoom?: boolean;\n /** 缩放的区间 [起, 止]:类目的位置,含两端;父级可以写 _zoomRange={range},null 是全部 */\n _zoomRange?: [number, number] | null;\n}\n\n/** 交给各种图的绘制上下文 */\nexport interface XYChartContext<T extends object> {\n /** 显示中的系列(去掉了图例里隐藏的),颜色已定 */\n series: ResolvedSeries<T>[];\n /** 类目的位置:第几行 */\n x: (row: T, index: number) => number;\n /** 系列的取值函数,空值返回 undefined(Unovis 跳过) */\n y: (series: ResolvedSeries<T>) => (row: T) => number | undefined;\n /** 取一个跨渲染保留的组件实例:第一次调用时创建;Unovis 组件保留实例,更新时才有过渡动画 */\n instance: <C>(key: string, create: () => C) => C;\n /** 点图形下钻的事件(写了 itemSelector 时):并进组件的 events;没有 onItemClick 时是空的。参数同 Unovis:图形的数据、事件、位置 */\n events: Record<string, Record<string, (row: T, event: Event, index: number) => void>>;\n}\n\n/** 一种图:画哪些组件,以及与坐标轴、十字线有关的差别 */\nexport interface XYChartKind<T extends object> {\n /** 配置并返回要画的 Unovis 组件(每次数据或属性变化都会调用) */\n components: (context: XYChartContext<T>) => XYComponentCore<T>[];\n /** 横向:类目在纵轴、数值在横轴 */\n horizontal?: boolean;\n /** 十字线上给每个系列画圆点(折线图、面积图);柱状图不画 */\n crosshairDots?: boolean;\n /** 加载中的骨架,默认 block */\n skeleton?: keyof ChartSkeletons;\n /** 绘图区四周的留白(px):折线两端不贴着边缘 */\n padding?: { left?: number; right?: number; top?: number; bottom?: number };\n /** 数值范围按堆叠后的总和算(堆叠的柱子、面积) */\n stacked?: boolean;\n /** 百分比堆叠:各系列按它在这个类目里的占比画(加起来 100%),数值轴是百分比,提示框带上占比 */\n percent?: boolean;\n /** 第二数值轴(组合图):这些系列画在右侧的轴上,刻度与主轴对齐 */\n secondary?: ChartSecondaryAxis;\n /** 十字线只在这些系列上画圆点(组合图里只给线画);不写时按 crosshairDots */\n crosshairSeries?: (series: ResolvedSeries<T>) => boolean;\n /** 横轴是连续的数值(散点图):取值、刻度与提示框里的写法、数据表的列名、轴下方的标题;不写时横轴是类目(第几行) */\n continuousX?: {\n value: (row: T) => number | undefined;\n format: (value: number) => string;\n label: string;\n title?: string;\n };\n /** 数值轴默认从 0 起(数据有负数时取负数);false 时按数据自动取(散点图) */\n zeroBaseline?: boolean;\n /** 提示框跟着数据点(散点图),没有十字线:按选择器触发,悬停的数据是这一行 */\n pointTooltip?: string;\n /** 提示框里列的项;不写时每个显示中的系列一行(瀑布图列变动与累计) */\n tooltipItems?: (row: T) => ChartTooltipItem[];\n /** 数值轴(主轴)的范围要包含的值;shown 是显示中的系列(第二数值轴的已去掉)。不写时按系列的值(stacked 时按正负各自的总和) */\n domainValues?: (rows: readonly T[], shown: readonly ResolvedSeries<T>[]) => number[];\n /** 给读屏的数据表;不写时类目一列加每个系列一列 */\n table?: (rows: readonly T[]) => ChartTable;\n /** 点哪种图形算点了这一行(柱子的选择器,图形绑定的数据是这一行);不写时按十字线所在的那一行 */\n itemSelector?: string;\n}\n\n/** 第二数值轴的刻度文字占的宽度(px) */\nconst SECONDARY_AXIS_WIDTH = 48;\n\n/** 骨架柱的高度(百分比):高低错落,看起来像一组数据 */\nconst SKELETON_BARS = [55, 80, 40, 70, 90, 50, 65];\n\n/** XYChart 的样式:hideCrosshairLine 与加载中的骨架(外层结构的样式见 chartStyles) */\nexport const xyChartStyles = css.create({\n // 柱状图的十字线只用来定位提示框,不画竖线\n hideCrosshairLine: { '--vis-crosshair-line-stroke-opacity': '0' },\n skeleton: { display: 'block', width: '100%', height: '100%' },\n // 缩放:滑块占满,“显示全部”在结束边\n zoom: { display: 'flex', alignItems: 'center', gap: '_md', paddingInline: '_sm' },\n zoomSlider: { flexGrow: 1, minWidth: 0 },\n skeletonBars: {\n display: 'flex',\n alignItems: 'flex-end',\n justifyContent: 'space-around',\n gap: '_md',\n height: '100%',\n },\n skeletonBarsHorizontal: { flexDirection: 'column', alignItems: 'flex-start' },\n skeletonBar: { display: 'block', flexGrow: 1, flexBasis: 0, borderRadius: '_sm' },\n skeletonBarSize: (percent: string) => ({ height: percent }),\n skeletonBarSizeHorizontal: (percent: string) => ({ width: percent }),\n});\n\n/** 加载中绘图区的骨架:柱状图是一排高低不一的柱(横向时是条),其余是一整块 */\nfunction chartSkeleton({\n skeleton = 'block',\n horizontal = false,\n}: Pick<XYChartKind<object>, 'skeleton' | 'horizontal'>) {\n if (skeleton === 'block') return <Skeleton sx={xyChartStyles.skeleton} />;\n return (\n <div\n aria-hidden=\"true\"\n {...css.attrs(xyChartStyles.skeletonBars, horizontal && xyChartStyles.skeletonBarsHorizontal)}\n >\n {SKELETON_BARS.map((percent, position) => (\n <Skeleton\n key={position}\n sx={[\n xyChartStyles.skeletonBar,\n horizontal\n ? xyChartStyles.skeletonBarSizeHorizontal(`${percent}%`)\n : xyChartStyles.skeletonBarSize(`${percent}%`),\n ]}\n />\n ))}\n </div>\n );\n}\n\n/** 直角坐标图表的公共实现(组件库内部用,见 BarChart、LineChart、AreaChart) */\nexport const XYChart = _component(\n <T extends object>({\n data,\n index,\n series,\n indexFormat,\n valueFormat,\n unit,\n height = 240,\n legend,\n grid = true,\n valueDomain,\n tooltip = true,\n loading = false,\n _hiddenSeries: hiddenSeries = _bindable<string[]>([]),\n empty,\n targets,\n annotations,\n bands,\n onItemClick,\n zoom = false,\n _zoomRange: zoomRange = _bindable<[number, number] | null>(null),\n kind,\n sx,\n ...rest\n }: XYChartProps<T> & { kind: XYChartKind<T> }) => {\n const lang = useLang();\n const format = useFormat();\n const id = useId();\n const resolved = _derived(resolveSeries(series));\n const visible = _derived(resolved.filter((item) => !hiddenSeries.includes(item.key)));\n\n const categoryText = (row: T | undefined) =>\n row === undefined\n ? ''\n : indexFormat\n ? indexFormat(row[index], row)\n : String(row[index] ?? '');\n const valueText = useChartValueText(() => ({ valueFormat, unit }));\n const secondaryText = useChartValueText(() => ({\n valueFormat: kind.secondary?.format,\n unit: kind.secondary?.unit,\n }));\n const onSecondary = (key: string) => kind.secondary?.keys.includes(key) ?? false;\n /** 一个系列的值的文字:第二数值轴上的按它的格式与单位 */\n const seriesText = (key: string, value: NumericValue | undefined) =>\n onSecondary(key) ? secondaryText(value) : valueText(value);\n /** 一行里显示中的系列的总和(百分比堆叠的分母;负数不计) */\n const rowTotal = (row: T) =>\n visible.reduce((sum, item) => sum + Math.max(seriesNumber(row, item.key) ?? 0, 0), 0);\n const percentText = (value: number) =>\n format.number(value, { style: 'percent', maximumFractionDigits: 1 });\n\n const xText = (row: T) => {\n const x = kind.continuousX?.value(row);\n return x === undefined ? lang.emptyValue : kind.continuousX!.format(x);\n };\n\n function toggle(key: string) {\n hiddenSeries = hiddenSeries.includes(key)\n ? hiddenSeries.filter((item) => item !== key)\n : [...hiddenSeries, key];\n }\n\n /** 缩放的滑块:两端是类目;缩小过时旁边有“显示全部” */\n const zoomBar = () => {\n const last = data.length - 1;\n return (\n <div {...css.attrs(xyChartStyles.zoom)}>\n <Slider\n _value={zoomRange ?? [0, last]}\n onUpdate:_value={(next: [number, number]) =>\n (zoomRange = next[0] === 0 && next[1] === last ? null : next)\n }\n min={0}\n max={last}\n step={1}\n size=\"sm\"\n valueText={(position) => categoryText(data[position])}\n aria-label={lang.chartZoom}\n propsRoot={{ sx: xyChartStyles.zoomSlider }}\n />\n {zoomRange && (\n <Button variant=\"link\" size=\"sm\" onClick={() => (zoomRange = null)}>\n {lang.chartZoomReset}\n </Button>\n )}\n </div>\n );\n };\n\n const instances = createChartInstances();\n let tooltipElement: HTMLElement | undefined;\n\n // 指针所在的那一行:十字线移动时记下,点绘图区时下钻到它;离开绘图区时清掉\n let hovered: { row: T; index: number } | null = null;\n const hover = (row: T | undefined) => {\n hovered = row === undefined ? null : { row, index: data.indexOf(row) };\n };\n\n /** 十字线的提示框:内容用 Vue 渲染进同一个元素,交给 Unovis 定位 */\n function renderTooltip(row: T) {\n tooltipElement ??= document.createElement('div');\n // 跟着数据点的提示框(散点图)没有十字线:悬停哪个点就是哪一行\n if (kind.pointTooltip) hover(row);\n render(\n chartTooltip(\n categoryText(row),\n kind.tooltipItems?.(row) ?? [\n ...(kind.continuousX\n ? [{ label: kind.continuousX.label, color: 'transparent', value: xText(row) }]\n : []),\n // 跟着数据点的提示框只列这一行有值的系列(散点图里一行通常只落在一个系列上)\n ...visible\n .filter((item) => !kind.pointTooltip || seriesValue(row, item.key) !== undefined)\n .map((item) => {\n const value = seriesValue(row, item.key);\n const total = kind.percent ? rowTotal(row) : 0;\n return {\n label: item.label,\n color: item.color,\n value:\n kind.percent && value !== undefined && total > 0\n ? `${seriesText(item.key, value)}(${percentText(toNumber(value) / total)})`\n : seriesText(item.key, value),\n };\n }),\n ],\n ),\n tooltipElement,\n );\n return tooltipElement;\n }\n\n let plot = _state.raw<HTMLElement | null>(null);\n const seen = usePlotSeen(() => plot);\n let container: XYContainer<T> | undefined;\n let containerElement: HTMLElement | undefined;\n _effect(() => () => {\n container?.destroy();\n if (tooltipElement) render(null, tooltipElement);\n });\n _effect(() => {\n // 缩放:只画选中的一段(散点图的横轴是连续的数值,不按类目缩放)\n const range = zoom && !kind.continuousX ? zoomRange : null;\n const rows = range ? data.slice(range[0], range[1] + 1) : [...data];\n const shown = visible;\n const element = plot;\n if (!element || loading || rows.length === 0 || !seen()) return;\n // 绘图区换了元素:旧容器连同它的组件、坐标轴一起销毁,实例表清空后重新创建\n if (container && containerElement !== element) {\n container.destroy();\n container = undefined;\n instances.reset();\n }\n\n const primarySeries = shown.filter((item) => !onSecondary(item.key));\n const secondarySeries = shown.filter((item) => onSecondary(item.key));\n const totals = rows.map((row) =>\n primarySeries.map((item) => seriesNumber(row, item.key) ?? 0),\n );\n const seriesValues = kind.domainValues\n ? kind.domainValues(rows, primarySeries)\n : kind.stacked\n ? totals.flatMap((row) => [\n row.reduce((sum, value) => sum + Math.max(value, 0), 0),\n row.reduce((sum, value) => sum + Math.min(value, 0), 0),\n ])\n : totals.flat();\n // 目标线、数值轴上的区间要落在数值轴的范围里\n const values = [\n ...seriesValues,\n ...(targets ?? []).map((target) => toNumber(target.value)),\n ...(bands ?? [])\n .filter((band) => band.axis === 'value')\n .flatMap((band) => [Number(band.from), Number(band.to)]),\n ];\n // 第二数值轴:两条轴的刻度对齐,第二轴的值换算到主轴的坐标\n const aligned: AlignedAxes | undefined =\n secondarySeries.length > 0\n ? alignedTicks(\n [\n ...values,\n ...[valueDomain?.[0], valueDomain?.[1]].filter(\n (end): end is number => end !== undefined,\n ),\n ],\n rows.flatMap((row) =>\n secondarySeries.map((item) => seriesNumber(row, item.key) ?? 0),\n ),\n )\n : undefined;\n const domain: [number | undefined, number | undefined] = kind.percent\n ? [0, 1]\n : aligned\n ? aligned.primary.domain\n : [\n valueDomain?.[0] ??\n (kind.zeroBaseline === false ? undefined : Math.min(0, ...values)),\n valueDomain?.[1],\n ];\n const x = kind.continuousX\n ? (row: T) => kind.continuousX!.value(row) ?? Number.NaN\n : (_row: T, position: number) => position;\n const y = (item: (typeof shown)[number]) => {\n if (kind.percent)\n return (row: T) => {\n const value = seriesNumber(row, item.key);\n const total = rowTotal(row);\n return value === undefined || total === 0 ? undefined : value / total;\n };\n if (aligned && onSecondary(item.key))\n return (row: T) => {\n const value = seriesNumber(row, item.key);\n return value === undefined ? undefined : aligned.toPrimary(value);\n };\n return (row: T) => seriesNumber(row, item.key);\n };\n /** 类目在类目轴上的位置:散点图是横轴的数值,其余是第几行;找不到时 undefined */\n const positionOf = (at: unknown) => {\n if (kind.continuousX) return Number(at);\n const found = rows.findIndex((row) => row[index] === at);\n return found < 0 ? undefined : found;\n };\n const categoryAxisName = kind.horizontal ? AxisType.Y : AxisType.X;\n const valueAxisName = kind.horizontal ? AxisType.X : AxisType.Y;\n const lines = (targets ?? []).map((target, position) => {\n const line = instances.get(`target-${position}`, () => new Plotline<T>({}));\n const value = toNumber(target.value);\n const label = valueText(target.value);\n line.setConfig({\n axis: kind.horizontal ? 'x' : 'y',\n value,\n color: resolveColor(target.color ?? 'danger', 0),\n lineWidth: 1.5,\n lineStyle: PlotlineLineStylePresets.Dash,\n labelText: target.label ? `${target.label} ${label}` : label,\n labelPosition: kind.horizontal\n ? PlotlineLabelPosition.TopRight\n : PlotlineLabelPosition.TopLeft,\n labelOffsetX: 4,\n labelOffsetY: 10,\n });\n return line;\n });\n\n // 区间:浅色的带,文字在左上角\n const bandComponents = (bands ?? []).flatMap((band, position) => {\n const onIndex = band.axis !== 'value';\n const from = onIndex ? positionOf(band.from) : Number(band.from);\n const to = onIndex ? positionOf(band.to) : Number(band.to);\n if (from === undefined || to === undefined) return [];\n // 类目轴上的区间盖住两端的类目:往外各扩半格\n const half = onIndex && !kind.continuousX ? 0.5 : 0;\n const plotband = instances.get(`band-${position}`, () => new Plotband<T>({}));\n plotband.setConfig({\n axis: onIndex ? categoryAxisName : valueAxisName,\n from: Math.min(from, to) - half,\n to: Math.max(from, to) + half,\n color: `color-mix(in srgb, ${resolveColor(band.color ?? 'neutral', 0)} 12%, transparent)`,\n labelText: band.label,\n // 类目轴上的区间文字在左下角:顶上留给事件竖线的文字\n labelPosition: onIndex\n ? PlotbandLabelPosition.BottomLeftInside\n : PlotbandLabelPosition.TopLeftInside,\n labelColor: colors.textMuted,\n labelOffsetX: 6,\n labelOffsetY: 6,\n });\n return [plotband];\n });\n\n // 标注:事件是类目上的竖线;圈出的值是一个空心圈,文字在上方\n const events = (annotations ?? []).filter((item) => item.series === undefined);\n const eventLines = events.flatMap((item, position) => {\n const at = positionOf(item.at);\n if (at === undefined) return [];\n const line = instances.get(`event-${position}`, () => new Plotline<T>({}));\n line.setConfig({\n axis: categoryAxisName,\n value: at,\n color: resolveColor(item.color ?? 'neutral', 0),\n lineWidth: 1,\n lineStyle: PlotlineLineStylePresets.ShortDash,\n labelText: item.label,\n labelPosition: kind.horizontal\n ? PlotlineLabelPosition.BottomRight\n : PlotlineLabelPosition.TopRight,\n labelOffsetX: 4,\n labelOffsetY: 4,\n });\n return [line];\n });\n const marked = (annotations ?? []).filter(\n (item) => item.series !== undefined && !kind.horizontal,\n );\n const markOf = (row: T) => {\n const at = kind.continuousX ? kind.continuousX.value(row) : rows.indexOf(row);\n return marked.find(\n (item) =>\n positionOf(item.at) === at && shown.some((series) => series.key === item.series),\n );\n };\n /** 圈的位置:系列的值;堆叠时是它在这一摞里的顶端 */\n const markY = (row: T) => {\n const mark = markOf(row);\n if (!mark) return undefined;\n const series = shown.find((item) => item.key === mark.series)!;\n if (!kind.stacked || kind.percent) return y(series)(row);\n const upTo = shown.slice(0, shown.indexOf(series) + 1);\n return upTo.reduce((sum, item) => sum + Math.max(y(item)(row) ?? 0, 0), 0);\n };\n const markColor = (row: T) => {\n const mark = markOf(row);\n const series = shown.find((item) => item.key === mark?.series);\n return mark?.color ? resolveColor(mark.color, 0) : (series?.color ?? colors.textMuted);\n };\n const marks = instances.get('marks', () => new Scatter<T>({ x, y: () => undefined }));\n marks.setConfig({\n x,\n y: markY,\n size: 16,\n color: 'transparent',\n strokeColor: markColor,\n strokeWidth: 2,\n label: (row: T) => markOf(row)?.label ?? '',\n labelPosition: Position.Top,\n labelColor: colors.text,\n });\n\n // 第二数值轴的刻度:与主轴的刻度同高,文字在绘图区右侧(不裁剪的 Plotline 标签,线本身透明)\n const secondaryLabels = aligned\n ? aligned.secondary.ticks.map((tick, position) => {\n const label = instances.get(`secondary-${position}`, () => {\n const line = new Plotline<T>({});\n line.clippable = false;\n return line;\n });\n label.setConfig({\n axis: 'y',\n value: aligned.primary.ticks[position]!,\n color: 'transparent',\n lineWidth: 0,\n labelText: format.number(tick, kind.secondary?.format),\n labelPosition: PlotlineLabelPosition.Right,\n labelOffsetX: -(SECONDARY_AXIS_WIDTH - 4),\n labelColor: colors.textMuted,\n });\n return label;\n })\n : [];\n const components = [\n ...bandComponents,\n ...kind.components({\n series: shown,\n x,\n y,\n instance: instances.get,\n events:\n kind.itemSelector && onItemClick\n ? {\n [kind.itemSelector]: {\n // 分组柱给的是原来的行;堆叠柱给的是拼出来的副本,第三个参数才是行的位置\n click: (row: T, _event: Event, index: number) => {\n const position = data.indexOf(row);\n const at = position >= 0 ? position : index;\n onItemClick(data[at] ?? row, at);\n },\n },\n }\n : {},\n }),\n ...lines,\n ...eventLines,\n ...(marked.length > 0 ? [marks] : []),\n ...secondaryLabels,\n ];\n const xAxis = instances.get('xAxis', () => new Axis<T>({ type: 'x' }));\n const yAxis = instances.get('yAxis', () => new Axis<T>({ type: 'y' }));\n const crosshair = instances.get('crosshair', () => new Crosshair<T>());\n const tooltipBox = instances.get('tooltip', () => new Tooltip());\n const [categoryAxis, valueAxis] = kind.horizontal ? [yAxis, xAxis] : [xAxis, yAxis];\n const continuous = kind.continuousX;\n categoryAxis.setConfig({\n type: kind.horizontal ? 'y' : 'x',\n // 连续的横轴:Unovis 自己取刻度,网格线与数值轴一样;类目轴:每行一个刻度\n tickValues: continuous ? undefined : rows.map((_row, position) => position),\n numTicks: continuous ? 6 : undefined,\n tickFormat: continuous\n ? (tick) => continuous.format(Number(tick))\n : (tick) => categoryText(rows[Number(tick)]),\n gridLine: continuous ? grid : false,\n tickLine: false,\n domainLine: false,\n tickTextHideOverlapping: true,\n tickPadding: 8,\n label: continuous?.title,\n labelMargin: 8,\n });\n valueAxis.setConfig({\n type: kind.horizontal ? 'x' : 'y',\n numTicks: 5,\n // 有第二数值轴时用对齐的刻度,两边的刻度落在同一组网格线上\n tickValues: aligned?.primary.ticks,\n tickFormat: (tick) =>\n kind.percent\n ? format.number(Number(tick), { style: 'percent', maximumFractionDigits: 0 })\n : format.number(Number(tick), valueFormat),\n gridLine: grid,\n tickLine: false,\n domainLine: false,\n tickPadding: 8,\n });\n const dotted = kind.crosshairSeries ? shown.filter(kind.crosshairSeries) : shown;\n crosshair.setConfig({\n // 访问器直接给:容器还没按尺寸渲染过时不会把组件的访问器转交十字线,Unovis 会报 “Y accessors have not been configured”\n x,\n ...(kind.stacked ? { yStacked: dotted.map(y) } : { y: dotted.map(y) }),\n template: (row: T) => renderTooltip(row),\n color: (_row: T, position: number) => dotted[position]?.color ?? 'transparent',\n getCircles: kind.crosshairDots ? undefined : () => [],\n hideWhenFarFromPointer: false,\n onCrosshairMove: (_x, row) => hover(row),\n });\n\n tooltipBox.setConfig({\n triggers: kind.pointTooltip ? { [kind.pointTooltip]: (row: T) => renderTooltip(row) } : {},\n });\n const config = {\n components,\n xAxis,\n yAxis,\n // 能下钻时没有提示框也要十字线:靠它知道指针在哪一行\n crosshair:\n (tooltip || (onItemClick && !kind.itemSelector)) && !kind.pointTooltip\n ? crosshair\n : undefined,\n tooltip: tooltip ? tooltipBox : undefined,\n [kind.horizontal ? 'xDomain' : 'yDomain']: domain,\n // 第二数值轴的刻度文字画在右侧留出的空白里\n padding: aligned\n ? { ...kind.padding, right: Math.max(kind.padding?.right ?? 0, SECONDARY_AXIS_WIDTH) }\n : (kind.padding ?? {}),\n ariaLabel: null,\n duration: chartDuration(element),\n onRenderComplete: haloPlotlineLabels,\n };\n if (container) container.update(config, undefined, rows);\n else {\n container = new XYContainer<T>(element, config, rows);\n containerElement = element;\n uniqueHighlightFilter(element, `${id}-highlight`);\n }\n });\n\n return () => (\n <ChartFrame\n {...rest}\n sx={[!kind.crosshairDots && xyChartStyles.hideCrosshairLine, sx]}\n // 百分比堆叠时数值轴是占比:轴上方不写单位(提示框、数据表里仍带)\n unit={kind.percent ? undefined : unit}\n unitEnd={kind.secondary?.unit}\n height={height}\n legend={(legend ?? resolved.length > 1) ? resolved : []}\n hiddenKeys={hiddenSeries}\n onLegendToggle={toggle}\n loading={loading}\n skeleton={chartSkeleton(kind)}\n isEmpty={data.length === 0}\n empty={empty}\n clickable={onItemClick != null}\n onPlotClick={\n onItemClick && !kind.itemSelector\n ? () => {\n if (hovered) onItemClick(hovered.row, hovered.index);\n }\n : undefined\n }\n table={\n kind.table?.(data) ?? {\n columns: [\n lang.chartCategory,\n ...(kind.continuousX ? [kind.continuousX.label] : []),\n ...resolved.map((item) => {\n const itemUnit = onSecondary(item.key) ? kind.secondary?.unit : unit;\n return itemUnit ? `${item.label}(${itemUnit})` : item.label;\n }),\n ],\n rows: data.map((row) => ({\n header: categoryText(row),\n cells: [\n ...(kind.continuousX ? [xText(row)] : []),\n ...resolved.map((item) => {\n const value = seriesValue(row, item.key);\n return value === undefined\n ? lang.emptyValue\n : format.number(\n value,\n onSecondary(item.key) ? kind.secondary?.format : valueFormat,\n );\n }),\n ],\n })),\n }\n }\n plotRef={(element) => (plot = element)}\n footer={zoom && !kind.continuousX && data.length > 2 ? zoomBar() : undefined}\n />\n );\n },\n);\n\n/**\n * 目标线、事件竖线的文字描一圈表面色的边(同地图上地点的名字):压在柱子、折线上也看得清。\n * Unovis 的 Plotline 文字没有描边的配置项,渲染完成后补在元素上;导出图片时按计算样式一并带走\n */\nfunction haloPlotlineLabels(svg: SVGSVGElement) {\n for (const label of svg.querySelectorAll<SVGTextElement>('text[class*=\"plotline-label\"]')) {\n label.style.setProperty('paint-order', 'stroke');\n label.style.setProperty('stroke', colors.surface);\n label.style.setProperty('stroke-width', '3px');\n label.style.setProperty('stroke-linejoin', 'round');\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4OA,IAAM,uBAAuB;;AAG7B,IAAM,gBAAgB;CAAC;CAAI;CAAI;CAAI;CAAI;CAAI;CAAI;AAAE;;AAGjD,IAAa,gBAAgB,IAAI,OAAO;CAEtC,mBAAmB,EAAE,uCAAuC,IAAI;CAChE,UAAU;EAAE,SAAS;EAAS,OAAO;EAAQ,QAAQ;CAAO;CAE5D,MAAM;EAAE,SAAS;EAAQ,YAAY;EAAU,KAAK;EAAO,eAAe;CAAM;CAChF,YAAY;EAAE,UAAU;EAAG,UAAU;CAAE;CACvC,cAAc;EACZ,SAAS;EACT,YAAY;EACZ,gBAAgB;EAChB,KAAK;EACL,QAAQ;CACV;CACA,wBAAwB;EAAE,eAAe;EAAU,YAAY;CAAa;CAC5E,aAAa;EAAE,SAAS;EAAS,UAAU;EAAG,WAAW;EAAG,cAAc;CAAM;CAChF,kBAAkB,aAAqB,EAAE,QAAQ,QAAQ;CACzD,4BAA4B,aAAqB,EAAE,OAAO,QAAQ;AACpE,CAAC;;AAGD,SAAS,cAAc,EACrB,WAAW,SACX,aAAa,SAC0C;CACvD,IAAI,aAAa,SAAS,OAAAA,YAAA,UAAA,EAAA,MAAqB,cAAc,SAAQ,GAAA,IAAA;CACrE,OAAAA,YAAA,OAAAC,WAAA,EAAA,eAAA,OAAA,GAGQ,IAAI,MAAM,cAAc,cAAc,cAAc,cAAc,sBAAsB,CAAC,GAAA,CAE5F,cAAc,KAAK,SAAS,aAAQD,YAAA,UAAA;EAAA,OAE5B;EAAQ,MACT,CACF,cAAc,aACd,aACI,cAAc,0BAA0B,GAAG,QAAO,EAAG,IACrD,cAAc,gBAAgB,GAAG,QAAO,EAAG,CAAC;CACjD,GAAA,IAAA,CAEJ,CAAC,CAAA;AAGR;;AAGA,IAAa,UAAU,0BACrB,QAAA,SAwBkD;CAAA,MAAA,SAAA,CAAA;CAAA,MAAA,OAAAE,aAAA,QAAA,MAAA;CAAA,MAAA,QAAAA,aAAA,QAAA,OAAA;CAAA,MAAA,SAAAA,aAAA,QAAA,QAAA;CAAA,MAAA,cAAAA,aAAA,QAAA,aAAA;CAAA,MAAA,cAAAA,aAAA,QAAA,aAAA;CAAA,MAAA,OAAAA,aAAA,QAAA,MAAA;CAAA,MAAA,SAAAA,aAAA,QAAA,UAjBvC,GAAG;CAAA,MAAA,SAAAA,aAAA,QAAA,QAAA;CAAA,MAAA,OAAAA,aAAA,QAAA,QAEL,IAAI;CAAA,MAAA,cAAAA,aAAA,QAAA,aAAA;CAAA,MAAA,UAAAA,aAAA,QAAA,WAED,IAAI;CAAA,MAAA,UAAAA,aAAA,QAAA,WACJ,KAAK;CAAA,MAAA,eAAAC,SAAA,QAAA,uBACmC,CAAA,GAAE,KAAA,IAAA;CAAA,MAAA,QAAAD,aAAA,QAAA,OAAA;CAAA,MAAA,UAAAA,aAAA,QAAA,SAAA;CAAA,MAAA,cAAAA,aAAA,QAAA,aAAA;CAAA,MAAA,QAAAA,aAAA,QAAA,OAAA;CAAA,MAAA,cAAAA,aAAA,QAAA,aAAA;CAAA,MAAA,OAAAA,aAAA,QAAA,QAM7C,KAAK;CAAA,MAAA,YAAAC,SAAA,QAAA,oBAC+C,MAAI,KAAA,IAAA;CAAA,MAAA,OAAAD,aAAA,QAAA,MAAA;CAAA,MAAA,KAAAA,aAAA,QAAA,IAAA;CAAA,MAG5D,OAAIE,UAAA,QAAA,MAAA,IAAA;CAEP,MAAM,OAAO,QAAQ;CACrB,MAAM,SAAS,UAAU;CACzB,MAAM,KAAK,MAAM;CACjB,MAAM,WAAQC,eAAY,cAAa,OAAA,KAAO,CAAC;CAC/C,MAAM,UAAOA,eAAY,SAAA,MAAS,QAAQ,SAAS,CAAC,aAAA,MAAa,SAAS,KAAK,GAAG,CAAC,CAAC;CAEpF,MAAM,gBAAgB,QACpB,QAAQ,KAAA,IACJ,KACA,YAAA,QACE,YAAA,MAAY,IAAG,MAAA,QAAS,GAAG,IAC3B,OAAO,IAAG,MAAA,UAAW,EAAE;CAC/B,MAAM,YAAY,yBAAyB;EAAE,aAAW,YAAA;EAAE,MAAI,KAAA;CAAC,EAAE;CACjE,MAAM,gBAAgB,yBAAyB;EAC7C,aAAa,KAAA,MAAK,WAAW;EAC7B,MAAM,KAAA,MAAK,WAAW;CACxB,EAAE;CACF,MAAM,eAAe,QAAgB,KAAA,MAAK,WAAW,KAAK,SAAS,GAAG,KAAK;;CAE3E,MAAM,cAAc,KAAa,UAC/B,YAAY,GAAG,IAAI,cAAc,KAAK,IAAI,UAAU,KAAK;;CAE3D,MAAM,YAAY,QAChB,QAAA,MAAQ,QAAQ,KAAK,SAAS,MAAM,KAAK,IAAI,aAAa,KAAK,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;CACtF,MAAM,eAAe,UACnB,OAAO,OAAO,OAAO;EAAE,OAAO;EAAW,uBAAuB;CAAE,CAAC;CAErE,MAAM,SAAS,QAAW;EACxB,MAAM,IAAI,KAAA,MAAK,aAAa,MAAM,GAAG;EACrC,OAAO,MAAM,KAAA,IAAY,KAAK,aAAa,KAAA,MAAK,YAAa,OAAO,CAAC;CACvE;CAEA,SAAS,OAAO,KAAa;EAC3B,aAAA,QAAe,aAAA,MAAa,SAAS,GAAG,IACpC,aAAA,MAAa,QAAQ,SAAS,SAAS,GAAG,IAC1C,CAAC,GAAA,aAAA,OAAiB,GAAG;CAC3B;;CAGA,MAAM,gBAAgB;EACpB,MAAM,OAAO,KAAA,MAAK,SAAS;EAC3B,OAAAL,YAAA,OACW,IAAI,MAAM,cAAc,IAAI,GAAC,CAAAA,YAAA,QAAA;GAAA,UAE1B,UAAA,SAAa,CAAC,GAAG,IAAI;GAAC,oBACZ,SACf,UAAA,QAAY,KAAK,OAAO,KAAK,KAAK,OAAO,OAAO,OAAO;GAAK,OAE1D;GAAC,OACD;GAAI,QACH;GAAC,QAAA;GAAA,aAAA,OAAA,OAAA,OAAA,MAEK,aAAa,aAAa,KAAA,MAAK,SAAS;GAAC,cACzC,KAAK;GAAS,aAAA,OAAA,OAAA,OAAA,KACf,EAAE,IAAI,cAAc,WAAW;EAAC,GAAA,IAAA,GAE5C,UAAA,SAAAA,YAAA,QAAA;GAAA,WAAA;GAAA,QAAA;GAAA,WAAA,OAAA,OAAA,OAAA,WACkD,UAAA,QAAY;EAAK,GAAA;GAAA,eAAA,CAC/D,KAAK,cAAc;GAAA,SAAA;EAAA,CAAA,CAEvB,CAAA;CAGP;CAEA,MAAM,YAAY,qBAAqB;CACvC,IAAI;CAGJ,IAAI,UAA4C;CAChD,MAAM,SAAS,QAAuB;EACpC,UAAU,QAAQ,KAAA,IAAY,OAAO;GAAE;GAAK,OAAO,KAAA,MAAK,QAAQ,GAAG;EAAE;CACvE;;CAGA,SAAS,cAAc,KAAQ;EAC7B,mBAAmB,SAAS,cAAc,KAAK;EAE/C,IAAI,KAAA,MAAK,cAAc,MAAM,GAAG;EAChC,OACE,aACE,aAAa,GAAG,GAChB,KAAA,MAAK,eAAe,GAAG,KAAK,CAC1B,GAAI,KAAA,MAAK,cACL,CAAC;GAAE,OAAO,KAAA,MAAK,YAAY;GAAO,OAAO;GAAe,OAAO,MAAM,GAAG;EAAE,CAAC,IAC3E,CAAA,GAEJ,GAAG,QAAA,MACA,QAAQ,SAAS,CAAC,KAAA,MAAK,gBAAgB,YAAY,KAAK,KAAK,GAAG,MAAM,KAAA,CAAS,CAAC,CAChF,KAAK,SAAS;GACb,MAAM,QAAQ,YAAY,KAAK,KAAK,GAAG;GACvC,MAAM,QAAQ,KAAA,MAAK,UAAU,SAAS,GAAG,IAAI;GAC7C,OAAO;IACL,OAAO,KAAK;IACZ,OAAO,KAAK;IACZ,OACE,KAAA,MAAK,WAAW,UAAU,KAAA,KAAa,QAAQ,IAC3C,GAAG,WAAW,KAAK,KAAK,KAAK,EAAC,GAAI,YAAY,SAAS,KAAK,IAAI,KAAK,EAAC,KACtE,WAAW,KAAK,KAAK,KAAK;GAClC;EACF,CAAC,CAAC,CAER,GACA,cACF;EACA,OAAO;CACT;CAEA,IAAI,OAAIM,WAAkC,IAAI;CAC9C,MAAM,OAAO,kBAAY,KAAA,KAAU;CACnC,IAAI;CACJ,IAAI;CACJ,mBAAoB;EAClB,WAAW,QAAQ;EACnB,IAAI,gBAAgB,OAAO,MAAM,cAAc;CACjD,CAAC;CACD,aAAc;EAEZ,MAAM,QAAQ,KAAA,SAAQ,CAAC,KAAA,MAAK,cAAW,UAAA,QAAe;EACtD,MAAM,OAAO,QAAQ,KAAA,MAAK,MAAM,MAAM,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,GAAA,KAAA,KAAO;EAClE,MAAM,QAAK,QAAA;EACX,MAAM,UAAO,KAAA;EACb,IAAI,CAAC,WAAO,QAAA,SAAe,KAAK,WAAW,KAAK,CAAC,KAAK,GAAG;EAEzD,IAAI,aAAa,qBAAqB,SAAS;GAC7C,UAAU,QAAQ;GAClB,YAAY,KAAA;GACZ,UAAU,MAAM;EAClB;EAEA,MAAM,gBAAgB,MAAM,QAAQ,SAAS,CAAC,YAAY,KAAK,GAAG,CAAC;EACnE,MAAM,kBAAkB,MAAM,QAAQ,SAAS,YAAY,KAAK,GAAG,CAAC;EACpE,MAAM,SAAS,KAAK,KAAK,QACvB,cAAc,KAAK,SAAS,aAAa,KAAK,KAAK,GAAG,KAAK,CAAC,CAC9D;EAUA,MAAM,SAAS;GACb,GAVmB,KAAA,MAAK,eACtB,KAAA,MAAK,aAAa,MAAM,aAAa,IACrC,KAAA,MAAK,UACH,OAAO,SAAS,QAAQ,CACtB,IAAI,QAAQ,KAAK,UAAU,MAAM,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,GACtD,IAAI,QAAQ,KAAK,UAAU,MAAM,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CACxD,IACD,OAAO,KAAK;GAIhB,IAAI,QAAA,SAAW,CAAA,EAAA,CAAI,KAAK,WAAW,SAAS,OAAO,KAAK,CAAC;GACzD,IAAI,MAAA,SAAS,CAAA,EAAA,CACV,QAAQ,SAAS,KAAK,SAAS,OAAO,CAAC,CACvC,SAAS,SAAS,CAAC,OAAO,KAAK,IAAI,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC;EAAC;EAG5D,MAAM,UACJ,gBAAgB,SAAS,IACrB,aACE,CACE,GAAG,QACH,GAAG,CAAC,YAAA,QAAc,IAAI,YAAA,QAAc,EAAE,CAAC,CAAC,QACrC,QAAuB,QAAQ,KAAA,CAClC,CAAC,GAEH,KAAK,SAAS,QACZ,gBAAgB,KAAK,SAAS,aAAa,KAAK,KAAK,GAAG,KAAK,CAAC,CAChE,CACF,IACA,KAAA;EACN,MAAM,SAAmD,KAAA,MAAK,UAC1D,CAAC,GAAG,CAAC,IACL,UACE,QAAQ,QAAQ,SAChB,CACE,YAAA,QAAc,OACX,KAAA,MAAK,iBAAiB,QAAQ,KAAA,IAAY,KAAK,IAAI,GAAG,GAAG,MAAM,IAClE,YAAA,QAAc,EAAE;EAExB,MAAM,IAAI,KAAA,MAAK,eACV,QAAW,KAAA,MAAK,YAAa,MAAM,GAAG,KAAK,OAC3C,MAAS,aAAqB;EACnC,MAAM,KAAK,SAAiC;GAC1C,IAAI,KAAA,MAAK,SACP,QAAQ,QAAW;IACjB,MAAM,QAAQ,aAAa,KAAK,KAAK,GAAG;IACxC,MAAM,QAAQ,SAAS,GAAG;IAC1B,OAAO,UAAU,KAAA,KAAa,UAAU,IAAI,KAAA,IAAY,QAAQ;GAClE;GACF,IAAI,WAAW,YAAY,KAAK,GAAG,GACjC,QAAQ,QAAW;IACjB,MAAM,QAAQ,aAAa,KAAK,KAAK,GAAG;IACxC,OAAO,UAAU,KAAA,IAAY,KAAA,IAAY,QAAQ,UAAU,KAAK;GAClE;GACF,QAAQ,QAAW,aAAa,KAAK,KAAK,GAAG;EAC/C;;EAEA,MAAM,cAAc,OAAgB;GAClC,IAAI,KAAA,MAAK,aAAa,OAAO,OAAO,EAAE;GACtC,MAAM,QAAQ,KAAK,WAAW,QAAQ,IAAG,MAAA,WAAY,EAAE;GACvD,OAAO,QAAQ,IAAI,KAAA,IAAY;EACjC;EACA,MAAM,mBAAmB,KAAA,MAAK,aAAa,SAAS,IAAI,SAAS;EACjE,MAAM,gBAAgB,KAAA,MAAK,aAAa,SAAS,IAAI,SAAS;EAC9D,MAAM,SAAS,QAAA,SAAW,CAAA,EAAA,CAAI,KAAK,QAAQ,aAAa;GACtD,MAAM,OAAO,UAAU,IAAI,UAAU,kBAAkB,IAAI,SAAY,CAAC,CAAC,CAAC;GAC1E,MAAM,QAAQ,SAAS,OAAO,KAAK;GACnC,MAAM,QAAQ,UAAU,OAAO,KAAK;GACpC,KAAK,UAAU;IACb,MAAM,KAAA,MAAK,aAAa,MAAM;IAC9B;IACA,OAAO,aAAa,OAAO,SAAS,UAAU,CAAC;IAC/C,WAAW;IACX,WAAW,yBAAyB;IACpC,WAAW,OAAO,QAAQ,GAAG,OAAO,MAAK,GAAI,UAAU;IACvD,eAAe,KAAA,MAAK,aAChB,sBAAsB,WACtB,sBAAsB;IAC1B,cAAc;IACd,cAAc;GAChB,CAAC;GACD,OAAO;EACT,CAAC;EAGD,MAAM,kBAAkB,MAAA,SAAS,CAAA,EAAA,CAAI,SAAS,MAAM,aAAa;GAC/D,MAAM,UAAU,KAAK,SAAS;GAC9B,MAAM,OAAO,UAAU,WAAW,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI;GAC/D,MAAM,KAAK,UAAU,WAAW,KAAK,EAAE,IAAI,OAAO,KAAK,EAAE;GACzD,IAAI,SAAS,KAAA,KAAa,OAAO,KAAA,GAAW,OAAO,CAAA;GAEnD,MAAM,OAAO,WAAW,CAAC,KAAA,MAAK,cAAc,KAAM;GAClD,MAAM,WAAW,UAAU,IAAI,QAAQ,kBAAkB,IAAI,SAAY,CAAC,CAAC,CAAC;GAC5E,SAAS,UAAU;IACjB,MAAM,UAAU,mBAAmB;IACnC,MAAM,KAAK,IAAI,MAAM,EAAE,IAAI;IAC3B,IAAI,KAAK,IAAI,MAAM,EAAE,IAAI;IACzB,OAAO,sBAAsB,aAAa,KAAK,SAAS,WAAW,CAAC,EAAC;IACrE,WAAW,KAAK;IAEhB,eAAe,UACX,sBAAsB,mBACtB,sBAAsB;IAC1B,YAAY,OAAO;IACnB,cAAc;IACd,cAAc;GAChB,CAAC;GACD,OAAO,CAAC,QAAQ;EAClB,CAAC;EAID,MAAM,cADU,YAAA,SAAe,CAAA,EAAA,CAAI,QAAQ,SAAS,KAAK,WAAW,KAAA,CACjD,CAAM,CAAC,SAAS,MAAM,aAAa;GACpD,MAAM,KAAK,WAAW,KAAK,EAAE;GAC7B,IAAI,OAAO,KAAA,GAAW,OAAO,CAAA;GAC7B,MAAM,OAAO,UAAU,IAAI,SAAS,kBAAkB,IAAI,SAAY,CAAC,CAAC,CAAC;GACzE,KAAK,UAAU;IACb,MAAM;IACN,OAAO;IACP,OAAO,aAAa,KAAK,SAAS,WAAW,CAAC;IAC9C,WAAW;IACX,WAAW,yBAAyB;IACpC,WAAW,KAAK;IAChB,eAAe,KAAA,MAAK,aAChB,sBAAsB,cACtB,sBAAsB;IAC1B,cAAc;IACd,cAAc;GAChB,CAAC;GACD,OAAO,CAAC,IAAI;EACd,CAAC;EACD,MAAM,UAAU,YAAA,SAAe,CAAA,EAAA,CAAI,QAChC,SAAS,KAAK,WAAW,KAAA,KAAa,CAAC,KAAA,MAAK,UAC/C;EACA,MAAM,UAAU,QAAW;GACzB,MAAM,KAAK,KAAA,MAAK,cAAc,KAAA,MAAK,YAAY,MAAM,GAAG,IAAI,KAAK,QAAQ,GAAG;GAC5E,OAAO,OAAO,MACX,SACC,WAAW,KAAK,EAAE,MAAM,MAAM,MAAM,MAAM,WAAW,OAAO,QAAQ,KAAK,MAAM,CACnF;EACF;;EAEA,MAAM,SAAS,QAAW;GACxB,MAAM,OAAO,OAAO,GAAG;GACvB,IAAI,CAAC,MAAM,OAAO,KAAA;GAClB,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,QAAQ,KAAK,MAAM;GAC5D,IAAI,CAAC,KAAA,MAAK,WAAW,KAAA,MAAK,SAAS,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG;GAEvD,OADa,MAAM,MAAM,GAAG,MAAM,QAAQ,MAAM,IAAI,CAC7C,CAAI,CAAC,QAAQ,KAAK,SAAS,MAAM,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;EAC3E;EACA,MAAM,aAAa,QAAW;GAC5B,MAAM,OAAO,OAAO,GAAG;GACvB,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,QAAQ,MAAM,MAAM;GAC7D,OAAO,MAAM,QAAQ,aAAa,KAAK,OAAO,CAAC,IAAK,QAAQ,SAAS,OAAO;EAC9E;EACA,MAAM,QAAQ,UAAU,IAAI,eAAe,IAAI,QAAW;GAAE;GAAG,SAAS,KAAA;EAAU,CAAC,CAAC;EACpF,MAAM,UAAU;GACd;GACA,GAAG;GACH,MAAM;GACN,OAAO;GACP,aAAa;GACb,aAAa;GACb,QAAQ,QAAW,OAAO,GAAG,CAAC,EAAE,SAAS;GACzC,eAAe,SAAS;GACxB,YAAY,OAAO;EACrB,CAAC;EAGD,MAAM,kBAAkB,UACpB,QAAQ,UAAU,MAAM,KAAK,MAAM,aAAa;GAC9C,MAAM,QAAQ,UAAU,IAAI,aAAa,kBAAkB;IACzD,MAAM,OAAO,IAAI,SAAY,CAAC,CAAC;IAC/B,KAAK,YAAY;IACjB,OAAO;GACT,CAAC;GACD,MAAM,UAAU;IACd,MAAM;IACN,OAAO,QAAQ,QAAQ,MAAM;IAC7B,OAAO;IACP,WAAW;IACX,WAAW,OAAO,OAAO,MAAM,KAAA,MAAK,WAAW,MAAM;IACrD,eAAe,sBAAsB;IACrC,cAAc;IACd,YAAY,OAAO;GACrB,CAAC;GACD,OAAO;EACT,CAAC,IACD,CAAA;EACJ,MAAM,aAAa;GACjB,GAAG;GACH,GAAG,KAAA,MAAK,WAAW;IACjB,QAAQ;IACR;IACA;IACA,UAAU,UAAU;IACpB,QACE,KAAA,MAAK,gBAAY,YAAA,QACb,GACG,KAAA,MAAK,eAAe,EAEnB,QAAQ,KAAQ,QAAe,UAAkB;KAC/C,MAAM,WAAW,KAAA,MAAK,QAAQ,GAAG;KACjC,MAAM,KAAK,YAAY,IAAI,WAAW;KACtC,YAAA,MAAY,KAAA,MAAK,OAAO,KAAK,EAAE;IACjC,EACF,EACF,IACA,CAAC;GACT,CAAC;GACD,GAAG;GACH,GAAG;GACH,GAAI,OAAO,SAAS,IAAI,CAAC,KAAK,IAAI,CAAA;GAClC,GAAG;EAAe;EAEpB,MAAM,QAAQ,UAAU,IAAI,eAAe,IAAI,KAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;EACrE,MAAM,QAAQ,UAAU,IAAI,eAAe,IAAI,KAAQ,EAAE,MAAM,IAAI,CAAC,CAAC;EACrE,MAAM,YAAY,UAAU,IAAI,mBAAmB,IAAI,UAAa,CAAC;EACrE,MAAM,aAAa,UAAU,IAAI,iBAAiB,IAAI,QAAQ,CAAC;EAC/D,MAAM,CAAC,cAAc,aAAa,KAAA,MAAK,aAAa,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,KAAK;EAClF,MAAM,aAAa,KAAA,MAAK;EACxB,aAAa,UAAU;GACrB,MAAM,KAAA,MAAK,aAAa,MAAM;GAE9B,YAAY,aAAa,KAAA,IAAY,KAAK,KAAK,MAAM,aAAa,QAAQ;GAC1E,UAAU,aAAa,IAAI,KAAA;GAC3B,YAAY,cACP,SAAS,WAAW,OAAO,OAAO,IAAI,CAAC,KACvC,SAAS,aAAa,KAAK,OAAO,IAAI,EAAE;GAC7C,UAAU,aAAU,KAAA,QAAU;GAC9B,UAAU;GACV,YAAY;GACZ,yBAAyB;GACzB,aAAa;GACb,OAAO,YAAY;GACnB,aAAa;EACf,CAAC;EACD,UAAU,UAAU;GAClB,MAAM,KAAA,MAAK,aAAa,MAAM;GAC9B,UAAU;GAEV,YAAY,SAAS,QAAQ;GAC7B,aAAa,SACX,KAAA,MAAK,UACD,OAAO,OAAO,OAAO,IAAI,GAAG;IAAE,OAAO;IAAW,uBAAuB;GAAE,CAAC,IAC1E,OAAO,OAAO,OAAO,IAAI,GAAC,YAAA,KAAa;GAC7C,UAAQ,KAAA;GACR,UAAU;GACV,YAAY;GACZ,aAAa;EACf,CAAC;EACD,MAAM,SAAS,KAAA,MAAK,kBAAkB,MAAM,OAAO,KAAA,MAAK,eAAe,IAAI;EAC3E,UAAU,UAAU;GAElB;GACA,GAAI,KAAA,MAAK,UAAU,EAAE,UAAU,OAAO,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,IAAI,CAAC,EAAE;GACpE,WAAW,QAAW,cAAc,GAAG;GACvC,QAAQ,MAAS,aAAqB,OAAO,SAAS,EAAE,SAAS;GACjE,YAAY,KAAA,MAAK,gBAAgB,KAAA,UAAkB,CAAA;GACnD,wBAAwB;GACxB,kBAAkB,IAAI,QAAQ,MAAM,GAAG;EACzC,CAAC;EAED,WAAW,UAAU,EACnB,UAAU,KAAA,MAAK,eAAe,GAAG,KAAA,MAAK,gBAAgB,QAAW,cAAc,GAAG,EAAE,IAAI,CAAC,EAC3F,CAAC;EACD,MAAM,SAAS;GACb;GACA;GACA;GAEA,YACG,QAAA,SAAY,YAAA,SAAe,CAAC,KAAA,MAAK,iBAAkB,CAAC,KAAA,MAAK,eACtD,YACA,KAAA;GACN,SAAS,QAAA,QAAU,aAAa,KAAA;IAC/B,KAAA,MAAK,aAAa,YAAY,YAAY;GAE3C,SAAS,UACL;IAAE,GAAG,KAAA,MAAK;IAAS,OAAO,KAAK,IAAI,KAAA,MAAK,SAAS,SAAS,GAAG,oBAAoB;GAAE,IAClF,KAAA,MAAK,WAAW,CAAC;GACtB,WAAW;GACX,UAAU,cAAc,OAAO;GAC/B,kBAAkB;EACpB;EACA,IAAI,WAAW,UAAU,OAAO,QAAQ,KAAA,GAAW,IAAI;OAClD;GACH,YAAY,IAAI,YAAe,SAAS,QAAQ,IAAI;GACpD,mBAAmB;GACnB,sBAAsB,SAAS,GAAG,GAAE,WAAY;EAClD;CACF,CAAC;CAED,aAAON,YAAA,YAAAC,WAEC,MAAI;EAAA,MACJ,CAAA,IAAA,aAAC,CAAC,KAAA,MAAK,iBAAiB,cAAc,mBAAiB,IAAA,GAAA,GAAA,KAAA;EAAK,QAE1D,KAAA,MAAK,UAAU,KAAA,IAAS,KAAA;EAAO,WAC5B,KAAA,MAAK,WAAW;EAAI,UAAA,OAAA;EAAA,UAEpB,OAAA,SAAU,SAAA,MAAS,SAAS,IAAC,SAAA,QAAe,CAAA;EAAE,cAAA,aAAA;EAAA,kBAEvC;EAAM,WAAA,QAAA;EAAA,YAEZ,cAAa,KAAA,KAAK;EAAC,WACpB,KAAA,MAAK,WAAW;EAAC,SAAA,MAAA;EAAA,aAEf,YAAA,SAAe;EAAI,eAE5B,YAAA,SAAe,CAAC,KAAA,MAAK,qBACX;GACJ,IAAI,SAAS,YAAA,MAAY,QAAQ,KAAK,QAAQ,KAAK;EACrD,IACA,KAAA;EAAS,SAGb,KAAA,MAAK,QAAK,KAAA,KAAO,KAAK;GACpB,SAAS;IACP,KAAK;IACL,GAAI,KAAA,MAAK,cAAc,CAAC,KAAA,MAAK,YAAY,KAAK,IAAI,CAAA;IAClD,GAAG,SAAA,MAAS,KAAK,SAAS;KACxB,MAAM,WAAW,YAAY,KAAK,GAAG,IAAI,KAAA,MAAK,WAAW,OAAI,KAAA;KAC7D,OAAO,WAAW,GAAG,KAAK,MAAK,GAAI,SAAQ,KAAM,KAAK;IACxD,CAAC;GAAC;GAEJ,MAAM,KAAA,MAAK,KAAK,SAAS;IACvB,QAAQ,aAAa,GAAG;IACxB,OAAO,CACL,GAAI,KAAA,MAAK,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAA,GACtC,GAAG,SAAA,MAAS,KAAK,SAAS;KACxB,MAAM,QAAQ,YAAY,KAAK,KAAK,GAAG;KACvC,OAAO,UAAU,KAAA,IACb,KAAK,aACL,OAAO,OACL,OACA,YAAY,KAAK,GAAG,IAAI,KAAA,MAAK,WAAW,SAAM,YAAA,KAChD;IACN,CAAC,CAAC;GAEN,EAAE;EACJ;EAAC,WAAA,OAAA,OAAA,OAAA,MAEO,YAAa,KAAA,QAAO;EAAQ,UAC9B,KAAA,SAAQ,CAAC,KAAA,MAAK,eAAe,KAAA,MAAK,SAAS,IAAI,QAAQ,IAAI,KAAA;CAAS,CAAA,GAAA,IAAA;AAGlF,GAAC;CAAA,MAAA;CAAA,OAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;CAAA;AAAA,CACH;;;;;AAMA,SAAS,mBAAmB,KAAoB;CAC9C,KAAK,MAAM,SAAS,IAAI,iBAAiC,iCAA+B,GAAG;EACzF,MAAM,MAAM,YAAY,eAAe,QAAQ;EAC/C,MAAM,MAAM,YAAY,UAAU,OAAO,OAAO;EAChD,MAAM,MAAM,YAAY,gBAAgB,KAAK;EAC7C,MAAM,MAAM,YAAY,mBAAmB,OAAO;CACpD;AACF"}
@@ -0,0 +1,23 @@
1
+ /** 一条数值轴:范围与刻度 */
2
+ export interface AxisTicks {
3
+ /** 范围 [最小, 最大],两端都是刻度 */
4
+ domain: [number, number];
5
+ /** 刻度,从小到大 */
6
+ ticks: number[];
7
+ }
8
+ /** 对齐的两条数值轴 */
9
+ export interface AlignedAxes {
10
+ /** 主轴(左侧) */
11
+ primary: AxisTicks;
12
+ /** 第二数值轴(右侧):刻度数与主轴相同 */
13
+ secondary: AxisTicks;
14
+ /** 第二轴的值换算到主轴的坐标 */
15
+ toPrimary: (value: number) => number;
16
+ }
17
+ /** 不小于 raw 的“好看”步长:1、2、2.5、5 乘 10 的整数次幂 */
18
+ export declare function niceStep(raw: number): number;
19
+ /**
20
+ * 两组值的对齐刻度:primary、secondary 是两条轴要包含的值(含 0 时从 0 起)。
21
+ * 主轴约 count 格(d3 的 nice),第二轴取同样多的格
22
+ */
23
+ export declare function alignedTicks(primary: readonly number[], secondary: readonly number[], count?: number): AlignedAxes;