@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,482 @@
1
+ import { createMachine } from "@zag-js/core";
2
+ import { dataAttr, getComputedStyle, getEventKey, trackFormControl, visuallyHiddenStyle } from "@zag-js/dom-query";
3
+ //#region src/slider/slider.ts
4
+ /** Stable DOM parts shared by every adapter. */
5
+ const SLIDER_PARTS = [
6
+ "root",
7
+ "label",
8
+ "control",
9
+ "track",
10
+ "range",
11
+ "thumb",
12
+ "input"
13
+ ];
14
+ const SLIDER_ORIENTATIONS = ["horizontal", "vertical"];
15
+ const finite = (value) => typeof value === "number" && Number.isFinite(value);
16
+ const decimals = (value) => {
17
+ const text = String(value);
18
+ const exp = /e-(\d+)$/.exec(text);
19
+ if (exp) return Number(exp[1]);
20
+ const dot = text.indexOf(".");
21
+ return dot < 0 ? 0 : text.length - dot - 1;
22
+ };
23
+ const text = (value, fallback) => typeof value === "string" && value.trim() ? value : fallback;
24
+ function resolveSliderState(props = {}) {
25
+ const min = finite(props.min) ? props.min : 0;
26
+ const max = finite(props.max) && props.max > min ? props.max : min + 100;
27
+ const step = finite(props.step) && props.step > 0 ? Math.min(props.step, max - min) : Math.min(1, max - min);
28
+ const pageRaw = finite(props.pageStep) && props.pageStep > 0 ? props.pageStep : Math.max(step, (max - min) / 10);
29
+ const pageStep = Math.max(step, Math.round(pageRaw / step) * step);
30
+ const labels = props.thumbLabels;
31
+ return {
32
+ min,
33
+ max,
34
+ step,
35
+ pageStep,
36
+ range: !!props.range,
37
+ orientation: SLIDER_ORIENTATIONS.includes(props.orientation) ? props.orientation : "horizontal",
38
+ dir: typeof props.dir === "string" ? props.dir : void 0,
39
+ disabled: !!props.disabled,
40
+ readOnly: !!props.readOnly,
41
+ thumbLabels: [text(labels?.[0], "最小值"), text(labels?.[1], "最大值")],
42
+ valueTextTemplate: text(props.valueTextTemplate, "{value}")
43
+ };
44
+ }
45
+ /** Clamp into [lower, upper] and snap to the step grid anchored at min; the bounds themselves stay reachable. */
46
+ function snapSliderValue(state, value, lower = state.min, upper = state.max) {
47
+ if (!finite(value)) return lower;
48
+ const places = Math.min(12, Math.max(decimals(state.step), decimals(state.min)));
49
+ if (value <= lower) return lower;
50
+ if (value >= upper) return upper;
51
+ const snapped = Number((state.min + Math.round((value - state.min) / state.step) * state.step).toFixed(places));
52
+ return Math.min(upper, Math.max(lower, snapped));
53
+ }
54
+ /** Any input shape becomes an ascending, snapped array of length 1 (single) or 2 (range). */
55
+ function normalizeSliderValues(state, value) {
56
+ const raw = Array.isArray(value) ? value : finite(value) ? [value] : [];
57
+ if (!state.range) return [snapSliderValue(state, finite(raw[0]) ? raw[0] : state.min)];
58
+ const start = snapSliderValue(state, finite(raw[0]) ? raw[0] : state.min), end = snapSliderValue(state, finite(raw[1]) ? raw[1] : state.max);
59
+ return start <= end ? [start, end] : [end, start];
60
+ }
61
+ /** Public payload shape. */
62
+ function toSliderValue(state, values) {
63
+ return state.range ? [values[0], values[1]] : values[0];
64
+ }
65
+ /** Bounds a thumb may move within: range thumbs never cross. */
66
+ function getSliderThumbBounds(state, values, index) {
67
+ if (!state.range) return {
68
+ lower: state.min,
69
+ upper: state.max
70
+ };
71
+ return index === 0 ? {
72
+ lower: state.min,
73
+ upper: values[1]
74
+ } : {
75
+ lower: values[0],
76
+ upper: state.max
77
+ };
78
+ }
79
+ function getSliderPercent(state, value) {
80
+ return Math.round((value - state.min) / (state.max - state.min) * 1e5) / 1e3;
81
+ }
82
+ /** Pointer geometry → raw value. Horizontal RTL measures from the right; vertical measures from the bottom. */
83
+ function getSliderPointValue(state, point, rect, rtl) {
84
+ const size = state.orientation === "vertical" ? rect.bottom - rect.top : rect.right - rect.left;
85
+ if (!(size > 0) || !finite(point.x) || !finite(point.y)) return null;
86
+ const offset = state.orientation === "vertical" ? rect.bottom - point.y : rtl ? rect.right - point.x : point.x - rect.left;
87
+ return state.min + Math.min(1, Math.max(0, offset / size)) * (state.max - state.min);
88
+ }
89
+ /** Nearest thumb; coincident thumbs choose by the side the pointer is on. */
90
+ function getSliderClosestThumb(values, value) {
91
+ if (values.length < 2) return 0;
92
+ const [a, b] = values;
93
+ if (a === b) return value > b ? 1 : 0;
94
+ return Math.abs(value - a) <= Math.abs(value - b) ? 0 : 1;
95
+ }
96
+ /** Keyboard step result for one thumb (APG slider): Arrow ±step, Page ±pageStep, Home/End to the thumb bounds. */
97
+ function getSliderKeyValue(state, values, index, key) {
98
+ const current = values[index], { lower, upper } = getSliderThumbBounds(state, values, index);
99
+ const delta = key === "ArrowRight" || key === "ArrowUp" ? state.step : key === "ArrowLeft" || key === "ArrowDown" ? -state.step : key === "PageUp" ? state.pageStep : key === "PageDown" ? -state.pageStep : null;
100
+ if (key === "Home") return lower;
101
+ if (key === "End") return upper;
102
+ return delta === null ? null : snapSliderValue(state, current + delta, lower, upper);
103
+ }
104
+ function createSliderProps(props) {
105
+ if (typeof props.label !== "string" || !props.label.trim()) throw new TypeError("Slider requires a nonempty accessible label");
106
+ if (props.id !== void 0 && (typeof props.id !== "string" || !props.id.trim())) throw new TypeError("Slider requires a nonempty instance id when provided");
107
+ return { ...props };
108
+ }
109
+ const ids = (scope) => {
110
+ const base = `slider:${scope.id}`;
111
+ return {
112
+ root: base,
113
+ label: `${base}:label`,
114
+ control: `${base}:control`,
115
+ thumb: (index) => `${base}:thumb:${index}`,
116
+ input: (index) => `${base}:input:${index}`
117
+ };
118
+ };
119
+ const live = (params) => resolveSliderState({
120
+ min: params.prop("min"),
121
+ max: params.prop("max"),
122
+ step: params.prop("step"),
123
+ pageStep: params.prop("pageStep"),
124
+ range: params.prop("range"),
125
+ orientation: params.prop("orientation"),
126
+ dir: params.prop("dir"),
127
+ disabled: params.prop("disabled"),
128
+ readOnly: params.prop("readOnly"),
129
+ thumbLabels: params.prop("thumbLabels"),
130
+ valueTextTemplate: params.prop("valueTextTemplate")
131
+ });
132
+ const sameValues = (a, b) => !!a && !!b && a.length === b.length && a.every((value, index) => value === b[index]);
133
+ const locked = (params) => {
134
+ const state = live(params);
135
+ return state.disabled || state.readOnly || params.context.get("inheritedDisabled");
136
+ };
137
+ /** Effective (normalized) values: Core state is re-normalized against the live domain on every read. */
138
+ const asArray = (value) => Array.isArray(value) ? [...value] : typeof value === "number" ? [value] : [];
139
+ const current = (params) => normalizeSliderValues(live(params), params.context.get("value"));
140
+ /** Request one thumb value. Returns the requested array (also when a controlled owner may reject it), or null when nothing changes. */
141
+ function request(params, index, raw) {
142
+ const state = live(params), values = current(params), { lower, upper } = getSliderThumbBounds(state, values, index);
143
+ const nextValue = snapSliderValue(state, raw, lower, upper);
144
+ if (nextValue === values[index]) return null;
145
+ const next = values.slice();
146
+ next[index] = nextValue;
147
+ params.context.set("value", toSliderValue(state, next));
148
+ return next;
149
+ }
150
+ /** Commit reports the requested values, so a controlled owner sees what the user chose even before it re-renders. */
151
+ const commit = (params, values) => params.prop("onValueCommit")?.({ value: toSliderValue(live(params), values) });
152
+ /** Bindable values own controlled/uncontrolled; a controlled owner rejects a request simply by not updating `value`. */
153
+ const sliderMachine = createMachine({
154
+ props: ({ props }) => createSliderProps({
155
+ ...props,
156
+ label: props.label ?? ""
157
+ }),
158
+ initialState: () => "idle",
159
+ context: ({ bindable, prop }) => {
160
+ const state = () => live({ prop });
161
+ return {
162
+ value: bindable(() => ({
163
+ defaultValue: toSliderValue(state(), normalizeSliderValues(state(), prop("defaultValue"))),
164
+ value: prop("value") === void 0 ? void 0 : toSliderValue(state(), normalizeSliderValues(state(), prop("value"))),
165
+ isEqual: (a, b) => sameValues(asArray(a), asArray(b)),
166
+ hash: (value) => asArray(value).join(","),
167
+ onChange: (value) => prop("onValueChange")?.({ value })
168
+ })),
169
+ activeIndex: bindable(() => ({ defaultValue: -1 })),
170
+ focusedIndex: bindable(() => ({ defaultValue: -1 })),
171
+ pointerId: bindable(() => ({ defaultValue: null })),
172
+ requested: bindable(() => ({ defaultValue: null })),
173
+ inheritedDisabled: bindable(() => ({ defaultValue: false }))
174
+ };
175
+ },
176
+ effects: ["trackForm"],
177
+ on: {
178
+ "THUMB.SET": { actions: ["setThumb"] },
179
+ "VALUES.SET": { actions: ["setValues"] },
180
+ "FOCUS.SET": { actions: ["setFocus"] },
181
+ "FORM.RESET": {
182
+ target: "idle",
183
+ actions: ["cancelDrag", "resetForm"]
184
+ },
185
+ "FIELDSET.DISABLED": { actions: ["setInheritedDisabled"] }
186
+ },
187
+ states: {
188
+ idle: { on: { "POINTER.DOWN": {
189
+ guard: "canInteract",
190
+ target: "dragging",
191
+ actions: ["startDrag"]
192
+ } } },
193
+ dragging: {
194
+ effects: ["capturePointer"],
195
+ on: {
196
+ "POINTER.MOVE": { actions: ["moveDrag"] },
197
+ "POINTER.UP": {
198
+ guard: ({ event, context }) => event.type === "POINTER.UP" && event.pointerId === context.get("pointerId"),
199
+ target: "idle",
200
+ actions: ["endDrag"]
201
+ },
202
+ "POINTER.CANCEL": {
203
+ guard: ({ event, context }) => event.type === "POINTER.CANCEL" && (event.pointerId === void 0 || event.pointerId === context.get("pointerId")),
204
+ target: "idle",
205
+ actions: ["endDrag"]
206
+ }
207
+ }
208
+ }
209
+ },
210
+ implementations: {
211
+ guards: { canInteract: (params) => !locked(params) },
212
+ actions: {
213
+ setThumb(params) {
214
+ const { event } = params;
215
+ if (event.type !== "THUMB.SET" || locked(params) || !finite(event.value)) return;
216
+ const next = request(params, Math.min(current(params).length - 1, Math.max(0, Math.floor(event.index))), event.value);
217
+ if (next && event.commit) commit(params, next);
218
+ },
219
+ setValues(params) {
220
+ if (params.event.type !== "VALUES.SET") return;
221
+ const next = normalizeSliderValues(live(params), params.event.value);
222
+ if (!sameValues(next, current(params))) params.context.set("value", toSliderValue(live(params), next));
223
+ },
224
+ startDrag(params) {
225
+ if (params.event.type !== "POINTER.DOWN") return;
226
+ const index = getSliderClosestThumb(current(params), params.event.value);
227
+ params.context.set("activeIndex", index);
228
+ params.context.set("pointerId", params.event.pointerId);
229
+ params.context.set("requested", request(params, index, params.event.value));
230
+ },
231
+ moveDrag(params) {
232
+ const { event, context } = params;
233
+ if (event.type !== "POINTER.MOVE" || event.pointerId !== context.get("pointerId") || locked(params)) return;
234
+ const next = request(params, context.get("activeIndex"), event.value);
235
+ if (next) context.set("requested", next);
236
+ },
237
+ endDrag(params) {
238
+ const requested = params.context.get("requested");
239
+ params.context.set("pointerId", null);
240
+ params.context.set("activeIndex", -1);
241
+ params.context.set("requested", null);
242
+ if (requested) commit(params, requested);
243
+ },
244
+ cancelDrag({ context }) {
245
+ context.set("pointerId", null);
246
+ context.set("activeIndex", -1);
247
+ context.set("requested", null);
248
+ },
249
+ setFocus({ context, event }) {
250
+ if (event.type === "FOCUS.SET") context.set("focusedIndex", event.index);
251
+ },
252
+ resetForm(params) {
253
+ const state = live(params);
254
+ params.context.set("value", toSliderValue(state, normalizeSliderValues(state, params.prop("defaultValue"))));
255
+ },
256
+ setInheritedDisabled({ context, event }) {
257
+ if (event.type === "FIELDSET.DISABLED") context.set("inheritedDisabled", event.disabled);
258
+ }
259
+ },
260
+ effects: {
261
+ /** Native form reset restores defaultValue; a disabled fieldset disables interaction. */
262
+ trackForm({ scope, send }) {
263
+ return trackFormControl(scope.getById(ids(scope).input(0)), {
264
+ onFormReset: () => send({ type: "FORM.RESET" }),
265
+ onFieldsetDisabledChange: (disabled) => send({
266
+ type: "FIELDSET.DISABLED",
267
+ disabled
268
+ })
269
+ });
270
+ },
271
+ capturePointer({ scope, context, event }) {
272
+ const control = scope.getById(ids(scope).control), id = event.type === "POINTER.DOWN" ? event.pointerId : context.get("pointerId");
273
+ if (control && id !== null) try {
274
+ control.setPointerCapture?.(id);
275
+ } catch {}
276
+ return () => {
277
+ if (control && id !== null && control.hasPointerCapture?.(id)) try {
278
+ control.releasePointerCapture(id);
279
+ } catch {}
280
+ };
281
+ }
282
+ }
283
+ }
284
+ });
285
+ function connectSlider(service, normalize) {
286
+ const state = live(service), values = current(service), id = ids(service.scope), label = service.prop("label");
287
+ const disabled = state.disabled || service.context.get("inheritedDisabled"), interactive = !disabled && !state.readOnly;
288
+ const dragging = service.state.matches("dragging"), activeIndex = service.context.get("activeIndex"), focusedIndex = service.context.get("focusedIndex");
289
+ const thumbs = values.map((value, index) => {
290
+ const bounds = getSliderThumbBounds(state, values, index);
291
+ return {
292
+ index,
293
+ key: `thumb-${index}`,
294
+ value,
295
+ percent: getSliderPercent(state, value),
296
+ label: state.range ? `${label} ${state.thumbLabels[index]}` : label,
297
+ valueText: state.valueTextTemplate.replace(/\{value\}/g, String(value)),
298
+ min: bounds.lower,
299
+ max: bounds.upper,
300
+ active: dragging && activeIndex === index,
301
+ focused: focusedIndex === index
302
+ };
303
+ });
304
+ const thumb = (props) => {
305
+ const found = thumbs[props.index];
306
+ if (!found) throw new RangeError("Slider thumb index is out of range");
307
+ return found;
308
+ };
309
+ const rtl = (target) => state.dir === "rtl" || state.dir !== "ltr" && getComputedStyle(target).direction === "rtl";
310
+ const pointValue = (event) => {
311
+ const control = event.currentTarget;
312
+ return getSliderPointValue(state, {
313
+ x: event.clientX,
314
+ y: event.clientY
315
+ }, control.getBoundingClientRect(), rtl(control));
316
+ };
317
+ const start = values.length > 1 ? thumbs[0].percent : 0, end = thumbs.at(-1).percent;
318
+ const part = (name) => ({
319
+ "data-scope": "slider",
320
+ "data-part": name
321
+ });
322
+ return {
323
+ value: toSliderValue(state, values),
324
+ values,
325
+ thumbs,
326
+ label,
327
+ dragging,
328
+ disabled,
329
+ setValue: (value) => service.send({
330
+ type: "VALUES.SET",
331
+ value
332
+ }),
333
+ setThumbValue: (index, value) => service.send({
334
+ type: "THUMB.SET",
335
+ index,
336
+ value
337
+ }),
338
+ getRootProps: () => normalize.element({
339
+ ...part("root"),
340
+ id: id.root,
341
+ dir: state.dir,
342
+ "data-orientation": state.orientation,
343
+ "data-range": dataAttr(state.range),
344
+ "data-disabled": dataAttr(disabled),
345
+ "data-readonly": dataAttr(state.readOnly),
346
+ "data-dragging": dataAttr(dragging)
347
+ }),
348
+ getLabelProps: () => normalize.element({
349
+ ...part("label"),
350
+ id: id.label,
351
+ "data-hidden": dataAttr(!!service.prop("hideLabel")),
352
+ style: service.prop("hideLabel") ? visuallyHiddenStyle : void 0
353
+ }),
354
+ getControlProps: () => normalize.element({
355
+ ...part("control"),
356
+ id: id.control,
357
+ "data-orientation": state.orientation,
358
+ "data-disabled": dataAttr(disabled),
359
+ onPointerDown(event) {
360
+ if (!interactive || event.defaultPrevented || event.button !== 0 || event.isPrimary === false) return;
361
+ const value = pointValue(event);
362
+ if (value === null) return;
363
+ event.preventDefault?.();
364
+ service.send({
365
+ type: "POINTER.DOWN",
366
+ pointerId: event.pointerId ?? 0,
367
+ value
368
+ });
369
+ const index = getSliderClosestThumb(current(service), value);
370
+ service.scope.getById(id.thumb(index))?.focus({ preventScroll: true });
371
+ },
372
+ onPointerMove(event) {
373
+ if (service.context.get("pointerId") === null) return;
374
+ const value = pointValue(event);
375
+ if (value !== null) service.send({
376
+ type: "POINTER.MOVE",
377
+ pointerId: event.pointerId ?? 0,
378
+ value
379
+ });
380
+ },
381
+ onPointerUp(event) {
382
+ service.send({
383
+ type: "POINTER.UP",
384
+ pointerId: event.pointerId ?? 0
385
+ });
386
+ },
387
+ onPointerCancel(event) {
388
+ service.send({
389
+ type: "POINTER.CANCEL",
390
+ pointerId: event.pointerId ?? 0
391
+ });
392
+ },
393
+ onLostPointerCapture(event) {
394
+ service.send({
395
+ type: "POINTER.CANCEL",
396
+ pointerId: event.pointerId ?? 0
397
+ });
398
+ }
399
+ }),
400
+ getTrackProps: () => normalize.element({
401
+ ...part("track"),
402
+ "data-orientation": state.orientation
403
+ }),
404
+ getRangeProps: () => normalize.element({
405
+ ...part("range"),
406
+ "data-orientation": state.orientation,
407
+ style: {
408
+ "--qw-slider-range-start": `${start}%`,
409
+ "--qw-slider-range-end": `${100 - end}%`
410
+ }
411
+ }),
412
+ getThumbProps: (props) => {
413
+ const entry = thumb(props);
414
+ return normalize.element({
415
+ ...part("thumb"),
416
+ id: id.thumb(entry.index),
417
+ "data-index": entry.index,
418
+ "data-orientation": state.orientation,
419
+ "data-active": dataAttr(entry.active),
420
+ "data-focus": dataAttr(entry.focused),
421
+ "data-disabled": dataAttr(disabled),
422
+ role: "slider",
423
+ tabIndex: disabled ? -1 : 0,
424
+ "aria-labelledby": state.range ? void 0 : id.label,
425
+ "aria-label": state.range ? entry.label : void 0,
426
+ "aria-valuemin": entry.min,
427
+ "aria-valuemax": entry.max,
428
+ "aria-valuenow": entry.value,
429
+ "aria-valuetext": entry.valueText,
430
+ "aria-orientation": state.orientation,
431
+ "aria-disabled": disabled || void 0,
432
+ "aria-readonly": state.readOnly || void 0,
433
+ style: { "--qw-slider-thumb": `${entry.percent}%` },
434
+ onFocus() {
435
+ service.send({
436
+ type: "FOCUS.SET",
437
+ index: entry.index
438
+ });
439
+ },
440
+ onBlur() {
441
+ service.send({
442
+ type: "FOCUS.SET",
443
+ index: -1
444
+ });
445
+ },
446
+ onKeyDown(event) {
447
+ if (event.defaultPrevented || event.ctrlKey || event.altKey || event.metaKey) return;
448
+ const key = getEventKey(event, {
449
+ dir: state.orientation === "horizontal" && rtl(event.currentTarget) ? "rtl" : "ltr",
450
+ orientation: state.orientation
451
+ });
452
+ const next = getSliderKeyValue(state, current(service), entry.index, key);
453
+ if (next === null) return;
454
+ event.preventDefault();
455
+ if (interactive) service.send({
456
+ type: "THUMB.SET",
457
+ index: entry.index,
458
+ value: next,
459
+ commit: true
460
+ });
461
+ }
462
+ });
463
+ },
464
+ getInputProps: (props) => {
465
+ const entry = thumb(props);
466
+ return normalize.input({
467
+ ...part("input"),
468
+ id: id.input(entry.index),
469
+ type: "hidden",
470
+ name: service.prop("name"),
471
+ form: service.prop("form"),
472
+ value: String(entry.value),
473
+ disabled: state.disabled,
474
+ "data-index": entry.index
475
+ });
476
+ }
477
+ };
478
+ }
479
+ //#endregion
480
+ export { SLIDER_ORIENTATIONS, SLIDER_PARTS, connectSlider, createSliderProps, getSliderClosestThumb, getSliderKeyValue, getSliderPercent, getSliderPointValue, getSliderThumbBounds, normalizeSliderValues, resolveSliderState, sliderMachine, snapSliderValue, toSliderValue };
481
+
482
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/slider/slider.ts"],"sourcesContent":["import { createMachine, type Machine, type Params, type Service } from \"@zag-js/core\";\nimport { dataAttr, getComputedStyle, getEventKey, trackFormControl, visuallyHiddenStyle } from \"@zag-js/dom-query\";\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\";\n\n/** Stable DOM parts shared by every adapter. */\nexport const SLIDER_PARTS = [\"root\", \"label\", \"control\", \"track\", \"range\", \"thumb\", \"input\"] as const;\nexport const SLIDER_ORIENTATIONS = [\"horizontal\", \"vertical\"] as const;\nexport type SliderPart = (typeof SLIDER_PARTS)[number];\nexport type SliderOrientation = (typeof SLIDER_ORIENTATIONS)[number];\n/** A single slider reports a number; a range slider reports an ascending `[start, end]` tuple. */\nexport type SliderValue = number | readonly [number, number];\nexport interface SliderValueChangeDetails { value: SliderValue }\n/** SSR-safe input shared by all adapters (no @zag-js/slider dependency; the machine is qw-ui Core). */\nexport interface QwSliderProps {\n /** Page-unique instance identity; adapters generate one when omitted. */\n id?: string;\n /** Required nonempty accessible name; visible unless `hideLabel`. */\n label: string;\n /** Keep the name for assistive technology but hide it visually. */\n hideLabel?: boolean;\n /** Two thumbs selecting `[start, end]`. */\n range?: boolean;\n /** Controlled value. Defined means the owner decides; requests go through onValueChange. */\n value?: SliderValue;\n /** Initial Core-owned value and the form-reset value; defaults to min (range: [min, max]). */\n defaultValue?: SliderValue;\n /** Finite lower bound, default 0. */\n min?: number;\n /** Finite upper bound greater than min, default min + 100. */\n max?: number;\n /** Positive finite step, default 1. Values snap to min + k·step; max itself is always reachable. */\n step?: number;\n /** PageUp/PageDown step, default max(step, one tenth of the span) snapped to step. */\n pageStep?: number;\n disabled?: boolean;\n readOnly?: boolean;\n orientation?: SliderOrientation;\n /** Standard HTML direction; RTL mirrors horizontal pointer mapping and Arrow keys. */\n dir?: string;\n /** Submitted with each thumb's value (range: two entries with the same name). */\n name?: string;\n form?: string;\n /** Range thumb names appended to `label`; default [\"最小值\", \"最大值\"]. */\n thumbLabels?: readonly [string, string];\n /** aria-valuetext with {value}; default \"{value}\". */\n valueTextTemplate?: string;\n /** Every requested change (pointer move, key, programmatic). */\n onValueChange?: (details: SliderValueChangeDetails) => void;\n /** End of an interaction: pointer release or a keyboard step. */\n onValueCommit?: (details: SliderValueChangeDetails) => void;\n}\nexport interface ResolvedSliderState {\n min: number; max: number; step: number; pageStep: number; range: boolean; orientation: SliderOrientation; dir: string | undefined;\n disabled: boolean; readOnly: boolean; thumbLabels: [string, string]; valueTextTemplate: string;\n}\n\nconst finite = (value: unknown): value is number => typeof value === \"number\" && Number.isFinite(value);\nconst decimals = (value: number) => { const text = String(value); const exp = /e-(\\d+)$/.exec(text); if (exp) return Number(exp[1]); const dot = text.indexOf(\".\"); return dot < 0 ? 0 : text.length - dot - 1; };\nconst text = (value: unknown, fallback: string) => typeof value === \"string\" && value.trim() ? value : fallback;\nexport function resolveSliderState(props: Partial<QwSliderProps> = {}): ResolvedSliderState {\n const min = finite(props.min) ? props.min : 0;\n const max = finite(props.max) && props.max > min ? props.max : min + 100;\n const step = finite(props.step) && props.step > 0 ? Math.min(props.step, max - min) : Math.min(1, max - min);\n const pageRaw = finite(props.pageStep) && props.pageStep > 0 ? props.pageStep : Math.max(step, (max - min) / 10);\n const pageStep = Math.max(step, Math.round(pageRaw / step) * step);\n const labels = props.thumbLabels;\n return {\n min, max, step, pageStep, range: !!props.range, orientation: SLIDER_ORIENTATIONS.includes(props.orientation!) ? props.orientation! : \"horizontal\",\n dir: typeof props.dir === \"string\" ? props.dir : undefined, disabled: !!props.disabled, readOnly: !!props.readOnly,\n thumbLabels: [text(labels?.[0], \"最小值\"), text(labels?.[1], \"最大值\")], valueTextTemplate: text(props.valueTextTemplate, \"{value}\"),\n };\n}\n/** Clamp into [lower, upper] and snap to the step grid anchored at min; the bounds themselves stay reachable. */\nexport function snapSliderValue(state: Pick<ResolvedSliderState, \"min\" | \"max\" | \"step\">, value: number, lower = state.min, upper = state.max): number {\n if (!finite(value)) return lower;\n const places = Math.min(12, Math.max(decimals(state.step), decimals(state.min)));\n if (value <= lower) return lower;\n if (value >= upper) return upper;\n const snapped = Number((state.min + Math.round((value - state.min) / state.step) * state.step).toFixed(places));\n return Math.min(upper, Math.max(lower, snapped));\n}\n/** Any input shape becomes an ascending, snapped array of length 1 (single) or 2 (range). */\nexport function normalizeSliderValues(state: ResolvedSliderState, value: SliderValue | readonly number[] | undefined): number[] {\n const raw = Array.isArray(value) ? (value as readonly unknown[]) : finite(value) ? [value] : [];\n if (!state.range) return [snapSliderValue(state, finite(raw[0]) ? raw[0] : state.min)];\n const start = snapSliderValue(state, finite(raw[0]) ? raw[0] : state.min), end = snapSliderValue(state, finite(raw[1]) ? raw[1] : state.max);\n return start <= end ? [start, end] : [end, start];\n}\n/** Public payload shape. */\nexport function toSliderValue(state: Pick<ResolvedSliderState, \"range\">, values: readonly number[]): SliderValue {\n return state.range ? [values[0]!, values[1]!] as const : values[0]!;\n}\n/** Bounds a thumb may move within: range thumbs never cross. */\nexport function getSliderThumbBounds(state: ResolvedSliderState, values: readonly number[], index: number): { lower: number; upper: number } {\n if (!state.range) return { lower: state.min, upper: state.max };\n return index === 0 ? { lower: state.min, upper: values[1]! } : { lower: values[0]!, upper: state.max };\n}\nexport function getSliderPercent(state: Pick<ResolvedSliderState, \"min\" | \"max\">, value: number): number {\n return Math.round(((value - state.min) / (state.max - state.min)) * 100_000) / 1000;\n}\nexport interface SliderRect { left: number; right: number; top: number; bottom: number }\n/** Pointer geometry → raw value. Horizontal RTL measures from the right; vertical measures from the bottom. */\nexport function getSliderPointValue(state: ResolvedSliderState, point: { x: number; y: number }, rect: SliderRect, rtl: boolean): number | null {\n const size = state.orientation === \"vertical\" ? rect.bottom - rect.top : rect.right - rect.left;\n if (!(size > 0) || !finite(point.x) || !finite(point.y)) return null;\n const offset = state.orientation === \"vertical\" ? rect.bottom - point.y : rtl ? rect.right - point.x : point.x - rect.left;\n return state.min + Math.min(1, Math.max(0, offset / size)) * (state.max - state.min);\n}\n/** Nearest thumb; coincident thumbs choose by the side the pointer is on. */\nexport function getSliderClosestThumb(values: readonly number[], value: number): number {\n if (values.length < 2) return 0;\n const [a, b] = values as [number, number];\n if (a === b) return value > b ? 1 : 0;\n return Math.abs(value - a) <= Math.abs(value - b) ? 0 : 1;\n}\n/** Keyboard step result for one thumb (APG slider): Arrow ±step, Page ±pageStep, Home/End to the thumb bounds. */\nexport function getSliderKeyValue(state: ResolvedSliderState, values: readonly number[], index: number, key: string): number | null {\n const current = values[index]!, { lower, upper } = getSliderThumbBounds(state, values, index);\n const delta = key === \"ArrowRight\" || key === \"ArrowUp\" ? state.step : key === \"ArrowLeft\" || key === \"ArrowDown\" ? -state.step\n : key === \"PageUp\" ? state.pageStep : key === \"PageDown\" ? -state.pageStep : null;\n if (key === \"Home\") return lower;\n if (key === \"End\") return upper;\n return delta === null ? null : snapSliderValue(state, current + delta, lower, upper);\n}\nexport function createSliderProps(props: QwSliderProps): QwSliderProps {\n if (typeof props.label !== \"string\" || !props.label.trim()) throw new TypeError(\"Slider requires a nonempty accessible label\");\n if (props.id !== undefined && (typeof props.id !== \"string\" || !props.id.trim())) throw new TypeError(\"Slider requires a nonempty instance id when provided\");\n return { ...props };\n}\n\nexport interface QwSliderSchema {\n props: QwSliderProps;\n context: { value: SliderValue; activeIndex: number; focusedIndex: number; pointerId: number | null; requested: number[] | null; inheritedDisabled: boolean };\n state: \"idle\" | \"dragging\";\n guard: \"canInteract\";\n action: \"setThumb\" | \"setValues\" | \"startDrag\" | \"moveDrag\" | \"endDrag\" | \"cancelDrag\" | \"setFocus\" | \"resetForm\" | \"setInheritedDisabled\";\n effect: \"trackForm\" | \"capturePointer\";\n event:\n | { type: \"THUMB.SET\"; index: number; value: number; commit?: boolean }\n | { type: \"VALUES.SET\"; value: SliderValue }\n | { type: \"POINTER.DOWN\"; pointerId: number; value: number }\n | { type: \"POINTER.MOVE\"; pointerId: number; value: number }\n | { type: \"POINTER.UP\"; pointerId: number }\n | { type: \"POINTER.CANCEL\"; pointerId?: number }\n | { type: \"FOCUS.SET\"; index: number }\n | { type: \"FORM.RESET\" }\n | { type: \"FIELDSET.DISABLED\"; disabled: boolean };\n}\nexport type QwSliderMachine = Machine<QwSliderSchema>;\nexport type QwSliderService = Service<QwSliderSchema>;\ntype SliderParams = Pick<Params<QwSliderSchema>, \"prop\" | \"context\">;\nconst ids = (scope: QwSliderService[\"scope\"]) => {\n const base = `slider:${scope.id}`;\n return { root: base, label: `${base}:label`, control: `${base}:control`, thumb: (index: number) => `${base}:thumb:${index}`, input: (index: number) => `${base}:input:${index}` };\n};\nconst live = (params: Pick<SliderParams, \"prop\">) => resolveSliderState({\n min: params.prop(\"min\"), max: params.prop(\"max\"), step: params.prop(\"step\"), pageStep: params.prop(\"pageStep\"), range: params.prop(\"range\"), orientation: params.prop(\"orientation\"),\n dir: params.prop(\"dir\"), disabled: params.prop(\"disabled\"), readOnly: params.prop(\"readOnly\"), thumbLabels: params.prop(\"thumbLabels\"), valueTextTemplate: params.prop(\"valueTextTemplate\"),\n});\nconst sameValues = (a: readonly number[] | undefined, b: readonly number[] | undefined) => !!a && !!b && a.length === b.length && a.every((value, index) => value === b[index]);\nconst locked = (params: SliderParams) => { const state = live(params); return state.disabled || state.readOnly || params.context.get(\"inheritedDisabled\"); };\n/** Effective (normalized) values: Core state is re-normalized against the live domain on every read. */\nconst asArray = (value: SliderValue | undefined): number[] => Array.isArray(value) ? [...(value as readonly number[])] : typeof value === \"number\" ? [value] : [];\nconst current = (params: SliderParams) => normalizeSliderValues(live(params), params.context.get(\"value\"));\n/** Request one thumb value. Returns the requested array (also when a controlled owner may reject it), or null when nothing changes. */\nfunction request(params: SliderParams, index: number, raw: number): number[] | null {\n const state = live(params), values = current(params), { lower, upper } = getSliderThumbBounds(state, values, index);\n const nextValue = snapSliderValue(state, raw, lower, upper);\n if (nextValue === values[index]) return null;\n const next = values.slice(); next[index] = nextValue;\n params.context.set(\"value\", toSliderValue(state, next));\n return next;\n}\n/** Commit reports the requested values, so a controlled owner sees what the user chose even before it re-renders. */\nconst commit = (params: SliderParams, values: readonly number[]) => params.prop(\"onValueCommit\")?.({ value: toSliderValue(live(params), values) });\n\n/** Bindable values own controlled/uncontrolled; a controlled owner rejects a request simply by not updating `value`. */\nexport const sliderMachine: QwSliderMachine = createMachine<QwSliderSchema>({\n props: ({ props }) => createSliderProps({ ...props, label: props.label ?? \"\" }), initialState: () => \"idle\",\n context: ({ bindable, prop }) => {\n const state = () => live({ prop });\n return {\n // Stored in the public shape so WC property transport reads `number` or `[start, end]` directly.\n value: bindable<SliderValue>(() => ({\n defaultValue: toSliderValue(state(), normalizeSliderValues(state(), prop(\"defaultValue\"))),\n value: prop(\"value\") === undefined ? undefined : toSliderValue(state(), normalizeSliderValues(state(), prop(\"value\"))),\n isEqual: (a, b) => sameValues(asArray(a), asArray(b)), hash: (value) => asArray(value).join(\",\"),\n onChange: (value) => prop(\"onValueChange\")?.({ value }),\n })),\n activeIndex: bindable(() => ({ defaultValue: -1 })), focusedIndex: bindable(() => ({ defaultValue: -1 })),\n pointerId: bindable<number | null>(() => ({ defaultValue: null })), requested: bindable<number[] | null>(() => ({ defaultValue: null })),\n inheritedDisabled: bindable(() => ({ defaultValue: false })),\n };\n },\n effects: [\"trackForm\"],\n on: {\n \"THUMB.SET\": { actions: [\"setThumb\"] }, \"VALUES.SET\": { actions: [\"setValues\"] }, \"FOCUS.SET\": { actions: [\"setFocus\"] },\n \"FORM.RESET\": { target: \"idle\", actions: [\"cancelDrag\", \"resetForm\"] }, \"FIELDSET.DISABLED\": { actions: [\"setInheritedDisabled\"] },\n },\n states: {\n idle: { on: { \"POINTER.DOWN\": { guard: \"canInteract\", target: \"dragging\", actions: [\"startDrag\"] } } },\n dragging: {\n effects: [\"capturePointer\"],\n on: {\n \"POINTER.MOVE\": { actions: [\"moveDrag\"] },\n \"POINTER.UP\": { guard: ({ event, context }) => event.type === \"POINTER.UP\" && event.pointerId === context.get(\"pointerId\"), target: \"idle\", actions: [\"endDrag\"] },\n \"POINTER.CANCEL\": { guard: ({ event, context }) => event.type === \"POINTER.CANCEL\" && (event.pointerId === undefined || event.pointerId === context.get(\"pointerId\")), target: \"idle\", actions: [\"endDrag\"] },\n },\n },\n },\n implementations: {\n guards: { canInteract: (params) => !locked(params) },\n actions: {\n setThumb(params) {\n const { event } = params;\n if (event.type !== \"THUMB.SET\" || locked(params) || !finite(event.value)) return;\n const index = Math.min(current(params).length - 1, Math.max(0, Math.floor(event.index)));\n const next = request(params, index, event.value);\n if (next && event.commit) commit(params, next);\n },\n setValues(params) {\n if (params.event.type !== \"VALUES.SET\") return;\n const next = normalizeSliderValues(live(params), params.event.value);\n if (!sameValues(next, current(params))) params.context.set(\"value\", toSliderValue(live(params), next));\n },\n startDrag(params) {\n if (params.event.type !== \"POINTER.DOWN\") return;\n const index = getSliderClosestThumb(current(params), params.event.value);\n params.context.set(\"activeIndex\", index); params.context.set(\"pointerId\", params.event.pointerId);\n params.context.set(\"requested\", request(params, index, params.event.value));\n },\n moveDrag(params) {\n const { event, context } = params;\n if (event.type !== \"POINTER.MOVE\" || event.pointerId !== context.get(\"pointerId\") || locked(params)) return;\n const next = request(params, context.get(\"activeIndex\"), event.value);\n if (next) context.set(\"requested\", next);\n },\n endDrag(params) {\n const requested = params.context.get(\"requested\");\n params.context.set(\"pointerId\", null); params.context.set(\"activeIndex\", -1); params.context.set(\"requested\", null);\n if (requested) commit(params, requested);\n },\n cancelDrag({ context }) { context.set(\"pointerId\", null); context.set(\"activeIndex\", -1); context.set(\"requested\", null); },\n setFocus({ context, event }) { if (event.type === \"FOCUS.SET\") context.set(\"focusedIndex\", event.index); },\n resetForm(params) { const state = live(params); params.context.set(\"value\", toSliderValue(state, normalizeSliderValues(state, params.prop(\"defaultValue\")))); },\n setInheritedDisabled({ context, event }) { if (event.type === \"FIELDSET.DISABLED\") context.set(\"inheritedDisabled\", event.disabled); },\n },\n effects: {\n /** Native form reset restores defaultValue; a disabled fieldset disables interaction. */\n trackForm({ scope, send }) {\n const input = scope.getById<HTMLInputElement>(ids(scope).input(0));\n return trackFormControl(input, { onFormReset: () => send({ type: \"FORM.RESET\" }), onFieldsetDisabledChange: (disabled) => send({ type: \"FIELDSET.DISABLED\", disabled }) });\n },\n capturePointer({ scope, context, event }) {\n const control = scope.getById<HTMLElement>(ids(scope).control), id = event.type === \"POINTER.DOWN\" ? event.pointerId : context.get(\"pointerId\");\n if (control && id !== null) { try { control.setPointerCapture?.(id); } catch { /* Synthetic pointers have no active capture. */ } }\n return () => { if (control && id !== null && control.hasPointerCapture?.(id)) { try { control.releasePointerCapture(id); } catch { /* Already released by the platform. */ } } };\n },\n },\n },\n});\n\nexport interface SliderThumb { index: number; key: string; value: number; percent: number; label: string; valueText: string; min: number; max: number; active: boolean; focused: boolean }\nexport interface QwSliderApi<T extends PropTypes = PropTypes> {\n value: SliderValue; values: number[]; thumbs: SliderThumb[]; label: string; dragging: boolean; disabled: boolean;\n setValue(value: SliderValue): void;\n setThumbValue(index: number, value: number): void;\n getRootProps(): T[\"element\"];\n getLabelProps(): T[\"element\"];\n getControlProps(): T[\"element\"];\n getTrackProps(): T[\"element\"];\n getRangeProps(): T[\"element\"];\n getThumbProps(thumb: Pick<SliderThumb, \"index\">): T[\"element\"];\n /** One hidden form input per thumb. Always render them: they carry form reset/fieldset tracking and submit only with `name`. */\n getInputProps(thumb: Pick<SliderThumb, \"index\">): T[\"input\"];\n}\ntype PointerInput = Pick<PointerEvent, \"currentTarget\" | \"clientX\" | \"clientY\" | \"pointerId\" | \"pointerType\" | \"button\" | \"isPrimary\" | \"defaultPrevented\"> & { preventDefault?: () => void };\nexport function connectSlider<T extends PropTypes>(service: QwSliderService, normalize: NormalizeProps<T>): QwSliderApi<T> {\n const state = live(service), values = current(service), id = ids(service.scope), label = service.prop(\"label\");\n const disabled = state.disabled || service.context.get(\"inheritedDisabled\"), interactive = !disabled && !state.readOnly;\n const dragging = service.state.matches(\"dragging\"), activeIndex = service.context.get(\"activeIndex\"), focusedIndex = service.context.get(\"focusedIndex\");\n const thumbs = values.map((value, index): SliderThumb => {\n const bounds = getSliderThumbBounds(state, values, index);\n return { index, key: `thumb-${index}`, value, percent: getSliderPercent(state, value), label: state.range ? `${label} ${state.thumbLabels[index]}` : label,\n valueText: state.valueTextTemplate.replace(/\\{value\\}/g, String(value)), min: bounds.lower, max: bounds.upper, active: dragging && activeIndex === index, focused: focusedIndex === index };\n });\n const thumb = (props: Pick<SliderThumb, \"index\">) => { const found = thumbs[props.index]; if (!found) throw new RangeError(\"Slider thumb index is out of range\"); return found; };\n const rtl = (target: HTMLElement) => state.dir === \"rtl\" || (state.dir !== \"ltr\" && getComputedStyle(target).direction === \"rtl\");\n const pointValue = (event: PointerInput) => {\n const control = event.currentTarget as HTMLElement;\n return getSliderPointValue(state, { x: event.clientX, y: event.clientY }, control.getBoundingClientRect(), rtl(control));\n };\n const start = values.length > 1 ? thumbs[0]!.percent : 0, end = thumbs.at(-1)!.percent;\n const part = (name: SliderPart) => ({ \"data-scope\": \"slider\", \"data-part\": name });\n return {\n value: toSliderValue(state, values), values, thumbs, label, dragging, disabled,\n setValue: (value) => service.send({ type: \"VALUES.SET\", value }),\n setThumbValue: (index, value) => service.send({ type: \"THUMB.SET\", index, value }),\n getRootProps: () => normalize.element({ ...part(\"root\"), id: id.root, dir: state.dir, \"data-orientation\": state.orientation, \"data-range\": dataAttr(state.range),\n \"data-disabled\": dataAttr(disabled), \"data-readonly\": dataAttr(state.readOnly), \"data-dragging\": dataAttr(dragging) }),\n getLabelProps: () => normalize.element({ ...part(\"label\"), id: id.label, \"data-hidden\": dataAttr(!!service.prop(\"hideLabel\")), style: service.prop(\"hideLabel\") ? visuallyHiddenStyle : undefined }),\n getControlProps: () => normalize.element({ ...part(\"control\"), id: id.control, \"data-orientation\": state.orientation, \"data-disabled\": dataAttr(disabled),\n onPointerDown(event: PointerInput) {\n if (!interactive || event.defaultPrevented || event.button !== 0 || event.isPrimary === false) return;\n const value = pointValue(event); if (value === null) return;\n // Suppress the compatibility mousedown so the browser neither blurs the focused thumb nor starts text selection.\n event.preventDefault?.();\n service.send({ type: \"POINTER.DOWN\", pointerId: event.pointerId ?? 0, value });\n const index = getSliderClosestThumb(current(service), value);\n service.scope.getById<HTMLElement>(id.thumb(index))?.focus({ preventScroll: true });\n },\n onPointerMove(event: PointerInput) {\n if (service.context.get(\"pointerId\") === null) return;\n const value = pointValue(event); if (value !== null) service.send({ type: \"POINTER.MOVE\", pointerId: event.pointerId ?? 0, value });\n },\n onPointerUp(event: PointerInput) { service.send({ type: \"POINTER.UP\", pointerId: event.pointerId ?? 0 }); },\n onPointerCancel(event: PointerInput) { service.send({ type: \"POINTER.CANCEL\", pointerId: event.pointerId ?? 0 }); },\n onLostPointerCapture(event: PointerInput) { service.send({ type: \"POINTER.CANCEL\", pointerId: event.pointerId ?? 0 }); },\n }),\n getTrackProps: () => normalize.element({ ...part(\"track\"), \"data-orientation\": state.orientation }),\n getRangeProps: () => normalize.element({ ...part(\"range\"), \"data-orientation\": state.orientation, style: { \"--qw-slider-range-start\": `${start}%`, \"--qw-slider-range-end\": `${100 - end}%` } }),\n getThumbProps: (props) => { const entry = thumb(props); return normalize.element({ ...part(\"thumb\"), id: id.thumb(entry.index), \"data-index\": entry.index, \"data-orientation\": state.orientation,\n \"data-active\": dataAttr(entry.active), \"data-focus\": dataAttr(entry.focused), \"data-disabled\": dataAttr(disabled),\n role: \"slider\", tabIndex: disabled ? -1 : 0, \"aria-labelledby\": state.range ? undefined : id.label, \"aria-label\": state.range ? entry.label : undefined,\n \"aria-valuemin\": entry.min, \"aria-valuemax\": entry.max, \"aria-valuenow\": entry.value, \"aria-valuetext\": entry.valueText, \"aria-orientation\": state.orientation,\n \"aria-disabled\": disabled || undefined, \"aria-readonly\": state.readOnly || undefined, style: { \"--qw-slider-thumb\": `${entry.percent}%` },\n onFocus() { service.send({ type: \"FOCUS.SET\", index: entry.index }); },\n onBlur() { service.send({ type: \"FOCUS.SET\", index: -1 }); },\n onKeyDown(event: Pick<KeyboardEvent, \"key\" | \"defaultPrevented\" | \"ctrlKey\" | \"altKey\" | \"metaKey\" | \"preventDefault\" | \"currentTarget\">) {\n if (event.defaultPrevented || event.ctrlKey || event.altKey || event.metaKey) return;\n const horizontal = state.orientation === \"horizontal\";\n const key = getEventKey(event, { dir: horizontal && rtl(event.currentTarget as HTMLElement) ? \"rtl\" : \"ltr\", orientation: state.orientation });\n const next = getSliderKeyValue(state, current(service), entry.index, key);\n if (next === null) return;\n event.preventDefault();\n if (interactive) service.send({ type: \"THUMB.SET\", index: entry.index, value: next, commit: true });\n } }); },\n getInputProps: (props) => { const entry = thumb(props); return normalize.input({ ...part(\"input\"), id: id.input(entry.index), type: \"hidden\", name: service.prop(\"name\"), form: service.prop(\"form\"),\n value: String(entry.value), disabled: state.disabled, \"data-index\": entry.index }); },\n };\n}\n"],"mappings":"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"}