@qw-ui/core 0.3.0-next.9 → 0.3.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 (415) hide show
  1. package/README.md +21 -37
  2. package/dist/action-sheet/action-sheet.d.ts +110 -0
  3. package/dist/action-sheet/index.d.ts +2 -0
  4. package/dist/action-sheet/index.js +2 -0
  5. package/dist/action-sheet-Cvcr1S_m.js +183 -0
  6. package/dist/action-sheet-Cvcr1S_m.js.map +1 -0
  7. package/dist/area-picker/area-picker.d.ts +113 -0
  8. package/dist/area-picker/index.d.ts +1 -0
  9. package/dist/area-picker/index.js +348 -0
  10. package/dist/area-picker/index.js.map +1 -0
  11. package/dist/aria-description-CimD2M_C.js +13 -0
  12. package/dist/aria-description-CimD2M_C.js.map +1 -0
  13. package/dist/aria-description.d.ts +2 -0
  14. package/dist/avatar/avatar-load.d.ts +76 -0
  15. package/dist/avatar/avatar.d.ts +22 -5
  16. package/dist/avatar/index.d.ts +1 -0
  17. package/dist/avatar/index.js +57 -18
  18. package/dist/avatar/index.js.map +1 -1
  19. package/dist/avatar-load-w9dq05oV.js +139 -0
  20. package/dist/avatar-load-w9dq05oV.js.map +1 -0
  21. package/dist/back-top/back-top.d.ts +77 -0
  22. package/dist/back-top/index.d.ts +1 -0
  23. package/dist/back-top/index.js +189 -0
  24. package/dist/back-top/index.js.map +1 -0
  25. package/dist/badge/badge.d.ts +85 -0
  26. package/dist/badge/index.d.ts +1 -0
  27. package/dist/badge/index.js +88 -0
  28. package/dist/badge/index.js.map +1 -0
  29. package/dist/button/button.d.ts +13 -0
  30. package/dist/button/index.js +3 -5
  31. package/dist/button/index.js.map +1 -1
  32. package/dist/calendar/calendar.d.ts +100 -0
  33. package/dist/calendar/index.d.ts +1 -0
  34. package/dist/calendar/index.js +2 -0
  35. package/dist/calendar-CmpK3stz.js +363 -0
  36. package/dist/calendar-CmpK3stz.js.map +1 -0
  37. package/dist/card/card.d.ts +68 -0
  38. package/dist/card/index.d.ts +2 -0
  39. package/dist/card/index.js +2 -0
  40. package/dist/card-DRtWa6Cr.js +107 -0
  41. package/dist/card-DRtWa6Cr.js.map +1 -0
  42. package/dist/cascader/cascader.d.ts +115 -0
  43. package/dist/cascader/index.d.ts +1 -0
  44. package/dist/cascader/index.js +2 -0
  45. package/dist/cascader-D-xMjs7P.js +333 -0
  46. package/dist/cascader-D-xMjs7P.js.map +1 -0
  47. package/dist/cell/cell.d.ts +41 -0
  48. package/dist/cell/index.d.ts +1 -0
  49. package/dist/cell/index.js +43 -0
  50. package/dist/cell/index.js.map +1 -0
  51. package/dist/check-list/check-list.d.ts +78 -0
  52. package/dist/check-list/index.d.ts +2 -0
  53. package/dist/check-list/index.js +2 -0
  54. package/dist/check-list-BvZHQt5w.js +60 -0
  55. package/dist/check-list-BvZHQt5w.js.map +1 -0
  56. package/dist/checkbox/checkbox.d.ts +59 -0
  57. package/dist/checkbox/index.d.ts +2 -0
  58. package/dist/checkbox/index.js +2 -0
  59. package/dist/checkbox-BlndJrz5.js +127 -0
  60. package/dist/checkbox-BlndJrz5.js.map +1 -0
  61. package/dist/checkbox-group/checkbox-group.d.ts +86 -0
  62. package/dist/checkbox-group/index.d.ts +3 -0
  63. package/dist/checkbox-group/index.js +2 -0
  64. package/dist/checkbox-group-gGfsTv-e.js +223 -0
  65. package/dist/checkbox-group-gGfsTv-e.js.map +1 -0
  66. package/dist/choice-group-C4c9m0qe.js +373 -0
  67. package/dist/choice-group-C4c9m0qe.js.map +1 -0
  68. package/dist/circle/circle.d.ts +97 -0
  69. package/dist/circle/index.d.ts +1 -0
  70. package/dist/circle/index.js +119 -0
  71. package/dist/circle/index.js.map +1 -0
  72. package/dist/collapse/collapse.d.ts +98 -0
  73. package/dist/collapse/index.d.ts +2 -0
  74. package/dist/collapse/index.js +2 -0
  75. package/dist/collapse-B969h7-H.js +226 -0
  76. package/dist/collapse-B969h7-H.js.map +1 -0
  77. package/dist/countdown/countdown.d.ts +114 -0
  78. package/dist/countdown/index.d.ts +1 -0
  79. package/dist/countdown/index.js +309 -0
  80. package/dist/countdown/index.js.map +1 -0
  81. package/dist/date-picker/date-picker.d.ts +168 -0
  82. package/dist/date-picker/index.d.ts +1 -0
  83. package/dist/date-picker/index.js +401 -0
  84. package/dist/date-picker/index.js.map +1 -0
  85. package/dist/descriptions/descriptions.d.ts +69 -0
  86. package/dist/descriptions/index.d.ts +1 -0
  87. package/dist/descriptions/index.js +86 -0
  88. package/dist/descriptions/index.js.map +1 -0
  89. package/dist/dialog/dialog.d.ts +61 -43
  90. package/dist/dialog/index.js +73 -19
  91. package/dist/dialog/index.js.map +1 -1
  92. package/dist/divider/divider.d.ts +18 -2
  93. package/dist/divider/index.js +20 -2
  94. package/dist/divider/index.js.map +1 -1
  95. package/dist/dropdown/dropdown.d.ts +172 -0
  96. package/dist/dropdown/index.d.ts +2 -0
  97. package/dist/dropdown/index.js +467 -0
  98. package/dist/dropdown/index.js.map +1 -0
  99. package/dist/ellipsis/ellipsis-layout.d.ts +34 -0
  100. package/dist/ellipsis/ellipsis.d.ts +88 -0
  101. package/dist/ellipsis/index.d.ts +2 -0
  102. package/dist/ellipsis/index.js +320 -0
  103. package/dist/ellipsis/index.js.map +1 -0
  104. package/dist/empty/empty-illustration.d.ts +3 -0
  105. package/dist/empty/empty.d.ts +43 -1
  106. package/dist/empty/index.js +2 -21
  107. package/dist/empty-CAgyvhUI.js +166 -0
  108. package/dist/empty-CAgyvhUI.js.map +1 -0
  109. package/dist/field/field.d.ts +95 -0
  110. package/dist/field/index.d.ts +2 -0
  111. package/dist/field/index.js +2 -0
  112. package/dist/field-DMHGIMZF.js +241 -0
  113. package/dist/field-DMHGIMZF.js.map +1 -0
  114. package/dist/floating-bubble/floating-bubble.d.ts +116 -0
  115. package/dist/floating-bubble/index.d.ts +1 -0
  116. package/dist/floating-bubble/index.js +333 -0
  117. package/dist/floating-bubble/index.js.map +1 -0
  118. package/dist/floating-panel/floating-panel.d.ts +80 -0
  119. package/dist/floating-panel/index.d.ts +2 -0
  120. package/dist/floating-panel/index.js +2 -0
  121. package/dist/floating-panel-Cbm5njBJ.js +363 -0
  122. package/dist/floating-panel-Cbm5njBJ.js.map +1 -0
  123. package/dist/footer/footer.d.ts +94 -0
  124. package/dist/footer/index.d.ts +1 -0
  125. package/dist/footer/index.js +154 -0
  126. package/dist/footer/index.js.map +1 -0
  127. package/dist/form/connect.d.ts +6 -0
  128. package/dist/form/form.d.ts +100 -0
  129. package/dist/form/ids.d.ts +14 -0
  130. package/dist/form/index.d.ts +13 -0
  131. package/dist/form/index.js +3 -0
  132. package/dist/form/methods.d.ts +5 -0
  133. package/dist/form/model.d.ts +24 -0
  134. package/dist/form/native.d.ts +25 -0
  135. package/dist/form/rules.d.ts +40 -0
  136. package/dist/form/ssr.d.ts +7 -0
  137. package/dist/form/types.d.ts +150 -0
  138. package/dist/form-BAGkIEMY.js +1354 -0
  139. package/dist/form-BAGkIEMY.js.map +1 -0
  140. package/dist/format-BDUY0C_c.js +89 -0
  141. package/dist/format-BDUY0C_c.js.map +1 -0
  142. package/dist/gesture-_SRHIvBm.js +30 -0
  143. package/dist/gesture-_SRHIvBm.js.map +1 -0
  144. package/dist/grid/grid-item.d.ts +22 -0
  145. package/dist/grid/grid.d.ts +42 -0
  146. package/dist/grid/index.d.ts +2 -0
  147. package/dist/grid/index.js +73 -0
  148. package/dist/grid/index.js.map +1 -0
  149. package/dist/icon/icon.d.ts +37 -1
  150. package/dist/icon/identity.d.ts +3 -0
  151. package/dist/icon/index.js +2 -20
  152. package/dist/icon-Cgdbnk1u.js +77 -0
  153. package/dist/icon-Cgdbnk1u.js.map +1 -0
  154. package/dist/image/image-load.d.ts +24 -0
  155. package/dist/image/image.d.ts +45 -8
  156. package/dist/image/index.d.ts +1 -0
  157. package/dist/image/index.js +116 -14
  158. package/dist/image/index.js.map +1 -1
  159. package/dist/image-preview/image-preview.d.ts +124 -0
  160. package/dist/image-preview/index.d.ts +1 -0
  161. package/dist/image-preview/index.js +450 -0
  162. package/dist/image-preview/index.js.map +1 -0
  163. package/dist/index-bar/index-bar.d.ts +121 -0
  164. package/dist/index-bar/index.d.ts +1 -0
  165. package/dist/index-bar/index.js +386 -0
  166. package/dist/index-bar/index.js.map +1 -0
  167. package/dist/index.d.ts +115 -10
  168. package/dist/index.js +151 -11
  169. package/dist/index.js.map +1 -0
  170. package/dist/infinite-scroll/index.d.ts +1 -0
  171. package/dist/infinite-scroll/index.js +248 -0
  172. package/dist/infinite-scroll/index.js.map +1 -0
  173. package/dist/infinite-scroll/infinite-scroll.d.ts +95 -0
  174. package/dist/input/index.js +181 -22
  175. package/dist/input/index.js.map +1 -1
  176. package/dist/input/input.d.ts +44 -1
  177. package/dist/layer-IpFrl5--.js +414 -0
  178. package/dist/layer-IpFrl5--.js.map +1 -0
  179. package/dist/layout-BRSqi4AQ.js +43 -0
  180. package/dist/layout-BRSqi4AQ.js.map +1 -0
  181. package/dist/layout.d.ts +13 -0
  182. package/dist/list/index.d.ts +2 -0
  183. package/dist/list/index.js +2 -0
  184. package/dist/list/list.d.ts +30 -0
  185. package/dist/list-6-iz-Irh.js +28 -0
  186. package/dist/list-6-iz-Irh.js.map +1 -0
  187. package/dist/loading/index.js +45 -2
  188. package/dist/loading/index.js.map +1 -1
  189. package/dist/loading/loading.d.ts +45 -2
  190. package/dist/modal-dialog-machine-CF9_z3Dm.js +487 -0
  191. package/dist/modal-dialog-machine-CF9_z3Dm.js.map +1 -0
  192. package/dist/modal-dialog-machine.d.ts +21 -0
  193. package/dist/modal-dismissable-lifetime.d.ts +21 -0
  194. package/dist/modal-registry.d.ts +24 -0
  195. package/dist/modal-render-hydration.d.ts +35 -0
  196. package/dist/modal-render-runtime.d.ts +19 -0
  197. package/dist/modal-render-scope.d.ts +63 -0
  198. package/dist/nav-bar/index.d.ts +1 -0
  199. package/dist/nav-bar/index.js +115 -0
  200. package/dist/nav-bar/index.js.map +1 -0
  201. package/dist/nav-bar/nav-bar.d.ts +76 -0
  202. package/dist/notice-bar/index.d.ts +2 -0
  203. package/dist/notice-bar/index.js +2 -0
  204. package/dist/notice-bar/notice-bar.d.ts +103 -0
  205. package/dist/notice-bar-DMpwLvRb.js +231 -0
  206. package/dist/notice-bar-DMpwLvRb.js.map +1 -0
  207. package/dist/notify/index.d.ts +1 -0
  208. package/dist/notify/index.js +251 -0
  209. package/dist/notify/index.js.map +1 -0
  210. package/dist/notify/notify.d.ts +123 -0
  211. package/dist/number-keyboard/index.d.ts +1 -0
  212. package/dist/number-keyboard/index.js +333 -0
  213. package/dist/number-keyboard/index.js.map +1 -0
  214. package/dist/number-keyboard/number-keyboard.d.ts +141 -0
  215. package/dist/overlay-panel/index.d.ts +2 -0
  216. package/dist/overlay-panel/index.js +2 -0
  217. package/dist/overlay-panel/overlay-panel.d.ts +20 -0
  218. package/dist/overlay-panel-Z_qdKeBj.js +26 -0
  219. package/dist/overlay-panel-Z_qdKeBj.js.map +1 -0
  220. package/dist/page-indicator/index.d.ts +1 -0
  221. package/dist/page-indicator/index.js +138 -0
  222. package/dist/page-indicator/index.js.map +1 -0
  223. package/dist/page-indicator/page-indicator.d.ts +93 -0
  224. package/dist/pagination/index.d.ts +1 -0
  225. package/dist/pagination/index.js +198 -0
  226. package/dist/pagination/index.js.map +1 -0
  227. package/dist/pagination/pagination.d.ts +125 -0
  228. package/dist/password-input/index.d.ts +1 -0
  229. package/dist/password-input/index.js +317 -0
  230. package/dist/password-input/index.js.map +1 -0
  231. package/dist/password-input/password-input.d.ts +144 -0
  232. package/dist/picker/index.d.ts +8 -0
  233. package/dist/picker/index.js +2 -0
  234. package/dist/picker/picker-machine.d.ts +80 -0
  235. package/dist/picker/picker.d.ts +121 -0
  236. package/dist/picker/platform.d.ts +84 -0
  237. package/dist/picker/selection-connect.d.ts +90 -0
  238. package/dist/picker/selection-model.d.ts +211 -0
  239. package/dist/picker-BykFntQN.js +1675 -0
  240. package/dist/picker-BykFntQN.js.map +1 -0
  241. package/dist/popover/index.d.ts +3 -0
  242. package/dist/popover/index.js +253 -0
  243. package/dist/popover/index.js.map +1 -0
  244. package/dist/popover/layer.d.ts +44 -0
  245. package/dist/popover/popover.d.ts +104 -0
  246. package/dist/popover/positioning.d.ts +132 -0
  247. package/dist/popup/index.d.ts +2 -0
  248. package/dist/popup/index.js +2 -0
  249. package/dist/popup/popup.d.ts +60 -0
  250. package/dist/popup-z5d8IYCt.js +576 -0
  251. package/dist/popup-z5d8IYCt.js.map +1 -0
  252. package/dist/portal-BHCNTWhg.js +78 -0
  253. package/dist/portal-BHCNTWhg.js.map +1 -0
  254. package/dist/portal.d.ts +61 -0
  255. package/dist/price/format.d.ts +19 -0
  256. package/dist/price/index.d.ts +1 -0
  257. package/dist/price/index.js +154 -0
  258. package/dist/price/index.js.map +1 -0
  259. package/dist/price/price.d.ts +88 -0
  260. package/dist/progress/index.d.ts +1 -0
  261. package/dist/progress/index.js +2 -0
  262. package/dist/progress/progress.d.ts +32 -0
  263. package/dist/progress-f3iYEfdA.js +37 -0
  264. package/dist/progress-f3iYEfdA.js.map +1 -0
  265. package/dist/pull-refresh/index.d.ts +1 -0
  266. package/dist/pull-refresh/index.js +414 -0
  267. package/dist/pull-refresh/index.js.map +1 -0
  268. package/dist/pull-refresh/pull-refresh.d.ts +118 -0
  269. package/dist/radio-group/index.d.ts +3 -0
  270. package/dist/radio-group/index.js +2 -0
  271. package/dist/radio-group/radio-group.d.ts +78 -0
  272. package/dist/radio-group-BOIMuqnS.js +230 -0
  273. package/dist/radio-group-BOIMuqnS.js.map +1 -0
  274. package/dist/rate/index.d.ts +1 -0
  275. package/dist/rate/index.js +2 -0
  276. package/dist/rate/rate-form.d.ts +28 -0
  277. package/dist/rate/rate.d.ts +144 -0
  278. package/dist/rate-5XsU2QkY.js +631 -0
  279. package/dist/rate-5XsU2QkY.js.map +1 -0
  280. package/dist/reorder/index.d.ts +1 -0
  281. package/dist/reorder/index.js +720 -0
  282. package/dist/reorder/index.js.map +1 -0
  283. package/dist/reorder/reorder.d.ts +190 -0
  284. package/dist/result/index.d.ts +1 -0
  285. package/dist/result/index.js +123 -0
  286. package/dist/result/index.js.map +1 -0
  287. package/dist/result/result.d.ts +88 -0
  288. package/dist/safe-area/index.d.ts +1 -0
  289. package/dist/safe-area/index.js +42 -0
  290. package/dist/safe-area/index.js.map +1 -0
  291. package/dist/safe-area/safe-area.d.ts +28 -0
  292. package/dist/search-bar/index.js +4 -2
  293. package/dist/search-bar/index.js.map +1 -1
  294. package/dist/search-bar/search-bar.d.ts +6 -0
  295. package/dist/segmented/index.d.ts +2 -0
  296. package/dist/segmented/index.js +2 -0
  297. package/dist/segmented/segmented.d.ts +127 -0
  298. package/dist/segmented-BaU38_L4.js +367 -0
  299. package/dist/segmented-BaU38_L4.js.map +1 -0
  300. package/dist/selection-form-BOM_odUk.js +88 -0
  301. package/dist/selection-form-BOM_odUk.js.map +1 -0
  302. package/dist/selection-form.d.ts +27 -0
  303. package/dist/selection-ivXqO1eu.js +55 -0
  304. package/dist/selection-ivXqO1eu.js.map +1 -0
  305. package/dist/selection.d.ts +29 -0
  306. package/dist/selector/choice-group.d.ts +114 -0
  307. package/dist/selector/index.d.ts +2 -0
  308. package/dist/selector/index.js +2 -0
  309. package/dist/selector/selector.d.ts +90 -0
  310. package/dist/selector-BU2MMJ4N.js +93 -0
  311. package/dist/selector-BU2MMJ4N.js.map +1 -0
  312. package/dist/share-sheet/index.d.ts +1 -0
  313. package/dist/share-sheet/index.js +138 -0
  314. package/dist/share-sheet/index.js.map +1 -0
  315. package/dist/share-sheet/share-sheet.d.ts +139 -0
  316. package/dist/side-nav/index.d.ts +1 -0
  317. package/dist/side-nav/index.js +99 -0
  318. package/dist/side-nav/index.js.map +1 -0
  319. package/dist/side-nav/side-nav.d.ts +94 -0
  320. package/dist/skeleton/index.js +51 -2
  321. package/dist/skeleton/index.js.map +1 -1
  322. package/dist/skeleton/skeleton.d.ts +34 -3
  323. package/dist/slider/index.d.ts +1 -0
  324. package/dist/slider/index.js +482 -0
  325. package/dist/slider/index.js.map +1 -0
  326. package/dist/slider/slider.d.ts +174 -0
  327. package/dist/space/index.d.ts +1 -0
  328. package/dist/space/index.js +52 -0
  329. package/dist/space/index.js.map +1 -0
  330. package/dist/space/space.d.ts +46 -0
  331. package/dist/statistic/index.d.ts +1 -0
  332. package/dist/statistic/index.js +152 -0
  333. package/dist/statistic/index.js.map +1 -0
  334. package/dist/statistic/statistic.d.ts +101 -0
  335. package/dist/stepper/index.d.ts +1 -0
  336. package/dist/stepper/index.js +172 -0
  337. package/dist/stepper/index.js.map +1 -0
  338. package/dist/stepper/stepper.d.ts +161 -0
  339. package/dist/steps/index.d.ts +1 -0
  340. package/dist/steps/index.js +72 -0
  341. package/dist/steps/index.js.map +1 -0
  342. package/dist/steps/steps.d.ts +67 -0
  343. package/dist/sticky/index.d.ts +1 -0
  344. package/dist/sticky/index.js +145 -0
  345. package/dist/sticky/index.js.map +1 -0
  346. package/dist/sticky/sticky.d.ts +70 -0
  347. package/dist/swipe-action/index.d.ts +1 -0
  348. package/dist/swipe-action/index.js +417 -0
  349. package/dist/swipe-action/index.js.map +1 -0
  350. package/dist/swipe-action/swipe-action.d.ts +148 -0
  351. package/dist/swiper/gesture.d.ts +32 -0
  352. package/dist/swiper/index.d.ts +1 -0
  353. package/dist/swiper/index.js +2 -0
  354. package/dist/swiper/swiper.d.ts +177 -0
  355. package/dist/swiper-BKivDkHp.js +550 -0
  356. package/dist/swiper-BKivDkHp.js.map +1 -0
  357. package/dist/switch/index.d.ts +1 -0
  358. package/dist/switch/index.js +168 -0
  359. package/dist/switch/index.js.map +1 -0
  360. package/dist/switch/switch.d.ts +142 -0
  361. package/dist/tabbar/index.d.ts +1 -0
  362. package/dist/tabbar/index.js +95 -0
  363. package/dist/tabbar/index.js.map +1 -0
  364. package/dist/tabbar/tabbar.d.ts +119 -0
  365. package/dist/tabs/index.js +22 -1
  366. package/dist/tabs/index.js.map +1 -1
  367. package/dist/tabs/tabs.d.ts +12 -8
  368. package/dist/tag/index.js +123 -2
  369. package/dist/tag/index.js.map +1 -1
  370. package/dist/tag/tag.d.ts +67 -1
  371. package/dist/textarea/index.d.ts +2 -0
  372. package/dist/textarea/index.js +2 -242
  373. package/dist/textarea/platform.d.ts +22 -0
  374. package/dist/textarea/textarea.d.ts +169 -46
  375. package/dist/textarea-qbnruDUG.js +775 -0
  376. package/dist/textarea-qbnruDUG.js.map +1 -0
  377. package/dist/time-picker/index.d.ts +1 -0
  378. package/dist/time-picker/index.js +228 -0
  379. package/dist/time-picker/index.js.map +1 -0
  380. package/dist/time-picker/time-picker.d.ts +83 -0
  381. package/dist/timeline/index.d.ts +1 -0
  382. package/dist/timeline/index.js +131 -0
  383. package/dist/timeline/index.js.map +1 -0
  384. package/dist/timeline/timeline.d.ts +79 -0
  385. package/dist/toast/index.js +47 -4
  386. package/dist/toast/index.js.map +1 -1
  387. package/dist/toast/toast.d.ts +26 -3
  388. package/dist/top-bar/index.js +16 -2
  389. package/dist/top-bar/index.js.map +1 -1
  390. package/dist/top-bar/top-bar.d.ts +13 -2
  391. package/dist/tree-select/index.d.ts +1 -0
  392. package/dist/tree-select/index.js +512 -0
  393. package/dist/tree-select/index.js.map +1 -0
  394. package/dist/tree-select/tree-select.d.ts +215 -0
  395. package/dist/typography/index.d.ts +1 -0
  396. package/dist/typography/index.js +82 -0
  397. package/dist/typography/index.js.map +1 -0
  398. package/dist/typography/typography.d.ts +54 -0
  399. package/dist/upload/index.d.ts +1 -0
  400. package/dist/upload/index.js +458 -0
  401. package/dist/upload/index.js.map +1 -0
  402. package/dist/upload/upload.d.ts +172 -0
  403. package/dist/virtual-list/index.d.ts +1 -0
  404. package/dist/virtual-list/index.js +445 -0
  405. package/dist/virtual-list/index.js.map +1 -0
  406. package/dist/virtual-list/virtual-list.d.ts +160 -0
  407. package/dist/visual-manifest.d.ts +27 -0
  408. package/dist/watermark/index.d.ts +1 -0
  409. package/dist/watermark/index.js +260 -0
  410. package/dist/watermark/index.js.map +1 -0
  411. package/dist/watermark/watermark.d.ts +106 -0
  412. package/package.json +417 -44
  413. package/dist/empty/index.js.map +0 -1
  414. package/dist/icon/index.js.map +0 -1
  415. package/dist/textarea/index.js.map +0 -1
