@xihan-ui/vue 1.0.0-alpha.3 → 1.0.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 (458) hide show
  1. package/CHANGELOG.md +2057 -0
  2. package/dist/backgrounds.d.ts.map +1 -1
  3. package/dist/backgrounds.js +1 -5
  4. package/dist/backgrounds.js.map +1 -1
  5. package/dist/behavior.d.ts +38 -0
  6. package/dist/behavior.d.ts.map +1 -0
  7. package/dist/behavior.js +74 -0
  8. package/dist/behavior.js.map +1 -0
  9. package/dist/components/accordion/accordion.d.ts +1 -1
  10. package/dist/components/accordion/context.js +2 -2
  11. package/dist/components/accordion/context.js.map +1 -1
  12. package/dist/components/affix/context.js +1 -1
  13. package/dist/components/affix/context.js.map +1 -1
  14. package/dist/components/alert/context.js +1 -1
  15. package/dist/components/alert/context.js.map +1 -1
  16. package/dist/components/anchor/anchor.d.ts +2 -2
  17. package/dist/components/anchor/context.js +1 -1
  18. package/dist/components/anchor/context.js.map +1 -1
  19. package/dist/components/avatar/context.js +1 -1
  20. package/dist/components/avatar/context.js.map +1 -1
  21. package/dist/components/avatar-group/context.js +1 -1
  22. package/dist/components/avatar-group/context.js.map +1 -1
  23. package/dist/components/back-top/back-top.d.ts +2 -2
  24. package/dist/components/back-top/context.js +1 -1
  25. package/dist/components/back-top/context.js.map +1 -1
  26. package/dist/components/badge/badge.d.ts +142 -50
  27. package/dist/components/badge/badge.d.ts.map +1 -1
  28. package/dist/components/badge/badge.js +67 -37
  29. package/dist/components/badge/badge.js.map +1 -1
  30. package/dist/components/badge/context.js +15 -0
  31. package/dist/components/badge/context.js.map +1 -0
  32. package/dist/components/breadcrumb/breadcrumb.d.ts +1 -1
  33. package/dist/components/breadcrumb/context.js +1 -1
  34. package/dist/components/breadcrumb/context.js.map +1 -1
  35. package/dist/components/button-group/button-group.d.ts +1 -1
  36. package/dist/components/calendar/context.js +2 -2
  37. package/dist/components/calendar/context.js.map +1 -1
  38. package/dist/components/card/card.d.ts +1 -1
  39. package/dist/components/card/context.js +1 -1
  40. package/dist/components/card/context.js.map +1 -1
  41. package/dist/components/carousel/context.js +1 -1
  42. package/dist/components/carousel/context.js.map +1 -1
  43. package/dist/components/cascader/cascader.d.ts +4 -4
  44. package/dist/components/cascader/cascader.d.ts.map +1 -1
  45. package/dist/components/cascader/cascader.js +14 -4
  46. package/dist/components/cascader/cascader.js.map +1 -1
  47. package/dist/components/cascader/context.js +2 -2
  48. package/dist/components/cascader/context.js.map +1 -1
  49. package/dist/components/cascader/use-cascader.js +1 -1
  50. package/dist/components/cascader/use-cascader.js.map +1 -1
  51. package/dist/components/checkbox-group/context.js +2 -2
  52. package/dist/components/checkbox-group/context.js.map +1 -1
  53. package/dist/components/clipboard/context.js +1 -1
  54. package/dist/components/clipboard/context.js.map +1 -1
  55. package/dist/components/collapsible/context.js +1 -1
  56. package/dist/components/collapsible/context.js.map +1 -1
  57. package/dist/components/color-picker/color-picker.d.ts +12 -3
  58. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  59. package/dist/components/color-picker/color-picker.js +7 -1
  60. package/dist/components/color-picker/color-picker.js.map +1 -1
  61. package/dist/components/color-picker/context.js +2 -2
  62. package/dist/components/color-picker/context.js.map +1 -1
  63. package/dist/components/color-picker/use-color-picker.js +1 -1
  64. package/dist/components/color-picker/use-color-picker.js.map +1 -1
  65. package/dist/components/combobox/combobox.d.ts +3 -3
  66. package/dist/components/combobox/combobox.d.ts.map +1 -1
  67. package/dist/components/combobox/combobox.js +10 -4
  68. package/dist/components/combobox/combobox.js.map +1 -1
  69. package/dist/components/combobox/context.js +3 -3
  70. package/dist/components/combobox/context.js.map +1 -1
  71. package/dist/components/combobox/use-combobox.js +1 -1
  72. package/dist/components/combobox/use-combobox.js.map +1 -1
  73. package/dist/components/composer/context.js +1 -1
  74. package/dist/components/composer/context.js.map +1 -1
  75. package/dist/components/context-menu/context-menu.d.ts +4 -4
  76. package/dist/components/context-menu/context-menu.d.ts.map +1 -1
  77. package/dist/components/context-menu/context-menu.js +3 -1
  78. package/dist/components/context-menu/context-menu.js.map +1 -1
  79. package/dist/components/context-menu/context.js +5 -5
  80. package/dist/components/context-menu/context.js.map +1 -1
  81. package/dist/components/context-menu/use-context-menu.js +1 -1
  82. package/dist/components/context-menu/use-context-menu.js.map +1 -1
  83. package/dist/components/date-field/context.js +1 -1
  84. package/dist/components/date-field/context.js.map +1 -1
  85. package/dist/components/date-field/date-field.d.ts +2 -2
  86. package/dist/components/date-picker/context.js +13 -4
  87. package/dist/components/date-picker/context.js.map +1 -1
  88. package/dist/components/date-picker/date-picker.d.ts +80 -44
  89. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  90. package/dist/components/date-picker/date-picker.js +68 -26
  91. package/dist/components/date-picker/date-picker.js.map +1 -1
  92. package/dist/components/date-picker/use-date-picker.js +1 -1
  93. package/dist/components/date-picker/use-date-picker.js.map +1 -1
  94. package/dist/components/descriptions/context.js +1 -1
  95. package/dist/components/descriptions/context.js.map +1 -1
  96. package/dist/components/dialog/context.js +1 -1
  97. package/dist/components/dialog/context.js.map +1 -1
  98. package/dist/components/dialog/dialog.d.ts +1 -1
  99. package/dist/components/drawer/context.js +1 -1
  100. package/dist/components/drawer/context.js.map +1 -1
  101. package/dist/components/drawer/drawer.d.ts +2 -2
  102. package/dist/components/dynamic-input/context.js +2 -2
  103. package/dist/components/dynamic-input/context.js.map +1 -1
  104. package/dist/components/editable/context.js +1 -1
  105. package/dist/components/editable/context.js.map +1 -1
  106. package/dist/components/empty-state/context.js +1 -1
  107. package/dist/components/empty-state/context.js.map +1 -1
  108. package/dist/components/field/context.d.ts +9 -0
  109. package/dist/components/field/context.d.ts.map +1 -0
  110. package/dist/components/field/context.js +6 -2
  111. package/dist/components/field/context.js.map +1 -1
  112. package/dist/components/field/field.d.ts +26 -2
  113. package/dist/components/field/field.d.ts.map +1 -1
  114. package/dist/components/field/field.js +15 -4
  115. package/dist/components/field/field.js.map +1 -1
  116. package/dist/components/field/use-field-control.d.ts +41 -0
  117. package/dist/components/field/use-field-control.d.ts.map +1 -0
  118. package/dist/components/field/use-field-control.js +77 -0
  119. package/dist/components/field/use-field-control.js.map +1 -0
  120. package/dist/components/fieldset/context.js +1 -1
  121. package/dist/components/fieldset/context.js.map +1 -1
  122. package/dist/components/file-upload/context.js +2 -2
  123. package/dist/components/file-upload/context.js.map +1 -1
  124. package/dist/components/flex/flex.d.ts +9 -0
  125. package/dist/components/flex/flex.d.ts.map +1 -1
  126. package/dist/components/flex/flex.js +4 -0
  127. package/dist/components/flex/flex.js.map +1 -1
  128. package/dist/components/float-button/context.js +1 -1
  129. package/dist/components/float-button/context.js.map +1 -1
  130. package/dist/components/float-button/float-button.d.ts +2 -2
  131. package/dist/components/floating-panel/context.js +1 -1
  132. package/dist/components/floating-panel/context.js.map +1 -1
  133. package/dist/components/floating-panel/floating-panel.d.ts +1 -1
  134. package/dist/components/form/context.js +2 -2
  135. package/dist/components/form/context.js.map +1 -1
  136. package/dist/components/grid/context.js +1 -1
  137. package/dist/components/grid/context.js.map +1 -1
  138. package/dist/components/heatmap/context.js +3 -3
  139. package/dist/components/heatmap/context.js.map +1 -1
  140. package/dist/components/heatmap/heatmap.d.ts +1 -1
  141. package/dist/components/hotkeys/hotkeys.d.ts +3 -1
  142. package/dist/components/hotkeys/hotkeys.d.ts.map +1 -1
  143. package/dist/components/hotkeys/hotkeys.js +7 -25
  144. package/dist/components/hotkeys/hotkeys.js.map +1 -1
  145. package/dist/components/hotkeys/use-hotkeys.d.ts +31 -0
  146. package/dist/components/hotkeys/use-hotkeys.d.ts.map +1 -0
  147. package/dist/components/hotkeys/use-hotkeys.js +60 -0
  148. package/dist/components/hotkeys/use-hotkeys.js.map +1 -0
  149. package/dist/components/hover-card/context.js +1 -1
  150. package/dist/components/hover-card/context.js.map +1 -1
  151. package/dist/components/hover-card/hover-card.d.ts +2 -2
  152. package/dist/components/hover-card/hover-card.d.ts.map +1 -1
  153. package/dist/components/hover-card/hover-card.js +3 -1
  154. package/dist/components/hover-card/hover-card.js.map +1 -1
  155. package/dist/components/hover-card/use-hover-card.js +1 -1
  156. package/dist/components/hover-card/use-hover-card.js.map +1 -1
  157. package/dist/components/icon/icon.d.ts +1 -1
  158. package/dist/components/icon-wrapper/icon-wrapper.d.ts +1 -1
  159. package/dist/components/image/context.js +1 -1
  160. package/dist/components/image/context.js.map +1 -1
  161. package/dist/components/image-cropper/context.js +1 -1
  162. package/dist/components/image-cropper/context.js.map +1 -1
  163. package/dist/components/image-cropper/image-cropper.d.ts +1 -1
  164. package/dist/components/image-viewer/context.js +1 -1
  165. package/dist/components/image-viewer/context.js.map +1 -1
  166. package/dist/components/image-viewer/image-viewer.d.ts +2 -2
  167. package/dist/components/infinite-scroll/context.js +1 -1
  168. package/dist/components/infinite-scroll/context.js.map +1 -1
  169. package/dist/components/infinite-scroll/infinite-scroll.d.ts +1 -1
  170. package/dist/components/json-viewer/json-viewer.d.ts +12 -3
  171. package/dist/components/json-viewer/json-viewer.d.ts.map +1 -1
  172. package/dist/components/json-viewer/json-viewer.js +23 -2
  173. package/dist/components/json-viewer/json-viewer.js.map +1 -1
  174. package/dist/components/layout/context.js +1 -1
  175. package/dist/components/layout/context.js.map +1 -1
  176. package/dist/components/list/context.js +1 -1
  177. package/dist/components/list/context.js.map +1 -1
  178. package/dist/components/list/list.d.ts +1 -1
  179. package/dist/components/listbox/context.js +3 -3
  180. package/dist/components/listbox/context.js.map +1 -1
  181. package/dist/components/loading-bar/context.js +1 -1
  182. package/dist/components/loading-bar/context.js.map +1 -1
  183. package/dist/components/log/context.js +1 -1
  184. package/dist/components/log/context.js.map +1 -1
  185. package/dist/components/marquee/context.js +1 -1
  186. package/dist/components/marquee/context.js.map +1 -1
  187. package/dist/components/mention/context.js +2 -2
  188. package/dist/components/mention/context.js.map +1 -1
  189. package/dist/components/mention/mention.d.ts +2 -2
  190. package/dist/components/mention/mention.d.ts.map +1 -1
  191. package/dist/components/mention/mention.js +10 -4
  192. package/dist/components/mention/mention.js.map +1 -1
  193. package/dist/components/mention/use-mention.js +1 -1
  194. package/dist/components/mention/use-mention.js.map +1 -1
  195. package/dist/components/menu/context.js +4 -4
  196. package/dist/components/menu/context.js.map +1 -1
  197. package/dist/components/menu/menu.d.ts +3 -3
  198. package/dist/components/menu/menu.d.ts.map +1 -1
  199. package/dist/components/menu/menu.js +3 -1
  200. package/dist/components/menu/menu.js.map +1 -1
  201. package/dist/components/menu/use-menu.js +1 -1
  202. package/dist/components/menu/use-menu.js.map +1 -1
  203. package/dist/components/menubar/context.js +6 -6
  204. package/dist/components/menubar/context.js.map +1 -1
  205. package/dist/components/menubar/menubar.d.ts +2 -2
  206. package/dist/components/menubar/menubar.js.map +1 -1
  207. package/dist/components/navigation-menu/context.js +1 -1
  208. package/dist/components/navigation-menu/context.js.map +1 -1
  209. package/dist/components/navigation-menu/navigation-menu.d.ts +1 -1
  210. package/dist/components/notification/context.d.ts +23 -0
  211. package/dist/components/notification/context.d.ts.map +1 -0
  212. package/dist/components/notification/context.js +28 -0
  213. package/dist/components/notification/context.js.map +1 -0
  214. package/dist/components/notification/notification.d.ts +249 -0
  215. package/dist/components/notification/notification.d.ts.map +1 -0
  216. package/dist/components/notification/notification.js +179 -0
  217. package/dist/components/notification/notification.js.map +1 -0
  218. package/dist/components/notification/use-notification.d.ts +14 -0
  219. package/dist/components/notification/use-notification.d.ts.map +1 -0
  220. package/dist/components/notification/use-notification.js +42 -0
  221. package/dist/components/notification/use-notification.js.map +1 -0
  222. package/dist/components/number-animation/number-animation.d.ts +1 -1
  223. package/dist/components/number-field/context.js +1 -1
  224. package/dist/components/number-field/context.js.map +1 -1
  225. package/dist/components/number-field/number-field.d.ts +3 -3
  226. package/dist/components/number-field/number-field.d.ts.map +1 -1
  227. package/dist/components/number-field/number-field.js +7 -1
  228. package/dist/components/number-field/number-field.js.map +1 -1
  229. package/dist/components/page-header/context.js +1 -1
  230. package/dist/components/page-header/context.js.map +1 -1
  231. package/dist/components/pagination/context.js +1 -1
  232. package/dist/components/pagination/context.js.map +1 -1
  233. package/dist/components/pagination/pagination.d.ts +60 -6
  234. package/dist/components/pagination/pagination.d.ts.map +1 -1
  235. package/dist/components/pagination/pagination.js +85 -5
  236. package/dist/components/pagination/pagination.js.map +1 -1
  237. package/dist/components/pagination/use-pagination.d.ts +12 -2
  238. package/dist/components/pagination/use-pagination.d.ts.map +1 -1
  239. package/dist/components/pagination/use-pagination.js +50 -5
  240. package/dist/components/pagination/use-pagination.js.map +1 -1
  241. package/dist/components/password-input/context.js +1 -1
  242. package/dist/components/password-input/context.js.map +1 -1
  243. package/dist/components/password-input/password-input.d.ts +2 -2
  244. package/dist/components/password-input/password-input.d.ts.map +1 -1
  245. package/dist/components/password-input/password-input.js +7 -1
  246. package/dist/components/password-input/password-input.js.map +1 -1
  247. package/dist/components/pin-input/context.js +1 -1
  248. package/dist/components/pin-input/context.js.map +1 -1
  249. package/dist/components/pin-input/pin-input.d.ts +1 -1
  250. package/dist/components/popconfirm/context.js +1 -1
  251. package/dist/components/popconfirm/context.js.map +1 -1
  252. package/dist/components/popconfirm/popconfirm.d.ts +1 -1
  253. package/dist/components/popover/context.js +1 -1
  254. package/dist/components/popover/context.js.map +1 -1
  255. package/dist/components/popover/popover.d.ts +2 -2
  256. package/dist/components/popover/popover.d.ts.map +1 -1
  257. package/dist/components/popover/popover.js +3 -1
  258. package/dist/components/popover/popover.js.map +1 -1
  259. package/dist/components/popover/use-popover.js +1 -1
  260. package/dist/components/popover/use-popover.js.map +1 -1
  261. package/dist/components/popselect/context.js +2 -2
  262. package/dist/components/popselect/context.js.map +1 -1
  263. package/dist/components/popselect/popselect.d.ts +3 -3
  264. package/dist/components/popselect/popselect.d.ts.map +1 -1
  265. package/dist/components/popselect/popselect.js +3 -1
  266. package/dist/components/popselect/popselect.js.map +1 -1
  267. package/dist/components/popselect/use-popselect.js +1 -1
  268. package/dist/components/popselect/use-popselect.js.map +1 -1
  269. package/dist/components/progress/progress.d.ts +1 -1
  270. package/dist/components/qr-code/context.js +1 -1
  271. package/dist/components/qr-code/context.js.map +1 -1
  272. package/dist/components/radio-group/context.js +2 -2
  273. package/dist/components/radio-group/context.js.map +1 -1
  274. package/dist/components/radio-group/radio-group.d.ts +1 -1
  275. package/dist/components/rating/context.js +1 -1
  276. package/dist/components/rating/context.js.map +1 -1
  277. package/dist/components/rating/rating.d.ts +2 -2
  278. package/dist/components/result/context.js +1 -1
  279. package/dist/components/result/context.js.map +1 -1
  280. package/dist/components/scroll-area/context.js +2 -2
  281. package/dist/components/scroll-area/context.js.map +1 -1
  282. package/dist/components/scroll-area/scroll-area.d.ts +1 -1
  283. package/dist/components/scrollbar/context.js +1 -1
  284. package/dist/components/scrollbar/context.js.map +1 -1
  285. package/dist/components/scrollbar/scrollbar.d.ts +1 -1
  286. package/dist/components/segmented/context.js +2 -2
  287. package/dist/components/segmented/context.js.map +1 -1
  288. package/dist/components/segmented/segmented.d.ts +1 -1
  289. package/dist/components/select/context.js +3 -3
  290. package/dist/components/select/context.js.map +1 -1
  291. package/dist/components/select/select.d.ts +3 -3
  292. package/dist/components/select/select.d.ts.map +1 -1
  293. package/dist/components/select/select.js +7 -3
  294. package/dist/components/select/select.js.map +1 -1
  295. package/dist/components/side-nav/context.js +2 -2
  296. package/dist/components/side-nav/context.js.map +1 -1
  297. package/dist/components/side-nav/side-nav.d.ts +1 -1
  298. package/dist/components/signature-pad/context.js +1 -1
  299. package/dist/components/signature-pad/context.js.map +1 -1
  300. package/dist/components/skeleton/context.js +1 -1
  301. package/dist/components/skeleton/context.js.map +1 -1
  302. package/dist/components/slider/context.js +2 -2
  303. package/dist/components/slider/context.js.map +1 -1
  304. package/dist/components/slider/slider.d.ts +1 -1
  305. package/dist/components/space/context.js +1 -1
  306. package/dist/components/space/context.js.map +1 -1
  307. package/dist/components/space/space.d.ts +9 -0
  308. package/dist/components/space/space.d.ts.map +1 -1
  309. package/dist/components/space/space.js +4 -0
  310. package/dist/components/space/space.js.map +1 -1
  311. package/dist/components/spinner/context.js +1 -1
  312. package/dist/components/spinner/context.js.map +1 -1
  313. package/dist/components/spinner/spinner.d.ts +1 -1
  314. package/dist/components/splitter/context.js +1 -1
  315. package/dist/components/splitter/context.js.map +1 -1
  316. package/dist/components/statistic/context.js +1 -1
  317. package/dist/components/statistic/context.js.map +1 -1
  318. package/dist/components/statistic/statistic.d.ts +1 -1
  319. package/dist/components/steps/context.js +2 -2
  320. package/dist/components/steps/context.js.map +1 -1
  321. package/dist/components/steps/steps.d.ts +2 -2
  322. package/dist/components/table/context.js +4 -4
  323. package/dist/components/table/context.js.map +1 -1
  324. package/dist/components/table/table.d.ts +62 -3
  325. package/dist/components/table/table.d.ts.map +1 -1
  326. package/dist/components/table/table.js +37 -1
  327. package/dist/components/table/table.js.map +1 -1
  328. package/dist/components/table/use-table.d.ts +1 -1
  329. package/dist/components/table/use-table.d.ts.map +1 -1
  330. package/dist/components/table/use-table.js +3 -2
  331. package/dist/components/table/use-table.js.map +1 -1
  332. package/dist/components/tabs/context.js +1 -1
  333. package/dist/components/tabs/context.js.map +1 -1
  334. package/dist/components/tabs/tabs.d.ts +1 -1
  335. package/dist/components/tag/context.js +1 -1
  336. package/dist/components/tag/context.js.map +1 -1
  337. package/dist/components/tag/use-tag.js +14 -2
  338. package/dist/components/tag/use-tag.js.map +1 -1
  339. package/dist/components/tags-input/context.js +2 -2
  340. package/dist/components/tags-input/context.js.map +1 -1
  341. package/dist/components/tags-input/tags-input.d.ts +3 -3
  342. package/dist/components/tags-input/tags-input.d.ts.map +1 -1
  343. package/dist/components/tags-input/tags-input.js +7 -1
  344. package/dist/components/tags-input/tags-input.js.map +1 -1
  345. package/dist/components/text-field/context.js +1 -1
  346. package/dist/components/text-field/context.js.map +1 -1
  347. package/dist/components/text-field/text-field.d.ts +1 -1
  348. package/dist/components/text-field/text-field.d.ts.map +1 -1
  349. package/dist/components/text-field/text-field.js +7 -3
  350. package/dist/components/text-field/text-field.js.map +1 -1
  351. package/dist/components/thread/context.d.ts +7 -0
  352. package/dist/components/thread/context.d.ts.map +1 -0
  353. package/dist/components/thread/context.js +1 -1
  354. package/dist/components/thread/context.js.map +1 -1
  355. package/dist/components/time-field/context.js +1 -1
  356. package/dist/components/time-field/context.js.map +1 -1
  357. package/dist/components/time-field/time-field.d.ts +2 -2
  358. package/dist/components/time-picker/context.js +2 -2
  359. package/dist/components/time-picker/context.js.map +1 -1
  360. package/dist/components/time-picker/time-picker.d.ts +5 -5
  361. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  362. package/dist/components/time-picker/time-picker.js +10 -1
  363. package/dist/components/time-picker/time-picker.js.map +1 -1
  364. package/dist/components/time-picker/use-time-picker.d.ts +1 -0
  365. package/dist/components/time-picker/use-time-picker.d.ts.map +1 -1
  366. package/dist/components/time-picker/use-time-picker.js +3 -0
  367. package/dist/components/time-picker/use-time-picker.js.map +1 -1
  368. package/dist/components/timeline/context.js +2 -2
  369. package/dist/components/timeline/context.js.map +1 -1
  370. package/dist/components/timeline/timeline.d.ts +1 -1
  371. package/dist/components/timer/context.js +1 -1
  372. package/dist/components/timer/context.js.map +1 -1
  373. package/dist/components/toast/context.js +1 -1
  374. package/dist/components/toast/context.js.map +1 -1
  375. package/dist/components/toast/toast.d.ts +3 -15
  376. package/dist/components/toast/toast.d.ts.map +1 -1
  377. package/dist/components/toast/toast.js +1 -12
  378. package/dist/components/toast/toast.js.map +1 -1
  379. package/dist/components/toast/use-toast.d.ts.map +1 -1
  380. package/dist/components/toast/use-toast.js +1 -7
  381. package/dist/components/toast/use-toast.js.map +1 -1
  382. package/dist/components/toggle-group/context.js +1 -1
  383. package/dist/components/toggle-group/context.js.map +1 -1
  384. package/dist/components/toggle-group/toggle-group.d.ts +10 -1
  385. package/dist/components/toggle-group/toggle-group.d.ts.map +1 -1
  386. package/dist/components/toggle-group/toggle-group.js +4 -0
  387. package/dist/components/toggle-group/toggle-group.js.map +1 -1
  388. package/dist/components/toolbar/context.js +1 -1
  389. package/dist/components/toolbar/context.js.map +1 -1
  390. package/dist/components/toolbar/toolbar.d.ts +1 -1
  391. package/dist/components/tooltip/context.js +1 -1
  392. package/dist/components/tooltip/context.js.map +1 -1
  393. package/dist/components/tooltip/tooltip.d.ts +2 -2
  394. package/dist/components/tour/context.js +1 -1
  395. package/dist/components/tour/context.js.map +1 -1
  396. package/dist/components/tour/tour.d.ts +2 -2
  397. package/dist/components/transfer/context.js +3 -3
  398. package/dist/components/transfer/context.js.map +1 -1
  399. package/dist/components/tree/context.js +2 -2
  400. package/dist/components/tree/context.js.map +1 -1
  401. package/dist/components/tree/tree.d.ts +20 -0
  402. package/dist/components/tree/tree.d.ts.map +1 -1
  403. package/dist/components/tree/tree.js +9 -0
  404. package/dist/components/tree/tree.js.map +1 -1
  405. package/dist/components/tree-select/context.js +2 -2
  406. package/dist/components/tree-select/context.js.map +1 -1
  407. package/dist/components/tree-select/tree-select.d.ts +3 -3
  408. package/dist/components/tree-select/tree-select.d.ts.map +1 -1
  409. package/dist/components/tree-select/tree-select.js +14 -4
  410. package/dist/components/tree-select/tree-select.js.map +1 -1
  411. package/dist/components/tree-select/use-tree-select.js +1 -1
  412. package/dist/components/tree-select/use-tree-select.js.map +1 -1
  413. package/dist/components/typography/context.js +1 -1
  414. package/dist/components/typography/context.js.map +1 -1
  415. package/dist/components/virtualizer/context.js +1 -1
  416. package/dist/components/virtualizer/context.js.map +1 -1
  417. package/dist/components/watermark/context.js +1 -1
  418. package/dist/components/watermark/context.js.map +1 -1
  419. package/dist/config/config.js +1 -1
  420. package/dist/config/config.js.map +1 -1
  421. package/dist/index.d.ts +16 -9
  422. package/dist/index.js +15 -8
  423. package/dist/package.js +1 -1
  424. package/dist/runtime/use-scrollbars.js +66 -0
  425. package/dist/runtime/use-scrollbars.js.map +1 -0
  426. package/dist/services/dialog-service.d.ts +33 -8
  427. package/dist/services/dialog-service.d.ts.map +1 -1
  428. package/dist/services/dialog-service.js +44 -20
  429. package/dist/services/dialog-service.js.map +1 -1
  430. package/dist/services/glyph.js +41 -1
  431. package/dist/services/glyph.js.map +1 -1
  432. package/dist/services/loading-bar-service.d.ts +46 -0
  433. package/dist/services/loading-bar-service.d.ts.map +1 -0
  434. package/dist/services/loading-bar-service.js +70 -0
  435. package/dist/services/loading-bar-service.js.map +1 -0
  436. package/dist/services/mount-host.js +35 -0
  437. package/dist/services/mount-host.js.map +1 -0
  438. package/dist/services/notification-service.d.ts +46 -0
  439. package/dist/services/notification-service.d.ts.map +1 -0
  440. package/dist/services/notification-service.js +91 -0
  441. package/dist/services/notification-service.js.map +1 -0
  442. package/dist/services/service-config.js +16 -0
  443. package/dist/services/service-config.js.map +1 -0
  444. package/dist/services/toast-service.d.ts +20 -12
  445. package/dist/services/toast-service.d.ts.map +1 -1
  446. package/dist/services/toast-service.js +103 -50
  447. package/dist/services/toast-service.js.map +1 -1
  448. package/package.json +18 -14
  449. package/dist/components/toaster/context.js +0 -19
  450. package/dist/components/toaster/context.js.map +0 -1
  451. package/dist/components/toaster/toaster.d.ts +0 -135
  452. package/dist/components/toaster/toaster.d.ts.map +0 -1
  453. package/dist/components/toaster/toaster.js +0 -91
  454. package/dist/components/toaster/toaster.js.map +0 -1
  455. package/dist/components/toaster/use-toaster.d.ts +0 -15
  456. package/dist/components/toaster/use-toaster.d.ts.map +0 -1
  457. package/dist/components/toaster/use-toaster.js +0 -23
  458. package/dist/components/toaster/use-toaster.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"backgrounds.d.ts","names":[],"sources":["../src/backgrounds.ts"],"mappings":";;;UA4BiB;EACf,QAAQ;EACR,SAAS,eAAe;EACxB,UAAU;;EAEV;;EAEA;;EAEA;;EAEA;;UAGe;WACN,SAAS,WAAW;;;;;EAK7B,SAAS,SAAS;EAClB,YAAY,QAAQ;EACpB,YAAY,OAAO,eAAe;EAClC,WAAW,OAAO,YAAY,UAAU;EACxC;EACA;EACA;;;;;;;;;iBAUc,cAAc,SAAS,uBAAuB;;;;;cAwCjD,4BAAY,8BAAA;;IAGe,MAAA,SAAS;;;;IACnB,MAAA,SAAS,eAAe;;;;IACvB,MAAA,SAAS;;;;;IAEX,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAJE,MAAA,SAAS;;;;IACnB,MAAA,SAAS,eAAe;;;;IACvB,MAAA,SAAS;;;;;IAEX,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAoFpC;KAEU,2BAA2B,4BAA4B;;;;;;;;;;;cAoBtD,aAAa,UAAU,aAAa"}
