@astryx-vue/core 0.2.3 → 0.2.4

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 (303) hide show
  1. package/THIRD_PARTY_NOTICES.md +2 -0
  2. package/dist/AlertDialog/index.js +1 -1
  3. package/dist/{AlertDialog-ovx4cBjM.js → AlertDialog-B6UeBCE7.js} +2 -2
  4. package/dist/AppShell/index.d.ts +1 -1
  5. package/dist/AppShell/index.js +1 -1
  6. package/dist/{AppShell-Dd-D4bA2.js → AppShell-CeBmB0Q9.js} +2 -2
  7. package/dist/Avatar/index.d.ts +1 -1
  8. package/dist/Avatar/index.js +1 -1
  9. package/dist/{Avatar-jmHInHwj.js → Avatar-BB4Z4LF1.js} +10 -4
  10. package/dist/AvatarGroup/index.d.ts +1 -1
  11. package/dist/Banner/index.d.ts +1 -1
  12. package/dist/BottomSheet/index.d.ts +2 -2
  13. package/dist/BottomSheet/index.js +3 -2
  14. package/dist/{BottomSheet-Dg95HB1s.js → BottomSheet-BV6vfgGu.js} +82 -22
  15. package/dist/BottomSheet-o7xw-TOi.js +153 -0
  16. package/dist/Breadcrumbs/index.d.ts +2 -2
  17. package/dist/Breadcrumbs/index.js +2 -2
  18. package/dist/{Breadcrumbs-CWGfgLNK.js → Breadcrumbs-D6G7f5WL.js} +1 -1
  19. package/dist/Button/index.d.ts +1 -1
  20. package/dist/ButtonGroup/index.d.ts +1 -1
  21. package/dist/Calendar/index.d.ts +1 -1
  22. package/dist/Calendar/index.js +1 -1
  23. package/dist/{Calendar-CnOsSjMY.js → Calendar-DmTeM7PO.js} +2 -2
  24. package/dist/Card/index.d.ts +1 -1
  25. package/dist/Carousel/index.js +1 -1
  26. package/dist/{Carousel-JA7ilqI_.js → Carousel-CIKrcA2r.js} +1 -1
  27. package/dist/Chat/index.d.ts +1 -1
  28. package/dist/Chat/index.js +1 -1
  29. package/dist/{Chat-C7WrCOE4.js → Chat-BFox3u9D.js} +1 -1
  30. package/dist/CheckboxInput/index.d.ts +1 -1
  31. package/dist/CheckboxList/index.d.ts +1 -1
  32. package/dist/CheckboxList/index.js +1 -1
  33. package/dist/{CheckboxList-CnCGnkZk.js → CheckboxList-BlPf7vPe.js} +4 -4
  34. package/dist/Citation/index.js +1 -1
  35. package/dist/{Citation-CtwrU33I.js → Citation-BG-vg9ia.js} +1 -1
  36. package/dist/ClickableCard/index.d.ts +1 -1
  37. package/dist/Code/index.d.ts +3 -3
  38. package/dist/Code/index.js +4 -4
  39. package/dist/{Code-BvefYRpx.js → Code-XnPuGxey.js} +1 -1
  40. package/dist/{CodeBlock-BZGzYeoL.js → CodeBlock-B2pnEOJY.js} +145 -15
  41. package/dist/Collapsible/index.d.ts +1 -1
  42. package/dist/CommandPalette/index.js +1 -1
  43. package/dist/{CommandPalette-BNbM9T9y.js → CommandPalette-DKgHzmJk.js} +10 -10
  44. package/dist/ComplexSelector/index.js +1 -1
  45. package/dist/{ComplexSelector-LtbLlrcj.js → ComplexSelector-Dv44FFhN.js} +1 -1
  46. package/dist/ContextMenu/index.d.ts +2 -2
  47. package/dist/ContextMenu/index.js +2 -2
  48. package/dist/{ContextMenu-DVQl0xL5.js → ContextMenu-BeJO5HYx.js} +4 -369
  49. package/dist/DateInput/index.d.ts +1 -1
  50. package/dist/DateInput/index.js +1 -1
  51. package/dist/{DateInput-zm8sNc0t.js → DateInput-D4XFAEMp.js} +3 -3
  52. package/dist/DateRangeInput/index.d.ts +1 -1
  53. package/dist/DateRangeInput/index.js +1 -1
  54. package/dist/{DateRangeInput-DlVFzrf7.js → DateRangeInput-Cp6AZfew.js} +2 -2
  55. package/dist/DateTimeInput/index.d.ts +1 -1
  56. package/dist/DateTimeInput/index.js +1 -1
  57. package/dist/{DateTimeInput-C7Z-p6Yd.js → DateTimeInput-B6MPPp76.js} +3 -3
  58. package/dist/Dialog/index.d.ts +1 -1
  59. package/dist/Divider/index.d.ts +1 -1
  60. package/dist/DropdownMenu/index.d.ts +2 -2
  61. package/dist/DropdownMenu/index.js +3 -3
  62. package/dist/{DropdownMenu-BoZChdev.js → DropdownMenu--lnUeJEG.js} +3 -3
  63. package/dist/{DropdownMenu-u1psFjis.js → DropdownMenu-6E9jFdFe.js} +4 -4
  64. package/dist/{DropdownMenuRadioItem.vue-uVM0FD2f.d.ts → DropdownMenuRadioItem.vue-CXEURBcq.d.ts} +1 -1
  65. package/dist/EmptyState/index.js +1 -1
  66. package/dist/{EmptyState-CUJdTYKV.js → EmptyState-0RWymQUS.js} +2 -2
  67. package/dist/FileInput/index.d.ts +1 -1
  68. package/dist/FileInput/index.js +1 -1
  69. package/dist/{FileInput-QdlZn7qK.js → FileInput-DuNwdbAo.js} +1 -1
  70. package/dist/Grid/index.d.ts +1 -1
  71. package/dist/Heading/index.d.ts +2 -2
  72. package/dist/Heading/index.js +1 -1
  73. package/dist/Heading-B9C3LZlS.js +94 -0
  74. package/dist/Indicator/index.d.ts +2 -2
  75. package/dist/InputGroup/index.d.ts +1 -1
  76. package/dist/Item-DrYJL1TG.js +590 -0
  77. package/dist/Lightbox/index.js +1 -1
  78. package/dist/{Lightbox-BSzfqZ-u.js → Lightbox-Br3o0SyQ.js} +1 -1
  79. package/dist/Link/index.d.ts +3 -2
  80. package/dist/Link/index.js +1 -1
  81. package/dist/Link-DCZ6922-.js +196 -0
  82. package/dist/List/index.d.ts +3 -3
  83. package/dist/List/index.js +2 -2
  84. package/dist/{ListItem-pGxvn6QJ.js → ListItem-CcRHWuEm.js} +8 -2
  85. package/dist/Markdown/index.d.ts +2 -2
  86. package/dist/Markdown/index.js +2 -2
  87. package/dist/{Markdown-B6tSqenv.js → Markdown-Bz0R3kNj.js} +274 -30
  88. package/dist/MetadataList/index.js +1 -1
  89. package/dist/{MetadataList-aN1tRn6W.js → MetadataList-CFaocx6j.js} +1 -1
  90. package/dist/MobileNav/index.js +1 -1
  91. package/dist/{MobileNavToggle-fqcSafkc.js → MobileNavToggle-Dh3uLivq.js} +1 -1
  92. package/dist/MoreMenu/index.d.ts +1 -1
  93. package/dist/MoreMenu/index.js +1 -1
  94. package/dist/{MoreMenu-B3brqdK_.js → MoreMenu-B95nRSe8.js} +2 -2
  95. package/dist/MultiSelector/index.d.ts +1 -1
  96. package/dist/MultiSelector/index.js +1 -1
  97. package/dist/{MultiSelector-BD5PMgez.js → MultiSelector-DuF5TECE.js} +4 -4
  98. package/dist/{NavDisclosure-DbYLDXK0.js → NavDisclosure-C6sPZ89n.js} +4 -1
  99. package/dist/NavHeadingSurface-Cb3x9iDx.js +287 -0
  100. package/dist/NavItem/index.d.ts +1 -1
  101. package/dist/NavMenu/index.d.ts +2 -2
  102. package/dist/NavMenu/index.js +4 -3
  103. package/dist/NavMenu-ClIgMaxE.js +176 -0
  104. package/dist/{NavMenuItem-DrwIMHKO.js → NavMenuItem-E7S8gBh-.js} +1 -1
  105. package/dist/NumberInput/index.d.ts +1 -1
  106. package/dist/NumberInput/index.js +1 -1
  107. package/dist/{NumberInput-CBeU4lEl.js → NumberInput-B4IL3s_8.js} +1 -1
  108. package/dist/Outline/index.js +1 -1
  109. package/dist/{Outline--HVMSB6i.js → Outline-DBUuchi9.js} +1 -1
  110. package/dist/OverflowList/index.d.ts +1 -1
  111. package/dist/OverflowList/index.js +1 -1
  112. package/dist/{OverflowList-FMh7r-r_.js → OverflowList-aDd_oem0.js} +3 -3
  113. package/dist/Pagination/index.d.ts +1 -1
  114. package/dist/Pagination/index.js +1 -1
  115. package/dist/{Pagination-DlIvESjx.js → Pagination-CNe9F6Fl.js} +181 -45
  116. package/dist/Popover/index.d.ts +1 -1
  117. package/dist/PowerSearch/index.d.ts +1 -1
  118. package/dist/PowerSearch/index.js +1 -1
  119. package/dist/{PowerSearch-CMG7Rb69.js → PowerSearch-C6U8Sq1Y.js} +13 -13
  120. package/dist/ProgressBar/index.d.ts +2 -2
  121. package/dist/ProgressBar/index.js +1 -1
  122. package/dist/{ProgressBar-DO9Chic6.js → ProgressBar-DF6WZNCI.js} +45 -6
  123. package/dist/Radio/index.d.ts +1 -1
  124. package/dist/RadioList/index.d.ts +1 -1
  125. package/dist/Resizable/index.js +1 -1
  126. package/dist/{Resizable-CXpvj1TZ.js → ResizeHandle-DYy0e3v9.js} +1 -1
  127. package/dist/ScrollableArea/index.d.ts +1 -1
  128. package/dist/SegmentedControl/index.d.ts +1 -1
  129. package/dist/SelectableCard/index.d.ts +1 -1
  130. package/dist/Selector/index.d.ts +1 -1
  131. package/dist/Selector/index.js +1 -1
  132. package/dist/{Selector-BpPnuWH3.js → Selector-5N-hq2nF.js} +3 -3
  133. package/dist/SideNav/index.d.ts +2 -2
  134. package/dist/SideNav/index.js +1 -1
  135. package/dist/{SideNav-D4TupqgE.js → SideNav-CT9lfspi.js} +225 -229
  136. package/dist/Stack/index.d.ts +1 -1
  137. package/dist/Stepper/index.d.ts +1 -1
  138. package/dist/Stepper/index.js +1 -1
  139. package/dist/{Stepper-H-6-T5Ps.js → Stepper-BqhVCgC-.js} +1 -1
  140. package/dist/Switch/index.d.ts +1 -1
  141. package/dist/TabList/index.d.ts +1 -1
  142. package/dist/Table/index.js +1 -1
  143. package/dist/{Table-nqA_njNz.js → Table-CsdH8fCB.js} +4 -4
  144. package/dist/Text/index.d.ts +3 -3
  145. package/dist/Text/index.js +1 -1
  146. package/dist/Text-DIzZw6FA.js +86 -0
  147. package/dist/TextArea/index.d.ts +1 -1
  148. package/dist/TextInput/index.d.ts +1 -1
  149. package/dist/Theme/index.d.ts +3 -3
  150. package/dist/Theme/index.js +2 -2
  151. package/dist/Theme-CtaUWo4g.js +1246 -0
  152. package/dist/Thumbnail/index.js +1 -1
  153. package/dist/{Thumbnail-CXb3m_Hv.js → Thumbnail-BnQwX1cQ.js} +2 -2
  154. package/dist/{TimeField-B3cndWb0.js → TimeField-Biiuv0hB.js} +1 -1
  155. package/dist/TimeInput/index.d.ts +1 -1
  156. package/dist/TimeInput/index.js +1 -1
  157. package/dist/{TimeInput-BHQ_LKGm.js → TimeInput-C9gptCOK.js} +1 -1
  158. package/dist/Timer/index.d.ts +1 -1
  159. package/dist/Timer/index.js +1 -1
  160. package/dist/{Timer-B7GV6hqd.js → Timer-kxzQx3tp.js} +1 -1
  161. package/dist/Timestamp/index.d.ts +1 -1
  162. package/dist/Timestamp/index.js +1 -1
  163. package/dist/{Timestamp-Cfuxbb3i.js → Timestamp-D7bd_nF3.js} +2 -2
  164. package/dist/ToggleButton/index.d.ts +1 -1
  165. package/dist/Token/index.d.ts +1 -1
  166. package/dist/Token/index.js +1 -1
  167. package/dist/{Token-CdVLH0_H.js → Token-D2GsI_Ei.js} +1 -1
  168. package/dist/Tokenizer/index.js +1 -1
  169. package/dist/{Tokenizer-DlD-S_8-.js → Tokenizer-rwzamZg4.js} +3 -3
  170. package/dist/Toolbar/index.d.ts +1 -1
  171. package/dist/Tooltip/index.d.ts +1 -1
  172. package/dist/Tooltip/index.js +1 -1
  173. package/dist/{Tooltip-mp0NMh_Y.js → Tooltip-C2fh9anJ.js} +23 -8
  174. package/dist/TopNav/index.d.ts +1 -1
  175. package/dist/TopNav/index.js +1 -1
  176. package/dist/{TopNav-DzV874G7.js → TopNav-arWFLTBM.js} +112 -42
  177. package/dist/TreeList/index.js +1 -1
  178. package/dist/{TreeList-DEwvlZRV.js → TreeList-C9xvMpJZ.js} +1 -1
  179. package/dist/Typeahead/index.d.ts +2 -2
  180. package/dist/Typeahead/index.js +3 -2
  181. package/dist/Typeahead-_V11btpv.js +499 -0
  182. package/dist/{TypeaheadMenu-CGvo0Tud.js → TypeaheadMenu-BEObzonz.js} +46 -10
  183. package/dist/composables/index.d.ts +2 -2
  184. package/dist/composables/index.js +4 -4
  185. package/dist/composables-CWw6t-RJ.js +520 -0
  186. package/dist/{context-DmOLCubj.js → context-CPh7kE-a.js} +58 -10
  187. package/dist/{index-BRfR0lhb.d.ts → index-12QYAbiz.d.ts} +1 -1
  188. package/dist/{index-DMQG6kdM.d.ts → index-6yB8BtEu.d.ts} +2 -2
  189. package/dist/{index-f4NGT-e2.d.ts → index-B4OOtNP8.d.ts} +3 -3
  190. package/dist/index-BBtJt5_A.d.ts +26 -0
  191. package/dist/{index-Ch6BbxCP.d.ts → index-BH9PzQ1F.d.ts} +13 -8
  192. package/dist/{index-MPcg1Pm4.d.ts → index-BKr7yvVv.d.ts} +1 -1
  193. package/dist/{index-D_UEJIU5.d.ts → index-BPwD6aBv.d.ts} +1 -1
  194. package/dist/{index-D1Twv_fL.d.ts → index-BcZI402h.d.ts} +4 -4
  195. package/dist/{index-C8wDPDcP.d.ts → index-Bi49IrAJ.d.ts} +50 -8
  196. package/dist/{index-B1x05arQ.d.ts → index-BlOIC_AM.d.ts} +1 -1
  197. package/dist/{index-C5p2NeCr.d.ts → index-Blm197N_.d.ts} +11 -2
  198. package/dist/{index-Bu3oXIIS.d.ts → index-BmmdzwT9.d.ts} +6 -0
  199. package/dist/{index-BMn9ghAX.d.ts → index-Bu0Zd1uw.d.ts} +3 -3
  200. package/dist/{index-Ctu32CLv.d.ts → index-BxhJqiZ7.d.ts} +2 -2
  201. package/dist/{index-CA6RbRWx.d.ts → index-By2mSzUA.d.ts} +1 -1
  202. package/dist/{index-HV6W3xCx.d.ts → index-Byar3h1e.d.ts} +1 -1
  203. package/dist/{index-LIyvJTW3.d.ts → index-C3GaPqvJ.d.ts} +84 -8
  204. package/dist/{index-DAiGhkNZ.d.ts → index-CFIXnk5D.d.ts} +1 -1
  205. package/dist/{index-ViSV0RBx.d.ts → index-CI9kyg74.d.ts} +12 -2
  206. package/dist/{index-C-QpeUlQ.d.ts → index-CNjbOgty.d.ts} +2 -2
  207. package/dist/{index-BB5yVIN-.d.ts → index-CUCcYKxl.d.ts} +3 -3
  208. package/dist/{index-Ca8VIE4l.d.ts → index-CVn0GBdB.d.ts} +1 -1
  209. package/dist/{index-xfkEuGLY.d.ts → index-CZeoAr0a.d.ts} +2 -2
  210. package/dist/{index-C2sfHfBw.d.ts → index-D-ezcKaY.d.ts} +3 -3
  211. package/dist/{index-BcJBLWJ0.d.ts → index-DA52oIdw.d.ts} +2 -2
  212. package/dist/{index-D7-WTV6I.d.ts → index-D_nYxnNv.d.ts} +1 -1
  213. package/dist/{index-Cm_TiLXU.d.ts → index-Dgg0bHVM.d.ts} +7 -3
  214. package/dist/index-DxR1FChm.d.ts +158 -0
  215. package/dist/{index-BTAgQRP0.d.ts → index-EtZgovdH.d.ts} +169 -81
  216. package/dist/{index-B9f1rUEv.d.ts → index-XuAAcYiP.d.ts} +1 -1
  217. package/dist/{index-D0TlUOtG.d.ts → index-YmSe1ujk.d.ts} +76 -3
  218. package/dist/{index-BMrggCw-.d.ts → index-bvr3WHvs.d.ts} +1 -1
  219. package/dist/{index-CDDMDHJM.d.ts → index-c67ca7eJ.d.ts} +1 -1
  220. package/dist/{index-D8o50qOE.d.ts → index-cL3q7O4R.d.ts} +32 -3
  221. package/dist/{index-CGZ2xi3r.d.ts → index-eshFLli0.d.ts} +40 -3
  222. package/dist/{index-DkVEBdWa.d.ts → index-fa72tWIU.d.ts} +2 -2
  223. package/dist/{index-COxy6LEW.d.ts → index-gW0HW02U.d.ts} +1 -1
  224. package/dist/{index-foQMNKZO.d.ts → index-hCpxKePE.d.ts} +49 -3
  225. package/dist/{index-DxsKyAxq.d.ts → index-vizlhXVs.d.ts} +131 -2
  226. package/dist/{index-DfgHJE7H.d.ts → index-z3uLM1O6.d.ts} +153 -24
  227. package/dist/index.d.ts +81 -80
  228. package/dist/index.js +118 -115
  229. package/dist/locale/index.d.ts +2 -2
  230. package/dist/locale/index.js +3 -3
  231. package/dist/locale-sLw5Caia.js +917 -0
  232. package/dist/{searchResultMessage-DN0HeRRB.js → searchResultMessage-CCnq-_ce.js} +1 -1
  233. package/dist/syntaxTheme-CwVEcVDk.d.ts +57 -0
  234. package/dist/{syntaxTheme-ClpWALZX.js → syntaxTheme-R7xnu5x5.js} +24 -3
  235. package/dist/{types-Bt-lSgYX.d.ts → types-D9nP_X-c.d.ts} +14 -1
  236. package/dist/{types-CAZY4Xua.d.ts → types-DGYHIu4I.d.ts} +30 -1
  237. package/dist/types-D_J66aPN.d.ts +85 -0
  238. package/dist/types-gKsEkk2g.d.ts +320 -0
  239. package/dist/{useMenuDrillIn-OaEwjK44.js → useMenuDrillIn-BgjJcY3K.js} +1 -1
  240. package/dist/useMenuPress-DUmEy4TB.js +425 -0
  241. package/dist/{composables-DDI08XFF.js → useResizable-B3ahKLoZ.js} +73 -248
  242. package/dist/useTruncation-B5qXQzAP.js +53 -0
  243. package/locales/SOURCE.json +37 -0
  244. package/locales/af-ZA.json +1482 -0
  245. package/locales/ar-SA.json +1482 -0
  246. package/locales/ca-ES.json +1482 -0
  247. package/locales/cs-CZ.json +1482 -0
  248. package/locales/da-DK.json +1482 -0
  249. package/locales/de-DE.json +1482 -0
  250. package/locales/el-GR.json +1482 -0
  251. package/locales/en.json +1646 -0
  252. package/locales/es-ES.json +1482 -0
  253. package/locales/fi-FI.json +1482 -0
  254. package/locales/fr-FR.json +1482 -0
  255. package/locales/he-IL.json +1482 -0
  256. package/locales/hu-HU.json +1482 -0
  257. package/locales/it-IT.json +1482 -0
  258. package/locales/ja-JP.json +1482 -0
  259. package/locales/ko-KR.json +1482 -0
  260. package/locales/nl-NL.json +1482 -0
  261. package/locales/no-NO.json +1482 -0
  262. package/locales/pl-PL.json +1482 -0
  263. package/locales/pt-BR.json +1482 -0
  264. package/locales/pt-PT.json +1482 -0
  265. package/locales/ro-RO.json +1482 -0
  266. package/locales/ru-RU.json +1482 -0
  267. package/locales/sr-SP.json +1482 -0
  268. package/locales/sv-SE.json +1482 -0
  269. package/locales/tr-TR.json +1482 -0
  270. package/locales/uk-UA.json +1482 -0
  271. package/locales/vi-VN.json +1482 -0
  272. package/locales/zh-CN.json +1482 -0
  273. package/locales/zh-TW.json +1482 -0
  274. package/package.json +3 -1
  275. package/styles/bottom-sheet.css +27 -0
  276. package/styles/code.css +62 -0
  277. package/styles/container-reveal.css +104 -0
  278. package/styles/heading.css +47 -0
  279. package/styles/keyboard-hint.css +28 -0
  280. package/styles/link.css +34 -0
  281. package/styles/list.css +88 -1
  282. package/styles/markdown.css +12 -0
  283. package/styles/pagination.css +30 -0
  284. package/styles/progress-bar.css +49 -0
  285. package/styles/side-nav.css +36 -1
  286. package/styles/text.css +18 -0
  287. package/styles/top-nav.css +145 -6
  288. package/styles/typeahead.css +24 -0
  289. package/styles.css +2 -0
  290. package/dist/Heading-Dugosn6j.js +0 -43
  291. package/dist/Item-C1z6gXn8.js +0 -289
  292. package/dist/Link-DqdQZ37C.js +0 -141
  293. package/dist/Text-BHVghsWo.js +0 -53
  294. package/dist/Theme-CejS9MHm.js +0 -447
  295. package/dist/Typeahead-DQ3tmqYe.js +0 -375
  296. package/dist/index-Bqb_Fyju.d.ts +0 -80
  297. package/dist/index-Dg3ZmwEg.d.ts +0 -75
  298. package/dist/locale-CCwVnyMZ.js +0 -42
  299. package/dist/syntaxTheme-Bcs1YMF7.d.ts +0 -38
  300. package/dist/types-jmqqnkKA.d.ts +0 -163
  301. package/dist/useHotkeys-dABSK1o9.js +0 -80
  302. package/dist/useLongPress-Cyxwa73s.js +0 -60
  303. package/dist/{index-BXkNZF3q.d.ts → index-IdK2g5B4.d.ts} +2 -2