@@ -0,0 +1,348 @@
1
+ import { l as resolveCascaderPath, s as normalizeCascaderOptions, u as updateCascaderChildren } from "../cascader-D-xMjs7P.js";
2
+ import { createMachine } from "@zag-js/core";
3
+ //#region src/area-picker/area-picker.ts
4
+ const AREA_PICKER_PARTS = [
5
+ "root",
6
+ "status",
7
+ "retry-trigger",
8
+ "input"
9
+ ];
10
+ function toAreaPickerOptions(data) {
11
+ return normalizeCascaderOptions(data.map((node) => ({
12
+ value: node.code,
13
+ label: node.label,
14
+ disabled: node.disabled,
15
+ leaf: node.leaf,
16
+ children: node.children ? toAreaPickerOptions(node.children) : void 0
17
+ })), "AreaPicker");
18
+ }
19
+ function toNode(node) {
20
+ return {
21
+ code: node.value,
22
+ label: node.label,
23
+ disabled: node.disabled,
24
+ leaf: node.leaf,
25
+ children: node.children?.map(toNode)
26
+ };
27
+ }
28
+ const depthOf = (props) => Number.isInteger(props.maxDepth) && props.maxDepth > 0 ? props.maxDepth : 3;
29
+ /** Fill enabled descendants; a disabled ancestor invalidates its entire branch. */
30
+ function resolveAreaPickerValue(options, value, maxDepth = 3) {
31
+ const path = [];
32
+ let level = options;
33
+ for (let depth = 0; depth < maxDepth; depth++) {
34
+ const selected = level.find((node) => node.value === value[depth] && !node.disabled) ?? level.find((node) => !node.disabled);
35
+ if (!selected) break;
36
+ path.push(selected.value);
37
+ if (selected.leaf) break;
38
+ level = selected.children ?? [];
39
+ }
40
+ return path;
41
+ }
42
+ function details(options, value) {
43
+ const path = resolveCascaderPath(options, value).map(toNode);
44
+ return {
45
+ value: [...value],
46
+ labels: path.map((node) => node.label),
47
+ path,
48
+ code: value.at(-1)
49
+ };
50
+ }
51
+ function createAreaPickerProps(props) {
52
+ toAreaPickerOptions(props.data ?? []);
53
+ return {
54
+ ...props,
55
+ data: props.data ?? [],
56
+ maxDepth: depthOf(props)
57
+ };
58
+ }
59
+ function invalidate({ context, refs }) {
60
+ refs.get("controller")?.abort();
61
+ refs.set("controller", null);
62
+ refs.set("request", refs.get("request") + 1);
63
+ context.set("loading", []);
64
+ }
65
+ function currentOptions({ context, refs }) {
66
+ return refs.get("options") ?? context.get("options");
67
+ }
68
+ function load(params, path, options = currentOptions(params)) {
69
+ const { context, prop, refs, send } = params, loader = prop("loadChildren"), option = resolveCascaderPath(options, path).at(-1);
70
+ if (!loader || !option || option.disabled || option.leaf || option.children !== void 0 || path.length >= (prop("maxDepth") ?? 3)) return;
71
+ invalidate(params);
72
+ const controller = new AbortController(), request = refs.get("request"), sourceData = prop("data"), sourceDepth = prop("maxDepth");
73
+ refs.set("controller", controller);
74
+ context.set("loading", path);
75
+ context.set("error", []);
76
+ Promise.resolve().then(() => {
77
+ if (!refs.get("active") || controller.signal.aborted || refs.get("request") !== request || prop("data") !== sourceData || prop("maxDepth") !== sourceDepth || prop("loadChildren") !== loader) return void 0;
78
+ return loader({
79
+ node: toNode(option),
80
+ path: [...path],
81
+ signal: controller.signal
82
+ });
83
+ }).then((data) => {
84
+ if (data === void 0) return void 0;
85
+ toAreaPickerOptions(data);
86
+ return data;
87
+ }).then((data) => {
88
+ if (data !== void 0 && refs.get("active") && !controller.signal.aborted && refs.get("request") === request) send({
89
+ type: "SUCCESS",
90
+ request,
91
+ path,
92
+ data
93
+ });
94
+ }).catch(() => {
95
+ if (refs.get("active") && !controller.signal.aborted) send({
96
+ type: "ERROR",
97
+ request,
98
+ path
99
+ });
100
+ });
101
+ }
102
+ const loaderIdentities = /* @__PURE__ */ new WeakMap();
103
+ let nextLoaderIdentity = 0;
104
+ function loaderIdentity(loader) {
105
+ if (!loader) return 0;
106
+ const known = loaderIdentities.get(loader);
107
+ if (known !== void 0) return known;
108
+ const identity = ++nextLoaderIdentity;
109
+ loaderIdentities.set(loader, identity);
110
+ return identity;
111
+ }
112
+ const areaPickerMachine = createMachine({
113
+ props: ({ props }) => createAreaPickerProps({
114
+ ...props,
115
+ data: props.data ?? []
116
+ }),
117
+ initialState: () => "idle",
118
+ states: { idle: {} },
119
+ context: ({ bindable, prop }) => ({
120
+ value: bindable(() => ({
121
+ defaultValue: prop("defaultValue") ?? [],
122
+ value: prop("value"),
123
+ hash: JSON.stringify
124
+ })),
125
+ preview: bindable(() => ({
126
+ defaultValue: [],
127
+ hash: JSON.stringify
128
+ })),
129
+ base: bindable(() => ({ defaultValue: "" })),
130
+ options: bindable(() => ({
131
+ defaultValue: toAreaPickerOptions(prop("data") ?? []),
132
+ hash: JSON.stringify
133
+ })),
134
+ loading: bindable(() => ({
135
+ defaultValue: [],
136
+ hash: JSON.stringify
137
+ })),
138
+ error: bindable(() => ({
139
+ defaultValue: [],
140
+ hash: JSON.stringify
141
+ }))
142
+ }),
143
+ refs: () => ({
144
+ controller: null,
145
+ active: false,
146
+ request: 0,
147
+ options: void 0
148
+ }),
149
+ effects: ["lifecycle"],
150
+ watch({ track, prop, send }) {
151
+ track([
152
+ () => JSON.stringify(prop("data") ?? []),
153
+ () => prop("maxDepth"),
154
+ () => loaderIdentity(prop("loadChildren"))
155
+ ], () => send({ type: "SYNC" }));
156
+ track([() => JSON.stringify(prop("value"))], () => send({ type: "OPEN" }));
157
+ track([() => prop("open")], () => send({ type: prop("open") ? "OPEN" : "RESET" }));
158
+ },
159
+ on: {
160
+ PREVIEW: { actions: ["preview"] },
161
+ COMMIT: { actions: ["commit"] },
162
+ SYNC: { actions: ["sync"] },
163
+ RETRY: { actions: ["retry"] },
164
+ RESET: { actions: ["reset"] },
165
+ OPEN: { actions: ["open"] },
166
+ SUCCESS: { actions: ["success"] },
167
+ ERROR: { actions: ["error"] }
168
+ },
169
+ implementations: {
170
+ actions: {
171
+ preview(params) {
172
+ const { context, prop, event } = params;
173
+ if (event.type !== "PREVIEW") return;
174
+ const value = resolveAreaPickerValue(currentOptions(params), event.value, prop("maxDepth"));
175
+ context.set("base", JSON.stringify(context.get("value")));
176
+ context.set("preview", value);
177
+ context.set("error", []);
178
+ invalidate(params);
179
+ load(params, value);
180
+ prop("onPreviewChange")?.(details(currentOptions(params), value));
181
+ },
182
+ commit(params) {
183
+ const { context, prop, event } = params;
184
+ if (event.type !== "COMMIT" || context.get("loading").length || context.get("error").length) return;
185
+ const options = currentOptions(params), value = resolveAreaPickerValue(options, event.value, prop("maxDepth")), last = resolveCascaderPath(options, value).at(-1);
186
+ if (!last || !last.leaf && value.length < (prop("maxDepth") ?? 3)) return;
187
+ context.set("value", value);
188
+ context.set("preview", []);
189
+ prop("onValueChange")?.(details(options, value));
190
+ },
191
+ sync(params) {
192
+ invalidate(params);
193
+ const options = toAreaPickerOptions(params.prop("data"));
194
+ params.refs.set("options", options);
195
+ params.context.set("options", options);
196
+ params.context.set("preview", []);
197
+ params.context.set("error", []);
198
+ load(params, resolveAreaPickerValue(options, params.context.get("value"), params.prop("maxDepth")), options);
199
+ },
200
+ reset(params) {
201
+ invalidate(params);
202
+ params.context.set("preview", []);
203
+ params.context.set("error", []);
204
+ },
205
+ open(params) {
206
+ invalidate(params);
207
+ params.context.set("preview", []);
208
+ params.context.set("error", []);
209
+ load(params, resolveAreaPickerValue(currentOptions(params), params.context.get("value"), params.prop("maxDepth")));
210
+ },
211
+ success(params) {
212
+ const { context, event, refs } = params;
213
+ if (event.type !== "SUCCESS" || event.request !== refs.get("request")) return;
214
+ params.refs.set("controller", null);
215
+ const options = updateCascaderChildren(currentOptions(params), event.path, toAreaPickerOptions(event.data));
216
+ refs.set("options", options);
217
+ context.set("options", options);
218
+ context.set("loading", []);
219
+ const value = resolveAreaPickerValue(options, context.get("base") === JSON.stringify(context.get("value")) && context.get("preview").length ? context.get("preview") : context.get("value"), params.prop("maxDepth"));
220
+ context.set("base", JSON.stringify(context.get("value")));
221
+ context.set("preview", value);
222
+ load(params, value, options);
223
+ },
224
+ error({ context, event, refs }) {
225
+ if (event.type !== "ERROR" || event.request !== refs.get("request")) return;
226
+ refs.set("controller", null);
227
+ context.set("loading", []);
228
+ context.set("error", event.path);
229
+ },
230
+ retry(params) {
231
+ const path = params.context.get("error");
232
+ if (path.length) load(params, path);
233
+ }
234
+ },
235
+ effects: { lifecycle(params) {
236
+ params.refs.set("active", true);
237
+ load(params, resolveAreaPickerValue(params.context.get("options"), params.prop("value") ?? params.prop("defaultValue") ?? [], params.prop("maxDepth")));
238
+ return () => {
239
+ params.refs.set("active", false);
240
+ params.refs.get("controller")?.abort();
241
+ };
242
+ } }
243
+ }
244
+ });
245
+ function connectAreaPicker(service, props) {
246
+ const options = service.context.get("options"), owner = service.context.get("value"), value = resolveAreaPickerValue(options, owner, depthOf(props));
247
+ const preview = resolveAreaPickerValue(options, service.context.get("base") === JSON.stringify(owner) && service.context.get("preview").length ? service.context.get("preview") : value, depthOf(props)), last = resolveCascaderPath(options, preview).at(-1);
248
+ const loading = service.context.get("loading").length > 0, error = service.context.get("error").length > 0;
249
+ const committedLast = resolveCascaderPath(options, value).at(-1);
250
+ const committedValid = !!committedLast && (committedLast.leaf === true || value.length === depthOf(props));
251
+ const valid = !!last && (last.leaf === true || preview.length === depthOf(props)) && !loading && !error;
252
+ const columns = [];
253
+ let level = options;
254
+ for (let depth = 0; depth < depthOf(props); depth++) {
255
+ columns.push({
256
+ label: props.columnLabels?.[depth] ?? [
257
+ "省",
258
+ "市",
259
+ "区"
260
+ ][depth] ?? `第 ${depth + 1} 级`,
261
+ options: level.map((node) => ({
262
+ value: node.value,
263
+ label: node.label,
264
+ disabled: node.disabled
265
+ }))
266
+ });
267
+ const selected = level.find((node) => node.value === preview[depth]);
268
+ if (selected?.leaf) break;
269
+ level = selected?.children ?? [];
270
+ }
271
+ const notifyPreview = (v) => service.send({
272
+ type: "PREVIEW",
273
+ value: v
274
+ }), notifyCommit = (v) => service.send({
275
+ type: "COMMIT",
276
+ value: v
277
+ });
278
+ const rest = { ...props };
279
+ for (const key of [
280
+ "data",
281
+ "value",
282
+ "defaultValue",
283
+ "maxDepth",
284
+ "columnLabels",
285
+ "loadChildren",
286
+ "loadingText",
287
+ "errorText",
288
+ "retryText",
289
+ "name",
290
+ "onValueChange",
291
+ "onPreviewChange"
292
+ ]) delete rest[key];
293
+ return {
294
+ value,
295
+ labels: details(options, value).labels,
296
+ previewValue: preview,
297
+ valid,
298
+ loading,
299
+ error,
300
+ statusText: error ? props.errorText ?? "地区加载失败" : loading ? props.loadingText ?? "地区加载中" : "",
301
+ retryText: props.retryText ?? "重试",
302
+ columns,
303
+ pickerProps: {
304
+ ...rest,
305
+ id: props.id ? `${props.id}-picker` : void 0,
306
+ ariaLabel: props.ariaLabel ?? "选择地区",
307
+ columns,
308
+ value,
309
+ onPreviewChange: (d) => notifyPreview(d.value),
310
+ onValueChange: (d) => notifyCommit(d.value),
311
+ onOpenChange: (open) => {
312
+ service.send({ type: open ? "OPEN" : "RESET" });
313
+ props.onOpenChange?.(open);
314
+ }
315
+ },
316
+ notifyPreview,
317
+ notifyCommit,
318
+ retry: () => service.send({ type: "RETRY" }),
319
+ getRootProps: () => ({
320
+ lang: props.lang,
321
+ dir: props.dir,
322
+ "data-scope": "area-picker",
323
+ "data-part": "root",
324
+ "data-visual-target": "area-picker-root"
325
+ }),
326
+ getStatusProps: () => ({
327
+ "data-scope": "area-picker",
328
+ "data-part": "status",
329
+ role: error ? "alert" : "status",
330
+ hidden: !loading && !error
331
+ }),
332
+ getRetryProps: () => ({
333
+ type: "button",
334
+ hidden: !error,
335
+ onClick: () => service.send({ type: "RETRY" })
336
+ }),
337
+ getInputProps: () => ({
338
+ type: "hidden",
339
+ name: props.name,
340
+ value: value.join("/"),
341
+ disabled: !committedValid
342
+ })
343
+ };
344
+ }
345
+ //#endregion
346
+ export { AREA_PICKER_PARTS, areaPickerMachine, connectAreaPicker, createAreaPickerProps, resolveAreaPickerValue, toAreaPickerOptions };
347
+
348
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/area-picker/area-picker.ts"],"sourcesContent":["import { createMachine, type Machine, type Params, type Service } from \"@zag-js/core\";\nimport { normalizeCascaderOptions, resolveCascaderPath, updateCascaderChildren, type CascaderOption } from \"../cascader/cascader.js\";\nimport type { QwPickerProps } from \"../picker/picker.js\";\nimport type { PickerColumn, PickerValue } from \"../picker/selection-model.js\";\n\n/** Caller-owned region data. No national administrative dataset is bundled. Codes are opaque strings. */\nexport interface AreaPickerNode { code: string; label: string; disabled?: boolean; leaf?: boolean; children?: AreaPickerNode[] }\nexport interface AreaPickerChangeDetails { value: string[]; labels: string[]; path: AreaPickerNode[]; code: string | undefined }\nexport interface AreaPickerLoadDetails { node: AreaPickerNode; path: string[]; signal: AbortSignal }\nexport interface QwAreaPickerProps extends Omit<QwPickerProps, \"columns\" | \"value\" | \"defaultValue\" | \"onValueChange\" | \"onPreviewChange\"> {\n data: readonly AreaPickerNode[];\n /** Explicit locale boundary copied by the real Picker portal. */\n lang?: string;\n dir?: string;\n value?: string[];\n defaultValue?: string[];\n /** Maximum hierarchy depth, default 3. Explicit leaf nodes may terminate earlier. */\n maxDepth?: number;\n columnLabels?: string[];\n loadChildren?: (details: AreaPickerLoadDetails) => Promise<AreaPickerNode[]>;\n loadingText?: string;\n errorText?: string;\n retryText?: string;\n name?: string;\n onValueChange?: (details: AreaPickerChangeDetails) => void;\n onPreviewChange?: (details: AreaPickerChangeDetails) => void;\n}\nexport const AREA_PICKER_PARTS = [\"root\", \"status\", \"retry-trigger\", \"input\"] as const;\nexport function toAreaPickerOptions(data: readonly AreaPickerNode[]): CascaderOption[] {\n return normalizeCascaderOptions(data.map(node => ({ value: node.code, label: node.label, disabled: node.disabled, leaf: node.leaf, children: node.children ? toAreaPickerOptions(node.children) : undefined })), \"AreaPicker\");\n}\nfunction toNode(node: CascaderOption): AreaPickerNode { return { code: node.value, label: node.label, disabled: node.disabled, leaf: node.leaf, children: node.children?.map(toNode) }; }\nconst depthOf = (props: QwAreaPickerProps) => Number.isInteger(props.maxDepth) && props.maxDepth! > 0 ? props.maxDepth! : 3;\n/** Fill enabled descendants; a disabled ancestor invalidates its entire branch. */\nexport function resolveAreaPickerValue(options: readonly CascaderOption[], value: readonly (string | null)[], maxDepth = 3): string[] {\n const path: string[] = []; let level = options;\n for (let depth = 0; depth < maxDepth; depth++) {\n const selected = level.find(node => node.value === value[depth] && !node.disabled) ?? level.find(node => !node.disabled);\n if (!selected) break;\n path.push(selected.value);\n if (selected.leaf) break;\n level = selected.children ?? [];\n }\n return path;\n}\nfunction details(options: readonly CascaderOption[], value: string[]): AreaPickerChangeDetails {\n const path = resolveCascaderPath(options, value).map(toNode);\n return { value: [...value], labels: path.map(node => node.label), path, code: value.at(-1) };\n}\nexport interface QwAreaPickerSchema {\n props: QwAreaPickerProps;\n context: { value: string[]; preview: string[]; base: string; options: CascaderOption[]; loading: string[]; error: string[] };\n refs: { controller: AbortController | null; active: boolean; request: number; options: CascaderOption[] | undefined };\n state: \"idle\";\n action: \"preview\" | \"commit\" | \"sync\" | \"success\" | \"error\" | \"retry\" | \"reset\" | \"open\";\n effect: \"lifecycle\";\n event: { type: \"PREVIEW\" | \"COMMIT\"; value: PickerValue } | { type: \"SYNC\" | \"RETRY\" | \"RESET\" | \"OPEN\" } | { type: \"SUCCESS\"; request: number; path: string[]; data: AreaPickerNode[] } | { type: \"ERROR\"; request: number; path: string[] };\n}\nexport type QwAreaPickerMachine = Machine<QwAreaPickerSchema>;\nexport type QwAreaPickerService = Service<QwAreaPickerSchema>;\nexport function createAreaPickerProps(props: QwAreaPickerProps): QwAreaPickerProps { toAreaPickerOptions(props.data ?? []); return { ...props, data: props.data ?? [], maxDepth: depthOf(props) }; }\ntype LoadParams = Pick<Params<QwAreaPickerSchema>, \"context\" | \"prop\" | \"refs\" | \"send\">;\nfunction invalidate({ context, refs }: LoadParams) { refs.get(\"controller\")?.abort(); refs.set(\"controller\", null); refs.set(\"request\", refs.get(\"request\") + 1); context.set(\"loading\", []); }\nfunction currentOptions({ context, refs }: LoadParams): CascaderOption[] { return refs.get(\"options\") ?? context.get(\"options\"); }\nfunction load(params: LoadParams, path: string[], options: CascaderOption[] = currentOptions(params)) {\n const { context, prop, refs, send } = params, loader = prop(\"loadChildren\"), option = resolveCascaderPath(options, path).at(-1);\n if (!loader || !option || option.disabled || option.leaf || option.children !== undefined || path.length >= (prop(\"maxDepth\") ?? 3)) return;\n invalidate(params); const controller = new AbortController(), request = refs.get(\"request\"), sourceData = prop(\"data\"), sourceDepth = prop(\"maxDepth\"); refs.set(\"controller\", controller); context.set(\"loading\", path); context.set(\"error\", []);\n // Deferred invocation also catches synchronous loader throws and validates data within the rejection chain.\n Promise.resolve().then(() => { if (!refs.get(\"active\") || controller.signal.aborted || refs.get(\"request\") !== request || prop(\"data\") !== sourceData || prop(\"maxDepth\") !== sourceDepth || prop(\"loadChildren\") !== loader) return undefined; return loader({ node: toNode(option), path: [...path], signal: controller.signal }); }).then(data => { if (data === undefined) return undefined; toAreaPickerOptions(data); return data; }).then(data => { if (data !== undefined && refs.get(\"active\") && !controller.signal.aborted && refs.get(\"request\") === request) send({ type: \"SUCCESS\", request, path, data }); }).catch(() => { if (refs.get(\"active\") && !controller.signal.aborted) send({ type: \"ERROR\", request, path }); });\n}\nconst loaderIdentities = new WeakMap<NonNullable<QwAreaPickerProps[\"loadChildren\"]>, number>();\nlet nextLoaderIdentity = 0;\nfunction loaderIdentity(loader: QwAreaPickerProps[\"loadChildren\"]): number {\n if (!loader) return 0;\n const known = loaderIdentities.get(loader);\n if (known !== undefined) return known;\n const identity = ++nextLoaderIdentity; loaderIdentities.set(loader, identity); return identity;\n}\nexport const areaPickerMachine: QwAreaPickerMachine = createMachine<QwAreaPickerSchema>({\n props: ({ props }) => createAreaPickerProps({ ...props, data: props.data ?? [] }), initialState: () => \"idle\", states: { idle: {} },\n context: ({ bindable, prop }) => ({\n value: bindable(() => ({ defaultValue: prop(\"defaultValue\") ?? [], value: prop(\"value\"), hash: JSON.stringify })),\n preview: bindable<string[]>(() => ({ defaultValue: [], hash: JSON.stringify })), base: bindable(() => ({ defaultValue: \"\" })),\n options: bindable(() => ({ defaultValue: toAreaPickerOptions(prop(\"data\") ?? []), hash: JSON.stringify })),\n loading: bindable<string[]>(() => ({ defaultValue: [], hash: JSON.stringify })), error: bindable<string[]>(() => ({ defaultValue: [], hash: JSON.stringify })),\n }), refs: () => ({ controller: null, active: false, request: 0, options: undefined }), effects: [\"lifecycle\"],\n watch({ track, prop, send }) { track([() => JSON.stringify(prop(\"data\") ?? []), () => prop(\"maxDepth\"), () => loaderIdentity(prop(\"loadChildren\"))], () => send({ type: \"SYNC\" })); track([() => JSON.stringify(prop(\"value\"))], () => send({ type: \"OPEN\" })); track([() => prop(\"open\")], () => send({ type: prop(\"open\") ? \"OPEN\" : \"RESET\" })); },\n on: { PREVIEW: { actions: [\"preview\"] }, COMMIT: { actions: [\"commit\"] }, SYNC: { actions: [\"sync\"] }, RETRY: { actions: [\"retry\"] }, RESET: { actions: [\"reset\"] }, OPEN: { actions: [\"open\"] }, SUCCESS: { actions: [\"success\"] }, ERROR: { actions: [\"error\"] } },\n implementations: { actions: {\n preview(params) {\n const { context, prop, event } = params; if (event.type !== \"PREVIEW\") return;\n const value = resolveAreaPickerValue(currentOptions(params), event.value, prop(\"maxDepth\"));\n context.set(\"base\", JSON.stringify(context.get(\"value\"))); context.set(\"preview\", value); context.set(\"error\", []); invalidate(params); load(params, value);\n prop(\"onPreviewChange\")?.(details(currentOptions(params), value));\n },\n commit(params) {\n const { context, prop, event } = params;\n if (event.type !== \"COMMIT\" || context.get(\"loading\").length || context.get(\"error\").length) return;\n const options = currentOptions(params), value = resolveAreaPickerValue(options, event.value, prop(\"maxDepth\")), last = resolveCascaderPath(options, value).at(-1);\n if (!last || (!last.leaf && value.length < (prop(\"maxDepth\") ?? 3))) return;\n context.set(\"value\", value); context.set(\"preview\", []); prop(\"onValueChange\")?.(details(options, value));\n },\n sync(params) { invalidate(params); const options = toAreaPickerOptions(params.prop(\"data\")); params.refs.set(\"options\", options); params.context.set(\"options\", options); params.context.set(\"preview\", []); params.context.set(\"error\", []); const value = resolveAreaPickerValue(options, params.context.get(\"value\"), params.prop(\"maxDepth\")); load(params, value, options); },\n reset(params) { invalidate(params); params.context.set(\"preview\", []); params.context.set(\"error\", []); },\n open(params) { invalidate(params); params.context.set(\"preview\", []); params.context.set(\"error\", []); const value = resolveAreaPickerValue(currentOptions(params), params.context.get(\"value\"), params.prop(\"maxDepth\")); load(params, value); },\n success(params) { const { context, event, refs } = params; if (event.type !== \"SUCCESS\" || event.request !== refs.get(\"request\")) return; params.refs.set(\"controller\", null); const options = updateCascaderChildren(currentOptions(params), event.path, toAreaPickerOptions(event.data)); refs.set(\"options\", options); context.set(\"options\", options); context.set(\"loading\", []); const draft = context.get(\"base\") === JSON.stringify(context.get(\"value\")) && context.get(\"preview\").length ? context.get(\"preview\") : context.get(\"value\"); const value = resolveAreaPickerValue(options, draft, params.prop(\"maxDepth\")); context.set(\"base\", JSON.stringify(context.get(\"value\"))); context.set(\"preview\", value); load(params, value, options); },\n error({ context, event, refs }) { if (event.type !== \"ERROR\" || event.request !== refs.get(\"request\")) return; refs.set(\"controller\", null); context.set(\"loading\", []); context.set(\"error\", event.path); },\n retry(params) { const path = params.context.get(\"error\"); if (path.length) load(params, path); },\n }, effects: { lifecycle(params) { params.refs.set(\"active\", true); const value = resolveAreaPickerValue(params.context.get(\"options\"), params.prop(\"value\") ?? params.prop(\"defaultValue\") ?? [], params.prop(\"maxDepth\")); load(params, value); return () => { params.refs.set(\"active\", false); params.refs.get(\"controller\")?.abort(); }; } } },\n});\nexport interface QwAreaPickerApi {\n value: string[]; labels: string[]; previewValue: string[]; valid: boolean; loading: boolean; error: boolean; statusText: string; retryText: string; columns: PickerColumn[]; pickerProps: QwPickerProps;\n notifyPreview(value: PickerValue): void; notifyCommit(value: PickerValue): void; retry(): void;\n getRootProps(): Record<string, string | undefined>;\n getStatusProps(): Record<string, string | boolean>;\n getRetryProps(): { type: \"button\"; hidden: boolean; onClick(): void };\n getInputProps(): { type: \"hidden\"; name: string | undefined; value: string; disabled: boolean };\n}\nexport function connectAreaPicker(service: QwAreaPickerService, props: QwAreaPickerProps): QwAreaPickerApi {\n const options = service.context.get(\"options\"), owner = service.context.get(\"value\"), value = resolveAreaPickerValue(options, owner, depthOf(props));\n const draft = service.context.get(\"base\") === JSON.stringify(owner) && service.context.get(\"preview\").length ? service.context.get(\"preview\") : value;\n const preview = resolveAreaPickerValue(options, draft, depthOf(props)), path = resolveCascaderPath(options, preview), last = path.at(-1);\n const loading = service.context.get(\"loading\").length > 0, error = service.context.get(\"error\").length > 0;\n const committedLast = resolveCascaderPath(options, value).at(-1);\n const committedValid = !!committedLast && (committedLast.leaf === true || value.length === depthOf(props));\n const valid = !!last && (last.leaf === true || preview.length === depthOf(props)) && !loading && !error;\n const columns: PickerColumn[] = []; let level: readonly CascaderOption[] = options;\n for (let depth = 0; depth < depthOf(props); depth++) {\n columns.push({ label: props.columnLabels?.[depth] ?? [\"省\", \"市\", \"区\"][depth] ?? `第 ${depth + 1} 级`, options: level.map(node => ({ value: node.value, label: node.label, disabled: node.disabled })) });\n const selected = level.find(node => node.value === preview[depth]); if (selected?.leaf) break; level = selected?.children ?? [];\n }\n const notifyPreview = (v: PickerValue) => service.send({ type: \"PREVIEW\", value: v }), notifyCommit = (v: PickerValue) => service.send({ type: \"COMMIT\", value: v });\n const rest: Record<string, unknown> = { ...props }; for (const key of [\"data\", \"value\", \"defaultValue\", \"maxDepth\", \"columnLabels\", \"loadChildren\", \"loadingText\", \"errorText\", \"retryText\", \"name\", \"onValueChange\", \"onPreviewChange\"]) delete rest[key];\n return { value, labels: details(options, value).labels, previewValue: preview, valid, loading, error, statusText: error ? props.errorText ?? \"地区加载失败\" : loading ? props.loadingText ?? \"地区加载中\" : \"\", retryText: props.retryText ?? \"重试\", columns,\n pickerProps: { ...rest, id: props.id ? `${props.id}-picker` : undefined, ariaLabel: props.ariaLabel ?? \"选择地区\", columns, value, onPreviewChange: d => notifyPreview(d.value), onValueChange: d => notifyCommit(d.value), onOpenChange: open => { service.send({ type: open ? \"OPEN\" : \"RESET\" }); props.onOpenChange?.(open); } }, notifyPreview, notifyCommit, retry: () => service.send({ type: \"RETRY\" }),\n getRootProps: () => ({ lang: props.lang, dir: props.dir, \"data-scope\": \"area-picker\", \"data-part\": \"root\", \"data-visual-target\": \"area-picker-root\" }),\n getStatusProps: () => ({ \"data-scope\": \"area-picker\", \"data-part\": \"status\", role: error ? \"alert\" : \"status\", hidden: !loading && !error }),\n getRetryProps: () => ({ type: \"button\", hidden: !error, onClick: () => service.send({ type: \"RETRY\" }) }),\n getInputProps: () => ({ type: \"hidden\", name: props.name, value: value.join(\"/\"), disabled: !committedValid }),\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ //#region src/aria-description.ts
2
+ /** Preserve control-owned descriptions while linking distinct external help/errors. */
3
+ function mergeDescriptionIds(...values) {
4
+ const ids = /* @__PURE__ */ new Set();
5
+ for (const value of values) if (typeof value === "string") {
6
+ for (const id of value.split(/\s+/)) if (id) ids.add(id);
7
+ }
8
+ return ids.size ? [...ids].join(" ") : void 0;
9
+ }
10
+ //#endregion
11
+ export { mergeDescriptionIds as t };
12
+
13
+ //# sourceMappingURL=aria-description-CimD2M_C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aria-description-CimD2M_C.js","names":[],"sources":["../src/aria-description.ts"],"sourcesContent":["/** Preserve control-owned descriptions while linking distinct external help/errors. */\nexport function mergeDescriptionIds(...values: readonly (string | undefined)[]): string | undefined {\n const ids = new Set<string>();\n for (const value of values) if (typeof value === \"string\") for (const id of value.split(/\\s+/)) if (id) ids.add(id);\n return ids.size ? [...ids].join(\" \") : undefined;\n}\n"],"mappings":";;AACA,SAAgB,oBAAoB,GAAG,QAA6D;CAClG,MAAM,sBAAM,IAAI,IAAY;CAC5B,KAAK,MAAM,SAAS,QAAQ,IAAI,OAAO,UAAU;OAAe,MAAM,MAAM,MAAM,MAAM,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE;CAAA;CAClH,OAAO,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,KAAA;AACzC"}
@@ -0,0 +1,2 @@
1
+ /** Preserve control-owned descriptions while linking distinct external help/errors. */
2
+ export declare function mergeDescriptionIds(...values: readonly (string | undefined)[]): string | undefined;
@@ -0,0 +1,76 @@
1
+ import { type Machine, type Service } from "@zag-js/core";
2
+ import type { AvatarLoadStatus } from "./avatar.js";
3
+ /** A render request does not become active until its resource is committed. */
4
+ export interface ImageRequestFrame {
5
+ readonly epoch: number;
6
+ readonly src: string;
7
+ readonly active: boolean;
8
+ }
9
+ export interface ImageRequestDescriptor {
10
+ src: string;
11
+ active: boolean;
12
+ }
13
+ export interface ImageResourceSnapshot {
14
+ srcAttribute: string | null;
15
+ complete: boolean;
16
+ naturalWidth: number;
17
+ }
18
+ export interface ImageRequestResult {
19
+ epoch: number;
20
+ src: string;
21
+ status: AvatarLoadStatus;
22
+ }
23
+ export interface ImageResourceBinding {
24
+ commit(snapshot: ImageResourceSnapshot): void;
25
+ snapshot(snapshot: ImageResourceSnapshot): void;
26
+ detach(): void;
27
+ }
28
+ export interface ImageRequestFrames {
29
+ create(src: string | undefined, active: boolean): ImageRequestFrame;
30
+ resolve(descriptor: ImageRequestDescriptor): ImageRequestFrame;
31
+ }
32
+ /** Per-instance monotonic identity; aborted renders never activate a frame. */
33
+ export declare function createImageRequestFrames(initial?: ImageRequestFrame): ImageRequestFrames;
34
+ export declare function getImageRequestStatus(frame: ImageRequestFrame, result?: ImageRequestResult): AvatarLoadStatus;
35
+ export interface QwAvatarLoadProps {
36
+ frame: ImageRequestFrame;
37
+ }
38
+ type ResourceEvent = {
39
+ type: "RESOURCE.COMMIT" | "RESOURCE.SNAPSHOT";
40
+ frame: ImageRequestFrame;
41
+ session: number;
42
+ snapshot: ImageResourceSnapshot;
43
+ } | {
44
+ type: "RESOURCE.DETACH";
45
+ frame: ImageRequestFrame;
46
+ session: number;
47
+ };
48
+ export interface QwAvatarLoadSchema {
49
+ props: QwAvatarLoadProps;
50
+ context: {
51
+ result: ImageRequestResult | undefined;
52
+ };
53
+ refs: {
54
+ active: boolean;
55
+ session: number;
56
+ committed: ImageRequestFrame | undefined;
57
+ };
58
+ state: "ready";
59
+ effect: "lifecycle";
60
+ action: "commit" | "snapshot" | "detach";
61
+ event: ResourceEvent;
62
+ }
63
+ export type QwAvatarLoadService = Service<QwAvatarLoadSchema>;
64
+ export type QwAvatarLoadMachine = Machine<QwAvatarLoadSchema>;
65
+ /** Pure Zag state: resource bridges supply scalars, never DOM objects. */
66
+ export declare const avatarLoadMachine: QwAvatarLoadMachine;
67
+ export interface QwAvatarLoadApi {
68
+ readonly frame: ImageRequestFrame;
69
+ readonly status: AvatarLoadStatus;
70
+ readonly imageKey: string;
71
+ bindResource(): ImageResourceBinding;
72
+ }
73
+ /** A committed renderer binds without reading reactive result state. */
74
+ export declare function createAvatarResourceBinding(service: QwAvatarLoadService, frame: ImageRequestFrame): ImageResourceBinding;
75
+ export declare function connectAvatarLoad(service: QwAvatarLoadService, frame?: ImageRequestFrame): QwAvatarLoadApi;
76
+ export {};
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Avatar 的跨框架行为契约。
3
3
  *