1
+ {"version":3,"file":"backgrounds.d.ts","names":[],"sources":["../src/backgrounds.ts"],"mappings":";;;UA4BiB;EACf,QAAQ;EACR,SAAS,eAAe;EACxB,UAAU;;EAEV;;EAEA;;EAEA;;EAEA;;UAGe;WACN,SAAS,WAAW;;;;;EAK7B,SAAS,SAAS;EAClB,YAAY,QAAQ;EACpB,YAAY,OAAO,eAAe;EAClC,WAAW,OAAO,YAAY,UAAU;EACxC;EACA;EACA;;;;;;;;;iBAUc,cAAc,SAAS,uBAAuB;;;;;cAwCjD,4BAAY,8BAAA;;IAGe,MAAA,SAAS;;;;IACnB,MAAA,SAAS,eAAe;;;;IACvB,MAAA,SAAS;;;;;IAEX,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAJE,MAAA,SAAS;;;;IACnB,MAAA,SAAS,eAAe;;;;IACvB,MAAA,SAAS;;;;;IAEX,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAuFpC;KAEU,2BAA2B,4BAA4B;;;;;;;;;;;cAoBtD,aAAa,UAAU,aAAa"}
@@ -141,11 +141,7 @@ const XhBackground = defineComponent({
141
141
  expose(api);
142
142
  return () => {
143
143
  sync();
144
- return h(props.as, {
145
- "ref": mount,
146
- "data-scope": "background",
147
- "data-part": "root"
148
- }, slots.default?.());
144
+ return h(props.as, { ref: mount }, slots.default?.());
149
145
  };
150
146
  }
151
147
  });
