@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,149 @@
1
+ /**
2
+ * 锚定浮层:Popover、Tooltip、Menu、Select 的弹出层贴着触发器显示。位置由 floating-ui 计算,
3
+ * 显示、隐藏、Esc、点击外部仍交给原生 popover;createAnchoredLayer 把两者串成打开、关闭的流程。
4
+ *
5
+ * const anchored = anchorFloating(trigger, panel, { placement: 'bottom-start' });
6
+ * await anchored.ready; // 第一次定位完成、已经可见:这时才能把焦点移进去
7
+ * anchored.stop(); // 关闭时停止跟随
8
+ * sx: [floatingStyles.anchored, …] // 浮层自己的样式:去掉原生 popover 默认的居中与外边距
9
+ *
10
+ * - 第一次算好位置之前浮层是 visibility: hidden,不会在默认位置闪一下;
11
+ * - 空间不够时翻到另一侧(flip)、贴着视口边缘挪回来(shift),滚动、缩放、锚点变化时自动重新定位(autoUpdate);
12
+ * - start / end 对齐是逻辑方向,从右到左排版下自动镜像(floating-ui 读浮层的 direction);
13
+ * - 最终方向写到 data-side / data-align,缩放原点(transform-origin)朝向锚点,进出场的 scale 过渡从锚点那侧展开。
14
+ */
15
+ import { type Placement, type VirtualElement } from '@floating-ui/dom';
16
+ import * as css from '@zerodep-dev/vue-tsx-pro-tsx/styles';
17
+ import type { SxStyles } from '@zerodep-dev/vue-tsx-pro-tsx/styles';
18
+ import { type TextSize } from '../style/typography';
19
+ /** 弹出位置:主方向 + 对齐方式(start 对齐锚点的起始边,end 对齐结束边);空间不够时自动翻转 */
20
+ export interface FloatingPlacements {
21
+ /** 上方居中 */
22
+ top: unknown;
23
+ /** 上方,与锚点起始边对齐 */
24
+ 'top-start': unknown;
25
+ /** 上方,与锚点结束边对齐 */
26
+ 'top-end': unknown;
27
+ /** 下方居中 */
28
+ bottom: unknown;
29
+ /** 下方,与锚点起始边对齐 */
30
+ 'bottom-start': unknown;
31
+ /** 下方,与锚点结束边对齐 */
32
+ 'bottom-end': unknown;
33
+ /** 左侧居中 */
34
+ left: unknown;
35
+ /** 左侧,与锚点顶边对齐 */
36
+ 'left-start': unknown;
37
+ /** 左侧,与锚点底边对齐 */
38
+ 'left-end': unknown;
39
+ /** 右侧居中 */
40
+ right: unknown;
41
+ /** 右侧,与锚点顶边对齐 */
42
+ 'right-start': unknown;
43
+ /** 右侧,与锚点底边对齐 */
44
+ 'right-end': unknown;
45
+ }
46
+ /** 弹出位置 */
47
+ export type FloatingPlacement = keyof FloatingPlacements & Placement;
48
+ /**
49
+ * 锚点:元素,或只有位置的虚拟锚点(右键菜单从指针的位置弹出:`pointAnchor(x, y)`)。
50
+ * 虚拟锚点没有元素可以还焦点,关闭后焦点由组件自己安排
51
+ */
52
+ export type FloatingAnchor = HTMLElement | VirtualElement;
53
+ /** 视口里一个点(clientX / clientY)做锚点 */
54
+ export declare function pointAnchor(x: number, y: number): VirtualElement;
55
+ /** anchorFloating 的选项 */
56
+ export interface FloatingOptions {
57
+ /** 弹出位置,默认 bottom-start */
58
+ placement?: FloatingPlacement;
59
+ /** 与锚点的距离(px),默认 6 */
60
+ offset?: number;
61
+ /** 至少与锚点一样宽:下拉框、组合框的选项列表 */
62
+ matchWidth?: boolean;
63
+ /** 最大高度限制在视口剩余空间内(浮层自己设 overflow 滚动):菜单、选项列表 */
64
+ fitHeight?: boolean;
65
+ /** 箭头元素(浮层里的子元素,样式用 floatingStyles.arrow):指向锚点,随翻转换边;距离自动加上箭头露出的一半 */
66
+ arrow?: HTMLElement | null;
67
+ /** 主方向与对侧都放不下时,再试垂直的两侧(窄屏上“右侧”的大卡片改到上下):引导卡片 */
68
+ crossAxisFallback?: boolean;
69
+ }
70
+ /** anchorFloating 的返回值 */
71
+ export interface Anchored {
72
+ /** 第一次定位完成、浮层已可见时完成;在这之前就 stop 时不会完成 */
73
+ readonly ready: Promise<void>;
74
+ /** 停止跟随锚点;关闭浮层时调用,重复调用无副作用 */
75
+ stop(): void;
76
+ }
77
+ /**
78
+ * 弹出面板(选项列表、树、日期面板)共用的样式:锚定定位、浮起的表面、缩放进出场;
79
+ * 面板渲染在顶层,不是输入框外壳的后代、不继承它的字号:按控件的 size 设置。ListPopover、TreeSelect、日期选择器用它
80
+ */
81
+ export declare function anchoredPanelSx(size?: TextSize): SxStyles;
82
+ /** 锚定浮层的基础样式:定位与表面 */
83
+ export declare const floatingStyles: Readonly<{
84
+ anchored: css.CompiledStyles;
85
+ arrow: css.CompiledStyles;
86
+ scrollArea: css.CompiledStyles;
87
+ scrollPanel: css.CompiledStyles;
88
+ surface: css.CompiledStyles;
89
+ withArrow: css.CompiledStyles;
90
+ }>;
91
+ /** 把 floating 定位到 anchor 旁边并持续跟随;floating 需要已经显示(如 showPopover 之后) */
92
+ export declare function anchorFloating(anchor: FloatingAnchor, floating: HTMLElement, { placement, offset: distance, matchWidth, fitHeight, arrow, crossAxisFallback, }?: FloatingOptions): Anchored;
93
+ /** 关闭浮层时焦点还给谁:true 锚点,元素,或 false 不还 */
94
+ export type RestoreFocus = boolean | HTMLElement | null;
95
+ /** createAnchoredLayer 的返回值:一个原生 popover 浮层的打开与关闭 */
96
+ export interface AnchoredLayer {
97
+ /** 是否显示着(show 之后、hide 之前) */
98
+ readonly visible: boolean;
99
+ /** 显示 panel(showPopover)并贴着 anchor 定位;返回第一次定位完成、可以移入焦点的 Promise。已显示时不重复 */
100
+ show(anchor: FloatingAnchor, panel: HTMLElement, options?: FloatingOptions): Promise<void>;
101
+ /**
102
+ * 停止定位并隐藏;焦点还在浮层里或已丢失时归还:restoreFocus 默认 true 还给锚点,给元素时还给它,false 不还。
103
+ * 未显示时什么也不做
104
+ */
105
+ hide(options?: {
106
+ restoreFocus?: RestoreFocus;
107
+ }): void;
108
+ }
109
+ /**
110
+ * 锚定浮层的生命周期(Popover、Menu、Tooltip 共用):显示 → 定位 → 关闭时停止定位、归还焦点。
111
+ * 原生 popover="auto" 被 Esc、点击外部关闭(light dismiss)时浏览器先隐藏了它,组件在 toggle 事件里调用 hide 收尾。
112
+ */
113
+ export declare function createAnchoredLayer(): AnchoredLayer;
114
+ /** useAnchoredPopover 每次渲染后读取的状态 */
115
+ export interface AnchoredPopoverState {
116
+ /** 是否打开 */
117
+ open: boolean;
118
+ /** 锚点(触发器、输入框外壳,或右键菜单的虚拟锚点) */
119
+ anchor: FloatingAnchor | null;
120
+ /** 浮层(popover 元素) */
121
+ panel: HTMLElement | null;
122
+ /** 定位选项 */
123
+ floating?: FloatingOptions;
124
+ /**
125
+ * 关闭时焦点还给谁:默认 true 还给锚点;锚点是输入框外壳时给打开按钮(DatePicker);
126
+ * 焦点一直在锚点上的组件(Select、Combobox)设 false
127
+ */
128
+ restoreFocus?: RestoreFocus;
129
+ }
130
+ /** useAnchoredPopover 的回调 */
131
+ export interface AnchoredPopoverEvents {
132
+ /** 浏览器关掉了浮层:按了 Esc,或点了外面(别的浮层打开也算);组件把 open 写回 false */
133
+ close: (reason: 'escape' | 'outside', event: Event) => void;
134
+ /** 浮层打开并第一次定位完成(可见):移入焦点等 */
135
+ shown?: (panel: HTMLElement) => void;
136
+ }
137
+ /**
138
+ * 原生 popover="auto" 的锚定浮层接到组件的 open 上(Popover、Menu、Select、Combobox 共用):
139
+ * open 变化时显示或隐藏(DOM 更新之后),浏览器的 light dismiss 写回 open,卸载时收起。
140
+ * 返回要放到浮层元素上的 onToggle。在组件 setup 里调用。
141
+ *
142
+ * const { onToggle } = useAnchoredPopover(
143
+ * () => ({ open, anchor, panel, floating: { placement } }),
144
+ * { close: (reason, event) => setOpen(false, reason, event), shown: focusFirst },
145
+ * );
146
+ */
147
+ export declare function useAnchoredPopover(read: () => AnchoredPopoverState, events: AnchoredPopoverEvents): {
148
+ onToggle: (event: Event) => void;
149
+ };
@@ -0,0 +1,262 @@
1
+ import { fontSizeStyles } from "../style/typography.js";
2
+ import { transitions } from "../style/transitions.js";
3
+ import { returnFocus } from "./focus.js";
4
+ import { onScopeDispose, watchPostEffect } from "vue";
5
+ import * as css from "@zerodep-dev/vue-tsx-pro-tsx/styles";
6
+ import { arrow, autoUpdate, computePosition, flip, offset, shift, size } from "@floating-ui/dom";
7
+ //#region src/utils/dom/floating.ts
8
+ /**
9
+ * 锚定浮层:Popover、Tooltip、Menu、Select 的弹出层贴着触发器显示。位置由 floating-ui 计算,
10
+ * 显示、隐藏、Esc、点击外部仍交给原生 popover;createAnchoredLayer 把两者串成打开、关闭的流程。
11
+ *
12
+ * const anchored = anchorFloating(trigger, panel, { placement: 'bottom-start' });
13
+ * await anchored.ready; // 第一次定位完成、已经可见:这时才能把焦点移进去
14
+ * anchored.stop(); // 关闭时停止跟随
15
+ * sx: [floatingStyles.anchored, …] // 浮层自己的样式:去掉原生 popover 默认的居中与外边距
16
+ *
17
+ * - 第一次算好位置之前浮层是 visibility: hidden,不会在默认位置闪一下;
18
+ * - 空间不够时翻到另一侧(flip)、贴着视口边缘挪回来(shift),滚动、缩放、锚点变化时自动重新定位(autoUpdate);
19
+ * - start / end 对齐是逻辑方向,从右到左排版下自动镜像(floating-ui 读浮层的 direction);
20
+ * - 最终方向写到 data-side / data-align,缩放原点(transform-origin)朝向锚点,进出场的 scale 过渡从锚点那侧展开。
21
+ */
22
+ /** 视口里一个点(clientX / clientY)做锚点 */
23
+ function pointAnchor(x, y) {
24
+ return { getBoundingClientRect: () => new DOMRect(x, y, 0, 0) };
25
+ }
26
+ /** 缩放原点朝向锚点:弹出在下方时从上边缘展开 */
27
+ var TRANSFORM_ORIGIN = {
28
+ top: "bottom",
29
+ right: "left",
30
+ bottom: "top",
31
+ left: "right"
32
+ };
33
+ /** 箭头贴着浮层的哪条边(与弹出方向相反) */
34
+ var ARROW_EDGE = {
35
+ top: "bottom",
36
+ right: "left",
37
+ bottom: "top",
38
+ left: "right"
39
+ };
40
+ /** 箭头(画了右、下两条边的方块)转多少度才朝向锚点 */
41
+ var ARROW_ROTATION = {
42
+ top: 45,
43
+ right: 135,
44
+ bottom: 225,
45
+ left: -45
46
+ };
47
+ /**
48
+ * 弹出面板(选项列表、树、日期面板)共用的样式:锚定定位、浮起的表面、缩放进出场;
49
+ * 面板渲染在顶层,不是输入框外壳的后代、不继承它的字号:按控件的 size 设置。ListPopover、TreeSelect、日期选择器用它
50
+ */
51
+ function anchoredPanelSx(size) {
52
+ return [
53
+ floatingStyles.anchored,
54
+ floatingStyles.surface,
55
+ size && fontSizeStyles[size],
56
+ transitions.scale
57
+ ];
58
+ }
59
+ /** 锚定浮层的基础样式:定位与表面 */
60
+ var floatingStyles = css.create({
61
+ /** 原生 popover 默认居中显示、带外边距,改为由 anchorFloating 写入的 left / top 定位 */
62
+ anchored: {
63
+ position: "fixed",
64
+ inset: "auto",
65
+ margin: 0
66
+ },
67
+ /** 浮起的表面:边框、圆角、阴影(Popover、Menu、选项列表);内边距各自定 */
68
+ surface: {
69
+ boxSizing: "border-box",
70
+ borderWidth: "_xs",
71
+ borderStyle: "solid",
72
+ borderColor: "_border",
73
+ borderRadius: "_lg",
74
+ backgroundColor: "_surfaceRaised",
75
+ color: "_text",
76
+ boxShadow: "_lg"
77
+ },
78
+ /**
79
+ * 箭头:一个小方块,只画右、下两条边,旋转后尖角朝向锚点;底色、边框跟随浮层(inherit)。
80
+ * 位置与旋转由 anchorFloating 写
81
+ */
82
+ arrow: {
83
+ position: "absolute",
84
+ boxSizing: "border-box",
85
+ width: "0.625em",
86
+ height: "0.625em",
87
+ backgroundColor: "inherit",
88
+ borderStyle: "solid",
89
+ borderColor: "inherit",
90
+ borderWidth: 0,
91
+ borderRightWidth: "inherit",
92
+ borderBottomWidth: "inherit",
93
+ borderBottomRightRadius: "_borderWidths.sm",
94
+ pointerEvents: "none"
95
+ },
96
+ /** 有箭头的浮层:原生 popover 默认 overflow: auto 会把伸出去的箭头裁掉 */
97
+ withArrow: { overflow: "visible" },
98
+ /**
99
+ * 内容会滚动的浮层(选项列表、菜单):打开时是竖向 flex、裁掉溢出,里面放 ScrollArea(scrollArea)撑满,
100
+ * 滚动条是浮层的;关闭时仍由浏览器隐藏(只在 :popover-open 时改 display)
101
+ */
102
+ scrollPanel: {
103
+ display: {
104
+ default: null,
105
+ ":popover-open": "flex"
106
+ },
107
+ flexDirection: "column",
108
+ overflow: "hidden",
109
+ padding: 0
110
+ },
111
+ /** scrollPanel 里的 ScrollArea:占满剩下的高度(最大高度由 anchorFloating 的 fitHeight 写在浮层上) */
112
+ scrollArea: {
113
+ flexGrow: 1,
114
+ minHeight: 0
115
+ }
116
+ });
117
+ /** 与视口边缘至少留出的距离(px) */
118
+ var VIEWPORT_PADDING = 8;
119
+ /** 把 floating 定位到 anchor 旁边并持续跟随;floating 需要已经显示(如 showPopover 之后) */
120
+ function anchorFloating(anchor, floating, { placement = "bottom-start", offset: distance = 6, matchWidth, fitHeight, arrow: arrow$1, crossAxisFallback } = {}) {
121
+ const arrowSize = arrow$1?.offsetWidth ?? 0;
122
+ const middleware = [
123
+ offset(distance + arrowSize * .7),
124
+ flip({
125
+ padding: VIEWPORT_PADDING,
126
+ fallbackAxisSideDirection: crossAxisFallback ? "end" : "none"
127
+ }),
128
+ shift({ padding: VIEWPORT_PADDING })
129
+ ];
130
+ if (arrow$1) middleware.push(arrow({
131
+ element: arrow$1,
132
+ padding: arrowSize
133
+ }));
134
+ if (matchWidth || fitHeight) middleware.push(size({
135
+ padding: VIEWPORT_PADDING,
136
+ apply({ rects, availableHeight, elements }) {
137
+ if (matchWidth) elements.floating.style.minWidth = `${rects.reference.width}px`;
138
+ if (fitHeight) elements.floating.style.maxHeight = `${Math.max(0, availableHeight)}px`;
139
+ }
140
+ }));
141
+ let stopped = false;
142
+ let resolveReady;
143
+ const ready = new Promise((resolve) => resolveReady = resolve);
144
+ floating.style.visibility = "hidden";
145
+ const update = () => void computePosition(anchor, floating, {
146
+ placement,
147
+ strategy: "fixed",
148
+ middleware
149
+ }).then(({ x, y, placement: final, middlewareData }) => {
150
+ if (stopped) return;
151
+ const [side, align = "center"] = final.split("-");
152
+ if (arrow$1 && middlewareData.arrow) {
153
+ const { x: arrowX, y: arrowY } = middlewareData.arrow;
154
+ Object.assign(arrow$1.style, {
155
+ left: arrowX != null ? `${arrowX}px` : "",
156
+ top: arrowY != null ? `${arrowY}px` : "",
157
+ right: "",
158
+ bottom: "",
159
+ [ARROW_EDGE[side]]: `${-arrowSize / 2}px`,
160
+ transform: `rotate(${ARROW_ROTATION[side]}deg)`
161
+ });
162
+ }
163
+ Object.assign(floating.style, {
164
+ left: `${x}px`,
165
+ top: `${y}px`,
166
+ visibility: "",
167
+ transformOrigin: TRANSFORM_ORIGIN[side]
168
+ });
169
+ floating.dataset.side = side;
170
+ floating.dataset.align = align;
171
+ resolveReady();
172
+ });
173
+ const cleanup = autoUpdate(anchor, floating, update);
174
+ return {
175
+ ready,
176
+ stop() {
177
+ if (stopped) return;
178
+ stopped = true;
179
+ cleanup();
180
+ }
181
+ };
182
+ }
183
+ /**
184
+ * 锚定浮层的生命周期(Popover、Menu、Tooltip 共用):显示 → 定位 → 关闭时停止定位、归还焦点。
185
+ * 原生 popover="auto" 被 Esc、点击外部关闭(light dismiss)时浏览器先隐藏了它,组件在 toggle 事件里调用 hide 收尾。
186
+ */
187
+ function createAnchoredLayer() {
188
+ let current;
189
+ let ready = Promise.resolve();
190
+ return {
191
+ get visible() {
192
+ return current != null;
193
+ },
194
+ show(anchor, panel, options) {
195
+ if (current) return ready;
196
+ if (!panel.matches(":popover-open")) panel.showPopover();
197
+ const anchored = anchorFloating(anchor, panel, options);
198
+ current = {
199
+ anchor,
200
+ panel,
201
+ anchored
202
+ };
203
+ ready = anchored.ready;
204
+ return ready;
205
+ },
206
+ hide({ restoreFocus = true } = {}) {
207
+ if (!current) return;
208
+ const { anchor, panel, anchored } = current;
209
+ current = void 0;
210
+ anchored.stop();
211
+ if (panel.matches(":popover-open")) panel.hidePopover();
212
+ const target = restoreFocus === true ? anchor : restoreFocus;
213
+ if (target instanceof HTMLElement) returnFocus(panel, target);
214
+ }
215
+ };
216
+ }
217
+ /**
218
+ * 原生 popover="auto" 的锚定浮层接到组件的 open 上(Popover、Menu、Select、Combobox 共用):
219
+ * open 变化时显示或隐藏(DOM 更新之后),浏览器的 light dismiss 写回 open,卸载时收起。
220
+ * 返回要放到浮层元素上的 onToggle。在组件 setup 里调用。
221
+ *
222
+ * const { onToggle } = useAnchoredPopover(
223
+ * () => ({ open, anchor, panel, floating: { placement } }),
224
+ * { close: (reason, event) => setOpen(false, reason, event), shown: focusFirst },
225
+ * );
226
+ */
227
+ function useAnchoredPopover(read, events) {
228
+ const layer = createAnchoredLayer();
229
+ trackEscape();
230
+ watchPostEffect(() => {
231
+ const { open, anchor, panel, floating, restoreFocus = true } = read();
232
+ if (!open) {
233
+ layer.hide({ restoreFocus });
234
+ return;
235
+ }
236
+ if (!anchor || !panel) return;
237
+ const opening = !layer.visible;
238
+ const ready = layer.show(anchor, panel, floating);
239
+ if (opening && events.shown) ready.then(() => events.shown(panel));
240
+ });
241
+ onScopeDispose(() => layer.hide({ restoreFocus: read().restoreFocus ?? true }));
242
+ return { onToggle(event) {
243
+ if (event.newState === "open") return;
244
+ const state = read();
245
+ if (state.open) events.close(closedByEscape(event) ? "escape" : "outside", event);
246
+ layer.hide({ restoreFocus: state.restoreFocus ?? true });
247
+ } };
248
+ }
249
+ var escapeAt = -Infinity;
250
+ var trackingEscape = false;
251
+ /** 开始记录 Esc(整页一个监听,第一个浮层组件 setup 时装上) */
252
+ function trackEscape() {
253
+ if (trackingEscape || typeof window === "undefined") return;
254
+ trackingEscape = true;
255
+ window.addEventListener("keydown", (key) => key.key === "Escape" && (escapeAt = key.timeStamp), { capture: true });
256
+ }
257
+ /** toggle 事件紧跟在 Esc 之后(浏览器在按键后排队派发)就是 Esc 关的 */
258
+ var closedByEscape = (event) => event.timeStamp - escapeAt < 250;
259
+ //#endregion
260
+ export { anchorFloating, anchoredPanelSx, createAnchoredLayer, floatingStyles, pointAnchor, useAnchoredPopover };
261
+
262
+ //# sourceMappingURL=floating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floating.js","names":["arrow","arrowMiddleware"],"sources":["../../../src/utils/dom/floating.ts"],"sourcesContent":["/**\n * 锚定浮层:Popover、Tooltip、Menu、Select 的弹出层贴着触发器显示。位置由 floating-ui 计算,\n * 显示、隐藏、Esc、点击外部仍交给原生 popover;createAnchoredLayer 把两者串成打开、关闭的流程。\n *\n * const anchored = anchorFloating(trigger, panel, { placement: 'bottom-start' });\n * await anchored.ready; // 第一次定位完成、已经可见:这时才能把焦点移进去\n * anchored.stop(); // 关闭时停止跟随\n * sx: [floatingStyles.anchored, …] // 浮层自己的样式:去掉原生 popover 默认的居中与外边距\n *\n * - 第一次算好位置之前浮层是 visibility: hidden,不会在默认位置闪一下;\n * - 空间不够时翻到另一侧(flip)、贴着视口边缘挪回来(shift),滚动、缩放、锚点变化时自动重新定位(autoUpdate);\n * - start / end 对齐是逻辑方向,从右到左排版下自动镜像(floating-ui 读浮层的 direction);\n * - 最终方向写到 data-side / data-align,缩放原点(transform-origin)朝向锚点,进出场的 scale 过渡从锚点那侧展开。\n */\nimport {\n arrow as arrowMiddleware,\n autoUpdate,\n computePosition,\n flip,\n offset,\n shift,\n size,\n type Middleware,\n type Placement,\n type VirtualElement,\n} from '@floating-ui/dom';\nimport * as css from '@zerodep-dev/vue-tsx-pro-tsx/styles';\nimport { onScopeDispose, watchPostEffect } from 'vue';\nimport type { SxStyles } from '@zerodep-dev/vue-tsx-pro-tsx/styles';\nimport { transitions } from '../style/transitions';\nimport { fontSizeStyles, type TextSize } from '../style/typography';\nimport { returnFocus } from './focus';\n\n/** 弹出位置:主方向 + 对齐方式(start 对齐锚点的起始边,end 对齐结束边);空间不够时自动翻转 */\nexport interface FloatingPlacements {\n /** 上方居中 */\n top: unknown;\n /** 上方,与锚点起始边对齐 */\n 'top-start': unknown;\n /** 上方,与锚点结束边对齐 */\n 'top-end': unknown;\n /** 下方居中 */\n bottom: unknown;\n /** 下方,与锚点起始边对齐 */\n 'bottom-start': unknown;\n /** 下方,与锚点结束边对齐 */\n 'bottom-end': unknown;\n /** 左侧居中 */\n left: unknown;\n /** 左侧,与锚点顶边对齐 */\n 'left-start': unknown;\n /** 左侧,与锚点底边对齐 */\n 'left-end': unknown;\n /** 右侧居中 */\n right: unknown;\n /** 右侧,与锚点顶边对齐 */\n 'right-start': unknown;\n /** 右侧,与锚点底边对齐 */\n 'right-end': unknown;\n}\n\n/** 弹出位置 */\nexport type FloatingPlacement = keyof FloatingPlacements & Placement;\n\n/**\n * 锚点:元素,或只有位置的虚拟锚点(右键菜单从指针的位置弹出:`pointAnchor(x, y)`)。\n * 虚拟锚点没有元素可以还焦点,关闭后焦点由组件自己安排\n */\nexport type FloatingAnchor = HTMLElement | VirtualElement;\n\n/** 视口里一个点(clientX / clientY)做锚点 */\nexport function pointAnchor(x: number, y: number): VirtualElement {\n return { getBoundingClientRect: () => new DOMRect(x, y, 0, 0) };\n}\n\n/** anchorFloating 的选项 */\nexport interface FloatingOptions {\n /** 弹出位置,默认 bottom-start */\n placement?: FloatingPlacement;\n /** 与锚点的距离(px),默认 6 */\n offset?: number;\n /** 至少与锚点一样宽:下拉框、组合框的选项列表 */\n matchWidth?: boolean;\n /** 最大高度限制在视口剩余空间内(浮层自己设 overflow 滚动):菜单、选项列表 */\n fitHeight?: boolean;\n /** 箭头元素(浮层里的子元素,样式用 floatingStyles.arrow):指向锚点,随翻转换边;距离自动加上箭头露出的一半 */\n arrow?: HTMLElement | null;\n /** 主方向与对侧都放不下时,再试垂直的两侧(窄屏上“右侧”的大卡片改到上下):引导卡片 */\n crossAxisFallback?: boolean;\n}\n\n/** anchorFloating 的返回值 */\nexport interface Anchored {\n /** 第一次定位完成、浮层已可见时完成;在这之前就 stop 时不会完成 */\n readonly ready: Promise<void>;\n /** 停止跟随锚点;关闭浮层时调用,重复调用无副作用 */\n stop(): void;\n}\n\ntype Side = 'top' | 'right' | 'bottom' | 'left';\n\n/** 缩放原点朝向锚点:弹出在下方时从上边缘展开 */\nconst TRANSFORM_ORIGIN: Record<Side, string> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n};\n\n/** 箭头贴着浮层的哪条边(与弹出方向相反) */\nconst ARROW_EDGE: Record<Side, Side> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n};\n/** 箭头(画了右、下两条边的方块)转多少度才朝向锚点 */\nconst ARROW_ROTATION: Record<Side, number> = { top: 45, right: 135, bottom: 225, left: -45 };\n\n/**\n * 弹出面板(选项列表、树、日期面板)共用的样式:锚定定位、浮起的表面、缩放进出场;\n * 面板渲染在顶层,不是输入框外壳的后代、不继承它的字号:按控件的 size 设置。ListPopover、TreeSelect、日期选择器用它\n */\nexport function anchoredPanelSx(size?: TextSize): SxStyles {\n return [\n floatingStyles.anchored,\n floatingStyles.surface,\n size && fontSizeStyles[size],\n transitions.scale,\n ] as SxStyles;\n}\n\n/** 锚定浮层的基础样式:定位与表面 */\nexport const floatingStyles = css.create({\n /** 原生 popover 默认居中显示、带外边距,改为由 anchorFloating 写入的 left / top 定位 */\n anchored: { position: 'fixed', inset: 'auto', margin: 0 },\n /** 浮起的表面:边框、圆角、阴影(Popover、Menu、选项列表);内边距各自定 */\n surface: {\n boxSizing: 'border-box',\n borderWidth: '_xs',\n borderStyle: 'solid',\n borderColor: '_border',\n borderRadius: '_lg',\n backgroundColor: '_surfaceRaised',\n color: '_text',\n boxShadow: '_lg',\n },\n /**\n * 箭头:一个小方块,只画右、下两条边,旋转后尖角朝向锚点;底色、边框跟随浮层(inherit)。\n * 位置与旋转由 anchorFloating 写\n */\n arrow: {\n position: 'absolute',\n boxSizing: 'border-box',\n width: '0.625em',\n height: '0.625em',\n backgroundColor: 'inherit',\n borderStyle: 'solid',\n borderColor: 'inherit',\n borderWidth: 0,\n borderRightWidth: 'inherit',\n borderBottomWidth: 'inherit',\n borderBottomRightRadius: '_borderWidths.sm',\n pointerEvents: 'none',\n },\n /** 有箭头的浮层:原生 popover 默认 overflow: auto 会把伸出去的箭头裁掉 */\n withArrow: { overflow: 'visible' },\n /**\n * 内容会滚动的浮层(选项列表、菜单):打开时是竖向 flex、裁掉溢出,里面放 ScrollArea(scrollArea)撑满,\n * 滚动条是浮层的;关闭时仍由浏览器隐藏(只在 :popover-open 时改 display)\n */\n scrollPanel: {\n display: { default: null, ':popover-open': 'flex' },\n flexDirection: 'column',\n overflow: 'hidden',\n // 去掉原生 popover 默认的 0.25em 内边距:滚动条贴着浮层边缘,内边距由里面的内容层给\n padding: 0,\n },\n /** scrollPanel 里的 ScrollArea:占满剩下的高度(最大高度由 anchorFloating 的 fitHeight 写在浮层上) */\n scrollArea: { flexGrow: 1, minHeight: 0 },\n});\n\n/** 与视口边缘至少留出的距离(px) */\nconst VIEWPORT_PADDING = 8;\n\n/** 把 floating 定位到 anchor 旁边并持续跟随;floating 需要已经显示(如 showPopover 之后) */\nexport function anchorFloating(\n anchor: FloatingAnchor,\n floating: HTMLElement,\n {\n placement = 'bottom-start',\n offset: distance = 6,\n matchWidth,\n fitHeight,\n arrow,\n crossAxisFallback,\n }: FloatingOptions = {},\n): Anchored {\n // 箭头伸出浮层一半(旋转后的对角线的一半约等于边长的 0.7):距离加上这一段,尖角才不压在锚点上\n const arrowSize = arrow?.offsetWidth ?? 0;\n const middleware: Middleware[] = [\n offset(distance + arrowSize * 0.7),\n flip({\n padding: VIEWPORT_PADDING,\n fallbackAxisSideDirection: crossAxisFallback ? 'end' : 'none',\n }),\n shift({ padding: VIEWPORT_PADDING }),\n ];\n // 箭头离浮层的圆角留出距离,不会画到圆角外面\n if (arrow) middleware.push(arrowMiddleware({ element: arrow, padding: arrowSize }));\n if (matchWidth || fitHeight) {\n middleware.push(\n size({\n padding: VIEWPORT_PADDING,\n apply({ rects, availableHeight, elements }) {\n if (matchWidth) elements.floating.style.minWidth = `${rects.reference.width}px`;\n if (fitHeight) elements.floating.style.maxHeight = `${Math.max(0, availableHeight)}px`;\n },\n }),\n );\n }\n\n let stopped = false;\n let resolveReady!: () => void;\n const ready = new Promise<void>((resolve) => (resolveReady = resolve));\n floating.style.visibility = 'hidden';\n\n const update = () =>\n void computePosition(anchor, floating, { placement, strategy: 'fixed', middleware }).then(\n ({ x, y, placement: final, middlewareData }) => {\n if (stopped) return;\n const [side, align = 'center'] = final.split('-') as [Side, string?];\n if (arrow && middlewareData.arrow) {\n const { x: arrowX, y: arrowY } = middlewareData.arrow;\n Object.assign(arrow.style, {\n left: arrowX != null ? `${arrowX}px` : '',\n top: arrowY != null ? `${arrowY}px` : '',\n right: '',\n bottom: '',\n [ARROW_EDGE[side]]: `${-arrowSize / 2}px`,\n transform: `rotate(${ARROW_ROTATION[side]}deg)`,\n });\n }\n Object.assign(floating.style, {\n left: `${x}px`,\n top: `${y}px`,\n visibility: '',\n transformOrigin: TRANSFORM_ORIGIN[side],\n });\n floating.dataset.side = side;\n floating.dataset.align = align;\n resolveReady();\n },\n );\n const cleanup = autoUpdate(anchor, floating, update);\n\n return {\n ready,\n stop() {\n if (stopped) return;\n stopped = true;\n cleanup();\n },\n };\n}\n\n/** 关闭浮层时焦点还给谁:true 锚点,元素,或 false 不还 */\nexport type RestoreFocus = boolean | HTMLElement | null;\n\n/** createAnchoredLayer 的返回值:一个原生 popover 浮层的打开与关闭 */\nexport interface AnchoredLayer {\n /** 是否显示着(show 之后、hide 之前) */\n readonly visible: boolean;\n /** 显示 panel(showPopover)并贴着 anchor 定位;返回第一次定位完成、可以移入焦点的 Promise。已显示时不重复 */\n show(anchor: FloatingAnchor, panel: HTMLElement, options?: FloatingOptions): Promise<void>;\n /**\n * 停止定位并隐藏;焦点还在浮层里或已丢失时归还:restoreFocus 默认 true 还给锚点,给元素时还给它,false 不还。\n * 未显示时什么也不做\n */\n hide(options?: { restoreFocus?: RestoreFocus }): void;\n}\n\n/**\n * 锚定浮层的生命周期(Popover、Menu、Tooltip 共用):显示 → 定位 → 关闭时停止定位、归还焦点。\n * 原生 popover=\"auto\" 被 Esc、点击外部关闭(light dismiss)时浏览器先隐藏了它,组件在 toggle 事件里调用 hide 收尾。\n */\nexport function createAnchoredLayer(): AnchoredLayer {\n let current: { anchor: FloatingAnchor; panel: HTMLElement; anchored: Anchored } | undefined;\n let ready: Promise<void> = Promise.resolve();\n return {\n get visible() {\n return current != null;\n },\n show(anchor, panel, options) {\n if (current) return ready;\n if (!panel.matches(':popover-open')) panel.showPopover();\n const anchored = anchorFloating(anchor, panel, options);\n current = { anchor, panel, anchored };\n ready = anchored.ready;\n return ready;\n },\n hide({ restoreFocus = true } = {}) {\n if (!current) return;\n const { anchor, panel, anchored } = current;\n current = undefined;\n anchored.stop();\n if (panel.matches(':popover-open')) panel.hidePopover();\n const target = restoreFocus === true ? anchor : restoreFocus;\n if (target instanceof HTMLElement) returnFocus(panel, target);\n },\n };\n}\n\n/** useAnchoredPopover 每次渲染后读取的状态 */\nexport interface AnchoredPopoverState {\n /** 是否打开 */\n open: boolean;\n /** 锚点(触发器、输入框外壳,或右键菜单的虚拟锚点) */\n anchor: FloatingAnchor | null;\n /** 浮层(popover 元素) */\n panel: HTMLElement | null;\n /** 定位选项 */\n floating?: FloatingOptions;\n /**\n * 关闭时焦点还给谁:默认 true 还给锚点;锚点是输入框外壳时给打开按钮(DatePicker);\n * 焦点一直在锚点上的组件(Select、Combobox)设 false\n */\n restoreFocus?: RestoreFocus;\n}\n\n/** useAnchoredPopover 的回调 */\nexport interface AnchoredPopoverEvents {\n /** 浏览器关掉了浮层:按了 Esc,或点了外面(别的浮层打开也算);组件把 open 写回 false */\n close: (reason: 'escape' | 'outside', event: Event) => void;\n /** 浮层打开并第一次定位完成(可见):移入焦点等 */\n shown?: (panel: HTMLElement) => void;\n}\n\n/**\n * 原生 popover=\"auto\" 的锚定浮层接到组件的 open 上(Popover、Menu、Select、Combobox 共用):\n * open 变化时显示或隐藏(DOM 更新之后),浏览器的 light dismiss 写回 open,卸载时收起。\n * 返回要放到浮层元素上的 onToggle。在组件 setup 里调用。\n *\n * const { onToggle } = useAnchoredPopover(\n * () => ({ open, anchor, panel, floating: { placement } }),\n * { close: (reason, event) => setOpen(false, reason, event), shown: focusFirst },\n * );\n */\nexport function useAnchoredPopover(\n read: () => AnchoredPopoverState,\n events: AnchoredPopoverEvents,\n): { onToggle: (event: Event) => void } {\n const layer = createAnchoredLayer();\n trackEscape();\n\n watchPostEffect(() => {\n const { open, anchor, panel, floating, restoreFocus = true } = read();\n if (!open) {\n layer.hide({ restoreFocus });\n return;\n }\n if (!anchor || !panel) return;\n // 已经显示着(只是定位选项变了)时不再触发 shown,焦点不会被拉回第一项\n const opening = !layer.visible;\n const ready = layer.show(anchor, panel, floating);\n if (opening && events.shown) void ready.then(() => events.shown!(panel));\n });\n onScopeDispose(() => layer.hide({ restoreFocus: read().restoreFocus ?? true }));\n\n return {\n onToggle(event) {\n if ((event as ToggleEvent).newState === 'open') return;\n const state = read();\n if (state.open) events.close(closedByEscape(event) ? 'escape' : 'outside', event);\n layer.hide({ restoreFocus: state.restoreFocus ?? true });\n },\n };\n}\n\n// 最近一次按 Esc 的时间:light dismiss 的 toggle 事件不说原因,按时间判断是不是 Esc 关的\nlet escapeAt = -Infinity;\nlet trackingEscape = false;\n\n/** 开始记录 Esc(整页一个监听,第一个浮层组件 setup 时装上) */\nfunction trackEscape() {\n if (trackingEscape || typeof window === 'undefined') return;\n trackingEscape = true;\n window.addEventListener('keydown', (key) => key.key === 'Escape' && (escapeAt = key.timeStamp), {\n capture: true,\n });\n}\n\n/** toggle 事件紧跟在 Esc 之后(浏览器在按键后排队派发)就是 Esc 关的 */\nconst closedByEscape = (event: Event) => event.timeStamp - escapeAt < 250;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAuEA,SAAgB,YAAY,GAAW,GAA2B;CAChE,OAAO,EAAE,6BAA6B,IAAI,QAAQ,GAAG,GAAG,GAAG,CAAC,EAAE;AAChE;;AA6BA,IAAM,mBAAyC;CAC7C,KAAK;CACL,OAAO;CACP,QAAQ;CACR,MAAM;AACR;;AAGA,IAAM,aAAiC;CACrC,KAAK;CACL,OAAO;CACP,QAAQ;CACR,MAAM;AACR;;AAEA,IAAM,iBAAuC;CAAE,KAAK;CAAI,OAAO;CAAK,QAAQ;CAAK,MAAM;AAAI;;;;;AAM3F,SAAgB,gBAAgB,MAA2B;CACzD,OAAO;EACL,eAAe;EACf,eAAe;EACf,QAAQ,eAAe;EACvB,YAAY;CAAK;AAErB;;AAGA,IAAa,iBAAiB,IAAI,OAAO;;CAEvC,UAAU;EAAE,UAAU;EAAS,OAAO;EAAQ,QAAQ;CAAE;;CAExD,SAAS;EACP,WAAW;EACX,aAAa;EACb,aAAa;EACb,aAAa;EACb,cAAc;EACd,iBAAiB;EACjB,OAAO;EACP,WAAW;CACb;;;;;CAKA,OAAO;EACL,UAAU;EACV,WAAW;EACX,OAAO;EACP,QAAQ;EACR,iBAAiB;EACjB,aAAa;EACb,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,mBAAmB;EACnB,yBAAyB;EACzB,eAAe;CACjB;;CAEA,WAAW,EAAE,UAAU,UAAU;;;;;CAKjC,aAAa;EACX,SAAS;GAAE,SAAS;GAAM,iBAAiB;EAAO;EAClD,eAAe;EACf,UAAU;EAEV,SAAS;CACX;;CAEA,YAAY;EAAE,UAAU;EAAG,WAAW;CAAE;AAC1C,CAAC;;AAGD,IAAM,mBAAmB;;AAGzB,SAAgB,eACd,QACA,UACA,EACE,YAAY,gBACZ,QAAQ,WAAW,GACnB,YACA,WACA,OAAA,SACA,sBACmB,CAAC,GACZ;CAEV,MAAM,YAAYA,SAAO,eAAe;CACxC,MAAM,aAA2B;EAC/B,OAAO,WAAW,YAAY,EAAG;EACjC,KAAK;GACH,SAAS;GACT,2BAA2B,oBAAoB,QAAQ;EACzD,CAAC;EACD,MAAM,EAAE,SAAS,iBAAiB,CAAC;CAAC;CAGtC,IAAIA,SAAO,WAAW,KAAKC,MAAgB;EAAE,SAASD;EAAO,SAAS;CAAU,CAAC,CAAC;CAClF,IAAI,cAAc,WAChB,WAAW,KACT,KAAK;EACH,SAAS;EACT,MAAM,EAAE,OAAO,iBAAiB,YAAY;GAC1C,IAAI,YAAY,SAAS,SAAS,MAAM,WAAW,GAAG,MAAM,UAAU,MAAK;GAC3E,IAAI,WAAW,SAAS,SAAS,MAAM,YAAY,GAAG,KAAK,IAAI,GAAG,eAAe,EAAC;EACpF;CACF,CAAC,CACH;CAGF,IAAI,UAAU;CACd,IAAI;CACJ,MAAM,QAAQ,IAAI,SAAe,YAAa,eAAe,OAAQ;CACrE,SAAS,MAAM,aAAa;CAE5B,MAAM,eACJ,KAAK,gBAAgB,QAAQ,UAAU;EAAE;EAAW,UAAU;EAAS;CAAW,CAAC,CAAC,CAAC,MAClF,EAAE,GAAG,GAAG,WAAW,OAAO,qBAAqB;EAC9C,IAAI,SAAS;EACb,MAAM,CAAC,MAAM,QAAQ,YAAY,MAAM,MAAM,GAAG;EAChD,IAAIA,WAAS,eAAe,OAAO;GACjC,MAAM,EAAE,GAAG,QAAQ,GAAG,WAAW,eAAe;GAChD,OAAO,OAAOA,QAAM,OAAO;IACzB,MAAM,UAAU,OAAO,GAAG,OAAM,MAAO;IACvC,KAAK,UAAU,OAAO,GAAG,OAAM,MAAO;IACtC,OAAO;IACP,QAAQ;KACP,WAAW,QAAQ,GAAG,CAAC,YAAY,EAAC;IACrC,WAAW,UAAU,eAAe,MAAK;GAC3C,CAAC;EACH;EACA,OAAO,OAAO,SAAS,OAAO;GAC5B,MAAM,GAAG,EAAC;GACV,KAAK,GAAG,EAAC;GACT,YAAY;GACZ,iBAAiB,iBAAiB;EACpC,CAAC;EACD,SAAS,QAAQ,OAAO;EACxB,SAAS,QAAQ,QAAQ;EACzB,aAAa;CACf,CACF;CACF,MAAM,UAAU,WAAW,QAAQ,UAAU,MAAM;CAEnD,OAAO;EACL;EACA,OAAO;GACL,IAAI,SAAS;GACb,UAAU;GACV,QAAQ;EACV;CACF;AACF;;;;;AAsBA,SAAgB,sBAAqC;CACnD,IAAI;CACJ,IAAI,QAAuB,QAAQ,QAAQ;CAC3C,OAAO;EACL,IAAI,UAAU;GACZ,OAAO,WAAW;EACpB;EACA,KAAK,QAAQ,OAAO,SAAS;GAC3B,IAAI,SAAS,OAAO;GACpB,IAAI,CAAC,MAAM,QAAQ,eAAe,GAAG,MAAM,YAAY;GACvD,MAAM,WAAW,eAAe,QAAQ,OAAO,OAAO;GACtD,UAAU;IAAE;IAAQ;IAAO;GAAS;GACpC,QAAQ,SAAS;GACjB,OAAO;EACT;EACA,KAAK,EAAE,eAAe,SAAS,CAAC,GAAG;GACjC,IAAI,CAAC,SAAS;GACd,MAAM,EAAE,QAAQ,OAAO,aAAa;GACpC,UAAU,KAAA;GACV,SAAS,KAAK;GACd,IAAI,MAAM,QAAQ,eAAe,GAAG,MAAM,YAAY;GACtD,MAAM,SAAS,iBAAiB,OAAO,SAAS;GAChD,IAAI,kBAAkB,aAAa,YAAY,OAAO,MAAM;EAC9D;CACF;AACF;;;;;;;;;;;AAqCA,SAAgB,mBACd,MACA,QACsC;CACtC,MAAM,QAAQ,oBAAoB;CAClC,YAAY;CAEZ,sBAAsB;EACpB,MAAM,EAAE,MAAM,QAAQ,OAAO,UAAU,eAAe,SAAS,KAAK;EACpE,IAAI,CAAC,MAAM;GACT,MAAM,KAAK,EAAE,aAAa,CAAC;GAC3B;EACF;EACA,IAAI,CAAC,UAAU,CAAC,OAAO;EAEvB,MAAM,UAAU,CAAC,MAAM;EACvB,MAAM,QAAQ,MAAM,KAAK,QAAQ,OAAO,QAAQ;EAChD,IAAI,WAAW,OAAO,OAAO,MAAW,WAAW,OAAO,MAAO,KAAK,CAAC;CACzE,CAAC;CACD,qBAAqB,MAAM,KAAK,EAAE,cAAc,KAAK,CAAC,CAAC,gBAAgB,KAAK,CAAC,CAAC;CAE9E,OAAO,EACL,SAAS,OAAO;EACd,IAAK,MAAsB,aAAa,QAAQ;EAChD,MAAM,QAAQ,KAAK;EACnB,IAAI,MAAM,MAAM,OAAO,MAAM,eAAe,KAAK,IAAI,WAAW,WAAW,KAAK;EAChF,MAAM,KAAK,EAAE,cAAc,MAAM,gBAAgB,KAAK,CAAC;CACzD,EACF;AACF;AAGA,IAAI,WAAW;AACf,IAAI,iBAAiB;;AAGrB,SAAS,cAAc;CACrB,IAAI,kBAAkB,OAAO,WAAW,aAAa;CACrD,iBAAiB;CACjB,OAAO,iBAAiB,YAAY,QAAQ,IAAI,QAAQ,aAAa,WAAW,IAAI,YAAY,EAC9F,SAAS,KACX,CAAC;AACH;;AAGA,IAAM,kBAAkB,UAAiB,MAAM,YAAY,WAAW"}
@@ -0,0 +1,28 @@
1
+ /** 把焦点移到容器里第一个可聚焦的元素(有 autofocus 的优先);没有时聚焦容器本身 */
2
+ export declare function focusFirst(container: HTMLElement): void;
3
+ /**
4
+ * 聚焦一个控件:它本身不能聚焦时(RadioGroup 的 radiogroup、一组分段输入的容器)聚焦里面第一个能聚焦的。
5
+ * 表单提交不通过时把焦点移到出错的控件上用它
6
+ */
7
+ export declare function focusControl(element: HTMLElement): void;
8
+ /** 打开弹层前的焦点来源,关闭时交给 returnFocus:当前焦点;焦点在 body 上时取最近一次按下的可聚焦元素 */
9
+ export declare function focusOrigin(): Element | null;
10
+ /**
11
+ * 关闭弹层后把焦点还给 target(触发器或打开前的元素)。焦点还在弹层里、或已经丢到 body 上时才还;
12
+ * 用户已经把焦点移到别处时不打扰。原生关闭后各浏览器不一致:Chromium 会还回去,
13
+ * WebKit 把焦点留在已隐藏的弹层里,所以统一由组件负责。
14
+ */
15
+ export declare function returnFocus(overlay: HTMLElement, target: Element | null): void;
16
+ /**
17
+ * 用户在 element 里点了移除或关闭(Tag 的移除、Alert 与 Toast 的关闭)时、调用回调之前调用:
18
+ * element 随后真的被移除、焦点随之掉到 body 上时,把焦点交给同组(父元素里)的下一个可聚焦元素,
19
+ * 没有就交给上一个,都没有时交给 fallback(同 React Aria TagGroup:移除后焦点落到相邻的项上)。
20
+ * 浏览器只保留 Tab 的起点,读屏用户却会被带回页面开头,所以由组件接住。
21
+ * 焦点已经移到别处、或 element 没被移除,都不打扰。
22
+ */
23
+ export declare function focusAfterRemoval(element: HTMLElement, fallback?: HTMLElement | null): void;
24
+ /**
25
+ * 模态里的焦点循环:在最后一个元素上按 Tab 回到第一个,在第一个上按 Shift+Tab 到最后一个。
26
+ * 原生模态 dialog 不做这一步(焦点会离开页面)。返回撤销函数。
27
+ */
28
+ export declare function trapFocus(container: HTMLElement): () => void;
@@ -0,0 +1,105 @@
1
+ import { tabbable } from "tabbable";
2
+ //#region src/utils/dom/focus.ts
3
+ /**
4
+ * 焦点工具:弹层的焦点进出(focusFirst、focusOrigin、returnFocus、trapFocus)与元素被移除后焦点的去向
5
+ * (focusAfterRemoval)。浏览器在这些地方不做或各家不一致,组件统一用这里的实现。
6
+ * 漫游焦点(一组项里方向键移动)见 roving-focus.ts。
7
+ */
8
+ /** 把焦点移到容器里第一个可聚焦的元素(有 autofocus 的优先);没有时聚焦容器本身 */
9
+ function focusFirst(container) {
10
+ (container.querySelector("[autofocus]") ?? tabbable(container)[0] ?? container).focus();
11
+ }
12
+ /**
13
+ * 聚焦一个控件:它本身不能聚焦时(RadioGroup 的 radiogroup、一组分段输入的容器)聚焦里面第一个能聚焦的。
14
+ * 表单提交不通过时把焦点移到出错的控件上用它
15
+ */
16
+ function focusControl(element) {
17
+ (element.matches(FOCUSABLE) ? element : tabbable(element)[0])?.focus();
18
+ }
19
+ var FOCUSABLE = "button, a[href], input, select, textarea, summary, [tabindex]";
20
+ /** Safari 点击按钮不会聚焦它:记下最近一次按下的可聚焦元素,作为焦点来源的备选 */
21
+ var lastPressed = null;
22
+ if (typeof document !== "undefined") document.addEventListener("pointerdown", (event) => lastPressed = event.target.closest?.(FOCUSABLE) ?? null, true);
23
+ /** 打开弹层前的焦点来源,关闭时交给 returnFocus:当前焦点;焦点在 body 上时取最近一次按下的可聚焦元素 */
24
+ function focusOrigin() {
25
+ const active = document.activeElement;
26
+ return active && active !== document.body ? active : lastPressed;
27
+ }
28
+ /**
29
+ * 关闭弹层后把焦点还给 target(触发器或打开前的元素)。焦点还在弹层里、或已经丢到 body 上时才还;
30
+ * 用户已经把焦点移到别处时不打扰。原生关闭后各浏览器不一致:Chromium 会还回去,
31
+ * WebKit 把焦点留在已隐藏的弹层里,所以统一由组件负责。
32
+ */
33
+ function returnFocus(overlay, target) {
34
+ const active = document.activeElement;
35
+ if ((!active || active === document.body || overlay.contains(active)) && target instanceof HTMLElement && target.isConnected) target.focus();
36
+ }
37
+ /**
38
+ * 用户在 element 里点了移除或关闭(Tag 的移除、Alert 与 Toast 的关闭)时、调用回调之前调用:
39
+ * element 随后真的被移除、焦点随之掉到 body 上时,把焦点交给同组(父元素里)的下一个可聚焦元素,
40
+ * 没有就交给上一个,都没有时交给 fallback(同 React Aria TagGroup:移除后焦点落到相邻的项上)。
41
+ * 浏览器只保留 Tab 的起点,读屏用户却会被带回页面开头,所以由组件接住。
42
+ * 焦点已经移到别处、或 element 没被移除,都不打扰。
43
+ */
44
+ function focusAfterRemoval(element, fallback) {
45
+ const group = element.parentElement;
46
+ if (!group || !element.contains(document.activeElement)) return;
47
+ const others = tabbable(group).filter((item) => !element.contains(item));
48
+ const following = others.filter((item) => element.compareDocumentPosition(item) & Node.DOCUMENT_POSITION_FOLLOWING);
49
+ const preceding = others.filter((item) => !following.includes(item)).reverse();
50
+ const candidates = fallback ? [
51
+ ...following,
52
+ ...preceding,
53
+ fallback
54
+ ] : [...following, ...preceding];
55
+ const stop = () => {
56
+ observer.disconnect();
57
+ element.removeEventListener("focusout", onFocusOut);
58
+ };
59
+ const onFocusOut = (event) => {
60
+ const next = event.relatedTarget;
61
+ if (next instanceof Node && !element.contains(next)) stop();
62
+ };
63
+ const observer = new MutationObserver(() => {
64
+ if (element.isConnected) return;
65
+ stop();
66
+ const active = document.activeElement;
67
+ if (active && active !== document.body) return;
68
+ candidates.find((item) => item.isConnected)?.focus();
69
+ });
70
+ observer.observe(document.body, {
71
+ childList: true,
72
+ subtree: true
73
+ });
74
+ element.addEventListener("focusout", onFocusOut);
75
+ }
76
+ /**
77
+ * 模态里的焦点循环:在最后一个元素上按 Tab 回到第一个,在第一个上按 Shift+Tab 到最后一个。
78
+ * 原生模态 dialog 不做这一步(焦点会离开页面)。返回撤销函数。
79
+ */
80
+ function trapFocus(container) {
81
+ const onKeydown = (event) => {
82
+ if (event.key !== "Tab") return;
83
+ const items = tabbable(container);
84
+ if (!items.length) {
85
+ event.preventDefault();
86
+ return;
87
+ }
88
+ const first = items[0];
89
+ const last = items.at(-1);
90
+ const active = document.activeElement;
91
+ if (event.shiftKey && (active === first || active === container)) {
92
+ event.preventDefault();
93
+ last.focus();
94
+ } else if (!event.shiftKey && active === last) {
95
+ event.preventDefault();
96
+ first.focus();
97
+ }
98
+ };
99
+ container.addEventListener("keydown", onKeydown);
100
+ return () => container.removeEventListener("keydown", onKeydown);
101
+ }
102
+ //#endregion
103
+ export { focusAfterRemoval, focusControl, focusFirst, focusOrigin, returnFocus, trapFocus };
104
+
105
+ //# sourceMappingURL=focus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus.js","names":[],"sources":["../../../src/utils/dom/focus.ts"],"sourcesContent":["/**\n * 焦点工具:弹层的焦点进出(focusFirst、focusOrigin、returnFocus、trapFocus)与元素被移除后焦点的去向\n * (focusAfterRemoval)。浏览器在这些地方不做或各家不一致,组件统一用这里的实现。\n * 漫游焦点(一组项里方向键移动)见 roving-focus.ts。\n */\nimport { tabbable } from 'tabbable';\n\n/** 把焦点移到容器里第一个可聚焦的元素(有 autofocus 的优先);没有时聚焦容器本身 */\nexport function focusFirst(container: HTMLElement): void {\n const target =\n container.querySelector<HTMLElement>('[autofocus]') ?? tabbable(container)[0] ?? container;\n target.focus();\n}\n\n/**\n * 聚焦一个控件:它本身不能聚焦时(RadioGroup 的 radiogroup、一组分段输入的容器)聚焦里面第一个能聚焦的。\n * 表单提交不通过时把焦点移到出错的控件上用它\n */\nexport function focusControl(element: HTMLElement): void {\n // 先看能不能聚焦,而不是聚焦后再看 activeElement:有的环境(happy-dom)让任何元素都能拿到焦点\n const target = element.matches(FOCUSABLE) ? element : tabbable(element)[0];\n target?.focus();\n}\n\nconst FOCUSABLE = 'button, a[href], input, select, textarea, summary, [tabindex]';\n\n/** Safari 点击按钮不会聚焦它:记下最近一次按下的可聚焦元素,作为焦点来源的备选 */\nlet lastPressed: Element | null = null;\nif (typeof document !== 'undefined') {\n document.addEventListener(\n 'pointerdown',\n (event) => (lastPressed = (event.target as Element).closest?.(FOCUSABLE) ?? null),\n true,\n );\n}\n\n/** 打开弹层前的焦点来源,关闭时交给 returnFocus:当前焦点;焦点在 body 上时取最近一次按下的可聚焦元素 */\nexport function focusOrigin(): Element | null {\n const active = document.activeElement;\n return active && active !== document.body ? active : lastPressed;\n}\n\n/**\n * 关闭弹层后把焦点还给 target(触发器或打开前的元素)。焦点还在弹层里、或已经丢到 body 上时才还;\n * 用户已经把焦点移到别处时不打扰。原生关闭后各浏览器不一致:Chromium 会还回去,\n * WebKit 把焦点留在已隐藏的弹层里,所以统一由组件负责。\n */\nexport function returnFocus(overlay: HTMLElement, target: Element | null): void {\n const active = document.activeElement;\n const lost = !active || active === document.body || overlay.contains(active);\n if (lost && target instanceof HTMLElement && target.isConnected) target.focus();\n}\n\n/**\n * 用户在 element 里点了移除或关闭(Tag 的移除、Alert 与 Toast 的关闭)时、调用回调之前调用:\n * element 随后真的被移除、焦点随之掉到 body 上时,把焦点交给同组(父元素里)的下一个可聚焦元素,\n * 没有就交给上一个,都没有时交给 fallback(同 React Aria TagGroup:移除后焦点落到相邻的项上)。\n * 浏览器只保留 Tab 的起点,读屏用户却会被带回页面开头,所以由组件接住。\n * 焦点已经移到别处、或 element 没被移除,都不打扰。\n */\nexport function focusAfterRemoval(element: HTMLElement, fallback?: HTMLElement | null): void {\n const group = element.parentElement;\n if (!group || !element.contains(document.activeElement)) return;\n const others = tabbable(group).filter((item) => !element.contains(item));\n const following = others.filter(\n (item) => element.compareDocumentPosition(item) & Node.DOCUMENT_POSITION_FOLLOWING,\n );\n const preceding = others.filter((item) => !following.includes(item)).reverse();\n const candidates = fallback\n ? [...following, ...preceding, fallback]\n : [...following, ...preceding];\n\n const stop = () => {\n observer.disconnect();\n element.removeEventListener('focusout', onFocusOut);\n };\n // 焦点被用户移到 element 外面:不再接管\n const onFocusOut = (event: FocusEvent) => {\n const next = event.relatedTarget;\n if (next instanceof Node && !element.contains(next)) stop();\n };\n // 移除发生在 Vue 更新 DOM 时;MutationObserver 的回调在这之后的微任务里运行\n const observer = new MutationObserver(() => {\n if (element.isConnected) return;\n stop();\n const active = document.activeElement;\n if (active && active !== document.body) return;\n candidates.find((item) => item.isConnected)?.focus();\n });\n observer.observe(document.body, { childList: true, subtree: true });\n element.addEventListener('focusout', onFocusOut);\n}\n\n/**\n * 模态里的焦点循环:在最后一个元素上按 Tab 回到第一个,在第一个上按 Shift+Tab 到最后一个。\n * 原生模态 dialog 不做这一步(焦点会离开页面)。返回撤销函数。\n */\nexport function trapFocus(container: HTMLElement): () => void {\n const onKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Tab') return;\n const items = tabbable(container);\n if (!items.length) {\n event.preventDefault();\n return;\n }\n const first = items[0]!;\n const last = items.at(-1)!;\n const active = document.activeElement;\n if (event.shiftKey && (active === first || active === container)) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first.focus();\n }\n };\n container.addEventListener('keydown', onKeydown);\n return () => container.removeEventListener('keydown', onKeydown);\n}\n"],"mappings":";;;;;;;;AAQA,SAAgB,WAAW,WAA8B;CAGvD,CADE,UAAU,cAA2B,aAAa,KAAK,SAAS,SAAS,CAAC,CAAC,MAAM,UAAA,CAC5E,MAAM;AACf;;;;;AAMA,SAAgB,aAAa,SAA4B;CAGvD,CADe,QAAQ,QAAQ,SAAS,IAAI,UAAU,SAAS,OAAO,CAAC,CAAC,GAAA,EAChE,MAAM;AAChB;AAEA,IAAM,YAAY;;AAGlB,IAAI,cAA8B;AAClC,IAAI,OAAO,aAAa,aACtB,SAAS,iBACP,gBACC,UAAW,cAAe,MAAM,OAAmB,UAAU,SAAS,KAAK,MAC5E,IACF;;AAIF,SAAgB,cAA8B;CAC5C,MAAM,SAAS,SAAS;CACxB,OAAO,UAAU,WAAW,SAAS,OAAO,SAAS;AACvD;;;;;;AAOA,SAAgB,YAAY,SAAsB,QAA8B;CAC9E,MAAM,SAAS,SAAS;CAExB,KADa,CAAC,UAAU,WAAW,SAAS,QAAQ,QAAQ,SAAS,MAAM,MAC/D,kBAAkB,eAAe,OAAO,aAAa,OAAO,MAAM;AAChF;;;;;;;;AASA,SAAgB,kBAAkB,SAAsB,UAAqC;CAC3F,MAAM,QAAQ,QAAQ;CACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,SAAS,SAAS,aAAa,GAAG;CACzD,MAAM,SAAS,SAAS,KAAK,CAAC,CAAC,QAAQ,SAAS,CAAC,QAAQ,SAAS,IAAI,CAAC;CACvE,MAAM,YAAY,OAAO,QACtB,SAAS,QAAQ,wBAAwB,IAAI,IAAI,KAAK,2BACzD;CACA,MAAM,YAAY,OAAO,QAAQ,SAAS,CAAC,UAAU,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ;CAC7E,MAAM,aAAa,WACf;EAAC,GAAG;EAAW,GAAG;EAAW;CAAQ,IACrC,CAAC,GAAG,WAAW,GAAG,SAAS;CAE/B,MAAM,aAAa;EACjB,SAAS,WAAW;EACpB,QAAQ,oBAAoB,YAAY,UAAU;CACpD;CAEA,MAAM,cAAc,UAAsB;EACxC,MAAM,OAAO,MAAM;EACnB,IAAI,gBAAgB,QAAQ,CAAC,QAAQ,SAAS,IAAI,GAAG,KAAK;CAC5D;CAEA,MAAM,WAAW,IAAI,uBAAuB;EAC1C,IAAI,QAAQ,aAAa;EACzB,KAAK;EACL,MAAM,SAAS,SAAS;EACxB,IAAI,UAAU,WAAW,SAAS,MAAM;EACxC,WAAW,MAAM,SAAS,KAAK,WAAW,CAAC,EAAE,MAAM;CACrD,CAAC;CACD,SAAS,QAAQ,SAAS,MAAM;EAAE,WAAW;EAAM,SAAS;CAAK,CAAC;CAClE,QAAQ,iBAAiB,YAAY,UAAU;AACjD;;;;;AAMA,SAAgB,UAAU,WAAoC;CAC5D,MAAM,aAAa,UAAyB;EAC1C,IAAI,MAAM,QAAQ,OAAO;EACzB,MAAM,QAAQ,SAAS,SAAS;EAChC,IAAI,CAAC,MAAM,QAAQ;GACjB,MAAM,eAAe;GACrB;EACF;EACA,MAAM,QAAQ,MAAM;EACpB,MAAM,OAAO,MAAM,GAAG,EAAE;EACxB,MAAM,SAAS,SAAS;EACxB,IAAI,MAAM,aAAa,WAAW,SAAS,WAAW,YAAY;GAChE,MAAM,eAAe;GACrB,KAAK,MAAM;EACb,OAAO,IAAI,CAAC,MAAM,YAAY,WAAW,MAAM;GAC7C,MAAM,eAAe;GACrB,MAAM,MAAM;EACd;CACF;CACA,UAAU,iBAAiB,WAAW,SAAS;CAC/C,aAAa,UAAU,oBAAoB,WAAW,SAAS;AACjE"}
@@ -0,0 +1,11 @@
1
+ /** useFullscreen 的返回值 */
2
+ export interface Fullscreen {
3
+ /** 这个元素正在全屏 */
4
+ readonly active: boolean;
5
+ /** 浏览器支持全屏 */
6
+ readonly supported: boolean;
7
+ /** 进入或退出全屏 */
8
+ toggle(): Promise<void>;
9
+ }
10
+ /** 元素的全屏状态与切换 */
11
+ export declare function useFullscreen(target: () => HTMLElement | null | undefined): Fullscreen;