4
- * Avatar 是无状态的 Prototype A:Core 归一化 props、推导降级模式和徽标状态,
4
+ * Core 归一化 props、推导降级模式和徽标状态;Zag 管图片请求生命周期。
5
5
  * 生成 root/image/badge 的 data 属性。React/Vue 适配器只投影内容通道并渲染固定 DOM。
6
- * 图片加载状态通过 `data-load-status` 属性由 CSS 声明式管理,不参与 Core 状态归一化。
6
+ * 图片请求生命周期由同目录的纯 Zag load machine 决定,适配器仅运输资源标量快照。
7
7
  */
8
8
  export declare const AVATAR_SHAPES: readonly ["circle", "square"];
9
9
  export declare const AVATAR_SIZES: readonly ["s", "m", "l"];
@@ -57,6 +57,8 @@ export interface AvatarContentPresence {
57
57
  /** 是否提供 `badge` 配置。 */
58
58
  hasBadge: boolean;
59
59
  }
60
+ /** Frameworks only report whether a content channel was supplied. */
61
+ export declare function getAvatarContentPresence(props: QwAvatarProps, channels: Readonly<Record<string, boolean>>): AvatarContentPresence;
60
62
  /** 内容展示模式,按优先级互斥推导:children > image > icon > name。 */
61
63
  export type DisplayMode = "children" | "image" | "icon" | "initials";
