@astryx-vue/core 0.2.6 → 0.4.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 (524) hide show
  1. package/THIRD_PARTY_NOTICES.md +9 -0
  2. package/dist/AlertDialog/index.js +1 -1
  3. package/dist/{AlertDialog-BBhl5P1X.js → AlertDialog-C2inDZWG.js} +13 -7
  4. package/dist/AppShell/index.d.ts +1 -1
  5. package/dist/AppShell/index.js +1 -1
  6. package/dist/{AppShell-mrflO0Uy.js → AppShell-CumzH-8z.js} +3 -3
  7. package/dist/Avatar/index.d.ts +1 -1
  8. package/dist/Avatar/index.js +1 -1
  9. package/dist/{Avatar-pPZ4dI_s.js → Avatar-BW0TE8t9.js} +47 -34
  10. package/dist/AvatarGroup/index.d.ts +1 -1
  11. package/dist/AvatarGroup/index.js +1 -1
  12. package/dist/{AvatarGroup-B--NQSB3.js → AvatarGroup-DLC_FFR5.js} +57 -13
  13. package/dist/Banner/index.d.ts +1 -1
  14. package/dist/Banner/index.js +1 -1
  15. package/dist/{Banner-GbGxrqQO.js → Banner-C5VAwo4D.js} +68 -34
  16. package/dist/Blockquote/index.js +1 -1
  17. package/dist/Blockquote-DRoKdcxZ.js +27 -0
  18. package/dist/BottomSheet/index.d.ts +1 -1
  19. package/dist/BottomSheet/index.js +2 -2
  20. package/dist/{BottomSheet-eJ3FzTBD.js → BottomSheet-B4sc3F1S.js} +288 -140
  21. package/dist/{BottomSheet-DIVwbGr3.js → BottomSheet-m54uCMJN.js} +20 -4
  22. package/dist/Breadcrumbs/index.d.ts +2 -2
  23. package/dist/Breadcrumbs/index.js +2 -2
  24. package/dist/Breadcrumbs-CTaz7Kh4.js +223 -0
  25. package/dist/Button/index.d.ts +1 -1
  26. package/dist/Button/index.js +1 -1
  27. package/dist/{Button-B6Hj_O_s.js → Button-ONOoHdkg.js} +25 -15
  28. package/dist/ButtonGroup/index.d.ts +1 -1
  29. package/dist/ButtonGroup/index.js +1 -1
  30. package/dist/ButtonGroup-DnkSZ9a5.js +87 -0
  31. package/dist/{ButtonTooltip-nWWrth8j.js → ButtonTooltip-CNKOQHYR.js} +7 -4
  32. package/dist/Calendar/index.d.ts +1 -1
  33. package/dist/Calendar/index.js +1 -1
  34. package/dist/{Calendar-B7vIowKq.js → Calendar-BAqzzQm2.js} +5 -5
  35. package/dist/Card/index.d.ts +2 -2
  36. package/dist/Card/index.js +1 -1
  37. package/dist/{Card-HAjZQg2s.js → Card-B-I24X9S.js} +2 -0
  38. package/dist/Carousel/index.js +1 -1
  39. package/dist/{Carousel-DAkOa7KK.js → Carousel-DXC22UWq.js} +50 -33
  40. package/dist/Chat/index.d.ts +1 -1
  41. package/dist/Chat/index.js +1 -1
  42. package/dist/{Chat-DVoI6UOA.js → Chat-BdJW6IX5.js} +152 -83
  43. package/dist/CheckboxIndicator/index.js +1 -1
  44. package/dist/{CheckboxIndicator-D37cm2Rh.js → CheckboxIndicator-fH4d-JE1.js} +9 -3
  45. package/dist/CheckboxInput/index.d.ts +1 -1
  46. package/dist/CheckboxInput/index.js +1 -1
  47. package/dist/{CheckboxInput-BS9J6edf.js → CheckboxInput-DJHCbwgC.js} +19 -11
  48. package/dist/CheckboxList/index.d.ts +1 -1
  49. package/dist/CheckboxList/index.js +1 -1
  50. package/dist/{CheckboxList-CX1i_jVP.js → CheckboxList-BdZIP4_J.js} +155 -38
  51. package/dist/Citation/index.js +1 -1
  52. package/dist/{Citation-Djgwa0ko.js → Citation-DbZn2vms.js} +8 -3
  53. package/dist/ClickableCard/index.d.ts +1 -1
  54. package/dist/ClickableCard/index.js +1 -1
  55. package/dist/{ClickableCard-Bhds4RRe.js → ClickableCard-ChAfiw9T.js} +10 -7
  56. package/dist/Code/index.d.ts +1 -1
  57. package/dist/Code/index.js +3 -3
  58. package/dist/{Code-XnPuGxey.js → Code-Bg7GBdxy.js} +2 -1
  59. package/dist/{CodeBlock-BUM3czCS.js → CodeBlock-Caaflp7C.js} +7 -3
  60. package/dist/Collapsible/index.d.ts +1 -1
  61. package/dist/Collapsible/index.js +1 -1
  62. package/dist/{Collapsible-Cov3Pyq5.js → Collapsible-Bdj0WYpb.js} +13 -11
  63. package/dist/CommandPalette/index.d.ts +1 -1
  64. package/dist/CommandPalette/index.js +1 -1
  65. package/dist/{CommandPalette-D6wYS30d.js → CommandPalette-C_MClfAg.js} +146 -62
  66. package/dist/ComplexSelector/index.d.ts +1 -1
  67. package/dist/ComplexSelector/index.js +1 -1
  68. package/dist/{ComplexSelector-Bil81sfq.js → ComplexSelector-BeVQaqRf.js} +94 -22
  69. package/dist/ContextMenu/index.d.ts +2 -2
  70. package/dist/ContextMenu/index.js +2 -2
  71. package/dist/{ContextMenu-DdLJnxNN.js → ContextMenu-C6hPYvYz.js} +299 -179
  72. package/dist/DateInput/index.d.ts +1 -1
  73. package/dist/DateInput/index.js +1 -1
  74. package/dist/{DateInput-u2XKccpK.js → DateInput-BjLdmYor.js} +567 -76
  75. package/dist/DateRangeInput/index.d.ts +1 -1
  76. package/dist/DateRangeInput/index.js +1 -1
  77. package/dist/{DateRangeInput-u7LhH6up.js → DateRangeInput-Br3wVEfD.js} +99 -28
  78. package/dist/DateTimeInput/index.d.ts +1 -1
  79. package/dist/DateTimeInput/index.js +1 -1
  80. package/dist/DateTimeInput-CAZBwoRe.js +562 -0
  81. package/dist/Dialog/index.d.ts +1 -1
  82. package/dist/Dialog/index.js +2 -2
  83. package/dist/{Dialog-BiOSKQso.js → Dialog-Dce4Y97V.js} +28 -11
  84. package/dist/{Dialog-FGHfDu5M.js → Dialog-fhyxB00e.js} +32 -5
  85. package/dist/Divider/index.d.ts +1 -1
  86. package/dist/Divider/index.js +1 -1
  87. package/dist/{Divider-BtwnL18I.js → Divider-mOZ6vIQw.js} +5 -1
  88. package/dist/DropdownMenu/index.d.ts +2 -2
  89. package/dist/DropdownMenu/index.js +3 -3
  90. package/dist/{DropdownMenu-SM_BEOgM.js → DropdownMenu-BdGmQVb1.js} +85 -57
  91. package/dist/{DropdownMenu-BEasdJ6R.js → DropdownMenu-BzQrNV9C.js} +481 -264
  92. package/dist/{DropdownMenuRadioItem.vue-CXEURBcq.d.ts → DropdownMenuRadioItem.vue-Qd-8Rg4Q.d.ts} +236 -230
  93. package/dist/EmptyState/index.js +1 -1
  94. package/dist/{EmptyState-C_GH7IV5.js → EmptyState-CmOQf2SH.js} +2 -2
  95. package/dist/Field/index.d.ts +4 -3
  96. package/dist/Field/index.js +4 -3
  97. package/dist/{Field-D5gUEGw4.js → Field--OEsLBfE.js} +4 -3
  98. package/dist/{FieldInfoTip-Ds-sW_jY.js → FieldInfoTip-gxsnfkZw.js} +3 -3
  99. package/dist/{FieldLabel-BNeXRuGH.js → FieldLabel-jxIiWgLw.js} +12 -7
  100. package/dist/FieldStatus/index.d.ts +1 -1
  101. package/dist/FileInput/index.d.ts +1 -1
  102. package/dist/FileInput/index.js +1 -1
  103. package/dist/{FileInput-BpdiO1V8.js → FileInput-B_pUxB0Y.js} +106 -29
  104. package/dist/FormLayout/index.d.ts +1 -1
  105. package/dist/FormLayout/index.js +1 -1
  106. package/dist/{FormLayout-D47FjiOq.js → FormLayout-B9dUB6Ps.js} +1 -1
  107. package/dist/Heading/index.d.ts +1 -1
  108. package/dist/Heading/index.js +1 -1
  109. package/dist/{Heading-BnwWEWkp.js → Heading-BzBunfN7.js} +1 -1
  110. package/dist/HoverCard/index.js +1 -1
  111. package/dist/{HoverCard-ycY50pRN.js → HoverCard-BpJhT0sn.js} +35 -22
  112. package/dist/Icon/index.d.ts +4 -4
  113. package/dist/Icon/index.js +1 -1
  114. package/dist/{Icon-bteSId7T.js → Icon-KDnUyY7f.js} +12 -20
  115. package/dist/IconButton/index.js +1 -1
  116. package/dist/{IconButton-DDNgNl7B.js → IconButton-DI-XBbtV.js} +1 -1
  117. package/dist/Indicator/index.d.ts +2 -2
  118. package/dist/Indicator/index.js +2 -1
  119. package/dist/InputClearButton-CwXPan8c.js +40 -0
  120. package/dist/InputGroup/index.d.ts +1 -1
  121. package/dist/InputGroup/index.js +2 -2
  122. package/dist/{InputGroup-CA03Smrs.js → InputGroup-DiiocoIW.js} +2 -2
  123. package/dist/InternationalizationProvider/index.d.ts +1 -1
  124. package/dist/InternationalizationProvider/index.js +1 -1
  125. package/dist/{InternationalizationProvider-DJay_w3B.js → InternationalizationProvider-kBapgKAQ.js} +5 -9
  126. package/dist/{Item-KhFKX9St.js → Item-DWMIjN8n.js} +34 -9
  127. package/dist/Kbd/index.js +1 -1
  128. package/dist/{Kbd-BB-Dw6zE.js → Kbd-CV3LO2Ge.js} +18 -2
  129. package/dist/LayerContentBoundary-CvsKxwwm.js +27 -0
  130. package/dist/LayerProvider/index.js +1 -1
  131. package/dist/{LayerProvider-D9NsQFzL.js → LayerProvider-B6zpMBWC.js} +15 -3
  132. package/dist/Layout/index.d.ts +1 -1
  133. package/dist/Layout/index.js +2 -2
  134. package/dist/{Layout-9X6eCUoY.js → Layout-JJRCG7Mf.js} +1 -1
  135. package/dist/{LayoutPanel-DeOh00p5.js → LayoutPanel-zM5vjrKS.js} +15 -8
  136. package/dist/Lightbox/index.js +1 -1
  137. package/dist/{Lightbox-DTF9EdTG.js → Lightbox-D8wyPgMK.js} +8 -6
  138. package/dist/Link/index.d.ts +2 -2
  139. package/dist/Link/index.js +1 -1
  140. package/dist/{Link-BqHCtiyt.js → Link-DweIpOtN.js} +29 -12
  141. package/dist/List/index.d.ts +1 -1
  142. package/dist/List/index.js +2 -2
  143. package/dist/{ListItem-8RWT8XAG.js → ListItem-BQXMu1Tb.js} +1 -1
  144. package/dist/Markdown/index.d.ts +5 -2
  145. package/dist/Markdown/index.js +5 -2
  146. package/dist/Markdown/parser/index.d.ts +4 -0
  147. package/dist/Markdown/parser/index.js +3 -0
  148. package/dist/Markdown/plugin-protocol/index.d.ts +35 -0
  149. package/dist/Markdown/plugin-protocol/index.js +107 -0
  150. package/dist/Markdown/plugin-renderer/index.d.ts +31 -0
  151. package/dist/Markdown/plugin-renderer/index.js +42 -0
  152. package/dist/{Markdown-2CVyZDuB.js → Markdown-DhVfOvXk.js} +195 -484
  153. package/dist/MediaTheme-DlLqYhDy.js +433 -0
  154. package/dist/MetadataList/index.js +1 -1
  155. package/dist/{MetadataList-B-OelQlt.js → MetadataList-CEYceIlN.js} +15 -7
  156. package/dist/MobileNav/index.js +1 -1
  157. package/dist/{MobileNavToggle-C3dkrM98.js → MobileNavToggle-pdoJFZHx.js} +60 -19
  158. package/dist/MoreMenu/index.d.ts +1 -1
  159. package/dist/MoreMenu/index.js +1 -1
  160. package/dist/{MoreMenu-D1WFGqGU.js → MoreMenu-CFNqSRev.js} +87 -67
  161. package/dist/MultiSelector/index.d.ts +1 -1
  162. package/dist/MultiSelector/index.js +1 -1
  163. package/dist/MultiSelector-DuVatmq5.js +1456 -0
  164. package/dist/{NavDisclosure-C_fugrQ3.js → NavDisclosure-Bq9DTZLO.js} +29 -7
  165. package/dist/{NavHeadingSurface-B3yJspSN.js → NavHeadingSurface-C4v_MtkX.js} +29 -26
  166. package/dist/NavItem/index.d.ts +1 -1
  167. package/dist/NavItem/index.js +2 -2
  168. package/dist/{NavItem-BBIGSvDj.js → NavItem-BPb3yfgz.js} +17 -4
  169. package/dist/NavMenu/index.d.ts +1 -1
  170. package/dist/NavMenu/index.js +3 -3
  171. package/dist/{NavMenu-ThXguZAz.js → NavMenu-BYIDzjix.js} +42 -15
  172. package/dist/{NavMenuItem-BvJNsDFC.js → NavMenuItem-D3FO90GR.js} +14 -12
  173. package/dist/NumberInput/index.d.ts +1 -1
  174. package/dist/NumberInput/index.js +1 -1
  175. package/dist/NumberInput-B0vzOg3N.js +727 -0
  176. package/dist/Outline/index.d.ts +2 -2
  177. package/dist/Outline/index.js +2 -2
  178. package/dist/{Outline-755h-lMP.js → Outline-CfGv2F1o.js} +91 -6
  179. package/dist/OverflowList/index.d.ts +2 -2
  180. package/dist/OverflowList/index.js +1 -1
  181. package/dist/{OverflowList-NmrSMbxb.js → OverflowList-BgRLZ3dh.js} +23 -6
  182. package/dist/Pagination/index.d.ts +1 -1
  183. package/dist/Pagination/index.js +1 -1
  184. package/dist/{Pagination-Cc4BrjQg.js → Pagination-Bfe12018.js} +2 -2
  185. package/dist/PickerWheel-CSwUYfes.js +69 -0
  186. package/dist/Popover/index.d.ts +1 -1
  187. package/dist/Popover/index.js +1 -1
  188. package/dist/{Popover-CtoBfVlD.js → Popover-78dFjTb9.js} +28 -17
  189. package/dist/PowerSearch/index.d.ts +1 -1
  190. package/dist/PowerSearch/index.js +1 -1
  191. package/dist/{PowerSearch-DHoiObLn.js → PowerSearch-BoAMdFaT.js} +776 -586
  192. package/dist/ProgressBar/index.d.ts +1 -1
  193. package/dist/ProgressBar/index.js +1 -1
  194. package/dist/{ProgressBar-CVLzdoBK.js → ProgressBar-VP4JS7vm.js} +10 -7
  195. package/dist/Radio/index.d.ts +1 -1
  196. package/dist/Radio/index.js +1 -1
  197. package/dist/{RadioGroup-Bfu6JSNV.js → RadioGroup-BIipql-L.js} +94 -26
  198. package/dist/RadioList/index.d.ts +1 -1
  199. package/dist/RadioList/index.js +1 -1
  200. package/dist/{RadioList-xY1cwLdZ.js → RadioList-GyhgBg4j.js} +57 -8
  201. package/dist/Resizable/index.d.ts +1 -1
  202. package/dist/Resizable/index.js +1 -1
  203. package/dist/{ResizeHandle-q4nD_586.js → ResizeHandle-TPlUCAHD.js} +103 -50
  204. package/dist/ScrollableArea/index.d.ts +1 -1
  205. package/dist/ScrollableArea/index.js +1 -1
  206. package/dist/{ScrollableArea-CJiaALHm.js → ScrollableArea-0u6RWtGG.js} +14 -3
  207. package/dist/Scrollbars/index.d.ts +2 -0
  208. package/dist/Scrollbars/index.js +3 -0
  209. package/dist/Scrollbars-D_93hJYK.js +75 -0
  210. package/dist/SegmentedControl/index.js +1 -1
  211. package/dist/{SegmentedControl-ChHmFrrC.js → SegmentedControl-D1wWGBZo.js} +11 -5
  212. package/dist/SelectableCard/index.d.ts +1 -1
  213. package/dist/SelectableCard/index.js +1 -1
  214. package/dist/{SelectableCard-Bj5s_tIN.js → SelectableCard-BEqnhPaX.js} +17 -12
  215. package/dist/Selector/index.d.ts +1 -1
  216. package/dist/Selector/index.js +1 -1
  217. package/dist/Selector-CPISLzp7.js +1049 -0
  218. package/dist/SideNav/index.d.ts +1 -1
  219. package/dist/SideNav/index.js +1 -1
  220. package/dist/{SideNav-Dtv8eA2j.js → SideNav-CN2QeAtY.js} +64 -41
  221. package/dist/Slider/index.d.ts +1 -1
  222. package/dist/Slider/index.js +1 -1
  223. package/dist/{Slider-DWobsPgm.js → Slider-pdC0jpHu.js} +172 -46
  224. package/dist/Spinner/index.js +1 -1
  225. package/dist/Spinner-DdVUadii.js +200 -0
  226. package/dist/Stack/index.d.ts +1 -1
  227. package/dist/Stack/index.js +2 -2
  228. package/dist/{Stack-CjQEavuq.js → Stack-Bb_h60t3.js} +10 -3
  229. package/dist/{Stack-D_Bhs-3r.js → Stack-Bp-XN9J4.js} +20 -9
  230. package/dist/StatusDot/index.d.ts +1 -1
  231. package/dist/StatusDot/index.js +1 -1
  232. package/dist/{StatusDot-BPUhMOff.js → StatusDot-BS_ohXhd.js} +8 -4
  233. package/dist/Stepper/index.d.ts +1 -1
  234. package/dist/Stepper/index.js +1 -1
  235. package/dist/{Stepper-CE8dHysu.js → Stepper-CyaSRSdu.js} +101 -79
  236. package/dist/Switch/index.d.ts +1 -1
  237. package/dist/Switch/index.js +1 -1
  238. package/dist/{Switch-DaVPRxvN.js → Switch-Z2Vfiiic.js} +38 -22
  239. package/dist/TabList/index.d.ts +2 -2
  240. package/dist/TabList/index.js +1 -1
  241. package/dist/{TabList-DIkK9sgK.js → TabList-DRqP0Hrv.js} +205 -63
  242. package/dist/Table/index.d.ts +3 -3
  243. package/dist/Table/index.js +1 -1
  244. package/dist/{Table-hqZMmzfU.js → Table-BcrrylMX.js} +727 -448
  245. package/dist/Text/index.d.ts +2 -2
  246. package/dist/Text/index.js +1 -1
  247. package/dist/{Text-CV3LmscH.js → Text-CmTOgYXf.js} +1 -1
  248. package/dist/TextArea/index.d.ts +1 -1
  249. package/dist/TextArea/index.js +1 -1
  250. package/dist/{TextArea-Ab5Sw60T.js → TextArea-DA9CCG_J.js} +104 -50
  251. package/dist/TextInput/index.d.ts +1 -1
  252. package/dist/TextInput/index.js +1 -1
  253. package/dist/{TextInput-zFT1_qgI.js → TextInput-CI96einV.js} +71 -38
  254. package/dist/Theme/index.d.ts +3 -3
  255. package/dist/Theme/index.js +3 -2
  256. package/dist/Theme-BbDT8B_C.js +2125 -0
  257. package/dist/Thumbnail/index.js +1 -1
  258. package/dist/{Thumbnail-C3NnJUFG.js → Thumbnail-B2ZAY59J.js} +13 -10
  259. package/dist/{TimeField-ByiJKBRM.js → TimeField-CpAgja9D.js} +299 -40
  260. package/dist/TimeInput/index.d.ts +1 -1
  261. package/dist/TimeInput/index.js +1 -1
  262. package/dist/{TimeInput-S8n946tp.js → TimeInput-Bw_lHS4M.js} +78 -9
  263. package/dist/Timer/index.d.ts +1 -1
  264. package/dist/Timer/index.js +1 -1
  265. package/dist/{Timer-avMQk5DN.js → Timer-CH7GsEVu.js} +1 -1
  266. package/dist/Timestamp/index.d.ts +1 -1
  267. package/dist/Timestamp/index.js +1 -1
  268. package/dist/{Timestamp-xpQKCk0d.js → Timestamp-BFNuoTZ0.js} +5 -5
  269. package/dist/Toast/index.d.ts +1 -1
  270. package/dist/Toast/index.js +1 -1
  271. package/dist/Toast-DwnPjx6j.js +685 -0
  272. package/dist/ToggleButton/index.d.ts +1 -1
  273. package/dist/ToggleButton/index.js +1 -1
  274. package/dist/{ToggleButton-B-C-Q7XP.js → ToggleButton-cLjh9W-x.js} +5 -4
  275. package/dist/Token/index.d.ts +1 -1
  276. package/dist/Token/index.js +1 -1
  277. package/dist/{Token-DsntTYhQ.js → Token-BfS4vi__.js} +32 -17
  278. package/dist/Tokenizer/index.d.ts +1 -1
  279. package/dist/Tokenizer/index.js +1 -1
  280. package/dist/{Tokenizer-41p035dX.js → Tokenizer-Ci3E5bvP.js} +109 -23
  281. package/dist/Toolbar/index.d.ts +2 -2
  282. package/dist/Toolbar/index.js +1 -1
  283. package/dist/{Toolbar-BrgvvTCk.js → Toolbar-C0pMWL4S.js} +1 -1
  284. package/dist/Tooltip/index.d.ts +1 -1
  285. package/dist/Tooltip/index.js +1 -1
  286. package/dist/{Tooltip-C4Vaqd3G.js → Tooltip-sAM8i1eO.js} +23 -19
  287. package/dist/TopNav/index.d.ts +1 -1
  288. package/dist/TopNav/index.js +1 -1
  289. package/dist/{TopNav-CeSeEMX3.js → TopNav-gW59zp1o.js} +16 -15
  290. package/dist/TreeList/index.d.ts +1 -1
  291. package/dist/TreeList/index.js +1 -1
  292. package/dist/{TreeList-BUz-KZJd.js → TreeList-DaoI7zaH.js} +124 -41
  293. package/dist/Typeahead/index.d.ts +1 -1
  294. package/dist/Typeahead/index.js +2 -2
  295. package/dist/{Typeahead-k3xhFxkr.js → Typeahead-D4JjvjK4.js} +125 -26
  296. package/dist/{TypeaheadMenu-DBW6rHeO.js → TypeaheadMenu-BQlMrfqX.js} +141 -51
  297. package/dist/{announce-Cnio10Wk.js → announce-B210eJVf.js} +17 -2
  298. package/dist/characterReferences-BJ-jLhsR.js +65 -0
  299. package/dist/characters-rcDbGt71.d.ts +29 -0
  300. package/dist/characters-wTnzjkkR.js +58 -0
  301. package/dist/{colorMode-CBgdgDSn.js → colorMode-BxqfDP4P.js} +1 -4
  302. package/dist/composables/index.d.ts +5 -4
  303. package/dist/composables/index.js +23 -18
  304. package/dist/{composables-CbKx9C1Y.js → composables-Bc02zKAO.js} +167 -197
  305. package/dist/context-B6UElI5X.js +5 -0
  306. package/dist/{context-Cfjh8te1.js → context-Cfml4jaK.js} +5 -3
  307. package/dist/{context-iABt_ueM.js → context-DWfi56sq.js} +451 -122
  308. package/dist/context-IvbU9c3T.js +8 -0
  309. package/dist/context-pjBxaMSh.js +28 -0
  310. package/dist/fieldParts--SyRZVQG.js +44 -0
  311. package/dist/fieldParts-LXpQMKE8.d.ts +27 -0
  312. package/dist/{focus-CpficIgf.js → focus-l8jVTcqd.js} +1 -1
  313. package/dist/hoverIntent-DMHGb85c.js +115 -0
  314. package/dist/{index-Cde5JvtX.d.ts → index-B-nESNam.d.ts} +8 -7
  315. package/dist/{index-CsNi1I8j.d.ts → index-B08-Uxhv.d.ts} +4 -2
  316. package/dist/{index-Cn-sSds-.d.ts → index-B56j4eI2.d.ts} +24 -1
  317. package/dist/{index-BJMJ09K-.d.ts → index-BEZ4ezJk.d.ts} +1 -1
  318. package/dist/{index-DeQwYJbg.d.ts → index-BNaRK-s5.d.ts} +10 -1
  319. package/dist/{index-CQCTKjIO.d.ts → index-BO9TY87G.d.ts} +5 -4
  320. package/dist/{index-BJSxFVXH.d.ts → index-BQEJj72c.d.ts} +21 -8
  321. package/dist/{index-BXk7Wng7.d.ts → index-BULhhnGf.d.ts} +1 -1
  322. package/dist/{index-D97pQbua.d.ts → index-BV2D2x_u.d.ts} +1 -1
  323. package/dist/{index-BPYzIIYn.d.ts → index-BZKgbyN9.d.ts} +2 -2
  324. package/dist/index-BkUkm6Al.d.ts +11 -0
  325. package/dist/{index-ClNU2Th8.d.ts → index-Bn-v89Vt.d.ts} +10 -6
  326. package/dist/{index-Bu8NA2SD.d.ts → index-BnEhvmdR.d.ts} +16 -7
  327. package/dist/index-Bo-ofFyg.d.ts +166 -0
  328. package/dist/{index-i0tNFWfz.d.ts → index-BqhgeAT4.d.ts} +2 -0
  329. package/dist/{index-DWh2WC8W.d.ts → index-C4Cjz6OK.d.ts} +2 -2
  330. package/dist/{index-B7yhzGUT.d.ts → index-C7sam-SB.d.ts} +2 -2
  331. package/dist/{index-BrJzFA5X.d.ts → index-C90l2rH1.d.ts} +1 -1
  332. package/dist/{index-vP0EtrJJ.d.ts → index-C9gAlDt_.d.ts} +6 -3
  333. package/dist/{index-csA1lH_0.d.ts → index-CJ6ajsUC.d.ts} +2 -2
  334. package/dist/{index-CY-KvZ9B.d.ts → index-CK-Dbh0f.d.ts} +1 -1
  335. package/dist/index-CKUfpmFL.d.ts +375 -0
  336. package/dist/{index-DXpSFlPG.d.ts → index-CKgBTAzC.d.ts} +4 -4
  337. package/dist/{index-EFqQF2Bx.d.ts → index-CPtDjmcX.d.ts} +4 -4
  338. package/dist/{index-12QYAbiz.d.ts → index-CRrSHbok.d.ts} +3 -2
  339. package/dist/{index-DG52Bg0W.d.ts → index-CTf3SK0b.d.ts} +6 -0
  340. package/dist/{index-BNy3SW4S.d.ts → index-CTjkJP4x.d.ts} +32 -3
  341. package/dist/{index-Ca8VIE4l.d.ts → index-CVn0GBdB.d.ts} +1 -1
  342. package/dist/{index-YKCx03zD.d.ts → index-CdvmnNMH.d.ts} +1 -1
  343. package/dist/{index-BUEPz7BL.d.ts → index-CikMzeab.d.ts} +3 -3
  344. package/dist/{index-CdtZjkmG.d.ts → index-CpNlPLBF.d.ts} +183 -129
  345. package/dist/{index-N7OVZ38M.d.ts → index-Cs1xsHKi.d.ts} +28 -16
  346. package/dist/{index-Cyb9Du5Z.d.ts → index-CtTGt6Dv.d.ts} +1 -1
  347. package/dist/{index-HV6W3xCx.d.ts → index-D05JGsT3.d.ts} +5 -2
  348. package/dist/{index-CsTbMVDS.d.ts → index-D0_HsuC3.d.ts} +4 -4
  349. package/dist/{index-BgT6mH3U.d.ts → index-D7ShT2c-.d.ts} +1 -1
  350. package/dist/{index-CkKPMIeX.d.ts → index-D7XRtUTY.d.ts} +9 -0
  351. package/dist/{index-TntQsADQ.d.ts → index-DEm3kRBO.d.ts} +4 -3
  352. package/dist/{index-DamRHh1i.d.ts → index-DLAG3m9W.d.ts} +11 -1
  353. package/dist/{index-DUnDGFQE.d.ts → index-DNA2l1RN.d.ts} +1 -1
  354. package/dist/{index-WnUY4Kxu.d.ts → index-DRJZ-v1E.d.ts} +4 -4
  355. package/dist/{index-DYp2RWkM.d.ts → index-DY8Wph-A.d.ts} +3 -3
  356. package/dist/{index-B1WJxt-n.d.ts → index-DfC05uKG.d.ts} +17 -7
  357. package/dist/{index-C5e-7Obr.d.ts → index-Dj1_1t3j.d.ts} +19 -6
  358. package/dist/{index-jW-mP58D.d.ts → index-Dr4b_oji.d.ts} +22 -15
  359. package/dist/{index-uKnRGtzi.d.ts → index-Ds201-d2.d.ts} +18 -4
  360. package/dist/{index-DIXAzTKL.d.ts → index-DxxudRgB.d.ts} +1 -1
  361. package/dist/{index-DQmK3Lq_.d.ts → index-IfsSCj8J.d.ts} +19 -6
  362. package/dist/{index-B1eCxBCY.d.ts → index-TXcNH86P.d.ts} +1 -1
  363. package/dist/{index-XuAAcYiP.d.ts → index-f3d9cVtj.d.ts} +1 -1
  364. package/dist/index-fAZaRruV.d.ts +125 -0
  365. package/dist/{index-D5N9ikrS.d.ts → index-hCpxKePE.d.ts} +1 -1
  366. package/dist/{index-T2FOcOuI.d.ts → index-jOwU3YoR.d.ts} +400 -90
  367. package/dist/{index-DdGck82Y.d.ts → index-pNtfr-RW.d.ts} +2 -2
  368. package/dist/{index-BhpAUzUr.d.ts → index-unAZVFGz.d.ts} +2 -2
  369. package/dist/index.d.ts +84 -77
  370. package/dist/index.js +151 -134
  371. package/dist/inlineSize-BNe8wggI.js +66 -0
  372. package/dist/inputPresentation-BOyHkCDr.js +62 -0
  373. package/dist/interactionModality-ACpTMhak.js +44 -0
  374. package/dist/isApplePlatform-B1ju6F5B.js +27 -0
  375. package/dist/isRenderable-BnKHIqfd.js +21 -0
  376. package/dist/layerDepth-CNDh-IHb.js +181 -0
  377. package/dist/link-DuuA2eCL.js +30 -0
  378. package/dist/{loadCatalog-BGHKG_9N.d.ts → loadCatalog-DlLFZreI.d.ts} +281 -7
  379. package/dist/loadCatalog-eopw74qb.js +424 -0
  380. package/dist/locale/index.d.ts +2 -2
  381. package/dist/locale/index.js +4 -3
  382. package/dist/locale-CabGJlGp.js +343 -0
  383. package/dist/modalOutlet-CUOcrhIu.js +56 -0
  384. package/dist/optionAction-Cg7xQLUA.d.ts +6 -0
  385. package/dist/{power-search-DrDfcoL1.d.ts → power-search-gHLIYXs5.d.ts} +2 -0
  386. package/dist/protocol-DHxY0NI8.js +113 -0
  387. package/dist/protocol-RSeMzAN1.d.ts +238 -0
  388. package/dist/publicParser-B0MRoikr.d.ts +141 -0
  389. package/dist/publicParser-uHC_T0Fo.js +895 -0
  390. package/dist/resizableChannel-3vivrEcT.js +20 -0
  391. package/dist/safeUrl-CsvfcZ9m.js +54 -0
  392. package/dist/scopedProvide-C-Df7c15.js +30 -0
  393. package/dist/scrollKeyboardDelegation-D7cumnOl.js +238 -0
  394. package/dist/scrollLock-C3aT4-0z.js +102 -0
  395. package/dist/{searchResultMessage-hXXNOFJP.js → searchResultMessage-mCpJBvra.js} +5 -14
  396. package/dist/{semantic-CKH9XVqa.d.ts → semantic-BF_AjLvk.d.ts} +6 -3
  397. package/dist/slug-C65CUsf9.js +32 -0
  398. package/dist/syntaxContext-DmIfNNtb.js +4 -0
  399. package/dist/triggerVariant-BsL8jMHs.js +16 -0
  400. package/dist/{types-0Q_SJv_F.d.ts → types-Bb7OGivY.d.ts} +6 -1
  401. package/dist/{types-H4Bbbxiw.d.ts → types-BnNTzEnd.d.ts} +1 -1
  402. package/dist/{types-CwyibrRB.d.ts → types-C5GQ2KCK.d.ts} +23 -3
  403. package/dist/{types-BBWrcHMD.d.ts → types-Ckih2YJi.d.ts} +3 -2
  404. package/dist/{types-gKsEkk2g.d.ts → types-CsqwQkf1.d.ts} +143 -10
  405. package/dist/upstreamMap-xr3gvREu.js +731 -0
  406. package/dist/{useAnchoredListbox-DwztMNjP.js → useAnchoredListbox-DGxxKHZb.js} +2 -2
  407. package/dist/{useAsyncSource-xpQovjV_.d.ts → useAsyncSource-aGzrvRkI.d.ts} +3 -0
  408. package/dist/{useClickableContainer-DyNpnSEa.js → useClickableContainer-CdGp_Cev.js} +1 -1
  409. package/dist/{useClipboard-BDfbEsWd.js → useClipboard-Dk8cS810.js} +1 -1
  410. package/dist/useHoverLayerDismiss-kYJ_NqL4.js +27 -0
  411. package/dist/{useIndicator-i1NORM7W.js → useIndicator-MZmfBWid.js} +5 -23
  412. package/dist/{useInputContainer-CpgDe2-4.js → useInputContainer-CLcYrby4.js} +1 -1
  413. package/dist/{useInputStatusIcon-DBOwxV4x.js → useInputStatusIcon-DAE7PExr.js} +1 -1
  414. package/dist/useLayerMountTarget-BmZyeKWE.js +156 -0
  415. package/dist/{useListFocus-D0iOJl39.js → useListFocus-ChxLg0b4.js} +3 -2
  416. package/dist/{useMenuDrillIn-DzKGkTho.js → useMenuDrillIn-DhUnPvKs.js} +6 -5
  417. package/dist/useMenuHover-Djreu23i.js +170 -0
  418. package/dist/useMenuPress-8foxY8z4.js +764 -0
  419. package/dist/{useMergedRefs-CfHHlCsn.js → useMergedRefs-Cb6_w93m.js} +24 -4
  420. package/dist/{useNumberField-4-dIGVed.js → useNumberField-Dk1BE3-K.js} +3 -3
  421. package/dist/useOptionActionGrid-CkJcuvaU.js +97 -0
  422. package/dist/{usePositionedLayer-Cru9_00b.js → usePositionedLayer-B7cvG-_v.js} +43 -49
  423. package/dist/usePressFeedback-BJCpjEpv.js +319 -0
  424. package/dist/{useResizable-DDwPpPe6.d.ts → useResizable-1MHPNaRD.d.ts} +19 -1
  425. package/dist/{useResizable-B3ahKLoZ.js → useResizable-I3BCiLSL.js} +72 -40
  426. package/dist/useResolvedLabelHidden-B2rlWiaI.js +30 -0
  427. package/dist/{useRestoreFocus-Djw9RUIf.js → useRestoreFocus-XEKs5-gp.js} +49 -7
  428. package/dist/useScrollOverflow-DuMoGXmm.js +67 -0
  429. package/dist/useScrollableArea-BE8b3qm7.js +222 -0
  430. package/dist/useScrollbars-C2NJ6Qwq.js +43 -0
  431. package/dist/{useTimeValue-6ufHM15W.js → useTimeValue-BJd0xBhG.js} +4 -22
  432. package/dist/useTranslator-BmWt2BBt.js +35 -0
  433. package/dist/{useTypeahead-PAK8lMYz.js → useTypeahead-BvtflkRk.js} +4 -5
  434. package/dist/utils/index.d.ts +3 -0
  435. package/dist/utils/index.js +5 -0
  436. package/dist/{utils-D33VQDnk.js → utils-ClVseK2w.js} +29 -2
  437. package/dist/utils-z3Q6BGIJ.js +819 -0
  438. package/locales/SOURCE.json +1 -1
  439. package/package.json +24 -3
  440. package/reset.css +364 -1
  441. package/styles/avatar-group.css +9 -1
  442. package/styles/badge.css +8 -5
  443. package/styles/banner.css +124 -26
  444. package/styles/blockquote.css +1 -0
  445. package/styles/bordered-control.css +1 -1
  446. package/styles/bottom-sheet.css +74 -6
  447. package/styles/breadcrumbs.css +16 -2
  448. package/styles/button-group.css +3 -1
  449. package/styles/button.css +53 -11
  450. package/styles/card.css +1 -1
  451. package/styles/chat.css +16 -6
  452. package/styles/checkbox-input.css +10 -0
  453. package/styles/clickable-card.css +10 -3
  454. package/styles/collapsible.css +12 -5
  455. package/styles/command-palette.css +29 -14
  456. package/styles/complex-selector.css +22 -5
  457. package/styles/context-menu.css +3 -3
  458. package/styles/date-input.css +111 -1
  459. package/styles/dialog-header.css +4 -1
  460. package/styles/dialog.css +7 -0
  461. package/styles/dropdown-menu.css +12 -3
  462. package/styles/field.css +5 -0
  463. package/styles/form-layout.css +1 -0
  464. package/styles/heading.css +18 -8
  465. package/styles/icon.css +4 -0
  466. package/styles/kbd.css +1 -1
  467. package/styles/layer.css +72 -0
  468. package/styles/list.css +9 -2
  469. package/styles/metadata-list.css +1 -0
  470. package/styles/mobile-nav.css +4 -1
  471. package/styles/multi-selector.css +48 -1
  472. package/styles/nav-item.css +9 -2
  473. package/styles/nav-menu.css +12 -2
  474. package/styles/number-input.css +9 -1
  475. package/styles/overflow-list.css +1 -1
  476. package/styles/popover.css +2 -1
  477. package/styles/power-search.css +5 -3
  478. package/styles/pressable.css +63 -22
  479. package/styles/progress-bar.css +15 -3
  480. package/styles/radio.css +16 -0
  481. package/styles/resize-handle.css +42 -0
  482. package/styles/scrollbars.css +28 -0
  483. package/styles/segmented-control.css +12 -4
  484. package/styles/selector.css +53 -1
  485. package/styles/side-nav.css +19 -0
  486. package/styles/slider.css +4 -3
  487. package/styles/spinner.css +48 -42
  488. package/styles/stepper.css +58 -4
  489. package/styles/switch.css +26 -0
  490. package/styles/tab-list.css +132 -3
  491. package/styles/table.css +88 -10
  492. package/styles/text-area.css +1 -1
  493. package/styles/text-input.css +1 -1
  494. package/styles/text.css +6 -6
  495. package/styles/thumbnail.css +11 -3
  496. package/styles/time-input.css +8 -0
  497. package/styles/toast.css +37 -3
  498. package/styles/token.css +2 -2
  499. package/styles/tokenizer.css +1 -1
  500. package/styles/toolbar.css +4 -1
  501. package/styles/tree-list.css +1 -1
  502. package/styles/typeahead.css +34 -1
  503. package/styles.css +1 -0
  504. package/dist/Blockquote-DFqBv_oJ.js +0 -18
  505. package/dist/Breadcrumbs-DPVaziH4.js +0 -141
  506. package/dist/ButtonGroup-ySQWanDP.js +0 -125
  507. package/dist/DateTimeInput-DHp683jZ.js +0 -268
  508. package/dist/MultiSelector-BeV98x7X.js +0 -988
  509. package/dist/NumberInput-AZ9x3oja.js +0 -473
  510. package/dist/Selector-DuVozKNq.js +0 -675
  511. package/dist/Spinner-9cYUCnDy.js +0 -84
  512. package/dist/Theme-CtaUWo4g.js +0 -1246
  513. package/dist/Toast-BuqIZV5z.js +0 -322
  514. package/dist/context-4PuqD1Ic.js +0 -4
  515. package/dist/context-D5-MwxnN.js +0 -4
  516. package/dist/index-BH9PzQ1F.d.ts +0 -87
  517. package/dist/link-C4_WogdF.js +0 -18
  518. package/dist/loadCatalog-CXKqEB9s.js +0 -877
  519. package/dist/locale-DgkZEMTn.js +0 -105
  520. package/dist/platform-B_9W_aHW.js +0 -33
  521. package/dist/scrollLock-BzIvIimL.js +0 -42
  522. package/dist/useMenuPress-D-FRNrBW.js +0 -573
  523. package/dist/useScrollableArea-DDk_CluT.js +0 -172
  524. /package/dist/{index-lgvUFSCO.d.ts → index-CryFtTT6.d.ts} +0 -0