@@ -1 +1 @@
1
- {"version":3,"file":"backgrounds.js","names":[],"sources":["../src/backgrounds.ts"],"sourcesContent":["// @xihan-ui/vue/backgrounds —— 视觉层的 Vue 适配。\n//\n// 与主入口分开:@xihan-ui/backgrounds 是可选 peer,不用视觉效果的应用不会因为装了本包\n// 而多出一个 WebGL 引擎。用之前先装 @xihan-ui/backgrounds。\n//\n// 三种用法,从轻到重:\n// v-background 给任意元素或组件的根元素铺一层背景,一个字都不用改组件\n// XhBackground 独立的视觉组件,插槽内容浮在效果之上\n// useBackground 自己拿画面实例,接自定义调度或调参面板\n\nimport type {\n BackgroundEffect,\n BackgroundQuality,\n BackgroundSurface,\n MorphOptions,\n ParamValue,\n PointCloud,\n} from '@xihan-ui/backgrounds'\nimport type { Directive, PropType, ShallowRef, VNodeRef } from 'vue'\nimport { createBackgroundSurface } from '@xihan-ui/backgrounds'\nimport {\n defineComponent,\n getCurrentScope,\n h,\n onScopeDispose,\n shallowRef,\n} from 'vue'\n\nexport interface UseBackgroundOptions {\n effect: BackgroundEffect | string\n params?: Record<string, ParamValue>\n quality?: BackgroundQuality\n /** 自动绑定指针事件,默认 true。 */\n pointer?: boolean\n /** 创建后立即播放,默认 true。 */\n autoplay?: boolean\n /** 系统开启减弱动态效果时冻结时间轴,默认 true。 */\n respectReducedMotion?: boolean\n /** 滚出视口时暂停绘制,默认 true。 */\n pauseOffscreen?: boolean\n}\n\nexport interface UseBackgroundReturn {\n readonly surface: ShallowRef<BackgroundSurface | null>\n /**\n * 挂载点。直接当模板 ref 用:`<div :ref=\"visual.attach\">`,\n * 渲染器会在元素进出 DOM 时把元素或 null 交进来。\n */\n attach: (element: Element | null) => void\n setEffect: (effect: BackgroundEffect | string) => void\n setParams: (patch: Record<string, ParamValue>) => void\n setCloud: (cloud: PointCloud, options?: MorphOptions) => void\n play: () => void\n pause: () => void\n destroy: () => void\n}\n\n/**\n * 建一张受 Vue 生命周期管理的视觉画面。\n *\n * 用**函数式 ref** 而不是监听一个模板 ref:元素由渲染器直接交到手上,\n * 不经过响应式与调度队列,因此不受 flush 时序影响,元素换了也一定收得到。\n * 组件卸载时自动销毁;在 setup 之外调用则需自己调 destroy。\n */\nexport function useBackground(options: UseBackgroundOptions): UseBackgroundReturn {\n const surface = shallowRef<BackgroundSurface | null>(null)\n // 元素没换就不动画面:函数式 ref 每次 patch 都会被再调一遍,\n // 不挡住的话每渲染一帧就销毁重建一次,画面永远停在创建时那份参数上\n let attached: HTMLElement | null = null\n\n function attach(element: Element | null): void {\n const el = element instanceof HTMLElement ? element : null\n if (el === attached)\n return\n attached = el\n surface.value?.destroy()\n surface.value = el === null ? null : createBackgroundSurface(el, options)\n }\n\n function destroy(): void {\n attached = null\n surface.value?.destroy()\n surface.value = null\n }\n\n if (getCurrentScope())\n onScopeDispose(destroy)\n\n return {\n surface,\n attach,\n setEffect: (effect): void => surface.value?.setEffect(effect),\n setParams: (patch): void => surface.value?.setParams(patch),\n setCloud: (cloud, morph): void => surface.value?.setCloud(cloud, morph),\n play: (): void => surface.value?.play(),\n pause: (): void => surface.value?.pause(),\n destroy,\n }\n}\n\n/**\n * `<XhBackground>` —— 独立视觉组件。默认插槽的内容浮在效果之上;\n * 画布铺满根元素且 pointer-events: none,不会挡住插槽里的交互。\n */\nexport const XhBackground = defineComponent({\n name: 'XhBackground',\n props: {\n effect: { type: [Object, String] as PropType<BackgroundEffect | string>, required: true },\n params: { type: Object as PropType<Record<string, ParamValue>>, default: undefined },\n quality: { type: String as PropType<BackgroundQuality>, default: undefined },\n /** 数据驱动点云。效果的粒子通道是 cloud 模式时才有意义。 */\n cloud: { type: Object as PropType<PointCloud | null>, default: null },\n /** 换点云时的形变时长(秒)。 */\n morphDuration: { type: Number, default: undefined },\n pointer: { type: Boolean, default: true },\n autoplay: { type: Boolean, default: true },\n respectReducedMotion: { type: Boolean, default: true },\n pauseOffscreen: { type: Boolean, default: true },\n /** 渲染成什么标签。 */\n as: { type: String, default: 'div' },\n },\n setup(props, { slots, expose }) {\n const api = useBackground({\n effect: props.effect,\n params: props.params,\n quality: props.quality,\n pointer: props.pointer,\n autoplay: props.autoplay,\n respectReducedMotion: props.respectReducedMotion,\n pauseOffscreen: props.pauseOffscreen,\n })\n\n let appliedEffect: BackgroundEffect | string | undefined\n let appliedQuality: BackgroundQuality | undefined\n let appliedCloud: PointCloud | null = null\n let appliedAutoplay = props.autoplay\n\n /**\n * 把当前 props 推到画面上。在渲染函数里调用而不是挂 watcher:\n * 渲染函数一定会随 props 变化重跑,且这里读到的参数值同时建立了依赖追踪,\n * 调用方原地改参数对象里的某一项也收得到。\n */\n function sync(): void {\n const surface = api.surface.value\n if (surface === null)\n return\n if (props.effect !== appliedEffect) {\n surface.setEffect(props.effect)\n appliedEffect = props.effect\n }\n if (props.quality !== undefined && props.quality !== appliedQuality) {\n surface.setQuality(props.quality)\n appliedQuality = props.quality\n }\n if (props.params !== undefined)\n surface.setParams(props.params)\n if (props.cloud && props.cloud !== appliedCloud) {\n // 第一份点云直接就位,之后的换形态才走过渡\n surface.setCloud(props.cloud, { duration: appliedCloud === null ? 0 : props.morphDuration })\n appliedCloud = props.cloud\n }\n if (props.autoplay !== appliedAutoplay) {\n if (props.autoplay)\n surface.play()\n else surface.pause()\n appliedAutoplay = props.autoplay\n }\n }\n\n // 签名照 VNodeRef 的函数式 ref 写:渲染器在元素进出 DOM 时把元素或 null 交进来。\n // 同一个元素会被反复交进来,attach 对此幂等;只有真换了画面才重置记账。\n const mount: VNodeRef = (element): void => {\n const previous = api.surface.value\n api.attach(element instanceof HTMLElement ? element : null)\n const current = api.surface.value\n if (current === previous || current === null)\n return\n appliedEffect = props.effect\n appliedQuality = props.quality\n appliedCloud = null\n appliedAutoplay = props.autoplay\n sync()\n }\n\n expose(api)\n\n return () => {\n sync()\n return h(\n props.as,\n { 'ref': mount, 'data-scope': 'background', 'data-part': 'root' },\n slots.default?.(),\n )\n }\n },\n})\n\nexport type BackgroundDirectiveValue = BackgroundEffect | string | UseBackgroundOptions\n\nfunction toOptions(value: BackgroundDirectiveValue): UseBackgroundOptions {\n if (typeof value === 'string')\n return { effect: value }\n return 'effect' in value ? value : { effect: value }\n}\n\nconst mounted = new WeakMap<HTMLElement, { surface: BackgroundSurface, effect: BackgroundEffect | string }>()\n\n/**\n * `v-background` —— 给任意元素铺一层视觉背景。\n *\n * 用在组件上时,Vue 会把指令落到该组件的单一根元素上,所以给现成组件加背景不需要改组件:\n *\n * ```vue\n * <XhButton v-background=\"fluidEffect\">提交</XhButton>\n * <div v-background=\"{ effect: 'aurora', params: { speed: 1.6 } }\" />\n * ```\n */\nexport const vBackground: Directive<HTMLElement, BackgroundDirectiveValue> = {\n mounted(el, binding) {\n const options = toOptions(binding.value)\n mounted.set(el, { surface: createBackgroundSurface(el, options), effect: options.effect })\n },\n updated(el, binding) {\n const entry = mounted.get(el)\n if (entry === undefined)\n return\n const options = toOptions(binding.value)\n if (options.effect !== entry.effect) {\n entry.surface.setEffect(options.effect)\n entry.effect = options.effect\n }\n if (options.params !== undefined)\n entry.surface.setParams(options.params)\n },\n unmounted(el) {\n mounted.get(el)?.surface.destroy()\n mounted.delete(el)\n },\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"backgrounds.js","names":[],"sources":["../src/backgrounds.ts"],"sourcesContent":["// @xihan-ui/vue/backgrounds —— 视觉层的 Vue 适配。\n//\n// 与主入口分开:@xihan-ui/backgrounds 是可选 peer,不用视觉效果的应用不会因为装了本包\n// 而多出一个 WebGL 引擎。用之前先装 @xihan-ui/backgrounds。\n//\n// 三种用法,从轻到重:\n// v-background 给任意元素或组件的根元素铺一层背景,一个字都不用改组件\n// XhBackground 独立的视觉组件,插槽内容浮在效果之上\n// useBackground 自己拿画面实例,接自定义调度或调参面板\n\nimport type {\n BackgroundEffect,\n BackgroundQuality,\n BackgroundSurface,\n MorphOptions,\n ParamValue,\n PointCloud,\n} from '@xihan-ui/backgrounds'\nimport type { Directive, PropType, ShallowRef, VNodeRef } from 'vue'\nimport { createBackgroundSurface } from '@xihan-ui/backgrounds'\nimport {\n defineComponent,\n getCurrentScope,\n h,\n onScopeDispose,\n shallowRef,\n} from 'vue'\n\nexport interface UseBackgroundOptions {\n effect: BackgroundEffect | string\n params?: Record<string, ParamValue>\n quality?: BackgroundQuality\n /** 自动绑定指针事件,默认 true。 */\n pointer?: boolean\n /** 创建后立即播放,默认 true。 */\n autoplay?: boolean\n /** 系统开启减弱动态效果时冻结时间轴,默认 true。 */\n respectReducedMotion?: boolean\n /** 滚出视口时暂停绘制,默认 true。 */\n pauseOffscreen?: boolean\n}\n\nexport interface UseBackgroundReturn {\n readonly surface: ShallowRef<BackgroundSurface | null>\n /**\n * 挂载点。直接当模板 ref 用:`<div :ref=\"visual.attach\">`,\n * 渲染器会在元素进出 DOM 时把元素或 null 交进来。\n */\n attach: (element: Element | null) => void\n setEffect: (effect: BackgroundEffect | string) => void\n setParams: (patch: Record<string, ParamValue>) => void\n setCloud: (cloud: PointCloud, options?: MorphOptions) => void\n play: () => void\n pause: () => void\n destroy: () => void\n}\n\n/**\n * 建一张受 Vue 生命周期管理的视觉画面。\n *\n * 用**函数式 ref** 而不是监听一个模板 ref:元素由渲染器直接交到手上,\n * 不经过响应式与调度队列,因此不受 flush 时序影响,元素换了也一定收得到。\n * 组件卸载时自动销毁;在 setup 之外调用则需自己调 destroy。\n */\nexport function useBackground(options: UseBackgroundOptions): UseBackgroundReturn {\n const surface = shallowRef<BackgroundSurface | null>(null)\n // 元素没换就不动画面:函数式 ref 每次 patch 都会被再调一遍,\n // 不挡住的话每渲染一帧就销毁重建一次,画面永远停在创建时那份参数上\n let attached: HTMLElement | null = null\n\n function attach(element: Element | null): void {\n const el = element instanceof HTMLElement ? element : null\n if (el === attached)\n return\n attached = el\n surface.value?.destroy()\n surface.value = el === null ? null : createBackgroundSurface(el, options)\n }\n\n function destroy(): void {\n attached = null\n surface.value?.destroy()\n surface.value = null\n }\n\n if (getCurrentScope())\n onScopeDispose(destroy)\n\n return {\n surface,\n attach,\n setEffect: (effect): void => surface.value?.setEffect(effect),\n setParams: (patch): void => surface.value?.setParams(patch),\n setCloud: (cloud, morph): void => surface.value?.setCloud(cloud, morph),\n play: (): void => surface.value?.play(),\n pause: (): void => surface.value?.pause(),\n destroy,\n }\n}\n\n/**\n * `<XhBackground>` —— 独立视觉组件。默认插槽的内容浮在效果之上;\n * 画布铺满根元素且 pointer-events: none,不会挡住插槽里的交互。\n */\nexport const XhBackground = defineComponent({\n name: 'XhBackground',\n props: {\n effect: { type: [Object, String] as PropType<BackgroundEffect | string>, required: true },\n params: { type: Object as PropType<Record<string, ParamValue>>, default: undefined },\n quality: { type: String as PropType<BackgroundQuality>, default: undefined },\n /** 数据驱动点云。效果的粒子通道是 cloud 模式时才有意义。 */\n cloud: { type: Object as PropType<PointCloud | null>, default: null },\n /** 换点云时的形变时长(秒)。 */\n morphDuration: { type: Number, default: undefined },\n pointer: { type: Boolean, default: true },\n autoplay: { type: Boolean, default: true },\n respectReducedMotion: { type: Boolean, default: true },\n pauseOffscreen: { type: Boolean, default: true },\n /** 渲染成什么标签。 */\n as: { type: String, default: 'div' },\n },\n setup(props, { slots, expose }) {\n const api = useBackground({\n effect: props.effect,\n params: props.params,\n quality: props.quality,\n pointer: props.pointer,\n autoplay: props.autoplay,\n respectReducedMotion: props.respectReducedMotion,\n pauseOffscreen: props.pauseOffscreen,\n })\n\n let appliedEffect: BackgroundEffect | string | undefined\n let appliedQuality: BackgroundQuality | undefined\n let appliedCloud: PointCloud | null = null\n let appliedAutoplay = props.autoplay\n\n /**\n * 把当前 props 推到画面上。在渲染函数里调用而不是挂 watcher:\n * 渲染函数一定会随 props 变化重跑,且这里读到的参数值同时建立了依赖追踪,\n * 调用方原地改参数对象里的某一项也收得到。\n */\n function sync(): void {\n const surface = api.surface.value\n if (surface === null)\n return\n if (props.effect !== appliedEffect) {\n surface.setEffect(props.effect)\n appliedEffect = props.effect\n }\n if (props.quality !== undefined && props.quality !== appliedQuality) {\n surface.setQuality(props.quality)\n appliedQuality = props.quality\n }\n if (props.params !== undefined)\n surface.setParams(props.params)\n if (props.cloud && props.cloud !== appliedCloud) {\n // 第一份点云直接就位,之后的换形态才走过渡\n surface.setCloud(props.cloud, { duration: appliedCloud === null ? 0 : props.morphDuration })\n appliedCloud = props.cloud\n }\n if (props.autoplay !== appliedAutoplay) {\n if (props.autoplay)\n surface.play()\n else surface.pause()\n appliedAutoplay = props.autoplay\n }\n }\n\n // 签名照 VNodeRef 的函数式 ref 写:渲染器在元素进出 DOM 时把元素或 null 交进来。\n // 同一个元素会被反复交进来,attach 对此幂等;只有真换了画面才重置记账。\n const mount: VNodeRef = (element): void => {\n const previous = api.surface.value\n api.attach(element instanceof HTMLElement ? element : null)\n const current = api.surface.value\n if (current === previous || current === null)\n return\n appliedEffect = props.effect\n appliedQuality = props.quality\n appliedCloud = null\n appliedAutoplay = props.autoplay\n sync()\n }\n\n expose(api)\n\n return () => {\n sync()\n return h(\n props.as,\n // 不发 data-scope:这个宿主不归任何皮肤管,几何全在 features/backgrounds 的内联样式里,\n // 指令用法(v-background 挂在作者自己的元素上)更是连这层壳都没有。\n // 发了 scope 而没有对应皮肤,开发模式的皮肤在场探测会给出一条永远修不掉的警告\n { ref: mount },\n slots.default?.(),\n )\n }\n },\n})\n\nexport type BackgroundDirectiveValue = BackgroundEffect | string | UseBackgroundOptions\n\nfunction toOptions(value: BackgroundDirectiveValue): UseBackgroundOptions {\n if (typeof value === 'string')\n return { effect: value }\n return 'effect' in value ? value : { effect: value }\n}\n\nconst mounted = new WeakMap<HTMLElement, { surface: BackgroundSurface, effect: BackgroundEffect | string }>()\n\n/**\n * `v-background` —— 给任意元素铺一层视觉背景。\n *\n * 用在组件上时,Vue 会把指令落到该组件的单一根元素上,所以给现成组件加背景不需要改组件:\n *\n * ```vue\n * <XhButton v-background=\"fluidEffect\">提交</XhButton>\n * <div v-background=\"{ effect: 'aurora', params: { speed: 1.6 } }\" />\n * ```\n */\nexport const vBackground: Directive<HTMLElement, BackgroundDirectiveValue> = {\n mounted(el, binding) {\n const options = toOptions(binding.value)\n mounted.set(el, { surface: createBackgroundSurface(el, options), effect: options.effect })\n },\n updated(el, binding) {\n const entry = mounted.get(el)\n if (entry === undefined)\n return\n const options = toOptions(binding.value)\n if (options.effect !== entry.effect) {\n entry.surface.setEffect(options.effect)\n entry.effect = options.effect\n }\n if (options.params !== undefined)\n entry.surface.setParams(options.params)\n },\n unmounted(el) {\n mounted.get(el)?.surface.destroy()\n mounted.delete(el)\n },\n}\n"],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { MaybeRefOrGetter, Ref } from "vue";
2
+ import { RuntimeConfig } from "@xihan-ui/kernel";
3
+ import { HoverIntentOptions, ScrollMetrics, ScrollTrackerOptions, StickToBottomOptions, StickToBottomState, Typeahead, TypeaheadOptions } from "@xihan-ui/behavior";
4
+ //#region src/behavior.d.ts
5
+ /**
6
+ * 按需加解滚动锁。锁是引用计数的,多处同时锁不会互相踩。
7
+ *
8
+ * 锁哪个元素由 `config.scrollRoot?.()` 决定;宿主把滚动搬进了内容容器
9
+ * (body 自己不滚)时必须在配置里注入,否则锁到的是不滚的那个。
10
+ */
11
+ declare function useScrollLock(active: MaybeRefOrGetter<boolean>, config: MaybeRefOrGetter<RuntimeConfig>): void;
12
+ /**
13
+ * 悬停意图:进触发器停够时长才报开,离开时按安全三角判断是不是正朝浮层去。
14
+ * 用于自建的悬停浮层,省掉「斜着划向子菜单半路就关了」那类手写延时。
15
+ */
16
+ declare function useHoverIntent(options: HoverIntentOptions): void;
17
+ /** 观察滚动容器的位置与尺寸,值变了才回调。返回最近一次量到的值。 */
18
+ declare function useScrollTracker(options: ScrollTrackerOptions): Ref<ScrollMetrics | null>;
19
+ interface StickToBottom {
20
+ /** 当前贴底状态,随原语的回调更新。 */
21
+ state: Ref<StickToBottomState | null>;
22
+ /** 滚到底部并恢复粘附,默认 'smooth',reducedMotion 为真时强制 'instant'。 */
23
+ scrollToBottom: (behavior?: 'smooth' | 'instant') => void;
24
+ /** 重新读取 scrollEl / contentEl,节点变了就解绑重绑。 */
25
+ retarget: () => void;
26
+ }
27
+ /**
28
+ * 内容增长时保持贴底,用户往上滚过就松手不再跟。
29
+ *
30
+ * 两个 getter 里读的是 ref 时自动重绑:原语在建好那一刻就绑一次,
31
+ * 而 setup 阶段模板 ref 还是 null,不重绑等于没挂上。
32
+ */
33
+ declare function useStickToBottom(options: StickToBottomOptions): StickToBottom;
34
+ /** 连续敲字母跳到匹配项的缓冲,超时自动清空。 */
35
+ declare function useTypeahead(options?: TypeaheadOptions): Typeahead;
36
+ //#endregion
37
+ export { StickToBottom, useHoverIntent, useScrollLock, useScrollTracker, useStickToBottom, useTypeahead };
38
+ //# sourceMappingURL=behavior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behavior.d.ts","names":[],"sources":["../src/behavior.ts"],"mappings":";;;;;;;;;;iBAoCgB,cACd,QAAQ,2BACR,QAAQ,iBAAiB;;;;;iBAwBX,eAAe,SAAS;;iBAMxB,iBAAiB,SAAS,uBAAuB,IAAI;UAapD;;EAEf,OAAO,IAAI;;EAEX,iBAAiB;;EAEjB;;;;;;;;iBASc,iBAAiB,SAAS,uBAAuB;;iBAejD,aAAa,UAAS,mBAAwB"}
@@ -0,0 +1,74 @@
1
+ import { onScopeDispose, ref, toValue, watch } from "vue";
2
+ import { acquireScrollLock, createScrollTracker, createStickToBottom, createTypeahead, trackHoverIntent } from "@xihan-ui/behavior";
3
+ //#region src/behavior.ts
4
+ /**
5
+ * 按需加解滚动锁。锁是引用计数的,多处同时锁不会互相踩。
6
+ *
7
+ * 锁哪个元素由 `config.scrollRoot?.()` 决定;宿主把滚动搬进了内容容器
8
+ * (body 自己不滚)时必须在配置里注入,否则锁到的是不滚的那个。
9
+ */
10
+ function useScrollLock(active, config) {
11
+ let handle = null;
12
+ const release = () => {
13
+ handle?.dispose();
14
+ handle = null;
15
+ };
16
+ watch(() => toValue(active), (on) => {
17
+ if (on && !handle) handle = acquireScrollLock({ config: toValue(config) });
18
+ else if (!on) release();
19
+ }, { immediate: true });
20
+ onScopeDispose(release);
21
+ }
22
+ /**
23
+ * 悬停意图:进触发器停够时长才报开,离开时按安全三角判断是不是正朝浮层去。
24
+ * 用于自建的悬停浮层,省掉「斜着划向子菜单半路就关了」那类手写延时。
25
+ */
26
+ function useHoverIntent(options) {
27
+ onScopeDispose(trackHoverIntent(options));
28
+ }
29
+ /** 观察滚动容器的位置与尺寸,值变了才回调。返回最近一次量到的值。 */
30
+ function useScrollTracker(options) {
31
+ const metrics = ref(null);
32
+ const handle = createScrollTracker({
33
+ ...options,
34
+ onChange: (next) => {
35
+ metrics.value = next;
36
+ options.onChange?.(next);
37
+ }
38
+ });
39
+ onScopeDispose(() => handle.dispose());
40
+ return metrics;
41
+ }
42
+ /**
43
+ * 内容增长时保持贴底,用户往上滚过就松手不再跟。
44
+ *
45
+ * 两个 getter 里读的是 ref 时自动重绑:原语在建好那一刻就绑一次,
46
+ * 而 setup 阶段模板 ref 还是 null,不重绑等于没挂上。
47
+ */
48
+ function useStickToBottom(options) {
49
+ const state = ref(null);
50
+ const handle = createStickToBottom({
51
+ ...options,
52
+ onChange: (next) => {
53
+ state.value = next;
54
+ options.onChange?.(next);
55
+ }
56
+ });
57
+ watch([() => options.scrollEl(), () => options.contentEl()], () => handle.retarget());
58
+ onScopeDispose(() => handle.dispose());
59
+ return {
60
+ state,
61
+ scrollToBottom: handle.scrollToBottom,
62
+ retarget: handle.retarget
63
+ };
64
+ }
65
+ /** 连续敲字母跳到匹配项的缓冲,超时自动清空。 */
66
+ function useTypeahead(options = {}) {
67
+ const typeahead = createTypeahead(options);
68
+ onScopeDispose(() => typeahead.clear());
69
+ return typeahead;
70
+ }
71
+ //#endregion
72
+ export { useHoverIntent, useScrollLock, useScrollTracker, useStickToBottom, useTypeahead };
73
+
74
+ //# sourceMappingURL=behavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"behavior.js","names":[],"sources":["../src/behavior.ts"],"sourcesContent":["// @xihan-ui/vue/behavior —— 行为原语的 Vue 包装。\n//\n// @xihan-ui/behavior 里的原语都是框架无关的:收一份配置与几个元素 getter,\n// 返回一个要自己释放的句柄。接进 Vue 无非是把释放挂到作用域结束,\n// 于是这些包装只做那一件事,不改原语的语义、也不加新概念。\n//\n// 与主入口分开:自建浮层才用得上这一层,不用的应用不必把它压进主入口的体积。\n// 需要层栈仪式的那几个(消解层、焦点域、背景失活)不在这里——\n// 它们要按顺序接四五个东西,接错的表现是「点子菜单父层跟着关」这种不报错的怪症,\n// 那种场景请直接用库里现成的浮层组件。\nimport type {\n HoverIntentOptions,\n ScrollMetrics,\n ScrollTrackerOptions,\n StickToBottomOptions,\n StickToBottomState,\n Typeahead,\n TypeaheadOptions,\n} from '@xihan-ui/behavior'\nimport type { RuntimeConfig } from '@xihan-ui/kernel'\nimport type { MaybeRefOrGetter, Ref } from 'vue'\nimport {\n acquireScrollLock,\n createScrollTracker,\n createStickToBottom,\n createTypeahead,\n trackHoverIntent,\n} from '@xihan-ui/behavior'\nimport { onScopeDispose, ref, toValue, watch } from 'vue'\n\n/**\n * 按需加解滚动锁。锁是引用计数的,多处同时锁不会互相踩。\n *\n * 锁哪个元素由 `config.scrollRoot?.()` 决定;宿主把滚动搬进了内容容器\n * (body 自己不滚)时必须在配置里注入,否则锁到的是不滚的那个。\n */\nexport function useScrollLock(\n active: MaybeRefOrGetter<boolean>,\n config: MaybeRefOrGetter<RuntimeConfig>,\n): void {\n let handle: { dispose: () => void } | null = null\n const release = (): void => {\n handle?.dispose()\n handle = null\n }\n watch(\n () => toValue(active),\n (on) => {\n if (on && !handle)\n handle = acquireScrollLock({ config: toValue(config) })\n else if (!on)\n release()\n },\n { immediate: true },\n )\n onScopeDispose(release)\n}\n\n/**\n * 悬停意图:进触发器停够时长才报开,离开时按安全三角判断是不是正朝浮层去。\n * 用于自建的悬停浮层,省掉「斜着划向子菜单半路就关了」那类手写延时。\n */\nexport function useHoverIntent(options: HoverIntentOptions): void {\n const stop = trackHoverIntent(options)\n onScopeDispose(stop)\n}\n\n/** 观察滚动容器的位置与尺寸,值变了才回调。返回最近一次量到的值。 */\nexport function useScrollTracker(options: ScrollTrackerOptions): Ref<ScrollMetrics | null> {\n const metrics = ref<ScrollMetrics | null>(null)\n const handle = createScrollTracker({\n ...options,\n onChange: (next) => {\n metrics.value = next\n options.onChange?.(next)\n },\n })\n onScopeDispose(() => handle.dispose())\n return metrics\n}\n\nexport interface StickToBottom {\n /** 当前贴底状态,随原语的回调更新。 */\n state: Ref<StickToBottomState | null>\n /** 滚到底部并恢复粘附,默认 'smooth',reducedMotion 为真时强制 'instant'。 */\n scrollToBottom: (behavior?: 'smooth' | 'instant') => void\n /** 重新读取 scrollEl / contentEl,节点变了就解绑重绑。 */\n retarget: () => void\n}\n\n/**\n * 内容增长时保持贴底,用户往上滚过就松手不再跟。\n *\n * 两个 getter 里读的是 ref 时自动重绑:原语在建好那一刻就绑一次,\n * 而 setup 阶段模板 ref 还是 null,不重绑等于没挂上。\n */\nexport function useStickToBottom(options: StickToBottomOptions): StickToBottom {\n const state = ref<StickToBottomState | null>(null)\n const handle = createStickToBottom({\n ...options,\n onChange: (next) => {\n state.value = next\n options.onChange?.(next)\n },\n })\n watch([() => options.scrollEl(), () => options.contentEl()], () => handle.retarget())\n onScopeDispose(() => handle.dispose())\n return { state, scrollToBottom: handle.scrollToBottom, retarget: handle.retarget }\n}\n\n/** 连续敲字母跳到匹配项的缓冲,超时自动清空。 */\nexport function useTypeahead(options: TypeaheadOptions = {}): Typeahead {\n const typeahead = createTypeahead(options)\n onScopeDispose(() => typeahead.clear())\n return typeahead\n}\n"],"mappings":";;;;;;;;;AAoCA,SAAgB,cACd,QACA,QACM;CACN,IAAI,SAAyC;CAC7C,MAAM,gBAAsB;EAC1B,QAAQ,QAAQ;EAChB,SAAS;CACX;CACA,YACQ,QAAQ,MAAM,IACnB,OAAO;EACN,IAAI,MAAM,CAAC,QACT,SAAS,kBAAkB,EAAE,QAAQ,QAAQ,MAAM,EAAE,CAAC;OACnD,IAAI,CAAC,IACR,QAAQ;CACZ,GACA,EAAE,WAAW,KAAK,CACpB;CACA,eAAe,OAAO;AACxB;;;;;AAMA,SAAgB,eAAe,SAAmC;CAEhE,eADa,iBAAiB,OACZ,CAAC;AACrB;;AAGA,SAAgB,iBAAiB,SAA0D;CACzF,MAAM,UAAU,IAA0B,IAAI;CAC9C,MAAM,SAAS,oBAAoB;EACjC,GAAG;EACH,WAAW,SAAS;GAClB,QAAQ,QAAQ;GAChB,QAAQ,WAAW,IAAI;EACzB;CACF,CAAC;CACD,qBAAqB,OAAO,QAAQ,CAAC;CACrC,OAAO;AACT;;;;;;;AAiBA,SAAgB,iBAAiB,SAA8C;CAC7E,MAAM,QAAQ,IAA+B,IAAI;CACjD,MAAM,SAAS,oBAAoB;EACjC,GAAG;EACH,WAAW,SAAS;GAClB,MAAM,QAAQ;GACd,QAAQ,WAAW,IAAI;EACzB;CACF,CAAC;CACD,MAAM,OAAO,QAAQ,SAAS,SAAS,QAAQ,UAAU,CAAC,SAAS,OAAO,SAAS,CAAC;CACpF,qBAAqB,OAAO,QAAQ,CAAC;CACrC,OAAO;EAAE;EAAO,gBAAgB,OAAO;EAAgB,UAAU,OAAO;CAAS;AACnF;;AAGA,SAAgB,aAAa,UAA4B,CAAC,GAAc;CACtE,MAAM,YAAY,gBAAgB,OAAO;CACzC,qBAAqB,UAAU,MAAM,CAAC;CACtC,OAAO;AACT"}
@@ -75,7 +75,6 @@ declare const XhAccordionRoot: import("vue").DefineComponent<import("vue").Extra
75
75
  "onValue-change"?: ((_details: import("@xihan-ui/headless").AccordionValueChangeDetails) => any) | undefined;
76
76
  "onUpdate:value"?: ((_value: string[]) => any) | undefined;
77
77
  }>, {
78
- size: Size;
79
78
  value: string[];
80
79
  multiple: boolean;
81
80
  collapsible: boolean;
@@ -84,6 +83,7 @@ declare const XhAccordionRoot: import("vue").DefineComponent<import("vue").Extra
84
83
  orientation: Orientation;
85
84
  dir: Direction;
86
85
  tone: Tone;
86
+ size: Size;
87
87
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
88
88
  declare const XhAccordionItem: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
89
89
  value: {
@@ -1,8 +1,8 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/accordion/context.ts
3
- const KEY = Symbol("xh-accordion");
3
+ const KEY = Symbol.for("xh-accordion");
4
4
  /** 条目身份下传给 header/trigger/content,用 getter 以跟随 value/disabled 变更。 */
5
- const ITEM_KEY = Symbol("xh-accordion-item");
5
+ const ITEM_KEY = Symbol.for("xh-accordion-item");
6
6
  function provideAccordion(ctx) {
7
7
  provide(KEY, ctx);
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/accordion/context.ts"],"sourcesContent":["import type { AccordionItemProps } from '@xihan-ui/headless'\nimport type { InjectionKey } from 'vue'\nimport type { AccordionContext } from './use-accordion'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AccordionContext> = Symbol('xh-accordion')\n/** 条目身份下传给 header/trigger/content,用 getter 以跟随 value/disabled 变更。 */\nconst ITEM_KEY: InjectionKey<() => AccordionItemProps> = Symbol('xh-accordion-item')\n\nexport function provideAccordion(ctx: AccordionContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAccordionContext(): AccordionContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Accordion 部件必须用在 XhAccordionRoot 内')\n return ctx\n}\n\nexport function provideAccordionItem(item: () => AccordionItemProps): void {\n provide(ITEM_KEY, item)\n}\n\nexport function useAccordionItem(): () => AccordionItemProps {\n const item = inject(ITEM_KEY, null)\n if (!item)\n throw new Error('[xh] Accordion 条目部件必须用在 XhAccordionItem 内')\n return item\n}\n"],"mappings":";;AAKA,MAAM,MAAsC,OAAO,cAAc;;AAEjE,MAAM,WAAmD,OAAO,mBAAmB;AAEnF,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT;AAEA,SAAgB,qBAAqB,MAAsC;CACzE,QAAQ,UAAU,IAAI;AACxB;AAEA,SAAgB,mBAA6C;CAC3D,MAAM,OAAO,OAAO,UAAU,IAAI;CAClC,IAAI,CAAC,MACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/accordion/context.ts"],"sourcesContent":["import type { AccordionItemProps } from '@xihan-ui/headless'\nimport type { InjectionKey } from 'vue'\nimport type { AccordionContext } from './use-accordion'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AccordionContext> = Symbol.for('xh-accordion')\n/** 条目身份下传给 header/trigger/content,用 getter 以跟随 value/disabled 变更。 */\nconst ITEM_KEY: InjectionKey<() => AccordionItemProps> = Symbol.for('xh-accordion-item')\n\nexport function provideAccordion(ctx: AccordionContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAccordionContext(): AccordionContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Accordion 部件必须用在 XhAccordionRoot 内')\n return ctx\n}\n\nexport function provideAccordionItem(item: () => AccordionItemProps): void {\n provide(ITEM_KEY, item)\n}\n\nexport function useAccordionItem(): () => AccordionItemProps {\n const item = inject(ITEM_KEY, null)\n if (!item)\n throw new Error('[xh] Accordion 条目部件必须用在 XhAccordionItem 内')\n return item\n}\n"],"mappings":";;AAKA,MAAM,MAAsC,OAAO,IAAI,cAAc;;AAErE,MAAM,WAAmD,OAAO,IAAI,mBAAmB;AAEvF,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT;AAEA,SAAgB,qBAAqB,MAAsC;CACzE,QAAQ,UAAU,IAAI;AACxB;AAEA,SAAgB,mBAA6C;CAC3D,MAAM,OAAO,OAAO,UAAU,IAAI;CAClC,IAAI,CAAC,MACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT"}
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/affix/context.ts
3
- const KEY = Symbol("xh-affix");
3
+ const KEY = Symbol.for("xh-affix");
4
4
  function provideAffix(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/affix/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AffixContext } from './use-affix'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AffixContext> = Symbol('xh-affix')\n\nexport function provideAffix(ctx: AffixContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAffixContext(): AffixContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Affix 部件必须用在 XhAffixRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,UAAU;AAEzD,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/affix/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AffixContext } from './use-affix'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AffixContext> = Symbol.for('xh-affix')\n\nexport function provideAffix(ctx: AffixContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAffixContext(): AffixContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Affix 部件必须用在 XhAffixRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,IAAI,UAAU;AAE7D,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/alert/context.ts
3
- const KEY = Symbol("xh-alert");
3
+ const KEY = Symbol.for("xh-alert");
4
4
  function provideAlert(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/alert/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AlertContext } from './use-alert'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AlertContext> = Symbol('xh-alert')\n\nexport function provideAlert(ctx: AlertContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAlertContext(): AlertContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Alert 部件必须用在 XhAlertRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,UAAU;AAEzD,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/alert/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AlertContext } from './use-alert'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AlertContext> = Symbol.for('xh-alert')\n\nexport function provideAlert(ctx: AlertContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAlertContext(): AlertContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Alert 部件必须用在 XhAlertRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,IAAI,UAAU;AAE7D,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
@@ -106,16 +106,16 @@ declare const XhAnchorRoot: import("vue").DefineComponent<import("vue").ExtractP
106
106
  "onValue-change"?: ((_details: import("@xihan-ui/headless").AnchorValueChangeDetails) => any) | undefined;
107
107
  "onUpdate:value"?: ((_value: string | null) => any) | undefined;
108
108
  }>, {
109
- size: Size;
110
109
  value: string | null;
111
110
  defaultValue: string | null;
112
111
  orientation: Orientation;
113
112
  dir: Direction;
114
113
  tone: Tone;
115
- translations: Partial<AnchorTranslations>;
114
+ size: Size;
116
115
  targets: readonly string[];
117
116
  offset: number;
118
117
  smooth: boolean;
118
+ translations: Partial<AnchorTranslations>;
119
119
  scrollElement: HTMLElement | null;
120
120
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
121
121
  declare const XhAnchorList: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/anchor/context.ts
3
- const KEY = Symbol("xh-anchor");
3
+ const KEY = Symbol.for("xh-anchor");
4
4
  function provideAnchor(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/anchor/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AnchorContext } from './use-anchor'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AnchorContext> = Symbol('xh-anchor')\n\nexport function provideAnchor(ctx: AnchorContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAnchorContext(): AnchorContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Anchor 部件必须用在 XhAnchorRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAmC,OAAO,WAAW;AAE3D,SAAgB,cAAc,KAA0B;CACtD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/anchor/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AnchorContext } from './use-anchor'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AnchorContext> = Symbol.for('xh-anchor')\n\nexport function provideAnchor(ctx: AnchorContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAnchorContext(): AnchorContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Anchor 部件必须用在 XhAnchorRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAmC,OAAO,IAAI,WAAW;AAE/D,SAAgB,cAAc,KAA0B;CACtD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT"}
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/avatar/context.ts
3
- const KEY = Symbol("xh-avatar");
3
+ const KEY = Symbol.for("xh-avatar");
4
4
  function provideAvatar(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/avatar/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AvatarContext } from './use-avatar'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AvatarContext> = Symbol('xh-avatar')\n\nexport function provideAvatar(ctx: AvatarContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAvatarContext(): AvatarContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Avatar 部件必须用在 XhAvatarRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAmC,OAAO,WAAW;AAE3D,SAAgB,cAAc,KAA0B;CACtD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/avatar/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { AvatarContext } from './use-avatar'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AvatarContext> = Symbol.for('xh-avatar')\n\nexport function provideAvatar(ctx: AvatarContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAvatarContext(): AvatarContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Avatar 部件必须用在 XhAvatarRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAmC,OAAO,IAAI,WAAW;AAE/D,SAAgB,cAAc,KAA0B;CACtD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT"}
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/avatar-group/context.ts
3
- const KEY = Symbol("xh-avatar-group");
3
+ const KEY = Symbol.for("xh-avatar-group");
4
4
  function provideAvatarGroup(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/avatar-group/context.ts"],"sourcesContent":["import type { AvatarGroupApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface AvatarGroupContext {\n api: ComputedRef<AvatarGroupApi>\n}\n\nconst KEY: InjectionKey<AvatarGroupContext> = Symbol('xh-avatar-group')\n\nexport function provideAvatarGroup(ctx: AvatarGroupContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAvatarGroupContext(): AvatarGroupContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] AvatarGroup 部件必须用在 XhAvatarGroupRoot 内')\n return ctx\n}\n"],"mappings":";;AAQA,MAAM,MAAwC,OAAO,iBAAiB;AAEtE,SAAgB,mBAAmB,KAA+B;CAChE,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/avatar-group/context.ts"],"sourcesContent":["import type { AvatarGroupApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface AvatarGroupContext {\n api: ComputedRef<AvatarGroupApi>\n}\n\nconst KEY: InjectionKey<AvatarGroupContext> = Symbol.for('xh-avatar-group')\n\nexport function provideAvatarGroup(ctx: AvatarGroupContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAvatarGroupContext(): AvatarGroupContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] AvatarGroup 部件必须用在 XhAvatarGroupRoot 内')\n return ctx\n}\n"],"mappings":";;AAQA,MAAM,MAAwC,OAAO,IAAI,iBAAiB;AAE1E,SAAgB,mBAAmB,KAA+B;CAChE,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT"}
@@ -66,10 +66,10 @@ declare const XhBackTopRoot: import("vue").DefineComponent<import("vue").Extract
66
66
  }>> & Readonly<{
67
67
  "onVisible-change"?: ((_details: import("@xihan-ui/headless").BackTopVisibleChangeDetails) => any) | undefined;
68
68
  }>, {
69
- target: HTMLElement | null;
70
- size: Size;
71
69
  tone: Tone;
70
+ size: Size;
72
71
  translations: Partial<BackTopTranslations>;
72
+ target: HTMLElement | null;
73
73
  visibilityHeight: number;
74
74
  behavior: BackTopBehavior;
75
75
  }, SlotsType<{
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/back-top/context.ts
3
- const KEY = Symbol("xh-back-top");
3
+ const KEY = Symbol.for("xh-back-top");
4
4
  function provideBackTop(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/back-top/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { BackTopContext } from './use-back-top'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<BackTopContext> = Symbol('xh-back-top')\n\nexport function provideBackTop(ctx: BackTopContext): void {\n provide(KEY, ctx)\n}\n\nexport function useBackTopContext(): BackTopContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] BackTop 部件必须用在 XhBackTopRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAoC,OAAO,aAAa;AAE9D,SAAgB,eAAe,KAA2B;CACxD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/back-top/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { BackTopContext } from './use-back-top'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<BackTopContext> = Symbol.for('xh-back-top')\n\nexport function provideBackTop(ctx: BackTopContext): void {\n provide(KEY, ctx)\n}\n\nexport function useBackTopContext(): BackTopContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] BackTop 部件必须用在 XhBackTopRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAoC,OAAO,IAAI,aAAa;AAElE,SAAgB,eAAe,KAA2B;CACxD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT"}
@@ -1,74 +1,166 @@
1
- import { PropType } from "vue";
2
- import { BadgeVariant } from "@xihan-ui/headless";
1
+ import { PropType, SlotsType, VNode } from "vue";
2
+ import { BadgePlacement } from "@xihan-ui/headless";
3
3
  import { Size, Tone } from "@xihan-ui/kernel";
4
4
  //#region src/components/badge/badge.d.ts
5
- declare const XhBadge: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
6
- variant: PropType<BadgeVariant>;
7
- tone: PropType<Tone>;
8
- size: PropType<Size>;
9
- /** 计数:给了它徽标就自己出数字,超过 max 写成「max+」。 */
10
- count: {
11
- type: NumberConstructor;
12
- default: undefined;
5
+ /**
6
+ * 锚点:被标记的那个东西(按钮、头像、标签页)写进默认插槽,角标另起一层贴在它的角上。
7
+ *
8
+ * 角标是挂在别的元素角上的一枚标记,不是可以单独摆的药丸——
9
+ * 行内的状态药丸请用 tag。
10
+ */
11
+ declare const XhBadgeRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
12
+ readonly tone: PropType<Tone>;
13
+ readonly size: PropType<Size>;
14
+ /** 挂在哪个角上,默认 top-end。 */
15
+ readonly placement: PropType<BadgePlacement>;
16
+ /** 计数:给了它角标就自己出数字,超过 max 写成「max+」。 */
17
+ readonly count: {
18
+ readonly type: NumberConstructor;
19
+ readonly default: undefined;
13
20
  };
14
21
  /** 计数上限,默认 99。 */
15
- max: {
16
- type: NumberConstructor;
17
- default: undefined;
22
+ readonly max: {
23
+ readonly type: NumberConstructor;
24
+ readonly default: undefined;
18
25
  };
19
26
  /** 计数为 0 时是否照样显示,默认不显示。 */
20
- showZero: {
21
- type: BooleanConstructor;
22
- default: undefined;
27
+ readonly showZero: {
28
+ readonly type: BooleanConstructor;
29
+ readonly default: undefined;
23
30
  };
24
31
  /** 只出一个点,不出数字。 */
25
- dot: {
26
- type: BooleanConstructor;
27
- default: undefined;
32
+ readonly dot: {
33
+ readonly type: BooleanConstructor;
34
+ readonly default: undefined;
28
35
  };
29
- /** 读屏怎么念这枚徽标,例如「3 条未读」。 */
30
- label: {
31
- type: StringConstructor;
32
- default: undefined;
36
+ /** 读屏怎么念这枚角标,例如「3 条未读」。 */
37
+ readonly label: {
38
+ readonly type: StringConstructor;
39
+ readonly default: undefined;
33
40
  };
34
- }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
41
+ }>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
35
42
  [key: string]: any;
36
43
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
37
- variant: PropType<BadgeVariant>;
38
- tone: PropType<Tone>;
39
- size: PropType<Size>;
40
- /** 计数:给了它徽标就自己出数字,超过 max 写成「max+」。 */
41
- count: {
42
- type: NumberConstructor;
43
- default: undefined;
44
+ readonly tone: PropType<Tone>;
45
+ readonly size: PropType<Size>;
46
+ /** 挂在哪个角上,默认 top-end。 */
47
+ readonly placement: PropType<BadgePlacement>;
48
+ /** 计数:给了它角标就自己出数字,超过 max 写成「max+」。 */
49
+ readonly count: {
50
+ readonly type: NumberConstructor;
51
+ readonly default: undefined;
44
52
  };
45
53
  /** 计数上限,默认 99。 */
46
- max: {
47
- type: NumberConstructor;
48
- default: undefined;
54
+ readonly max: {
55
+ readonly type: NumberConstructor;
56
+ readonly default: undefined;
49
57
  };
50
58
  /** 计数为 0 时是否照样显示,默认不显示。 */
51
- showZero: {
52
- type: BooleanConstructor;
53
- default: undefined;
59
+ readonly showZero: {
60
+ readonly type: BooleanConstructor;
61
+ readonly default: undefined;
54
62
  };
55
63
  /** 只出一个点,不出数字。 */
56
- dot: {
57
- type: BooleanConstructor;
58
- default: undefined;
64
+ readonly dot: {
65
+ readonly type: BooleanConstructor;
66
+ readonly default: undefined;
59
67
  };
60
- /** 读屏怎么念这枚徽标,例如「3 条未读」。 */
61
- label: {
62
- type: StringConstructor;
63
- default: undefined;
68
+ /** 读屏怎么念这枚角标,例如「3 条未读」。 */
69
+ readonly label: {
70
+ readonly type: StringConstructor;
71
+ readonly default: undefined;
64
72
  };
65
73
  }>> & Readonly<{}>, {
66
- label: string;
67
- max: number;
68
- count: number;
69
- showZero: boolean;
70
- dot: boolean;
74
+ readonly label: string;
75
+ readonly max: number;
76
+ readonly count: number;
77
+ readonly showZero: boolean;
78
+ readonly dot: boolean;
71
79
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
80
+ /** 角标本身,绝对定位在锚点的某个角上。不给内容就用算好的计数文本。 */
81
+ declare const XhBadgeIndicator: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
82
+ [key: string]: any;
83
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, SlotsType<{
84
+ default?: (props: {
85
+ text: string;
86
+ }) => VNode[];
87
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
88
+ /**
89
+ * 一步到位的写法:默认插槽放被标记的东西,角标自动跟上。
90
+ *
91
+ * 要往角标里塞自定义内容(比如一枚小图标)时改用 XhBadgeRoot + XhBadgeIndicator。
92
+ */
93
+ declare const XhBadge: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
94
+ readonly tone: PropType<Tone>;
95
+ readonly size: PropType<Size>;
96
+ /** 挂在哪个角上,默认 top-end。 */
97
+ readonly placement: PropType<BadgePlacement>;
98
+ /** 计数:给了它角标就自己出数字,超过 max 写成「max+」。 */
99
+ readonly count: {
100
+ readonly type: NumberConstructor;
101
+ readonly default: undefined;
102
+ };
103
+ /** 计数上限,默认 99。 */
104
+ readonly max: {
105
+ readonly type: NumberConstructor;
106
+ readonly default: undefined;
107
+ };
108
+ /** 计数为 0 时是否照样显示,默认不显示。 */
109
+ readonly showZero: {
110
+ readonly type: BooleanConstructor;
111
+ readonly default: undefined;
112
+ };
113
+ /** 只出一个点,不出数字。 */
114
+ readonly dot: {
115
+ readonly type: BooleanConstructor;
116
+ readonly default: undefined;
117
+ };
118
+ /** 读屏怎么念这枚角标,例如「3 条未读」。 */
119
+ readonly label: {
120
+ readonly type: StringConstructor;
121
+ readonly default: undefined;
122
+ };
123
+ }>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
124
+ [key: string]: any;
125
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
126
+ readonly tone: PropType<Tone>;
127
+ readonly size: PropType<Size>;
128
+ /** 挂在哪个角上,默认 top-end。 */
129
+ readonly placement: PropType<BadgePlacement>;
130
+ /** 计数:给了它角标就自己出数字,超过 max 写成「max+」。 */
131
+ readonly count: {
132
+ readonly type: NumberConstructor;
133
+ readonly default: undefined;
134
+ };
135
+ /** 计数上限,默认 99。 */
136
+ readonly max: {
137
+ readonly type: NumberConstructor;
138
+ readonly default: undefined;
139
+ };
140
+ /** 计数为 0 时是否照样显示,默认不显示。 */
141
+ readonly showZero: {
142
+ readonly type: BooleanConstructor;
143
+ readonly default: undefined;
144
+ };
145
+ /** 只出一个点,不出数字。 */
146
+ readonly dot: {
147
+ readonly type: BooleanConstructor;
148
+ readonly default: undefined;
149
+ };
150
+ /** 读屏怎么念这枚角标,例如「3 条未读」。 */
151
+ readonly label: {
152
+ readonly type: StringConstructor;
153
+ readonly default: undefined;
154
+ };
155
+ }>> & Readonly<{}>, {
156
+ readonly label: string;
157
+ readonly max: number;
158
+ readonly count: number;
159
+ readonly showZero: boolean;
160
+ readonly dot: boolean;
161
+ }, SlotsType<{
162
+ default?: () => VNode[];
163
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
72
164
  //#endregion
73
- export { XhBadge };
165
+ export { XhBadge, XhBadgeIndicator, XhBadgeRoot };
74
166
  //# sourceMappingURL=badge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge.d.ts","names":[],"sources":["../../../src/components/badge/badge.ts"],"mappings":";;;;cAQa,uBAAO,8BAAA;EAGG,SAAA,SAAS;EACZ,MAAA,SAAS;EACT,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAFN,SAAA,SAAS;EACZ,MAAA,SAAS;EACT,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAqB3B"}
1
+ {"version":3,"file":"badge.d.ts","names":[],"sources":["../../../src/components/badge/badge.ts"],"mappings":";;;;;;;;;;cAgCa,2BAAW,8BAAA;WAtBN,MAAA,SAAS;WACT,MAAA,SAAS;;WAEJ,WAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAHd,MAAA,SAAS;WACT,MAAA,SAAS;;WAEJ,WAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA6B9B;;cAGW,gCAAgB,0BAAA,oBAAA,4BAAA;;;EAEY,WAAC;IAAS;QAAmB;kCASpE;;;;;;cAOW,uBAAO,8BAAA;WArDF,MAAA,SAAS;WACT,MAAA,SAAS;;WAEJ,WAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAHd,MAAA,SAAS;WACT,MAAA,SAAS;;WAEJ,WAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqDS,gBAAM;kCAI7C"}