@@ -1,126 +1,80 @@
1
- import { t as useMediaQuery } from "./useMediaQuery-GMmgp28-.js";
2
- import { computed, onBeforeUnmount, onMounted, reactive, ref, toValue, watch } from "vue";
3
- //#region src/composables/useControllableState.ts
4
- /**
5
- * 受控或自己管的 v-model。
6
- *
7
- * Astryx 没有同名 hook。各组件原来各自判断「外面传了值就听外面的,没传就自己记」,
8
- * 这里收成一个函数,方便以后的 v-model 共用。
9
- */
10
- function useControllableState(options) {
11
- const { modelValue, onChange } = options;
12
- const controlled = modelValue.value !== void 0;
13
- const local = ref(toValue(options.defaultValue));
14
- const isControlled = computed(() => controlled);
15
- const value = computed(() => controlled ? modelValue.value : local.value);
16
- function setValue(next) {
17
- if (Object.is(value.value, next)) return;
18
- if (controlled) modelValue.value = next;
19
- else local.value = next;
20
- onChange?.(next);
21
- }
22
- return {
23
- isControlled,
24
- setValue,
25
- value
26
- };
1
+ import { t as isApplePlatform } from "./platform-B_9W_aHW.js";
2
+ import { computed, onBeforeUnmount, onMounted, onScopeDispose, reactive, ref, toValue, watch } from "vue";
3
+ //#region src/composables/useHotkeys.ts
4
+ const KEY_ALIASES = {
5
+ esc: "escape",
6
+ space: " ",
7
+ up: "arrowup",
8
+ down: "arrowdown",
9
+ left: "arrowleft",
10
+ right: "arrowright",
11
+ return: "enter",
12
+ plus: "+"
13
+ };
14
+ function isTypingTarget(target) {
15
+ if (!(target instanceof HTMLElement)) return false;
16
+ if (target.isContentEditable) return true;
17
+ const tag = target.tagName;
18
+ return tag === "INPUT" || tag === "TEXTAREA" || tag === "SELECT";
19
+ }
20
+ function isImeKeyEvent(event) {
21
+ return event.isComposing === true || event.key === "Process" || event.keyCode === 229;
22
+ }
23
+ function matchesCombo(keys, event, isApple) {
24
+ const parts = keys.toLowerCase().split("+").map((part) => part.trim()).filter(Boolean);
25
+ if (parts.length === 0) return false;
26
+ const key = parts[parts.length - 1] ?? "";
27
+ const mods = new Set(parts.slice(0, -1));
28
+ const wantsMod = mods.has("mod");
29
+ const wantsCtrl = mods.has("ctrl") || wantsMod && !isApple;
30
+ const wantsMeta = mods.has("meta") || wantsMod && isApple;
31
+ const wantsAlt = mods.has("alt");
32
+ const wantsShift = mods.has("shift");
33
+ if (event.ctrlKey !== wantsCtrl) return false;
34
+ if (event.metaKey !== wantsMeta) return false;
35
+ if (event.altKey !== wantsAlt) return false;
36
+ if (wantsShift && !event.shiftKey) return false;
37
+ const expected = KEY_ALIASES[key] ?? key;
38
+ return event.key.toLowerCase() === expected;
27
39
  }
28
- //#endregion
29
- //#region src/composables/useGridRovingFocus.ts
30
40
  /**
31
- * 网格式导航(roving tabindex):用方向键在二维网格中移动焦点。
32
- * 供 Calendar、Pagination(如果需要)等组件复用。
41
+ * 对应原版 Astryx 的 `hooks/useHotkeys`。
42
+ *
43
+ * 一个实例只在 window 上挂一个 keydown。快捷键列表放在调用方,
44
+ * 重新渲染不会反复订阅。已经 preventDefault 的事件、输入法组合中的事件会跳过。
45
+ * 焦点在输入控件里时默认不触发,除非那一条写了 `allowInInputs`。
46
+ *
47
+ * 单个没有修饰键的字符(例如 `c`、`/`)很容易被语音输入误触。
48
+ * 如果注册这种快捷键,调用方需要提供关闭、改键,或只在组件有焦点时生效。
33
49
  */
34
- function useGridRovingFocus(options) {
35
- const { rows, columns, activeIndex, isEnabled = ref(true), isDisabled, onChange } = options;
36
- const row = ref(0);
37
- const column = ref(0);
38
- watch(activeIndex, (index) => {
39
- const cols = columns.value;
40
- if (cols > 0) {
41
- row.value = Math.floor(index / cols);
42
- column.value = index % cols;
43
- }
44
- }, { immediate: true });
45
- function indexFromRowCol(r, c) {
46
- return r * columns.value + c;
47
- }
48
- function moveTo(targetRow, targetCol) {
49
- if (!isEnabled.value) return;
50
- const r = Math.max(0, Math.min(targetRow, rows.value - 1));
51
- const c = Math.max(0, Math.min(targetCol, columns.value - 1));
52
- if (isDisabled?.(r, c)) return;
53
- const index = indexFromRowCol(r, c);
54
- onChange(index);
55
- }
56
- function moveUp() {
57
- moveTo(row.value - 1, column.value);
58
- }
59
- function moveDown() {
60
- moveTo(row.value + 1, column.value);
61
- }
62
- function moveLeft() {
63
- moveTo(row.value, column.value - 1);
64
- }
65
- function moveRight() {
66
- moveTo(row.value, column.value + 1);
67
- }
68
- function moveToFirstInRow() {
69
- moveTo(row.value, 0);
70
- }
71
- function moveToLastInRow() {
72
- moveTo(row.value, columns.value - 1);
73
- }
74
- function moveToFirstInColumn() {
75
- moveTo(0, column.value);
76
- }
77
- function moveToLastInColumn() {
78
- moveTo(rows.value - 1, column.value);
79
- }
80
- function onKeyDown(event) {
81
- if (!isEnabled.value) return;
82
- switch (event.key) {
83
- case "ArrowUp":
84
- event.preventDefault();
85
- moveUp();
86
- break;
87
- case "ArrowDown":
88
- event.preventDefault();
89
- moveDown();
90
- break;
91
- case "ArrowLeft":
92
- event.preventDefault();
93
- moveLeft();
94
- break;
95
- case "ArrowRight":
96
- event.preventDefault();
97
- moveRight();
98
- break;
99
- case "Home":
100
- event.preventDefault();
101
- if (event.ctrlKey) moveTo(0, 0);
102
- else moveToFirstInRow();
103
- break;
104
- case "End":
105
- event.preventDefault();
106
- if (event.ctrlKey) moveTo(rows.value - 1, columns.value - 1);
107
- else moveToLastInRow();
108
- break;
109
- case "PageUp":
110
- event.preventDefault();
111
- moveToFirstInColumn();
112
- break;
113
- case "PageDown":
114
- event.preventDefault();
115
- moveToLastInColumn();
50
+ function useHotkeys(hotkeys) {
51
+ let stop = null;
52
+ function start() {
53
+ if (typeof window === "undefined" || stop != null) return;
54
+ const isApple = isApplePlatform();
55
+ function handleKeyDown(event) {
56
+ if (event.defaultPrevented || isImeKeyEvent(event)) return;
57
+ const isTyping = isTypingTarget(event.target);
58
+ for (const hotkey of toValue(hotkeys)) {
59
+ if (hotkey.isDisabled) continue;
60
+ if (isTyping && hotkey.allowInInputs !== true) continue;
61
+ if (matchesCombo(hotkey.keys, event, isApple)) {
62
+ event.preventDefault();
63
+ hotkey.onPress(event);
64
+ return;
65
+ }
66
+ }
116
67
  }
68
+ window.addEventListener("keydown", handleKeyDown);
69
+ stop = () => {
70
+ window.removeEventListener("keydown", handleKeyDown);
71
+ stop = null;
72
+ };
117
73
  }
118
- return {
119
- row,
120
- column,
121
- onKeyDown,
122
- moveTo
123
- };
74
+ onMounted(start);
75
+ onScopeDispose(() => {
76
+ stop?.();
77
+ });
124
78
  }
125
79
  //#endregion
126
80
  //#region src/composables/useResizable.ts
@@ -467,133 +421,4 @@ function useResizable(options) {
467
421
  return useSingleRegion(options);
468
422
  }
469
423
  //#endregion
470
- //#region src/composables/useScrollOverflow.ts
471
- /**
472
- * 观察一个横向滚动容器,报告起始边和结束边有没有被挡住。
473
- * 容差 1px,滚动和尺寸变化都会重新量。
474
- */
475
- function useScrollOverflow() {
476
- const element = ref(null);
477
- const overflowStart = ref(false);
478
- const overflowEnd = ref(false);
479
- const hasOverflow = ref(false);
480
- let observer;
481
- function measure() {
482
- const node = element.value;
483
- if (node == null) return;
484
- const tolerance = 1;
485
- const maxScroll = node.scrollWidth - node.clientWidth;
486
- const nextStart = Math.abs(node.scrollLeft) > tolerance;
487
- const nextEnd = Math.abs(node.scrollLeft) < maxScroll - tolerance;
488
- const nextHas = node.scrollWidth > node.clientWidth + tolerance;
489
- overflowStart.value = nextStart;
490
- overflowEnd.value = nextEnd;
491
- hasOverflow.value = nextHas;
492
- }
493
- function scrollRef(node) {
494
- element.value?.removeEventListener("scroll", measure);
495
- observer?.disconnect();
496
- element.value = node;
497
- if (node == null) return;
498
- node.addEventListener("scroll", measure, { passive: true });
499
- if (typeof ResizeObserver !== "undefined") {
500
- observer = new ResizeObserver(measure);
501
- observer.observe(node);
502
- }
503
- measure();
504
- }
505
- onBeforeUnmount(() => {
506
- element.value?.removeEventListener("scroll", measure);
507
- observer?.disconnect();
508
- });
509
- return {
510
- scrollRef,
511
- overflowStart,
512
- overflowEnd,
513
- hasOverflow
514
- };
515
- }
516
- //#endregion
517
- //#region src/composables/useStreamingText.ts
518
- const CHARS_PER_TICK = {
519
- natural: 10,
520
- fast: 4,
521
- instant: Number.POSITIVE_INFINITY
522
- };
523
- const FALLBACK_DURATION_MS = 95;
524
- function parseCssDuration(value) {
525
- const milliseconds = /^([\d.]+)ms$/.exec(value.trim());
526
- if (milliseconds?.[1] != null) return Number(milliseconds[1]);
527
- const seconds = /^([\d.]+)s$/.exec(value.trim());
528
- if (seconds?.[1] != null) return Number(seconds[1]) * 1e3;
529
- return null;
530
- }
531
- function motionDuration() {
532
- if (typeof document === "undefined") return FALLBACK_DURATION_MS;
533
- return parseCssDuration(getComputedStyle(document.documentElement).getPropertyValue("--astryx-duration-fast-min")) ?? FALLBACK_DURATION_MS;
534
- }
535
- function tickInterval(speed) {
536
- if (speed === "instant") return 0;
537
- const duration = motionDuration();
538
- const tick = speed === "fast" ? duration / 20 : duration / 10;
539
- return Math.max(4, Math.round(tick));
540
- }
541
- const graphemeSegmenter = typeof Intl.Segmenter === "function" ? new Intl.Segmenter(void 0, { granularity: "grapheme" }) : null;
542
- function isLowSurrogate(codeUnit) {
543
- return codeUnit >= 56320 && codeUnit <= 57343;
544
- }
545
- /**
546
- * Move `offset` back to the start of the grapheme it lands inside, so a slice
547
- * never cuts a surrogate pair, a flag, or a ZWJ sequence in half.
548
- */
549
- function snapToGraphemeBoundary(text, offset) {
550
- if (offset <= 0 || offset >= text.length) return offset;
551
- if (graphemeSegmenter != null) return graphemeSegmenter.segment(text).containing(offset)?.index ?? offset;
552
- return isLowSurrogate(text.charCodeAt(offset)) ? offset - 1 : offset;
553
- }
554
- /**
555
- * Smooth a burst of streamed text into a steady reveal.
556
- * While `isStreaming` is false, or the user prefers reduced motion, the full
557
- * source is returned. The reveal steps by UTF-16 units and then snaps back to
558
- * a grapheme boundary.
559
- */
560
- function useStreamingText(targetText, isStreaming = false, options) {
561
- const displayedLen = ref(0);
562
- const prefersReducedMotion = useMediaQuery("(prefers-reduced-motion: reduce)");
563
- const target = computed(() => toValue(targetText));
564
- const streaming = computed(() => toValue(isStreaming));
565
- const speed = computed(() => toValue(options)?.speed ?? "natural");
566
- const instant = computed(() => !streaming.value || speed.value === "instant" || prefersReducedMotion.value);
567
- watch(target, (next, previous) => {
568
- if (next.length === 0 && (previous?.length ?? 0) > 0) displayedLen.value = 0;
569
- });
570
- watch(streaming, (next) => {
571
- if (!next) displayedLen.value = target.value.length;
572
- });
573
- watch(instant, (isInstant, _, onCleanup) => {
574
- if (isInstant) return;
575
- let frame = 0;
576
- let lastTick = 0;
577
- const tick = (now) => {
578
- const interval = tickInterval(speed.value);
579
- if (now - lastTick >= interval) {
580
- lastTick = now;
581
- const goal = target.value.length;
582
- if (displayedLen.value < goal) {
583
- const step = CHARS_PER_TICK[speed.value];
584
- displayedLen.value = Math.min(displayedLen.value + step, goal);
585
- }
586
- }
587
- frame = requestAnimationFrame(tick);
588
- };
589
- frame = requestAnimationFrame(tick);
590
- onCleanup(() => cancelAnimationFrame(frame));
591
- }, { immediate: true });
592
- return computed(() => {
593
- const text = target.value;
594
- if (instant.value) return text;
595
- return text.slice(0, snapToGraphemeBoundary(text, displayedLen.value));
596
- });
597
- }
598
- //#endregion
599
- export { useResizable as a, percent as i, useStreamingText as n, useGridRovingFocus as o, useScrollOverflow as r, useControllableState as s, snapToGraphemeBoundary as t };
424
+ export { useResizable as n, useHotkeys as r, percent as t };
@@ -0,0 +1,53 @@
1
+ import { onBeforeUnmount, ref, watch } from "vue";
2
+ //#region src/Text/useTruncation.ts
3
+ /** `false` 关掉提示。`true` 和缺省都出现在上方。 */
4
+ function truncatePlacement(value) {
5
+ if (value === false) return null;
6
+ if (value == null || value === true) return "above";
7
+ return value;
8
+ }
9
+ function useTruncation(maxLines) {
10
+ const isTruncated = ref(false);
11
+ const fullText = ref("");
12
+ let observer;
13
+ let node = null;
14
+ function measure() {
15
+ if (!node || maxLines.value <= 0) {
16
+ isTruncated.value = false;
17
+ fullText.value = "";
18
+ return;
19
+ }
20
+ fullText.value = node.textContent ?? "";
21
+ if (maxLines.value === 1) {
22
+ isTruncated.value = node.scrollWidth > node.clientWidth + 1;
23
+ return;
24
+ }
25
+ let contentHeight = node.scrollHeight;
26
+ try {
27
+ const range = node.ownerDocument.createRange();
28
+ range.selectNodeContents(node);
29
+ contentHeight = range.getBoundingClientRect().height;
30
+ range.detach();
31
+ } catch {}
32
+ isTruncated.value = contentHeight > node.clientHeight + 1;
33
+ }
34
+ function bind(value) {
35
+ observer?.disconnect();
36
+ observer = void 0;
37
+ node = value instanceof HTMLElement ? value : null;
38
+ if (node && typeof ResizeObserver !== "undefined") {
39
+ observer = new ResizeObserver(() => measure());
40
+ observer.observe(node);
41
+ }
42
+ measure();
43
+ }
44
+ watch(maxLines, () => measure());
45
+ onBeforeUnmount(() => observer?.disconnect());
46
+ return {
47
+ bind,
48
+ isTruncated,
49
+ fullText
50
+ };
51
+ }
52
+ //#endregion
53
+ export { useTruncation as n, truncatePlacement as t };
@@ -0,0 +1,37 @@
1
+ {
2
+ "repository": "https://github.com/facebook/astryx",
3
+ "path": "packages/core/locales",
4
+ "commit": "df75749470029f0b34680e13deac635f2d72c89d",
5
+ "files": [
6
+ "af-ZA.json",
7
+ "ar-SA.json",
8
+ "ca-ES.json",
9
+ "cs-CZ.json",
10
+ "da-DK.json",
11
+ "de-DE.json",
12
+ "el-GR.json",
13
+ "en.json",
14
+ "es-ES.json",
15
+ "fi-FI.json",
16
+ "fr-FR.json",
17
+ "he-IL.json",
18
+ "hu-HU.json",
19
+ "it-IT.json",
20
+ "ja-JP.json",
21
+ "ko-KR.json",
22
+ "nl-NL.json",
23
+ "no-NO.json",
24
+ "pl-PL.json",
25
+ "pt-BR.json",
26
+ "pt-PT.json",
27
+ "ro-RO.json",
28
+ "ru-RU.json",
29
+ "sr-SP.json",
30
+ "sv-SE.json",
31
+ "tr-TR.json",
32
+ "uk-UA.json",
33
+ "vi-VN.json",
34
+ "zh-CN.json",
35
+ "zh-TW.json"
36
+ ]
37
+ }