@@ -0,0 +1,764 @@
1
+ import { getCurrentScope, onScopeDispose, toValue } from "vue";
2
+ //#region src/composables/useLongPress.ts
3
+ const DEFAULT_DELAY_MS = 500;
4
+ const DEFAULT_MOVE_CANCEL_PX = 10;
5
+ function touchPoint(event) {
6
+ const touch = event.touches?.[0] ?? event.changedTouches?.[0];
7
+ return touch == null ? null : {
8
+ x: touch.clientX,
9
+ y: touch.clientY
10
+ };
11
+ }
12
+ /**
13
+ * 对应原版 Astryx 的 `hooks/useLongPress`。
14
+ *
15
+ * Detect a single-finger long press.
16
+ *
17
+ * iOS Safari never synthesizes a `contextmenu` event for a held finger, so a
18
+ * long press is the only touch affordance that can open a cursor-positioned
19
+ * surface. The press is cancelled when the finger travels past the tolerance,
20
+ * lifts, a second finger lands, or the touch is cancelled.
21
+ *
22
+ * 两种绑法,同一个检测器:直接要触摸监听时把 `handlers` 摊到元素上;
23
+ * 自己已经在跑指针事件状态机时(`useMenuPress` 就是)调 `start` / `moveTo` / `cancel`。
24
+ * 按住时长、移动容差、计时器都在这里,所以长按在右键菜单和菜单触发器上是同一个意思。
25
+ */
26
+ function useLongPress(options) {
27
+ const delayMs = options.delayMs ?? DEFAULT_DELAY_MS;
28
+ const moveCancelPx = options.moveCancelPx ?? DEFAULT_MOVE_CANCEL_PX;
29
+ let timer = null;
30
+ let origin = null;
31
+ function isDisabled() {
32
+ return toValue(options.isDisabled) === true || toValue(options.disabled) === true;
33
+ }
34
+ function cancel() {
35
+ if (timer != null) {
36
+ clearTimeout(timer);
37
+ timer = null;
38
+ }
39
+ origin = null;
40
+ }
41
+ function start(point) {
42
+ if (isDisabled()) return;
43
+ cancel();
44
+ origin = {
45
+ x: point.x,
46
+ y: point.y
47
+ };
48
+ timer = setTimeout(() => {
49
+ const from = origin;
50
+ timer = null;
51
+ if (from == null) return;
52
+ options.onLongPress({
53
+ x: from.x,
54
+ y: from.y
55
+ });
56
+ }, delayMs);
57
+ }
58
+ function moveTo(point) {
59
+ if (origin == null) return false;
60
+ if (Math.abs(point.x - origin.x) > moveCancelPx || Math.abs(point.y - origin.y) > moveCancelPx) {
61
+ cancel();
62
+ return false;
63
+ }
64
+ return true;
65
+ }
66
+ /**
67
+ * A press needs exactly one finger. A second one cancels it, the way a
68
+ * lift does.
69
+ */
70
+ function onTouchStart(event) {
71
+ if ((event.touches?.length ?? 0) !== 1) {
72
+ cancel();
73
+ return;
74
+ }
75
+ const point = touchPoint(event);
76
+ if (point != null) start(point);
77
+ }
78
+ function onTouchMove(event) {
79
+ if (origin == null) return;
80
+ if ((event.touches?.length ?? 0) > 1) {
81
+ cancel();
82
+ return;
83
+ }
84
+ const point = touchPoint(event);
85
+ if (point != null) moveTo(point);
86
+ }
87
+ function onTouchEnd() {
88
+ cancel();
89
+ }
90
+ function onTouchCancel() {
91
+ cancel();
92
+ }
93
+ if (getCurrentScope() != null) onScopeDispose(cancel);
94
+ return {
95
+ cancel,
96
+ handlers: {
97
+ onTouchCancel,
98
+ onTouchEnd,
99
+ onTouchMove,
100
+ onTouchStart
101
+ },
102
+ moveTo,
103
+ start
104
+ };
105
+ }
106
+ //#endregion
107
+ //#region src/composables/internal/gestureCounter.ts
108
+ /**
109
+ * 手势计数器:每一次新的按下或按键,计数加一。
110
+ *
111
+ * 同一次按压里,浏览器的点外关闭和触发器自己的 click 谁先到是没准的。
112
+ * 比时间窗口只能猜,数手势不用猜:「属于关闭那次手势的 click」就是
113
+ * 「计数还停在关闭那一刻的 click」,不管主线程中间卡了多久。
114
+ *
115
+ * 监听挂在 document 的捕获阶段,在任何处理函数读它之前先加一。第一次读的时候才装,服务端不装。
116
+ */
117
+ let gesture = 0;
118
+ let isListening = false;
119
+ function advance() {
120
+ gesture += 1;
121
+ }
122
+ function markClicked() {}
123
+ function listen() {
124
+ if (isListening || typeof document === "undefined") return;
125
+ isListening = true;
126
+ document.addEventListener("pointerdown", advance, true);
127
+ document.addEventListener("keydown", advance, true);
128
+ document.addEventListener("click", markClicked, true);
129
+ }
130
+ /** 当前这次手势的编号。两次读到同一个数,说明它们在同一次按压(或同一次按键)里。 */
131
+ function currentGesture() {
132
+ listen();
133
+ return gesture;
134
+ }
135
+ const AUTOSCROLL_STEP_PX = 6;
136
+ const AUTOSCROLL_INTERVAL_MS = 16;
137
+ /** `onTick` 在每次真的滚动之后调用:行在静止的指针下面移动了,要重新看指针下是哪一行。 */
138
+ function createMenuAutoscroll(onTick) {
139
+ let running = null;
140
+ function stop() {
141
+ if (running != null) {
142
+ clearInterval(running.timer);
143
+ running = null;
144
+ }
145
+ }
146
+ function directionFor(event, scroller) {
147
+ const rect = scroller.getBoundingClientRect();
148
+ if (rect.height <= 0) return 0;
149
+ if (event.clientY <= rect.top + 24) return -1;
150
+ if (event.clientY >= rect.bottom - 24) return 1;
151
+ return 0;
152
+ }
153
+ function update(event, scroller) {
154
+ const direction = scroller == null ? 0 : directionFor(event, scroller);
155
+ if (direction === 0 || scroller == null) {
156
+ stop();
157
+ return;
158
+ }
159
+ if (running?.direction === direction) return;
160
+ stop();
161
+ const tick = () => {
162
+ const before = scroller.scrollTop;
163
+ scroller.scrollTop = before + direction * AUTOSCROLL_STEP_PX;
164
+ if (scroller.scrollTop === before) {
165
+ stop();
166
+ return;
167
+ }
168
+ onTick();
169
+ };
170
+ running = {
171
+ direction,
172
+ timer: setInterval(tick, AUTOSCROLL_INTERVAL_MS)
173
+ };
174
+ tick();
175
+ }
176
+ return {
177
+ stop,
178
+ update
179
+ };
180
+ }
181
+ /** 默认的滚动容器:菜单根自己溢出时就是它。 */
182
+ function overflowingMenu(menu) {
183
+ if (menu == null) return null;
184
+ return menu.scrollHeight > menu.clientHeight + 1 ? menu : null;
185
+ }
186
+ let isModelActivation = false;
187
+ /**
188
+ * 按压模型派发的那次行激活是不是正在进行。只在那次派发的同步过程中为真,
189
+ * 所以把激活转交给里面链接的行,能分清这是模型的 click 还是浏览器多出来的那个。
190
+ */
191
+ function isMenuPressActivation() {
192
+ return isModelActivation;
193
+ }
194
+ /** 在「模型激活」标记下执行一段同步代码。 */
195
+ function runAsMenuPressActivation(run) {
196
+ isModelActivation = true;
197
+ try {
198
+ run();
199
+ } finally {
200
+ isModelActivation = false;
201
+ }
202
+ }
203
+ let swallower = null;
204
+ function disarm() {
205
+ if (swallower == null) return;
206
+ swallower.isArmed = false;
207
+ if (swallower.timer != null) {
208
+ clearTimeout(swallower.timer);
209
+ swallower.timer = null;
210
+ }
211
+ }
212
+ function onWindowClickCapture(event) {
213
+ if (swallower == null || !swallower.isArmed) return;
214
+ if (event.detail === 0 || isModelActivation) return;
215
+ event.preventDefault();
216
+ event.stopImmediatePropagation();
217
+ disarm();
218
+ }
219
+ /** 布下吞 click 的口子。同一个文档只装一次监听。 */
220
+ function armStrayClick(doc) {
221
+ const view = doc.defaultView;
222
+ if (view == null) return;
223
+ if (swallower == null || swallower.doc !== doc) {
224
+ if (swallower != null) {
225
+ swallower.doc.defaultView?.removeEventListener("click", onWindowClickCapture, true);
226
+ swallower.doc.removeEventListener("pointerdown", disarm, true);
227
+ }
228
+ view.addEventListener("click", onWindowClickCapture, true);
229
+ doc.addEventListener("pointerdown", disarm, true);
230
+ swallower = {
231
+ doc,
232
+ isArmed: false,
233
+ timer: null
234
+ };
235
+ }
236
+ disarm();
237
+ swallower.isArmed = true;
238
+ swallower.timer = setTimeout(disarm, 400);
239
+ }
240
+ /** 撤掉已经布下的口子。卸载和测试里用。 */
241
+ function resetMenuPress() {
242
+ disarm();
243
+ }
244
+ //#endregion
245
+ //#region src/composables/internal/menuPressDom.ts
246
+ /** 带这个标记的菜单根用的是按压模型。嵌套的飞出层靠它分清一次按压归哪一层。 */
247
+ const MENU_PRESS_MARKER = "data-astryx-menu-press";
248
+ const MENU_PRESS_ROOT_SELECTOR = `[${MENU_PRESS_MARKER}]`;
249
+ /** 菜单里可用的行:三种菜单项角色,且没有 `aria-disabled="true"`。 */
250
+ const MENU_PRESS_ITEM_SELECTOR = [
251
+ "menuitem",
252
+ "menuitemradio",
253
+ "menuitemcheckbox"
254
+ ].map((role) => `[role="${role}"]:not([aria-disabled="true"])`).join(",");
255
+ const FOCUSABLE_ROW_SELECTOR = "[tabindex], a[href], button, input, select, textarea, [contenteditable]";
256
+ const INNER_CONTROL_SELECTOR = "a[href], button, [tabindex]";
257
+ function normalizePointerType(type) {
258
+ return type === "mouse" || type === "touch" || type === "pen" ? type : null;
259
+ }
260
+ /** 最外层带标记的根。飞出层如果是父菜单的 DOM 后代,算同一个菜单。 */
261
+ function getOutermostRoot(menu) {
262
+ let root = menu;
263
+ for (;;) {
264
+ const parent = root.parentElement?.closest(MENU_PRESS_ROOT_SELECTOR);
265
+ if (parent == null) return root;
266
+ root = parent;
267
+ }
268
+ }
269
+ /**
270
+ * 指针所在位置下的元素。
271
+ *
272
+ * 手指的指针事件一直发给它落下的那个元素,所以要按坐标找当前在它下面的是谁。
273
+ * 测试环境的 `elementFromPoint` 没有布局,答不出来时退回事件目标。
274
+ */
275
+ function elementUnder(event, doc, hitTest) {
276
+ const hit = hitTest != null ? hitTest(event.clientX, event.clientY) : typeof doc.elementFromPoint === "function" ? doc.elementFromPoint(event.clientX, event.clientY) : null;
277
+ if (hit != null) return hit;
278
+ return event.target instanceof Element ? event.target : null;
279
+ }
280
+ /** 指针下面是哪一行、在不在菜单里、在不在触发器上。 */
281
+ function resolvePoint(event, doc, input) {
282
+ const element = elementUnder(event, doc, input.hitTest);
283
+ const root = input.menu == null ? null : getOutermostRoot(input.menu);
284
+ const isInMenu = root != null && element != null && root.contains(element);
285
+ const isOnTrigger = input.trigger != null && element != null && input.trigger.contains(element);
286
+ let row = null;
287
+ if (isInMenu && element != null) {
288
+ row = element.closest(input.itemSelector);
289
+ if (row != null && !root.contains(row)) row = null;
290
+ }
291
+ return {
292
+ row,
293
+ isInMenu,
294
+ isOnTrigger
295
+ };
296
+ }
297
+ /**
298
+ * 默认的高亮:菜单里高亮就是 DOM 焦点(`preventScroll`)。
299
+ * 行本身不可聚焦时聚焦里面的控件;指针下没有行时把焦点放在菜单根上,这样没有一行亮着。
300
+ */
301
+ function focusHighlight(row, menu, doc) {
302
+ const target = row == null ? menu : row.matches(FOCUSABLE_ROW_SELECTOR) ? row : row.querySelector(INNER_CONTROL_SELECTOR);
303
+ if (target != null && target !== doc.activeElement) target.focus({ preventScroll: true });
304
+ }
305
+ /**
306
+ * 默认的执行:像这一行自己被点了一样,派发一次 click,带上松开时的按键和修饰键。
307
+ * `detail: 0` 表示这是派发出来的激活(键盘的也是 0),吞 click 的口子会放它过去。
308
+ */
309
+ function dispatchRowClick(row, release) {
310
+ runAsMenuPressActivation(() => {
311
+ row.dispatchEvent(new MouseEvent("click", {
312
+ bubbles: true,
313
+ cancelable: true,
314
+ composed: true,
315
+ detail: 0,
316
+ button: release.button ?? 0,
317
+ clientX: release.clientX,
318
+ clientY: release.clientY,
319
+ screenX: release.screenX,
320
+ screenY: release.screenY,
321
+ ctrlKey: release.ctrlKey,
322
+ shiftKey: release.shiftKey,
323
+ altKey: release.altKey,
324
+ metaKey: release.metaKey
325
+ }));
326
+ });
327
+ }
328
+ /** 手指按住触发器打开菜单之后,页面不能再在这根手指下面滚动。返回撤掉的函数。 */
329
+ function preventTouchScroll(doc) {
330
+ const prevent = (event) => {
331
+ if (event.cancelable) event.preventDefault();
332
+ };
333
+ doc.addEventListener("touchmove", prevent, {
334
+ passive: false,
335
+ capture: true
336
+ });
337
+ return () => doc.removeEventListener("touchmove", prevent, true);
338
+ }
339
+ //#endregion
340
+ //#region src/composables/internal/menuPressGesture.ts
341
+ /**
342
+ * 菜单按压的纯状态机。不碰 DOM,每一步都能脱离浏览器单测。
343
+ *
344
+ * 所有菜单和选择器共用这一套:指针**松开**时下面是哪一行,就由哪一行执行;
345
+ * 按住期间高亮跟着指针走。macOS 和 iOS 的菜单就是这样。
346
+ *
347
+ * 状态:
348
+ * - `idle`:没有手势。
349
+ * - `triggerPress`:手指按在触发器上,菜单还没开。鼠标不经过这一步,按下就开。
350
+ * - `open`:菜单在按住的指针下面打开了(鼠标按下,或手指按满长按时间),指针还没进菜单。
351
+ * - `tracking`:指针按着,高亮跟着它。
352
+ *
353
+ * 落定规则:打开菜单的那次按压,只有指针进过菜单、或者按满 `MENU_PRESS_SETTLE_MS`,
354
+ * 松开时才执行;否则什么都不执行,菜单保持打开。没有这条,一个在指针下面弹出的菜单
355
+ * 会替用户挑一行谁都没选的。
356
+ *
357
+ * 行是不透明的 `T`:调用方把指针下可用的那一行找出来喂进来,`null` 表示指针在分割线、
358
+ * 标题、禁用行上,或者在菜单外。
359
+ */
360
+ /** 打开菜单的那次按压至少要按多久,松开时才能执行。 */
361
+ const MENU_PRESS_SETTLE_MS = 300;
362
+ const IDLE_MENU_PRESS = { phase: "idle" };
363
+ const NONE = { type: "none" };
364
+ function idle(effect) {
365
+ return {
366
+ gesture: { phase: "idle" },
367
+ effect
368
+ };
369
+ }
370
+ function highlightEffect(row) {
371
+ return row == null ? { type: "clear" } : {
372
+ type: "highlight",
373
+ row
374
+ };
375
+ }
376
+ /**
377
+ * 高亮跟着指针时的松开:在可用行上就执行;在菜单的空白处什么都不执行;
378
+ * 在菜单外什么都不执行,鼠标还会关掉菜单(手指不关)。松回触发器上从不关。
379
+ */
380
+ function release(pointerType, event) {
381
+ if (event.row != null) return idle({
382
+ type: "act",
383
+ row: event.row
384
+ });
385
+ if (event.isInMenu || event.isOnTrigger) return idle({
386
+ type: "settle",
387
+ stray: true,
388
+ dismiss: false
389
+ });
390
+ return idle({
391
+ type: "settle",
392
+ stray: true,
393
+ dismiss: pointerType === "mouse"
394
+ });
395
+ }
396
+ function stepIdle(gesture, event) {
397
+ if (event.type !== "down") return {
398
+ gesture,
399
+ effect: NONE
400
+ };
401
+ if (event.target === "menu") return {
402
+ gesture: {
403
+ phase: "tracking",
404
+ pointerType: event.pointerType,
405
+ origin: "menu",
406
+ row: event.row
407
+ },
408
+ effect: highlightEffect(event.row)
409
+ };
410
+ if (event.pointerType === "mouse") return {
411
+ gesture: {
412
+ phase: "open",
413
+ pointerType: "mouse",
414
+ openedAt: event.time
415
+ },
416
+ effect: { type: "open" }
417
+ };
418
+ return {
419
+ gesture: {
420
+ phase: "triggerPress",
421
+ pointerType: event.pointerType,
422
+ startedAt: event.time
423
+ },
424
+ effect: NONE
425
+ };
426
+ }
427
+ function stepTriggerPress(gesture, event) {
428
+ switch (event.type) {
429
+ case "opened": return {
430
+ gesture: {
431
+ phase: "open",
432
+ pointerType: gesture.pointerType,
433
+ openedAt: event.time
434
+ },
435
+ effect: NONE
436
+ };
437
+ case "up": return idle({
438
+ type: "settle",
439
+ stray: false,
440
+ dismiss: false
441
+ });
442
+ case "cancel": return idle({
443
+ type: "settle",
444
+ stray: false,
445
+ dismiss: false
446
+ });
447
+ default: return {
448
+ gesture,
449
+ effect: NONE
450
+ };
451
+ }
452
+ }
453
+ function stepOpen(gesture, event) {
454
+ switch (event.type) {
455
+ case "move":
456
+ if (!event.isInMenu) return {
457
+ gesture,
458
+ effect: NONE
459
+ };
460
+ return {
461
+ gesture: {
462
+ phase: "tracking",
463
+ pointerType: gesture.pointerType,
464
+ origin: "trigger",
465
+ row: event.row
466
+ },
467
+ effect: highlightEffect(event.row)
468
+ };
469
+ case "up":
470
+ if (event.time - gesture.openedAt < 300) return idle({
471
+ type: "settle",
472
+ stray: true,
473
+ dismiss: false
474
+ });
475
+ return release(gesture.pointerType, event);
476
+ case "cancel": return idle({
477
+ type: "settle",
478
+ stray: false,
479
+ dismiss: false
480
+ });
481
+ default: return {
482
+ gesture,
483
+ effect: NONE
484
+ };
485
+ }
486
+ }
487
+ function stepTracking(gesture, event) {
488
+ switch (event.type) {
489
+ case "move":
490
+ if (event.row === gesture.row) return {
491
+ gesture,
492
+ effect: NONE
493
+ };
494
+ return {
495
+ gesture: {
496
+ ...gesture,
497
+ row: event.row
498
+ },
499
+ effect: highlightEffect(event.row)
500
+ };
501
+ case "up": return release(gesture.pointerType, event);
502
+ case "cancel": return idle({
503
+ type: "settle",
504
+ stray: false,
505
+ dismiss: false
506
+ });
507
+ default: return {
508
+ gesture,
509
+ effect: NONE
510
+ };
511
+ }
512
+ }
513
+ /** 往前走一步。纯函数:同样的输入,同样的输出。 */
514
+ function menuPressStep(gesture, event) {
515
+ switch (gesture.phase) {
516
+ case "idle": return stepIdle(gesture, event);
517
+ case "triggerPress": return stepTriggerPress(gesture, event);
518
+ case "open": return stepOpen(gesture, event);
519
+ case "tracking": return stepTracking(gesture, event);
520
+ }
521
+ }
522
+ //#endregion
523
+ //#region src/composables/useMenuPress.ts
524
+ /** 手指在触发器上按多久菜单才打开。 */
525
+ const MENU_PRESS_LONG_PRESS_MS = 500;
526
+ /**
527
+ * 对应原版 Astryx 的 `hooks/useMenuPress`。纯状态机见 `internal/menuPressGesture.ts`。
528
+ *
529
+ * 菜单里的一次按压,不管从触发器还是从菜单里开始,从头管到尾:
530
+ * - 按 `pointerId` 在文档层跟踪。手指的事件一直发给它落下的元素,所以只有文档看得见它滑到了哪。
531
+ * - 高亮跟着指针走。
532
+ * - **松开**位置那一行执行,就像它自己被点了一样,带上松开时的修饰键;浏览器为这次手势补的 click 被吞掉。
533
+ * - 鼠标按下触发器就打开;手指按住满 `longPressDelayMs` 才打开,然后可以一路滑进菜单挑行。
534
+ * - pointercancel、第二根手指、窗口失焦都以什么都不执行结束。滚动交给浏览器(菜单根上的 `touch-action`)。
535
+ * - 菜单会滚动时,按住的指针停在上下边缘附近,菜单自动朝那边滚。
536
+ */
537
+ function useMenuPress(options) {
538
+ let gesture = IDLE_MENU_PRESS;
539
+ let pointerId = null;
540
+ let detach = null;
541
+ let stopTouchPrevent = null;
542
+ let lastPointerEvent = null;
543
+ let triggerGesture = null;
544
+ /** 结束了上一次手势的那根「第二根手指」不能开始下一次。 */
545
+ let ignoredPointerId = null;
546
+ const isEnabled = () => toValue(options.isEnabled) ?? true;
547
+ const getDocument = () => options.menuRef.value?.ownerDocument ?? options.triggerRef?.value?.ownerDocument ?? document;
548
+ function pointAt(event) {
549
+ return resolvePoint(event, getDocument(), {
550
+ hitTest: options.hitTest,
551
+ itemSelector: options.itemSelector ?? MENU_PRESS_ITEM_SELECTOR,
552
+ menu: options.menuRef.value,
553
+ trigger: options.triggerRef?.value ?? null
554
+ });
555
+ }
556
+ const autoscroll = createMenuAutoscroll(() => {
557
+ if (lastPointerEvent != null) stepMove(lastPointerEvent);
558
+ });
559
+ const longPress = useLongPress({
560
+ delayMs: options.longPressDelayMs ?? MENU_PRESS_LONG_PRESS_MS,
561
+ onLongPress: fireLongPress
562
+ });
563
+ function endGesture() {
564
+ longPress.cancel();
565
+ stopTouchPrevent?.();
566
+ stopTouchPrevent = null;
567
+ autoscroll.stop();
568
+ detach?.();
569
+ detach = null;
570
+ pointerId = null;
571
+ lastPointerEvent = null;
572
+ gesture = IDLE_MENU_PRESS;
573
+ }
574
+ function highlight(row) {
575
+ if (options.onHighlight != null) options.onHighlight(row);
576
+ else focusHighlight(row, options.menuRef.value, getDocument());
577
+ }
578
+ function activate(row, release) {
579
+ if (options.onActivate != null) runAsMenuPressActivation(() => options.onActivate(row, release));
580
+ else dispatchRowClick(row, release);
581
+ }
582
+ function applyEffect(effect, native) {
583
+ const doc = getDocument();
584
+ switch (effect.type) {
585
+ case "none": return;
586
+ case "open": {
587
+ const pointerType = gesture.phase === "open" ? gesture.pointerType : "mouse";
588
+ triggerGesture = currentGesture();
589
+ if (!(options.onTriggerPress?.(pointerType) ?? false)) endGesture();
590
+ return;
591
+ }
592
+ case "highlight":
593
+ highlight(effect.row);
594
+ return;
595
+ case "clear":
596
+ highlight(null);
597
+ return;
598
+ case "act":
599
+ endGesture();
600
+ armStrayClick(doc);
601
+ if (native != null) activate(effect.row, native);
602
+ return;
603
+ case "settle":
604
+ endGesture();
605
+ if (effect.stray) armStrayClick(doc);
606
+ if (effect.dismiss) options.onDismiss?.();
607
+ }
608
+ }
609
+ function step(event, native) {
610
+ const result = menuPressStep(gesture, event);
611
+ gesture = result.gesture;
612
+ applyEffect(result.effect, native);
613
+ }
614
+ function stepMove(event) {
615
+ const point = pointAt(event);
616
+ step({
617
+ type: "move",
618
+ row: point.row,
619
+ isInMenu: point.isInMenu,
620
+ time: Date.now()
621
+ }, event);
622
+ }
623
+ function onDocumentMove(event) {
624
+ if (event.pointerId !== pointerId) return;
625
+ lastPointerEvent = event;
626
+ if (gesture.phase === "triggerPress") {
627
+ if (!longPress.moveTo({
628
+ x: event.clientX,
629
+ y: event.clientY
630
+ })) step({ type: "cancel" });
631
+ return;
632
+ }
633
+ stepMove(event);
634
+ if (gesture.phase === "tracking") autoscroll.update(event, options.getScroller != null ? options.getScroller() : overflowingMenu(options.menuRef.value));
635
+ else autoscroll.stop();
636
+ }
637
+ function onDocumentUp(event) {
638
+ if (event.pointerId !== pointerId) return;
639
+ const point = pointAt(event);
640
+ step({
641
+ type: "up",
642
+ row: point.row,
643
+ isInMenu: point.isInMenu,
644
+ isOnTrigger: point.isOnTrigger,
645
+ time: Date.now()
646
+ }, event);
647
+ }
648
+ function onDocumentCancel(event) {
649
+ if (event.pointerId === pointerId) step({ type: "cancel" });
650
+ }
651
+ function onOtherPointerDown(event) {
652
+ if (event.pointerId !== pointerId) {
653
+ ignoredPointerId = event.pointerId;
654
+ step({ type: "cancel" });
655
+ }
656
+ }
657
+ function onWindowBlur() {
658
+ step({ type: "cancel" });
659
+ }
660
+ function attach(id) {
661
+ detach?.();
662
+ const doc = getDocument();
663
+ const view = doc.defaultView;
664
+ pointerId = id;
665
+ doc.addEventListener("pointermove", onDocumentMove, true);
666
+ doc.addEventListener("pointerup", onDocumentUp, true);
667
+ doc.addEventListener("pointercancel", onDocumentCancel, true);
668
+ doc.addEventListener("pointerdown", onOtherPointerDown, true);
669
+ view?.addEventListener("blur", onWindowBlur);
670
+ detach = () => {
671
+ doc.removeEventListener("pointermove", onDocumentMove, true);
672
+ doc.removeEventListener("pointerup", onDocumentUp, true);
673
+ doc.removeEventListener("pointercancel", onDocumentCancel, true);
674
+ doc.removeEventListener("pointerdown", onOtherPointerDown, true);
675
+ view?.removeEventListener("blur", onWindowBlur);
676
+ };
677
+ }
678
+ function fireLongPress() {
679
+ if (gesture.phase !== "triggerPress") return;
680
+ triggerGesture = currentGesture();
681
+ if (!(options.onTriggerPress?.(gesture.pointerType) ?? false)) {
682
+ step({ type: "cancel" });
683
+ return;
684
+ }
685
+ stopTouchPrevent = preventTouchScroll(getDocument());
686
+ step({
687
+ type: "opened",
688
+ time: Date.now()
689
+ });
690
+ }
691
+ function consumeIgnored(event) {
692
+ if (event.pointerId !== ignoredPointerId) return false;
693
+ ignoredPointerId = null;
694
+ return true;
695
+ }
696
+ function onPointerDown(event) {
697
+ const menu = options.menuRef.value;
698
+ if (!isEnabled() || menu == null || consumeIgnored(event)) return;
699
+ if (gesture.phase !== "idle") {
700
+ step({ type: "cancel" });
701
+ return;
702
+ }
703
+ const pointerType = normalizePointerType(event.pointerType);
704
+ if (pointerType == null || pointerType === "mouse" && (event.button ?? 0) !== 0) return;
705
+ if ((event.target instanceof Element ? event.target : null)?.closest(MENU_PRESS_ROOT_SELECTOR) !== menu) return;
706
+ if (pointerType !== "mouse") event.preventDefault();
707
+ attach(event.pointerId);
708
+ lastPointerEvent = event;
709
+ step({
710
+ type: "down",
711
+ target: "menu",
712
+ pointerType,
713
+ row: pointAt(event).row,
714
+ time: Date.now()
715
+ }, event);
716
+ }
717
+ function onTriggerPointerDown(event) {
718
+ if (consumeIgnored(event) || !isEnabled() || gesture.phase !== "idle" || options.onTriggerPress == null) return;
719
+ const pointerType = normalizePointerType(event.pointerType);
720
+ if (pointerType == null || (event.button ?? 0) !== 0) return;
721
+ if (pointerType === "mouse" && event.ctrlKey) return;
722
+ attach(event.pointerId);
723
+ lastPointerEvent = event;
724
+ if (pointerType !== "mouse") longPress.start({
725
+ x: event.clientX,
726
+ y: event.clientY
727
+ });
728
+ step({
729
+ type: "down",
730
+ target: "trigger",
731
+ pointerType,
732
+ row: null,
733
+ time: Date.now()
734
+ }, event);
735
+ }
736
+ /** 手指按住触发器是在开菜单,不是要浏览器自己的长按菜单。鼠标右键不碰。 */
737
+ function onTriggerContextMenu(event) {
738
+ if (gesture.phase !== "idle" && gesture.pointerType !== "mouse") event.preventDefault();
739
+ }
740
+ function isTriggerClickFromPress() {
741
+ return triggerGesture != null && triggerGesture === currentGesture();
742
+ }
743
+ function cancel() {
744
+ if (gesture.phase !== "idle") step({ type: "cancel" });
745
+ endGesture();
746
+ }
747
+ currentGesture();
748
+ if (getCurrentScope() != null) onScopeDispose(endGesture);
749
+ return {
750
+ cancel,
751
+ isTriggerClickFromPress,
752
+ menuProps: {
753
+ "data-astryx-menu-press": "",
754
+ "onPointerdown": onPointerDown
755
+ },
756
+ onPointerDown,
757
+ triggerProps: {
758
+ onContextmenu: onTriggerContextMenu,
759
+ onPointerdown: onTriggerPointerDown
760
+ }
761
+ };
762
+ }
763
+ //#endregion
764
+ export { isMenuPressActivation as a, MENU_PRESS_MARKER as i, MENU_PRESS_SETTLE_MS as n, resetMenuPress as o, menuPressStep as r, useLongPress as s, useMenuPress as t };