62
64
  /** 图片加载失败时的降级展示模式。 */
@@ -118,6 +120,7 @@ export interface AvatarBadgeProps {
118
120
  "data-part": "badge";
119
121
  "data-badge-type": BadgeType;
120
122
  "aria-label"?: string;
123
+ role?: "img";
121
124
  }
122
125
  /**
123
126
  * 从名称提取文字缩写。
@@ -128,13 +131,27 @@ export interface AvatarBadgeProps {
128
131
  * - 上限 2 字符
129
132
  * - 空字符串返回空字符串
130
133
  *
131
- * 使用 `Array.from()` 按码点迭代,不按 `charCodeAt` 截断。
134
+ * 按 grapheme 边界截取,不切开组合字符和 emoji 序列。
132
135
  */
133
136
  export declare function extractInitials(name: string): string;
134
137
  /** 将公开输入和内容通道归一化为唯一的跨框架状态。 */
135
138
  export declare function resolveAvatarState(props?: QwAvatarProps, presence?: AvatarContentPresence): ResolvedAvatarState;
136
139
  /** 将归一化结果转成 root 属性。 */
137
- export declare function getAvatarRootProps(state: ResolvedAvatarState): AvatarRootProps;
140
+ export interface AvatarRootOptions {
141
+ name?: string;
142
+ badge?: BadgeConfig;
143
+ loadStatus?: AvatarLoadStatus;
144
+ lang?: string;
145
+ dir?: string;
146
+ hidden?: boolean;
147
+ }
148
+ export declare function getAvatarRootProps(state: ResolvedAvatarState, options?: AvatarRootOptions): AvatarRootProps & Pick<AvatarRootOptions, "lang" | "dir" | "hidden">;
149
+ export declare function getAvatarImageDescriptor(state: ResolvedAvatarState, src?: string): {
150
+ src: string;
151
+ active: boolean;
152
+ };
153
+ export declare function getAvatarRootStyle(state: ResolvedAvatarState): Record<string, string> | undefined;
154
+ export declare function getAvatarBadgeContent(state: ResolvedAvatarState): string;
138
155
  /** 将归一化结果转成图片包装元素的属性。 */
139
156
  export declare function getAvatarImageProps(_state: ResolvedAvatarState): AvatarImageProps;
140
157
  /** 将归一化结果转成 img 元素的属性。 */
@@ -142,4 +159,4 @@ export declare function getAvatarImageElementProps(_state: ResolvedAvatarState):
142
159
  /** 将归一化结果转成降级内容元素的属性。 */
143
160
  export declare function getAvatarFallbackProps(_state: ResolvedAvatarState): AvatarFallbackProps;
144
161
  /** 将归一化结果转成徽标元素的属性。 */
145
- export declare function getAvatarBadgeProps(state: ResolvedAvatarState): AvatarBadgeProps;
162
+ export declare function getAvatarBadgeProps(state: ResolvedAvatarState, badge?: BadgeConfig): AvatarBadgeProps;
@@ -1 +1,2 @@
1
1
  export * from "./avatar.js";
2
+ export * from "./avatar-load.js";